GEOS
SeismicityRate.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 Total, S.A
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_INDUCED_SEISMICITY_SEISMICITYRATE_HPP
17 #define GEOS_PHYSICSSOLVERS_INDUCED_SEISMICITY_SEISMICITYRATE_HPP
18 
20 
21 namespace geos
22 {
23 
25 {
26 public:
28  SeismicityRate() = delete;
29 
31  SeismicityRate( const string & name,
32  Group * const parent );
33 
35  virtual ~SeismicityRate() override;
36 
37  static string catalogName() { return "SeismicityRate"; }
38 
42  virtual string getCatalogName() const override { return catalogName(); }
43 
45  virtual void registerDataOnMesh( Group & meshBodies ) override;
46 
48  {
49  static constexpr char const * stressSolverNameString() { return "stressSolverName"; }
50  static constexpr char const * initialFaultNormalTractionString() { return "initialFaultNormalTraction"; }
51  static constexpr char const * initialFaultShearTractionString() { return "initialFaultShearTraction"; }
52  static constexpr char const * faultNormalDirectionString() { return "faultNormalDirection"; }
53  static constexpr char const * faultShearDirectionString() { return "faultShearDirection"; }
54  static constexpr char const * directEffectString() { return "directEffect"; }
55  static constexpr char const * backgroundStressingRateString() { return "backgroundStressingRate"; }
56  };
57 
58  virtual real64 solverStep( real64 const & time_n,
59  real64 const & dt,
60  integer const cycleNumber,
61  DomainPartition & domain ) override final;
62 
71  void integralSolverStep( real64 const & time_n,
72  real64 const & dt,
73  ElementSubRegionBase & subRegion );
74 
80  void updateFaultTraction( ElementSubRegionBase & subRegion ) const;
81 
86  void saveOldState( ElementSubRegionBase & subRegion ) const;
87 
96  arrayView1d< real64 const > const & pres,
97  real64 const (&faultNormalProjectionTensor)[6],
98  real64 const (&faultShearProjectionTensor)[6],
99  arrayView1d< real64 > const & sig,
100  arrayView1d< real64 > const & tau ) const;
101 
109  void initializeFaultTraction( real64 const time_n,
110  integer const cycleNumber,
111  DomainPartition & domain ) const;
112 
113 
114 protected:
115 
123  real64 updateStresses( real64 const & time_n,
124  real64 const & dt,
125  const int cycleNumber,
126  DomainPartition & domain ) const;
127 
128 
129 
130  void constructFaultStressProjectionTensors( real64 ( &faultNormalProjectionTensor )[6],
131  real64 ( &faultShearProjectionTensor )[6] ) const;
132 
133  virtual void postInputInitialization() override;
134 
137 
140 
143 
146 
149 
152 };
153 
154 } /* namespace geos */
155 
156 #endif /* GEOS_PHYSICSSOLVERS_INDUCED_SEISMICITY_SEISMICITYRATE_HPP */
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Base class for all physics solvers.
virtual string getCatalogName() const override
R1Tensor m_faultNormalDirection
fault orientation: normal direction
SeismicityRate(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...
real64 updateStresses(real64 const &time_n, real64 const &dt, const int cycleNumber, DomainPartition &domain) const
update the stresses either by asking the stressSolver or by applying b.c.
string m_stressSolverName
stress solver name string
SeismicityRate()=delete
The default nullary constructor is disabled to avoid compiler auto-generation:
void integralSolverStep(real64 const &time_n, real64 const &dt, ElementSubRegionBase &subRegion)
single step advance in computing the seismicity rate based on stress history according to closed form...
virtual real64 solverStep(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override final
entry function to perform a solver step
virtual void registerDataOnMesh(Group &meshBodies) override
This method ties properties with their supporting mesh.
void computeTotalStressOnFault(arrayView1d< real64 const > const &biotCoefficient, arrayView1d< real64 const > const &pres, real64 const (&faultNormalProjectionTensor)[6], real64 const (&faultShearProjectionTensor)[6], arrayView1d< real64 > const &sig, arrayView1d< real64 > const &tau) const
void updateFaultTraction(ElementSubRegionBase &subRegion) const
called in SolverStep after member stress solver is called to project the stress state to pre-defined ...
void initializeFaultTraction(real64 const time_n, integer const cycleNumber, DomainPartition &domain) const
called in SolverStep before member stress solver is called to project the initial stress state to pre...
real64 m_directEffect
direct effect coefficient
R1Tensor m_faultShearDirection
fault orientation: shear direction
virtual void postInputInitialization() override
void saveOldState(ElementSubRegionBase &subRegion) const
save the old state
virtual ~SeismicityRate() override
Destructor.
real64 m_backgroundStressingRate
bacground stressing rate
PhysicsSolverBase * m_stressSolver
pointer to stress solver
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:180
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:82
Structure to hold scoped key names.