20 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_HYDROFRACTURESOLVER_HPP_
21 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_HYDROFRACTURESOLVER_HPP_
30 using dataRepository::Group;
32 template<
typename POROMECHANICS_SOLVER = SinglePhasePoromechanics<> >
37 using Base = POROMECHANICS_SOLVER;
38 using Base::m_solvers;
40 using Base::m_dofManager;
41 using Base::m_localMatrix;
43 using Base::m_solution;
44 using Base::m_linearSolverParameters;
46 using Base::registerWrapper;
47 using Base::forDiscretizationOnMeshTargets;
48 using Base::getMeshModificationTimestamp;
49 using Base::getSystemSetupTimestamp;
50 using Base::nonlinearImplicitStep;
51 using Base::implicitStepComplete;
52 using Base::getLogLevel;
53 using Base::setSystemSetupTimestamp;
54 using Base::setupDofs;
55 using Base::flowSolver;
56 using Base::solidMechanicsSolver;
57 using Base::assembleElementBasedTerms;
58 using Base::resetStateToBeginningOfStep;
67 Group *
const parent );
72 static string catalogName()
77 return "Hydrofracture";
103 DofManager & dofManager )
const override final;
110 bool const setSparsity =
true )
override;
137 void updateHydraulicApertureAndFracturePermeability(
DomainPartition & domain );
139 void assembleForceResidualDerivativeWrtPressure(
DomainPartition & domain,
143 void assembleFluidMassResidualDerivativeWrtDisplacement(
DomainPartition const & domain,
146 std::unique_ptr< CRSMatrix< real64, localIndex > > & getRefDerivativeFluxResidual_dAperture()
148 return m_derivativeFluxResidual_dAperture;
153 return m_derivativeFluxResidual_dAperture->toViewConstSizes();
156 CRSMatrixView< real64 const, localIndex const > getDerivativeFluxResidual_dNormalJump()
const
158 return m_derivativeFluxResidual_dAperture->toViewConst();
161 enum class InitializationType :
integer
169 constexpr
static char const * surfaceGeneratorNameString() {
return "surfaceGeneratorName"; }
171 constexpr
static char const * maxNumResolvesString() {
return "maxNumResolves"; }
173 constexpr
static char const * isMatrixPoroelasticString() {
return "isMatrixPoroelastic"; }
175 constexpr
static char const * newFractureInitializationTypeString() {
return "newFractureInitializationType"; }
177 constexpr
static char const * useQuasiNewtonString() {
return "useQuasiNewton"; }
179 constexpr
static char const * isLaggingFractureStencilWeightsUpdateString() {
return "isLaggingFractureStencilWeightsUpdate"; }
181 constexpr
static char const * leakoffConstString() {
return "leakoffCoefficient"; }
183 constexpr
static char const * fractureCreationTimeString() {
return "fractureCreationTime"; }
185 #ifdef GEOS_USE_SEPARATION_COEFFICIENT
186 constexpr
static char const * separationCoeff0String() {
return "separationCoeff0"; }
187 constexpr
static char const * apertureAtFailureString() {
return "apertureAtFailure"; }
221 virtual
void setMGRStrategy() override;
225 virtual
real64 fullyCoupledSolverStep(
real64 const & time_n,
227 int const cycleNumber,
230 void checkRockOnlyMatrix( dataRepository::
Group & meshBodies );
232 void assembleFluidLeakSource(
real64 time,
245 string m_contactRelationName;
248 string m_surfaceGeneratorName;
262 InitializationType m_newFractureInitializationType;
267 integer m_isLaggingFractureStencilWeightsUpdate;
270 real64 m_leakoffCoefficient;
@ Pressure
Pressure in Pascal.
The DoFManager is responsible for allocating global dofs, constructing sparsity patterns,...
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
~HydrofractureSolver() override
Destructor for the class.
HydrofractureSolver(const string &name, Group *const parent)
main constructor for HydrofractureSolver objects
static string coupledSolverAttributePrefix()
String used to form the solverName used to register solvers in CoupledSolver.
void addFluxApertureCouplingSparsityPattern(DomainPartition &domain, DofManager &dofManager, SparsityPatternView< globalIndex > const &pattern) const
virtual void postInputInitialization() override final
string getCatalogName() const override
void addFluxApertureCouplingNNZ(DomainPartition &domain, DofManager &dofManager, arrayView1d< localIndex > const &rowLengths) const
virtual void setupCoupling(DomainPartition const &domain, DofManager &dofManager) const override final
Utility function to set the coupling between degrees of freedom.
virtual real64 setNextDt(real64 const ¤tTime, real64 const ¤tDt, DomainPartition &domain) override
function to set the next time step size
virtual void resetStateToBeginningOfStep(DomainPartition &domain) override final
reset state of physics back to the beginning of the step.
virtual void implicitStepComplete(real64 const &time_n, real64 const &dt, DomainPartition &domain) override final
perform cleanup for implicit timestep
virtual void registerDataOnMesh(Group &MeshBodies) override final
Register wrappers that contain data on the mesh objects.
virtual void setupSystem(DomainPartition &domain, DofManager &dofManager, CRSMatrix< real64, globalIndex > &localMatrix, ParallelVector &rhs, ParallelVector &solution, bool const setSparsity=true) override
Set up the linear system (DOF indices and sparsity patterns)
virtual void assembleSystem(real64 const time, 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
virtual void updateState(DomainPartition &domain) override final
Recompute all dependent quantities from primary variables (including constitutive models)
virtual void implicitStepSetup(real64 const &time_n, real64 const &dt, DomainPartition &domain) override final
function to perform setup for implicit timestep
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
ENUM_STRINGS(LinearSolverParameters::SolverType, "direct", "cg", "gmres", "fgmres", "bicgstab", "preconditioner")
Declare strings associated with enumeration values.
LvArray::SparsityPatternView< COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > SparsityPatternView
Alias for Sparsity pattern View.
double real64
64-bit floating point type.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
std::int32_t integer
Signed integer type.
LvArray::CRSMatrix< T, COL_INDEX, localIndex, LvArray::ChaiBuffer > CRSMatrix
Alias for CRS Matrix class.
LAInterface::ParallelVector ParallelVector
Alias for ParallelVector.