diff options
author | 2022-11-07 20:30:31 -0800 | |
---|---|---|
committer | 2022-11-07 20:30:31 -0800 | |
commit | bf535730cb6c170394da8375887b3ae57ad6ecf5 (patch) | |
tree | de7b2122acbc7e40d5f97c11afa779be689985c9 /Source/Evolve/WarpXComputeDt.cpp | |
parent | ada6fc49cf16f40d1764d3a95c8338126360f329 (diff) | |
download | WarpX-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.cpp | 29 |
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 |