GEOS
coreComponents
physicsSolvers
multiphysics
PhaseFieldPoromechanicsSolver.hpp
Go to the documentation of this file.
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
21
#ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_PHASEFIELDPOROMECHANICSSOLVER_HPP_
22
#define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_PHASEFIELDPOROMECHANICSSOLVER_HPP_
23
24
#include "
physicsSolvers/multiphysics/CoupledSolver.hpp
"
25
#include "
physicsSolvers/multiphysics/PhaseFieldFractureSolver.hpp
"
26
#include "
physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp
"
27
#include "
physicsSolvers/simplePDE/PhaseFieldDamageFEM.hpp
"
28
29
namespace
geos
30
{
31
32
class
PhaseFieldPoromechanicsSolver
:
public
CoupledSolver
< SinglePhasePoromechanics< SinglePhaseBase >, PhaseFieldDamageFEM >
33
{
34
public
:
35
36
using
Base
=
CoupledSolver< SinglePhasePoromechanics< SinglePhaseBase >
,
PhaseFieldDamageFEM
>;
37
using
Base::m_solvers
;
38
using
Base::m_dofManager
;
39
using
Base::m_localMatrix
;
40
using
Base::m_rhs
;
41
using
Base::m_solution
;
42
43
PhaseFieldPoromechanicsSolver
(
const
string
& name,
44
Group
*
const
parent );
45
46
~
PhaseFieldPoromechanicsSolver
()
override
=
default
;
47
52
static
string
catalogName
()
53
{
54
return
"PhaseFieldPoromechanics"
;
55
}
56
57
string
getCatalogName
()
const override
{
return
catalogName
(); }
58
60
static
string
coupledSolverAttributePrefix
() {
return
"PhaseFieldPoromechanics"
; }
61
62
enum class
SolverType :
integer
63
{
64
Poromechanics = 0,
65
Damage = 1
66
};
67
68
virtual
void
resetStateToBeginningOfStep
(
DomainPartition
& domain )
override
final
;
69
70
virtual
void
postInputInitialization
() override final;
71
76
SinglePhasePoromechanics
<
SinglePhaseBase
> *
poromechanicsSolver
()
const
77
{
78
return
std::get< toUnderlying( SolverType::Poromechanics ) >(
m_solvers
);
79
}
80
85
PhaseFieldDamageFEM
*
damageSolver
()
const
86
{
87
return
std::get< toUnderlying( SolverType::Damage ) >(
m_solvers
);
88
}
89
90
virtual
void
mapSolutionBetweenSolvers
(
DomainPartition
& Domain,
integer
const
idx )
override
final
;
91
92
void
applyDamageOnTractionBC(
DomainPartition
& domain );
93
94
protected
:
95
96
virtual
void
initializePostInitialConditionsPreSubGroups
() override final {}
97
98
};
99
100
}
/* namespace geos */
101
102
#endif
/* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_PHASEFIELDPOROMECHANICSSOLVER_HPP_ */
CoupledSolver.hpp
PhaseFieldDamageFEM.hpp
PhaseFieldFractureSolver.hpp
geos::CoupledSolver
Definition:
CoupledSolver.hpp:34
geos::CoupledSolver< SinglePhasePoromechanics< SinglePhaseBase >, PhaseFieldDamageFEM >::m_solvers
std::tuple< SOLVERS *... > m_solvers
Pointers of the single-physics solvers.
Definition:
CoupledSolver.hpp:783
geos::DomainPartition
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Definition:
DomainPartition.hpp:53
geos::PhaseFieldDamageFEM
Definition:
PhaseFieldDamageFEM.hpp:36
geos::PhaseFieldPoromechanicsSolver
Definition:
PhaseFieldPoromechanicsSolver.hpp:33
geos::PhaseFieldPoromechanicsSolver::catalogName
static string catalogName()
name of the node manager in the object catalog
Definition:
PhaseFieldPoromechanicsSolver.hpp:52
geos::PhaseFieldPoromechanicsSolver::damageSolver
PhaseFieldDamageFEM * damageSolver() const
accessor for the pointer to the flow solver
Definition:
PhaseFieldPoromechanicsSolver.hpp:85
geos::PhaseFieldPoromechanicsSolver::getCatalogName
string getCatalogName() const override
Definition:
PhaseFieldPoromechanicsSolver.hpp:57
geos::PhaseFieldPoromechanicsSolver::mapSolutionBetweenSolvers
virtual void mapSolutionBetweenSolvers(DomainPartition &Domain, integer const idx) override final
Maps the solution obtained from one solver to the fields used by the other solver(s)
geos::PhaseFieldPoromechanicsSolver::coupledSolverAttributePrefix
static string coupledSolverAttributePrefix()
String used to form the solverName used to register solvers in CoupledSolver.
Definition:
PhaseFieldPoromechanicsSolver.hpp:60
geos::PhaseFieldPoromechanicsSolver::resetStateToBeginningOfStep
virtual void resetStateToBeginningOfStep(DomainPartition &domain) override final
reset state of physics back to the beginning of the step.
geos::PhaseFieldPoromechanicsSolver::postInputInitialization
virtual void postInputInitialization() override final
geos::PhaseFieldPoromechanicsSolver::initializePostInitialConditionsPreSubGroups
virtual void initializePostInitialConditionsPreSubGroups() override final
Called by InitializePostInitialConditions() prior to initializing sub-Groups.
Definition:
PhaseFieldPoromechanicsSolver.hpp:96
geos::PhaseFieldPoromechanicsSolver::poromechanicsSolver
SinglePhasePoromechanics< SinglePhaseBase > * poromechanicsSolver() const
accessor for the pointer to the poromechanics solver
Definition:
PhaseFieldPoromechanicsSolver.hpp:76
geos::PhysicsSolverBase::m_localMatrix
CRSMatrix< real64, globalIndex > m_localMatrix
Local system matrix and rhs.
Definition:
PhysicsSolverBase.hpp:1172
geos::PhysicsSolverBase::m_dofManager
DofManager m_dofManager
Data structure to handle degrees of freedom.
Definition:
PhysicsSolverBase.hpp:1154
geos::PhysicsSolverBase::m_solution
ParallelVector m_solution
System solution vector.
Definition:
PhysicsSolverBase.hpp:1163
geos::PhysicsSolverBase::m_rhs
ParallelVector m_rhs
System right-hand side vector.
Definition:
PhysicsSolverBase.hpp:1160
geos::SinglePhaseBase
Definition:
SinglePhaseBase.hpp:47
geos::SinglePhasePoromechanics
Definition:
SinglePhasePoromechanics.hpp:32
geos::dataRepository::Group
Definition:
Group.hpp:68
geos
Definition:
DataLayouts.hpp:29
geos::integer
int integer
Signed integer type.
Definition:
DataTypes.hpp:81
SinglePhasePoromechanics.hpp
Generated by
1.9.1