diff --git a/src/problems/RadTube/test_radiation_tube.cpp b/src/problems/RadTube/test_radiation_tube.cpp index a17fb0a01..a91419c48 100644 --- a/src/problems/RadTube/test_radiation_tube.cpp +++ b/src/problems/RadTube/test_radiation_tube.cpp @@ -86,19 +86,7 @@ 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 <> void QuokkaSimulation::preCalculateInitialConditions() +template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) { // map initial conditions to the global variables std::string filename = "../extern/pressure_tube/initial_conditions.txt"; @@ -107,6 +95,13 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() std::string header; std::getline(fstream, header); + // declare global variables + // initial conditions read from file + amrex::Gpu::HostVector x_arr; + amrex::Gpu::HostVector rho_arr; + amrex::Gpu::HostVector Pgas_arr; + amrex::Gpu::HostVector Erad_arr; + for (std::string line; std::getline(fstream, line);) { std::istringstream iss(line); std::vector values; @@ -124,10 +119,12 @@ 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()); + fstream.close(); + + amrex::Gpu::DeviceVector x_arr_g(x_arr.size()); + amrex::Gpu::DeviceVector rho_arr_g(rho_arr.size()); + amrex::Gpu::DeviceVector Pgas_arr_g(Pgas_arr.size()); + amrex::Gpu::DeviceVector Erad_arr_g(Erad_arr.size()); // copy to device amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), x_arr_g.begin()); @@ -135,10 +132,7 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() 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::streamSynchronizeAll(); -} -template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) -{ // extract variables required from the geom object amrex::GpuArray dx = grid_elem.dx_; amrex::GpuArray prob_lo = grid_elem.prob_lo_;