GEOS
MultiphasePoromechanicsConformingFractures.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University
7  * Copyright (c) 2018-2020 TotalEnergies
8  * Copyright (c) 2019- GEOSX Contributors
9  * All rights reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
19 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_
20 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_
21 
24 
25 namespace geos
26 {
27 
28 template< typename FLOW_SOLVER = CompositionalMultiphaseBase >
29 class MultiphasePoromechanicsConformingFractures : public PoromechanicsConformingFractures< MultiphasePoromechanics, FLOW_SOLVER >
30 {
31 public:
32 
34  using Base::m_solvers;
35  using Base::m_dofManager;
36  using Base::m_localMatrix;
37  using Base::m_rhs;
38  using Base::m_solution;
39  using Base::m_maxFaceNodes;
40 
42  static string coupledSolverAttributePrefix() { return "poromechanicsConformingFractures"; }
43 
50  dataRepository::Group * const parent );
51 
54 
60  static string catalogName()
61  {
62  if constexpr ( std::is_same_v< FLOW_SOLVER, CompositionalMultiphaseBase > )
63  {
64  return "MultiphasePoromechanicsConformingFractures";
65  }
66  else
67  {
68  return FLOW_SOLVER::catalogName() + "PoromechanicsConformingFractures";
69  }
70  }
71 
75  string getCatalogName() const override { return catalogName(); }
76 
77  void assembleSystem( real64 const time_n,
78  real64 const dt,
79  DomainPartition & domain,
80  DofManager const & dofManager,
82  arrayView1d< real64 > const & localRhs ) override;
83 
84 protected:
85 
86  virtual void initializePreSubGroups() override;
87 
88  virtual void assembleFluidMassResidualDerivativeWrtDisplacement( MeshLevel const & mesh,
89  string_array const & regionNames,
90  DofManager const & dofManager,
92  arrayView1d< real64 > const & localRhs ) override;
93 
94  virtual integer numFluidComponents() const override { return this->flowSolver()->numFluidComponents(); }
95 
96  virtual string getFlowDofKey() const override { return CompositionalMultiphaseBase::viewKeyStruct::elemDofFieldString(); }
97 
98 };
99 
100 } /* namespace geos */
101 
102 #endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_ */
The DoFManager is responsible for allocating global dofs, constructing sparsity patterns,...
Definition: DofManager.hpp:45
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Class facilitating the representation of a multi-level discretization of a MeshBody.
Definition: MeshLevel.hpp:42
static string coupledSolverAttributePrefix()
String used to form the solverName used to register solvers in CoupledSolver.
static string catalogName()
name of the node manager in the object catalog
virtual void initializePreSubGroups() override
Called by Initialize() prior to initializing sub-Groups.
void assembleSystem(real64 const time_n, real64 const dt, DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
function to assemble the linear system matrix and rhs
MultiphasePoromechanicsConformingFractures(const string &name, dataRepository::Group *const parent)
main constructor for MultiphasePoromechanicsConformingFractures objects
FLOW_SOLVER * flowSolver() const
accessor for the pointer to the flow solver
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:179
stdVector< string > string_array
A 1-dimensional array of geos::string types.
Definition: DataTypes.hpp:361
double real64
64-bit floating point type.
Definition: DataTypes.hpp:98
LvArray::CRSMatrixView< T, COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
Definition: DataTypes.hpp:309
int integer
Signed integer type.
Definition: DataTypes.hpp:81