20 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_HYDROFRACTURESOLVER_HPP_
21 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_HYDROFRACTURESOLVER_HPP_
32 using dataRepository::Group;
34 template<
typename POROMECHANICS_SOLVER = SinglePhasePoromechanics<> >
39 using Base = POROMECHANICS_SOLVER;
40 using Base::m_solvers;
42 using Base::m_dofManager;
43 using Base::m_localMatrix;
45 using Base::m_solution;
46 using Base::m_linearSolverParameters;
48 using Base::registerWrapper;
49 using Base::forDiscretizationOnMeshTargets;
50 using Base::getMeshModificationTimestamp;
51 using Base::getSystemSetupTimestamp;
52 using Base::nonlinearImplicitStep;
53 using Base::implicitStepComplete;
54 using Base::getLogLevel;
55 using Base::setSystemSetupTimestamp;
56 using Base::setupDofs;
57 using Base::flowSolver;
58 using Base::solidMechanicsSolver;
59 using Base::assembleElementBasedTerms;
60 using Base::resetStateToBeginningOfStep;
69 Group *
const parent );
74 static string catalogName()
79 return "Hydrofracture";
105 DofManager & dofManager )
const override final;
112 bool const setSparsity =
true )
override;
138 void updateHydraulicApertureAndFracturePermeability(
DomainPartition & domain );
140 void assembleForceResidualDerivativeWrtPressure(
DomainPartition & domain,
144 void assembleFluidMassResidualDerivativeWrtDisplacement(
DomainPartition const & domain,
147 std::unique_ptr< CRSMatrix< real64, localIndex > > & getRefDerivativeFluxResidual_dAperture()
149 return m_derivativeFluxResidual_dAperture;
154 return m_derivativeFluxResidual_dAperture->toViewConstSizes();
157 CRSMatrixView< real64 const, localIndex const > getDerivativeFluxResidual_dNormalJump()
const
159 return m_derivativeFluxResidual_dAperture->toViewConst();
162 enum class InitializationType :
integer
170 constexpr
static char const * surfaceGeneratorNameString() {
return "surfaceGeneratorName"; }
172 constexpr
static char const * maxNumResolvesString() {
return "maxNumResolves"; }
174 constexpr
static char const * isMatrixPoroelasticString() {
return "isMatrixPoroelastic"; }
176 constexpr
static char const * newFractureInitializationTypeString() {
return "newFractureInitializationType"; }
178 constexpr
static char const * useQuasiNewtonString() {
return "useQuasiNewton"; }
180 constexpr
static char const * isLaggingFractureStencilWeightsUpdateString() {
return "isLaggingFractureStencilWeightsUpdate"; }
182 #ifdef GEOS_USE_SEPARATION_COEFFICIENT
183 constexpr
static char const * separationCoeff0String() {
return "separationCoeff0"; }
184 constexpr
static char const * apertureAtFailureString() {
return "apertureAtFailure"; }
221 virtual
real64 fullyCoupledSolverStep(
real64 const & time_n,
223 int const cycleNumber,
234 string m_contactRelationName;
237 string m_surfaceGeneratorName;
251 InitializationType m_newFractureInitializationType;
256 integer m_isLaggingFractureStencilWeightsUpdate;
@ 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 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 real64 setNextDt(real64 const ¤tDt, DomainPartition &domain) override
function to set the next time step size
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.