diff --git a/extern/amrex b/extern/amrex index 74127d6d8..6d9c25b98 160000 --- a/extern/amrex +++ b/extern/amrex @@ -1 +1 @@ -Subproject commit 74127d6d8fa83f922069a25e7ef9f153aa73f68c +Subproject commit 6d9c25b989f19eaccbc561db8f2e3affe587bff7 diff --git a/src/problems/RadTube/test_radiation_tube.cpp b/src/problems/RadTube/test_radiation_tube.cpp index a17fb0a01..1d2079e56 100644 --- a/src/problems/RadTube/test_radiation_tube.cpp +++ b/src/problems/RadTube/test_radiation_tube.cpp @@ -86,17 +86,12 @@ RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray x_arr; -amrex::Gpu::HostVector rho_arr; -amrex::Gpu::HostVector Pgas_arr; -amrex::Gpu::HostVector Erad_arr; - -amrex::Gpu::DeviceVector x_arr_g; -amrex::Gpu::DeviceVector rho_arr_g; -amrex::Gpu::DeviceVector Pgas_arr_g; -amrex::Gpu::DeviceVector Erad_arr_g; +template <> struct SimulationData { + amrex::Gpu::DeviceVector x_arr_g; + amrex::Gpu::DeviceVector rho_arr_g; + amrex::Gpu::DeviceVector Pgas_arr_g; + amrex::Gpu::DeviceVector Erad_arr_g; +}; template <> void QuokkaSimulation::preCalculateInitialConditions() { @@ -107,6 +102,11 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() std::string header; std::getline(fstream, header); + std::vector x_arr; + std::vector rho_arr; + std::vector Pgas_arr; + std::vector Erad_arr; + for (std::string line; std::getline(fstream, line);) { std::istringstream iss(line); std::vector values; @@ -124,16 +124,16 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() Erad_arr.push_back(Erad); } - x_arr_g.resize(x_arr.size()); - rho_arr_g.resize(rho_arr.size()); - Pgas_arr_g.resize(Pgas_arr.size()); - Erad_arr_g.resize(Erad_arr.size()); + userData_.x_arr_g.resize(x_arr.size()); + userData_.rho_arr_g.resize(rho_arr.size()); + userData_.Pgas_arr_g.resize(Pgas_arr.size()); + userData_.Erad_arr_g.resize(Erad_arr.size()); // copy to device - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), x_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, rho_arr.begin(), rho_arr.end(), rho_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Pgas_arr.begin(), Pgas_arr.end(), Pgas_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Erad_arr.begin(), Erad_arr.end(), Erad_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), userData_.x_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, rho_arr.begin(), rho_arr.end(), userData_.rho_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Pgas_arr.begin(), Pgas_arr.end(), userData_.Pgas_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Erad_arr.begin(), Erad_arr.end(), userData_.Erad_arr_g.begin()); amrex::Gpu::streamSynchronizeAll(); } @@ -145,11 +145,11 @@ template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokk const amrex::Box &indexRange = grid_elem.indexRange_; const amrex::Array4 &state_cc = grid_elem.array_; - auto const &x_ptr = x_arr_g.dataPtr(); - auto const &rho_ptr = rho_arr_g.dataPtr(); - auto const &Pgas_ptr = Pgas_arr_g.dataPtr(); - auto const &Erad_ptr = Erad_arr_g.dataPtr(); - int x_size = static_cast(x_arr_g.size()); + auto const &x_ptr = userData_.x_arr_g.dataPtr(); + auto const &rho_ptr = userData_.rho_arr_g.dataPtr(); + auto const &Pgas_ptr = userData_.Pgas_arr_g.dataPtr(); + auto const &Erad_ptr = userData_.Erad_arr_g.dataPtr(); + int x_size = static_cast(userData_.x_arr_g.size()); const auto radBoundaries_g = RadSystem_Traits::radBoundaries;