aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp91
1 files changed, 0 insertions, 91 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
index 9de1e8f8b..5e0a944b2 100644
--- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
+++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp
@@ -197,97 +197,6 @@ void FiniteDifferenceSolver::EvolveBCartesian (
}
}
-void FiniteDifferenceSolver::EvolveRhoCartesianECT (
- std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& Efield,
- std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& edge_lengths,
- std::array< std::unique_ptr<amrex::MultiFab>, 3 > const& face_areas,
- std::array< std::unique_ptr<amrex::MultiFab>, 3 >& ECTRhofield, const int lev ) {
-#ifdef AMREX_USE_EB
-
-#if !(defined(WARPX_DIM_3D) || defined(WARPX_DIM_XZ))
- amrex::Abort("EvolveRhoCartesianECT: Embedded Boundaries are only implemented in 2D3V and 3D3V");
-#endif
-
- amrex::LayoutData<amrex::Real>* cost = WarpX::getCosts(lev);
-
- // Loop through the grids, and over the tiles within each grid
-#ifdef AMREX_USE_OMP
-#pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
-#endif
- for (MFIter mfi(*ECTRhofield[0], TilingIfNotGPU()); mfi.isValid(); ++mfi ) {
- if (cost && WarpX::load_balance_costs_update_algo == LoadBalanceCostsUpdateAlgo::Timers) {
- amrex::Gpu::synchronize();
- }
- Real wt = amrex::second();
-
- // Extract field data for this grid/tile
- Array4<Real> const &Ex = Efield[0]->array(mfi);
- Array4<Real> const &Ey = Efield[1]->array(mfi);
- Array4<Real> const &Ez = Efield[2]->array(mfi);
- Array4<Real> const &Rhox = ECTRhofield[0]->array(mfi);
- Array4<Real> const &Rhoy = ECTRhofield[1]->array(mfi);
- Array4<Real> const &Rhoz = ECTRhofield[2]->array(mfi);
- amrex::Array4<amrex::Real> const &lx = edge_lengths[0]->array(mfi);
- amrex::Array4<amrex::Real> const &ly = edge_lengths[1]->array(mfi);
- amrex::Array4<amrex::Real> const &lz = edge_lengths[2]->array(mfi);
- 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);
-
- // Extract tileboxes for which to loop
- Box const &trhox = mfi.tilebox(ECTRhofield[0]->ixType().toIntVect());
- Box const &trhoy = mfi.tilebox(ECTRhofield[1]->ixType().toIntVect());
- Box const &trhoz = mfi.tilebox(ECTRhofield[2]->ixType().toIntVect());
-
- amrex::ParallelFor(trhox, trhoy, trhoz,
-
- [=] AMREX_GPU_DEVICE(int i, int j, int k) {
- if (Sx(i, j, k) <= 0) return;
-
-#ifndef WARPX_DIM_XZ
- Rhox(i, j, k) = (Ey(i, j, k) * ly(i, j, k) - Ey(i, j, k + 1) * ly(i, j, k + 1) +
- Ez(i, j + 1, k) * lz(i, j + 1, k) - Ez(i, j, k) * lz(i, j, k)) / Sx(i, j, k);
-#endif
- },
-
- [=] AMREX_GPU_DEVICE(int i, int j, int k) {
- if (Sy(i, j, k) <= 0) return;
-
-#ifdef WARPX_DIM_XZ
- Rhoy(i, j, k) = (Ez(i, j, k) * lz(i, j, k) - Ez(i + 1, j, k) * lz(i + 1, j, k) +
- Ex(i, j + 1, k) * lx(i, j + 1, k) - Ex(i, j, k) * lx(i, j, k)) / Sy(i, j, k);
-#elif defined(WARPX_DIM_3D)
- Rhoy(i, j, k) = (Ez(i, j, k) * lz(i, j, k) - Ez(i + 1, j, k) * lz(i + 1, j, k) +
- Ex(i, j, k + 1) * lx(i, j, k + 1) - Ex(i, j, k) * lx(i, j, k)) / Sy(i, j, k);
-#else
- amrex::Abort("EvolveRhoCartesianECT: Embedded Boundaries are only implemented in 2D3V and 3D3V");
-#endif
- },
-
- [=] AMREX_GPU_DEVICE(int i, int j, int k) {
- if (Sz(i, j, k) <= 0) return;
-
-#ifndef WARPX_DIM_XZ
- Rhoz(i, j, k) = (Ex(i, j, k) * lx(i, j, k) - Ex(i, j + 1, k) * lx(i, j + 1, k) +
- Ey(i + 1, j, k) * ly(i + 1, j, k) - Ey(i, j, k) * ly(i, j, k)) / Sz(i, j, k);
-#endif
- }
- );
-
- if (cost && WarpX::load_balance_costs_update_algo == LoadBalanceCostsUpdateAlgo::Timers)
- {
- amrex::Gpu::synchronize();
- wt = amrex::second() - wt;
- amrex::HostDevice::Atomic::Add( &(*cost)[mfi.index()], wt);
- }
-#ifdef WARPX_DIM_XZ
- amrex::ignore_unused(Ey, Rhox, Rhoz, ly);
-#endif
- }
-#else
- amrex::ignore_unused(Efield, edge_lengths, face_areas, ECTRhofield, lev);
-#endif
-}
void FiniteDifferenceSolver::EvolveBCartesianECT (
std::array< std::unique_ptr<amrex::MultiFab>, 3 >& Bfield,