GEOS
SpringSlider.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 
17 
18 #ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP
19 #define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP
20 
21 #include "physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.hpp"
22 
23 namespace geos
24 {
25 
26 template< typename RSSOLVER_TYPE = ImplicitQDRateAndState >
27 class SpringSlider : public RSSOLVER_TYPE
28 {
29 public:
30 
31  SpringSlider() = delete;
32 
33  SpringSlider( const string & name,
34  dataRepository::Group * const parent );
35 
37  virtual ~SpringSlider() override;
38 
39  static string catalogName() { return RSSOLVER_TYPE::derivedSolverPrefix() + "SpringSlider"; }
40 
41  virtual string getCatalogName() const override { return catalogName(); }
42 
43  virtual void registerDataOnMesh( dataRepository::Group & meshBodies ) override;
44 
45  struct viewKeyStruct : public RSSOLVER_TYPE::viewKeyStruct
46  {};
47 
48  virtual real64 updateStresses( real64 const & time_n,
49  real64 const & dt,
50  const int cycleNumber,
51  DomainPartition & domain ) const override final;
52 
53 private:
54 
55  class SpringSliderParameters
56  {
57 public:
58 
60  SpringSliderParameters( real64 const normalTraction, real64 const a, real64 const b, real64 const Dc ):
61  tauRate( 1e-4 ),
62  springStiffness( 0.0 )
63  {
64  real64 const criticalStiffness = normalTraction * (b - a) / Dc;
65  springStiffness = 0.9 * criticalStiffness;
66  }
67 
69  SpringSliderParameters( SpringSliderParameters const & ) = default;
70 
72  SpringSliderParameters( SpringSliderParameters && ) = default;
73 
75  SpringSliderParameters() = delete;
76 
78  SpringSliderParameters & operator=( SpringSliderParameters const & ) = delete;
79 
81  SpringSliderParameters & operator=( SpringSliderParameters && ) = delete;
82 
83  real64 tauRate;
84 
85  real64 springStiffness;
86  };
87 };
88 
89 } /* namespace geos */
90 
91 #endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP */
#define GEOS_HOST_DEVICE
Marks a host-device function.
Definition: GeosxMacros.hpp:49
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
PhysicsSolverBase & operator=(PhysicsSolverBase const &)=delete
Deleted copy assignment operator.
virtual string getCatalogName() const override
virtual ~SpringSlider() override
Destructor.
virtual void registerDataOnMesh(dataRepository::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 override final
Compute stresses and update tractions on the fault.
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99