aboutsummaryrefslogtreecommitdiff
path: root/Source/Evolve/WarpXComputeDt.cpp
diff options
context:
space:
mode:
authorGravatar Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> 2022-11-07 20:30:31 -0800
committerGravatar GitHub <noreply@github.com> 2022-11-07 20:30:31 -0800
commitbf535730cb6c170394da8375887b3ae57ad6ecf5 (patch)
treede7b2122acbc7e40d5f97c11afa779be689985c9 /Source/Evolve/WarpXComputeDt.cpp
parentada6fc49cf16f40d1764d3a95c8338126360f329 (diff)
downloadWarpX-bf535730cb6c170394da8375887b3ae57ad6ecf5.tar.gz
WarpX-bf535730cb6c170394da8375887b3ae57ad6ecf5.tar.zst
WarpX-bf535730cb6c170394da8375887b3ae57ad6ecf5.zip
Allow `None` for Maxwell solver (#3504)
* Add "None" as an option for the Maxwell solver * fixed some of the reasons for failing CI tests * no longer pass `do_electrostatic` to `GuardCellManager` * renamed `MaxwellSolverAlgo` to `ElectromagneticSolverAlgo` * rename `do_electrostatic` to `electrostatic_solver_id` * rename `maxwell_solver_id` to `electromagnetic_solver_id` * changes requested during PR review * remove `do_no_deposit` from tests without field evolution * Fix doc-string in `GuardCellManager.H` Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Diffstat (limited to 'Source/Evolve/WarpXComputeDt.cpp')
-rw-r--r--Source/Evolve/WarpXComputeDt.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/Source/Evolve/WarpXComputeDt.cpp b/Source/Evolve/WarpXComputeDt.cpp
index 99cc307e6..b68dfba4e 100644
--- a/Source/Evolve/WarpXComputeDt.cpp
+++ b/Source/Evolve/WarpXComputeDt.cpp
@@ -32,11 +32,19 @@
void
WarpX::ComputeDt ()
{
- // Determine
+ // Handle cases where the timestep is not limited by the speed of light
+ if (electromagnetic_solver_id == ElectromagneticSolverAlgo::None) {
+ for (int lev=0; lev<=max_level; lev++) {
+ dt[lev] = const_dt;
+ }
+ return;
+ }
+
+ // Determine the appropriate timestep as limited by the speed of light
const amrex::Real* dx = geom[max_level].CellSize();
amrex::Real deltat = 0.;
- if (maxwell_solver_id == MaxwellSolverAlgo::PSATD) {
+ if (electromagnetic_solver_id == ElectromagneticSolverAlgo::PSATD) {
// Computation of dt for spectral algorithm
// (determined by the minimum cell size in all directions)
#if defined(WARPX_DIM_1D_Z)
@@ -50,21 +58,20 @@ WarpX::ComputeDt ()
// Computation of dt for FDTD algorithm
#ifdef WARPX_DIM_RZ
// - In RZ geometry
- if (maxwell_solver_id == MaxwellSolverAlgo::Yee) {
+ if (electromagnetic_solver_id == ElectromagneticSolverAlgo::Yee) {
deltat = cfl * CylindricalYeeAlgorithm::ComputeMaxDt(dx, n_rz_azimuthal_modes);
#else
// - In Cartesian geometry
if (do_nodal) {
deltat = cfl * CartesianNodalAlgorithm::ComputeMaxDt(dx);
- } else if (maxwell_solver_id == MaxwellSolverAlgo::Yee
- || maxwell_solver_id == MaxwellSolverAlgo::ECT) {
+ } else if (electromagnetic_solver_id == ElectromagneticSolverAlgo::Yee
+ || electromagnetic_solver_id == ElectromagneticSolverAlgo::ECT) {
deltat = cfl * CartesianYeeAlgorithm::ComputeMaxDt(dx);
- } else if (maxwell_solver_id == MaxwellSolverAlgo::CKC) {
+ } else if (electromagnetic_solver_id == ElectromagneticSolverAlgo::CKC) {
deltat = cfl * CartesianCKCAlgorithm::ComputeMaxDt(dx);
#endif
} else {
- amrex::Abort(Utils::TextMsg::Err(
- "ComputeDt: Unknown algorithm"));
+ amrex::Abort(Utils::TextMsg::Err("ComputeDt: Unknown algorithm"));
}
}
@@ -76,12 +83,6 @@ WarpX::ComputeDt ()
dt[lev] = dt[lev+1] * refRatio(lev)[0];
}
}
-
- if (do_electrostatic != ElectrostaticSolverAlgo::None) {
- for (int lev=0; lev<=max_level; lev++) {
- dt[lev] = const_dt;
- }
- }
}
void