16 #ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QUASIDYNAMICEQRK32_HPP
17 #define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QUASIDYNAMICEQRK32_HPP
19 #include "QDRateAndStateBase.hpp"
20 #include "kernels/ExplicitRateAndStateKernels.hpp"
33 Group *
const parent );
38 static string derivedSolverPrefix() {
return "Explicit";};
46 constexpr
static char const *
timeStepTol() {
return "timeStepTol"; }
103 bool m_successfulStep;
105 real64 m_stepUpdateFactor;
116 PIDController( std::array< const real64, 3 >
const & cparams,
123 acceptSafety( safety ),
124 errors{ {0.0, 0.0, 0.0} }
149 real64 const acceptSafety;
151 std::array< real64, 3 > errors;
157 real64 const k = LvArray::math::min( algHighOrder, algLowOrder ) + 1.0;
158 real64 const eps0 = 1.0/(errors[0] + std::numeric_limits< real64 >::epsilon());
159 real64 const eps1 = 1.0/(errors[1] + std::numeric_limits< real64 >::epsilon());
160 real64 const eps2 = 1.0/(errors[2] + std::numeric_limits< real64 >::epsilon());
170 PIDController m_controller;
#define GEOS_HOST_DEVICE
Marks a host-device function.
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Proportional-integral-derivative controller used for updating time step based error estimate in the c...
PIDController & operator=(PIDController const &)=delete
Deleted copy assignment operator.
PIDController(PIDController const &)=default
Default copy constructor.
PIDController(PIDController &&)=default
Default move constructor.
PIDController()=delete
Deleted default constructor.
PIDController & operator=(PIDController &&)=delete
Deleted move assignment operator.
const std::array< const real64, 3 > controlParameters
Parameters for the PID error controller.
void stepRateStateODEAndComputeError(real64 const dt, DomainPartition &domain) const
Updates slip and state to t + dt and approximates the error.
virtual void registerDataOnMesh(Group &meshBodies) override
This method ties properties with their supporting mesh.
void evalTimestep(DomainPartition &domain)
Evaluates whether an adaptive time step was successful.
virtual real64 solverStep(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override final
entry function to perform a solver step
void updateSlipVelocity(real64 const &time_n, real64 const &dt, DomainPartition &domain) const
Updates rate-and-state slip velocity.
rateAndStateKernels::BogackiShampine32Table m_butcherTable
Runge-Kutta Butcher table (specifies the embedded RK method)
void stepRateStateODESubstage(integer const stageIndex, real64 const dt, DomainPartition &domain) const
Computes stage rates at the Runge-Kutta substage specified by stageIndex and updates slip and state.
virtual real64 setNextDt(real64 const ¤tDt, DomainPartition &domain) override final
function to set the next time step size
ExplicitQDRateAndState(const string &name, Group *const parent)
The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree st...
void stepRateStateODEInitialSubstage(real64 const dt, DomainPartition &domain) const
Computes stage rates for the initial Runge-Kutta substage and updates slip and state.
ExplicitQDRateAndState()=delete
The default nullary constructor is disabled to avoid compiler auto-generation:
virtual ~ExplicitQDRateAndState() override
Destructor.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
constexpr static char const * timeStepTol()
target slip increment
Butcher table for the BogackiShampine 3(2) method.