16 #ifndef GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQRK32_HPP
17 #define GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQRK32_HPP
20 #include "kernels/RateAndStateKernels.hpp"
33 Group *
const parent );
38 static string catalogName() {
return "QuasiDynamicEQRK32"; }
57 constexpr
static char const *
timeStepTol() {
return "timeStepTol"; }
95 const int cycleNumber,
114 virtual void postInputInitialization()
override;
121 string m_stressSolverName;
131 bool m_successfulStep;
142 PIDController( std::array< const real64, 3 >
const & cparams,
146 controlParameters{ cparams },
149 acceptSafety( safety ),
150 errors{ {0.0, 0.0, 0.0} }
154 PIDController( PIDController
const & ) =
default;
157 PIDController( PIDController && ) =
default;
160 PIDController() =
delete;
163 PIDController &
operator=( PIDController
const & ) =
delete;
166 PIDController &
operator=( PIDController && ) =
delete;
169 const std::array< const real64, 3 > controlParameters;
175 real64 const acceptSafety;
177 std::array< real64, 3 > errors;
183 real64 const k = LvArray::math::min( algHighOrder, algLowOrder ) + 1.0;
184 real64 const eps0 = 1.0/(errors[0] + std::numeric_limits< real64 >::epsilon());
185 real64 const eps1 = 1.0/(errors[1] + std::numeric_limits< real64 >::epsilon());
186 real64 const eps2 = 1.0/(errors[2] + std::numeric_limits< real64 >::epsilon());
190 return 1.0 + LvArray::math::atan2( pow( eps0, controlParameters[0] / k ) *
191 pow( eps1, controlParameters[1] / k ) *
192 pow( eps2, controlParameters[2] / k ) - 1.0, 1.0 );
196 PIDController m_controller;
199 class SpringSliderParameters
206 springStiffness( 0.0 )
208 real64 const criticalStiffness = normalTraction * (b - a) / Dc;
209 springStiffness = 0.9 * criticalStiffness;
213 SpringSliderParameters( SpringSliderParameters
const & ) =
default;
216 SpringSliderParameters( SpringSliderParameters && ) =
default;
219 SpringSliderParameters() =
delete;
222 SpringSliderParameters & operator=( SpringSliderParameters
const & ) =
delete;
225 SpringSliderParameters & operator=( SpringSliderParameters && ) =
delete;
#define GEOS_HOST_DEVICE
Marks a host-device function.
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Base class for all physics solvers.
PhysicsSolverBase & operator=(PhysicsSolverBase const &)=delete
Deleted copy assignment operator.
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 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.
QuasiDynamicEQRK32()=delete
The default nullary constructor is disabled to avoid compiler auto-generation:
virtual string getCatalogName() const override
void stepRateStateODEAndComputeError(real64 const dt, DomainPartition &domain) const
Updates slip and state to t + dt and approximates the error.
QuasiDynamicEQRK32(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 saveState(DomainPartition &domain) const
save the current state
virtual real64 setNextDt(real64 const ¤tDt, DomainPartition &domain) override final
function to set the next time step size
virtual void registerDataOnMesh(Group &meshBodies) override
This method ties properties with their supporting mesh.
virtual ~QuasiDynamicEQRK32() override
Destructor.
void stepRateStateODEInitialSubstage(real64 const dt, DomainPartition &domain) const
Computes stage rates for the initial Runge-Kutta substage and updates slip and state.
void updateSlipVelocity(real64 const &time_n, real64 const &dt, DomainPartition &domain) const
Updates rate-and-state slip velocity.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
Structure to hold scoped key names.
constexpr static char const * frictionLawNameString()
Friction law name string.
constexpr static char const * timeStepTol()
target slip increment
constexpr static char const * stressSolverNameString()
stress solver name
constexpr static char const * shearImpedanceString()
Friction law name string.
Butcher table for the BogackiShampine 3(2) method.