aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
diff options
context:
space:
mode:
authorGravatar WeiqunZhang <WeiqunZhang@lbl.gov> 2020-09-03 08:22:58 -0700
committerGravatar GitHub <noreply@github.com> 2020-09-03 08:22:58 -0700
commit02b7636b507880d64d6882441e00c1258aef6dd3 (patch)
treed60f32c0639cba31645095b2a5ae94c4edd66751 /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
parent46656318081e84c262f6f4b54f78d8e449c44df8 (diff)
downloadWarpX-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.cpp40
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
}