Hipace
AdaptiveTimeStep.H
Go to the documentation of this file.
1 /* Copyright 2020-2021
2  *
3  * This file is part of HiPACE++.
4  *
5  * Authors: MaxThevenet, Severin Diederichs
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef ADAPTIVETIMESTEP_H_
9 #define ADAPTIVETIMESTEP_H_
10 
14 #include <AMReX_AmrCore.H>
15 
18 {
19 private:
20 
23 
25  amrex::Real m_nt_per_betatron = 20.;
27  amrex::Real m_dt_max = std::numeric_limits<amrex::Real>::infinity();
29  amrex::Real m_min_uz = std::numeric_limits<amrex::Real>::max();
31  amrex::Real m_threshold_uz = 2.;
40  amrex::Real m_adaptive_phase_tolerance = 4.e-4;
44  int m_nbeams = 0;
45 
46 public:
51  bool m_adaptive_gather_ez = false;
53  explicit AdaptiveTimeStep (const int nbeams);
54 
58  void BroadcastTimeStep (amrex::Real& dt);
59 
64  void
65  GatherMinUzSlice (MultiBeam& beams, const bool initial);
66 
73  void
74  CalculateFromMinUz (amrex::Real t, amrex::Real& dt, MultiBeam& beams, MultiPlasma& plasmas);
75 
81  void
83  const Fields& fields);
84 
91  void
92  CalculateFromDensity (amrex::Real t, amrex::Real& dt, MultiPlasma& plasmas);
93 };
94 
95 #endif // ADAPTIVETIMESTEP_H_
class handling the adaptive time step
Definition: AdaptiveTimeStep.H:18
amrex::Vector< amrex::Vector< amrex::Real > > m_timestep_data
Definition: AdaptiveTimeStep.H:22
bool m_adaptive_control_phase_advance
Definition: AdaptiveTimeStep.H:37
amrex::Real m_adaptive_phase_tolerance
Definition: AdaptiveTimeStep.H:40
void GatherMinAccSlice(MultiBeam &beams, const amrex::Geometry &geom, const Fields &fields)
Definition: AdaptiveTimeStep.cpp:257
bool m_do_adaptive_time_step
Definition: AdaptiveTimeStep.H:48
amrex::Real m_min_uz
Definition: AdaptiveTimeStep.H:29
void CalculateFromMinUz(amrex::Real t, amrex::Real &dt, MultiBeam &beams, MultiPlasma &plasmas)
Definition: AdaptiveTimeStep.cpp:163
void BroadcastTimeStep(amrex::Real &dt)
Definition: AdaptiveTimeStep.cpp:59
void GatherMinUzSlice(MultiBeam &beams, const bool initial)
Definition: AdaptiveTimeStep.cpp:83
bool m_adaptive_predict_step
Definition: AdaptiveTimeStep.H:33
int m_adaptive_phase_substeps
Definition: AdaptiveTimeStep.H:42
bool m_adaptive_gather_ez
Definition: AdaptiveTimeStep.H:51
void CalculateFromDensity(amrex::Real t, amrex::Real &dt, MultiPlasma &plasmas)
Definition: AdaptiveTimeStep.cpp:319
AdaptiveTimeStep(const int nbeams)
Definition: AdaptiveTimeStep.cpp:21
int m_nbeams
Definition: AdaptiveTimeStep.H:44
amrex::Real m_nt_per_betatron
Definition: AdaptiveTimeStep.H:25
amrex::Real m_dt_max
Definition: AdaptiveTimeStep.H:27
amrex::Real m_threshold_uz
Definition: AdaptiveTimeStep.H:31
Main class handling all field data structures and operations.
Definition: Fields.H:85
Definition: MultiBeam.H:15
Definition: MultiPlasma.H:18