aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.cpp
diff options
context:
space:
mode:
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
}