GEOS
QDRateAndStateBase.hpp
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 TotalEnergies
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
16 #ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QDRATEANDSTATEBASE_HPP
17 #define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QDRATEANDSTATEBASE_HPP
18 
20 
21 namespace geos
22 {
23 
25 {
26 public:
28  QDRateAndStateBase() = delete;
29 
31  QDRateAndStateBase( const string & name,
32  Group * const parent );
33 
35  virtual ~QDRateAndStateBase() override;
36 
38  virtual void registerDataOnMesh( Group & meshBodies ) override;
39 
41  {
43  constexpr static char const * frictionLawNameString() { return "frictionLawName"; }
45  constexpr static char const * shearImpedanceString() { return "shearImpedance"; }
46  };
47 
52  void saveState( DomainPartition & domain ) const;
53 
60 
68  virtual real64 updateStresses( real64 const & time_n,
69  real64 const & dt,
70  const int cycleNumber,
71  DomainPartition & domain ) const = 0;
72 
78  virtual void applyInitialConditionsToFault( int const cycleNumber,
79  DomainPartition & domain ) const;
80 
81 protected:
82 
85 };
86 
87 } /* namespace geos */
88 
89 #endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICTY_QDRATEANDSTATEBASE_HPP */
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Base class for all physics solvers.
QDRateAndStateBase()=delete
The default nullary constructor is disabled to avoid compiler auto-generation:
virtual void applyInitialConditionsToFault(int const cycleNumber, DomainPartition &domain) const
Apply initial conditions to fields on the fault.
void saveState(DomainPartition &domain) const
Save the current state of the solver fields.
virtual void registerDataOnMesh(Group &meshBodies) override
This method ties properties with their supporting mesh.
virtual real64 updateStresses(real64 const &time_n, real64 const &dt, const int cycleNumber, DomainPartition &domain) const =0
Compute stresses and update tractions on the fault.
virtual ~QDRateAndStateBase() override
Destructor.
QDRateAndStateBase(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 enforceRateAndVelocityConsistency(SurfaceElementSubRegion &subRegion) const
Check that only one of slip rate or slip velocity are specified as initial conditions and initialize ...
real64 m_shearImpedance
shear impedance
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
Structure to hold scoped key names.
constexpr static char const * frictionLawNameString()
Friction law name string.
constexpr static char const * shearImpedanceString()
Friction law name string.