aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp39
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp29
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H3
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp4
4 files changed, 19 insertions, 56 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
index bfdb46863..9de1e8f8b 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
@@ -68,17 +68,21 @@ void FiniteDifferenceSolver::EvolveB (
ignore_unused(Gfield, face_areas);
EvolveBCylindrical <CylindricalYeeAlgorithm> ( Bfield, Efield, lev, dt );
#else
+ if(m_do_nodal or m_fdtd_algo != MaxwellSolverAlgo::ECT){
+ amrex::ignore_unused(face_areas);
+ }
+
if (m_do_nodal) {
- EvolveBCartesian <CartesianNodalAlgorithm> ( Bfield, Efield, Gfield, face_areas, lev, dt );
+ EvolveBCartesian <CartesianNodalAlgorithm> ( Bfield, Efield, Gfield, lev, dt );
} else if (m_fdtd_algo == MaxwellSolverAlgo::Yee) {
- EvolveBCartesian <CartesianYeeAlgorithm> ( Bfield, Efield, Gfield, face_areas, lev, dt );
+ EvolveBCartesian <CartesianYeeAlgorithm> ( Bfield, Efield, Gfield, lev, dt );
} else if (m_fdtd_algo == MaxwellSolverAlgo::CKC) {
- EvolveBCartesian <CartesianCKCAlgorithm> ( Bfield, Efield, Gfield, face_areas, lev, dt );
+ EvolveBCartesian <CartesianCKCAlgorithm> ( Bfield, Efield, Gfield, lev, dt );
#ifdef AMREX_USE_EB
} else if (m_fdtd_algo == MaxwellSolverAlgo::ECT) {
@@ -99,13 +103,8 @@ void FiniteDifferenceSolver::EvolveBCartesian (
std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,
std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
std::unique_ptr<amrex::MultiFab> const& Gfield,
- std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& face_areas,
int lev, amrex::Real const dt ) {
-#ifndef AMREX_USE_EB
- amrex::ignore_unused(face_areas);
-#endif
-
amrex::LayoutData<amrex::Real>* cost = WarpX::getCosts(lev);
// Loop through the grids, and over the tiles within each grid
@@ -127,12 +126,6 @@ void FiniteDifferenceSolver::EvolveBCartesian (
Array4<Real> const& Ey = Efield[1]->array(mfi);
Array4<Real> const& Ez = Efield[2]->array(mfi);
-#ifdef AMREX_USE_EB
- amrex::Array4<amrex::Real> const& Sx = face_areas[0]->array(mfi);
- amrex::Array4<amrex::Real> const& Sy = face_areas[1]->array(mfi);
- amrex::Array4<amrex::Real> const& Sz = face_areas[2]->array(mfi);
-#endif
-
// Extract stencil coefficients
Real const * const AMREX_RESTRICT coefs_x = m_stencil_coefs_x.dataPtr();
int const n_coefs_x = m_stencil_coefs_x.size();
@@ -150,30 +143,24 @@ void FiniteDifferenceSolver::EvolveBCartesian (
amrex::ParallelFor(tbx, tby, tbz,
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- // Skip field push if this cell is fully covered by embedded boundaries
- if (Sx(i, j, k) <= 0) return;
-#endif
+
Bx(i, j, k) += dt * T_Algo::UpwardDz(Ey, coefs_z, n_coefs_z, i, j, k)
- dt * T_Algo::UpwardDy(Ez, coefs_y, n_coefs_y, i, j, k);
+
},
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- // Skip field push if this cell is fully covered by embedded boundaries
- if (Sy(i, j, k) <= 0) return;
-#endif
+
By(i, j, k) += dt * T_Algo::UpwardDx(Ez, coefs_x, n_coefs_x, i, j, k)
- dt * T_Algo::UpwardDz(Ex, coefs_z, n_coefs_z, i, j, k);
+
},
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- // Skip field push if this cell is fully covered by embedded boundaries
- if (Sz(i, j, k) <= 0) return;
-#endif
+
Bz(i, j, k) += dt * T_Algo::UpwardDy(Ex, coefs_y, n_coefs_y, i, j, k)
- dt * T_Algo::UpwardDx(Ey, coefs_x, n_coefs_x, i, j, k);
+
}
);
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
index f2eb555e1..5b182812a 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveBPML.cpp
@@ -42,27 +42,26 @@ using namespace amrex;
void FiniteDifferenceSolver::EvolveBPML (
std::array< amrex::MultiFab*, 3 > Bfield,
std::array< amrex::MultiFab*, 3 > const Efield,
- std::array< amrex::MultiFab*, 3 > const face_areas,
amrex::Real const dt,
const bool dive_cleaning) {
// Select algorithm (The choice of algorithm is a runtime option,
// but we compile code for each algorithm, using templates)
#ifdef WARPX_DIM_RZ
- amrex::ignore_unused(Bfield, Efield, dt, dive_cleaning, face_areas);
+ amrex::ignore_unused(Bfield, Efield, dt, dive_cleaning);
amrex::Abort("PML are not implemented in cylindrical geometry.");
#else
if (m_do_nodal) {
- EvolveBPMLCartesian <CartesianNodalAlgorithm> (Bfield, Efield, face_areas, dt, dive_cleaning);
+ EvolveBPMLCartesian <CartesianNodalAlgorithm> (Bfield, Efield, dt, dive_cleaning);
} else if (m_fdtd_algo == MaxwellSolverAlgo::Yee || m_fdtd_algo == MaxwellSolverAlgo::ECT) {
- EvolveBPMLCartesian <CartesianYeeAlgorithm> (Bfield, Efield, face_areas, dt, dive_cleaning);
+ EvolveBPMLCartesian <CartesianYeeAlgorithm> (Bfield, Efield, dt, dive_cleaning);
} else if (m_fdtd_algo == MaxwellSolverAlgo::CKC) {
- EvolveBPMLCartesian <CartesianCKCAlgorithm> (Bfield, Efield, face_areas, dt, dive_cleaning);
+ EvolveBPMLCartesian <CartesianCKCAlgorithm> (Bfield, Efield, dt, dive_cleaning);
} else {
amrex::Abort("EvolveBPML: Unknown algorithm");
@@ -77,7 +76,6 @@ template<typename T_Algo>
void FiniteDifferenceSolver::EvolveBPMLCartesian (
std::array< amrex::MultiFab*, 3 > Bfield,
std::array< amrex::MultiFab*, 3 > const Efield,
- std::array< amrex::MultiFab*, 3 > const face_areas,
amrex::Real const dt,
const bool dive_cleaning) {
@@ -95,12 +93,6 @@ void FiniteDifferenceSolver::EvolveBPMLCartesian (
Array4<Real> const& Ey = Efield[1]->array(mfi);
Array4<Real> const& Ez = Efield[2]->array(mfi);
-#ifdef AMREX_USE_EB
- Array4<Real> const& Sx = face_areas[0]->array(mfi);
- Array4<Real> const& Sy = face_areas[1]->array(mfi);
- Array4<Real> const& Sz = face_areas[2]->array(mfi);
-#endif
-
// Extract stencil coefficients
Real const * const AMREX_RESTRICT coefs_x = m_stencil_coefs_x.dataPtr();
int const n_coefs_x = m_stencil_coefs_x.size();
@@ -118,9 +110,6 @@ void FiniteDifferenceSolver::EvolveBPMLCartesian (
amrex::ParallelFor(tbx, tby, tbz,
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- if(Sx(i, j, k) <= 0) return;
-#endif
amrex::Real UpwardDz_Ey_yy = 0._rt;
amrex::Real UpwardDy_Ez_zz = 0._rt;
@@ -142,9 +131,6 @@ void FiniteDifferenceSolver::EvolveBPMLCartesian (
},
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- if(Sy(i, j, k) <= 0) return;
-#endif
amrex::Real UpwardDx_Ez_zz = 0._rt;
amrex::Real UpwardDz_Ex_xx = 0._rt;
@@ -166,9 +152,6 @@ void FiniteDifferenceSolver::EvolveBPMLCartesian (
},
[=] AMREX_GPU_DEVICE (int i, int j, int k){
-#ifdef AMREX_USE_EB
- if(Sz(i, j, k) <= 0) return;
-#endif
amrex::Real UpwardDy_Ex_xx = 0._rt;
amrex::Real UpwardDx_Ey_yy = 0._rt;
@@ -193,10 +176,6 @@ void FiniteDifferenceSolver::EvolveBPMLCartesian (
}
-#ifndef AMREX_USE_EB
- amrex::ignore_unused(face_areas);
-#endif
-
}
#endif // corresponds to ifndef WARPX_DIM_RZ
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
index f1f9b4837..178f81e8c 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
+++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H
@@ -107,7 +107,6 @@ class FiniteDifferenceSolver
void EvolveBPML ( std::array< amrex::MultiFab*, 3 > Bfield,
std::array< amrex::MultiFab*, 3 > const Efield,
- std::array< amrex::MultiFab*, 3 > const face_areas,
amrex::Real const dt,
const bool dive_cleaning);
@@ -184,7 +183,6 @@ class FiniteDifferenceSolver
std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,
std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
std::unique_ptr<amrex::MultiFab> const& Gfield,
- std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& face_areas,
int lev, amrex::Real const dt );
template< typename T_Algo >
@@ -244,7 +242,6 @@ class FiniteDifferenceSolver
void EvolveBPMLCartesian (
std::array< amrex::MultiFab*, 3 > Bfield,
std::array< amrex::MultiFab*, 3 > const Efield,
- std::array< amrex::MultiFab*, 3 > const face_areas,
amrex::Real const dt,
const bool dive_cleaning);
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index a096401bc..555d39049 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -481,10 +481,10 @@ WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt, DtType a_dt_typ
if (do_pml && pml[lev]->ok()) {
if (patch_type == PatchType::fine) {
m_fdtd_solver_fp[lev]->EvolveBPML(
- pml[lev]->GetB_fp(), pml[lev]->GetE_fp(), pml[lev]->Get_face_areas(), a_dt, WarpX::do_dive_cleaning);
+ pml[lev]->GetB_fp(), pml[lev]->GetE_fp(), a_dt, WarpX::do_dive_cleaning);
} else {
m_fdtd_solver_cp[lev]->EvolveBPML(
- pml[lev]->GetB_cp(), pml[lev]->GetE_cp(), pml[lev]->Get_face_areas(), a_dt, WarpX::do_dive_cleaning);
+ pml[lev]->GetB_cp(), pml[lev]->GetE_cp(), a_dt, WarpX::do_dive_cleaning);
}
}