diff options
author | 2020-07-22 17:29:51 -0700 | |
---|---|---|
committer | 2020-07-22 17:29:51 -0700 | |
commit | 324115542740ca838d645b1f1d01cb50bd17e584 (patch) | |
tree | cc129d47d6cc1e5c56735b60b8f35cc02eefcabf /Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H | |
parent | fd8a4bc0af84f9b5b074b18554becd92d22cb9e4 (diff) | |
download | WarpX-324115542740ca838d645b1f1d01cb50bd17e584.tar.gz WarpX-324115542740ca838d645b1f1d01cb50bd17e584.tar.zst WarpX-324115542740ca838d645b1f1d01cb50bd17e584.zip |
Cleaner calculation of the simulation timestep (#1031)
* Cleaner calculation of the simulation timestep
* Fix compilation errors
* Remove specification of CKC solver in PSATD test
* Correct calculation of dt
* Fix compilation error
* Cleaner calculation of the simulation timestep
* Fix compilation errors
* Remove specification of CKC solver in PSATD test
* Correct calculation of dt
* Fix compilation error
* Cleanup for cylindrical
* Change input of automated tests to preserve previous results
* Fix import statement for cylindrical
* Preserve dt for PML test
* Move function documentation to WarpX.H
* Update CMakeList
* Update CFL in some tests
* Apply suggestions from code review
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Fix compilation errors
* Revert "Fix compilation errors"
This reverts commit 56ef67f228269b266876629f49789d3afdbbc00b.
* Fix compilation error
* Add cmath headers
Add directly used header files.
* Fix Include Order
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H index 9c52327e3..bb480364a 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H @@ -8,6 +8,8 @@ #ifndef WARPX_FINITE_DIFFERENCE_ALGORITHM_CARTESIAN_CKC_H_ #define WARPX_FINITE_DIFFERENCE_ALGORITHM_CARTESIAN_CKC_H_ +#include "Utils/WarpXConst.H" + #include <AMReX_REAL.H> #include <AMReX_Array4.H> #include <AMReX_Gpu.H> @@ -15,6 +17,7 @@ #include <algorithm> #include <array> + /** * This struct contains only static functions to initialize the stencil coefficients * and to compute finite-difference derivatives for the Cartesian CKC algorithm. @@ -91,6 +94,20 @@ struct CartesianCKCAlgorithm { } /** + * Compute the maximum timestep, for which the scheme remains stable + * (Courant-Friedrichs-Levy limit) */ + static amrex::Real ComputeMaxDt ( amrex::Real const * const dx ) { +#if (defined WARPX_DIM_XZ) + // - In Cartesian 2D geometry: determined by the minimum cell size in all direction + amrex::Real const delta_t = std::min( dx[0], dx[1] )/PhysConst::c; +#else + // - In Cartesian 3D geometry: determined by the minimum cell size in all direction + amrex::Real const delta_t = std::min( dx[0], std::min( dx[1], dx[2] ) ) / PhysConst::c; +#endif + return delta_t; + } + + /** * Perform derivative along x on a cell-centered grid, from a nodal field `F` */ AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE static amrex::Real UpwardDx ( |