diff options
author | 2020-09-03 08:22:58 -0700 | |
---|---|---|
committer | 2020-09-03 08:22:58 -0700 | |
commit | 02b7636b507880d64d6882441e00c1258aef6dd3 (patch) | |
tree | d60f32c0639cba31645095b2a5ae94c4edd66751 /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp | |
parent | 46656318081e84c262f6f4b54f78d8e449c44df8 (diff) | |
download | WarpX-02b7636b507880d64d6882441e00c1258aef6dd3.tar.gz WarpX-02b7636b507880d64d6882441e00c1258aef6dd3.tar.zst WarpX-02b7636b507880d64d6882441e00c1258aef6dd3.zip |
Remove ManagedVector from finite-difference solver (#1269)
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp index 08ff5e18f..fcab20510 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp @@ -33,26 +33,56 @@ FiniteDifferenceSolver::FiniteDifferenceSolver ( m_rmin = WarpX::GetInstance().Geom(0).ProbLo(0); if (fdtd_algo == MaxwellSolverAlgo::Yee) { + amrex::Vector<amrex::Real> stencil_coefs_r, stencil_coefs_z; CylindricalYeeAlgorithm::InitializeStencilCoefficients( cell_size, - m_stencil_coefs_r, m_stencil_coefs_z ); + stencil_coefs_r, stencil_coefs_z ); + m_stencil_coefs_r.resize(stencil_coefs_r.size()); + m_stencil_coefs_z.resize(stencil_coefs_z.size()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, + stencil_coefs_r.begin(), stencil_coefs_r.end(), + m_stencil_coefs_r.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, + stencil_coefs_z.begin(), stencil_coefs_z.end(), + m_stencil_coefs_z.begin()); + amrex::Gpu::synchronize(); + } else { + amrex::Abort("Unknown algorithm"); + } #else + amrex::Vector<amrex::Real> stencil_coefs_x, stencil_coefs_y, stencil_coefs_z; + if (do_nodal) { CartesianNodalAlgorithm::InitializeStencilCoefficients( cell_size, - m_stencil_coefs_x, m_stencil_coefs_y, m_stencil_coefs_z ); + stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); } else if (fdtd_algo == MaxwellSolverAlgo::Yee) { CartesianYeeAlgorithm::InitializeStencilCoefficients( cell_size, - m_stencil_coefs_x, m_stencil_coefs_y, m_stencil_coefs_z ); + stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); } else if (fdtd_algo == MaxwellSolverAlgo::CKC) { CartesianCKCAlgorithm::InitializeStencilCoefficients( cell_size, - m_stencil_coefs_x, m_stencil_coefs_y, m_stencil_coefs_z ); + stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); -#endif } else { amrex::Abort("Unknown algorithm"); } + + m_stencil_coefs_x.resize(stencil_coefs_x.size()); + m_stencil_coefs_y.resize(stencil_coefs_y.size()); + m_stencil_coefs_z.resize(stencil_coefs_z.size()); + + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, + stencil_coefs_x.begin(), stencil_coefs_x.end(), + m_stencil_coefs_x.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, + stencil_coefs_y.begin(), stencil_coefs_y.end(), + m_stencil_coefs_y.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, + stencil_coefs_z.begin(), stencil_coefs_z.end(), + m_stencil_coefs_z.begin()); + amrex::Gpu::synchronize(); +#endif } |