20 #ifndef GEOS_PHYSICSSOLVERS_SIMPLEPDE_PHASEFIELDDAMAGE_HPP_
21 #define GEOS_PHYSICSSOLVERS_SIMPLEPDE_PHASEFIELDDAMAGE_HPP_
35 namespace dataRepository
39 class FieldSpecificationBase;
40 class FiniteElementBase;
41 class DomainPartition;
50 static string catalogName()
52 return "PhaseFieldDamageFEM";
59 static string coupledSolverAttributePrefix() {
return "damage"; }
104 real64 const scalingFactor,
124 void applyDirichletBCImplicit(
real64 const time,
130 void applyIrreversibilityConstraint(
DofManager const & dofManager,
137 enum class TimeIntegrationOption
144 enum class LocalDissipation
152 static constexpr
char const * coeffNameString() {
return "coeffField"; }
153 static constexpr
char const * localDissipationOptionString() {
return "localDissipation"; }
154 static constexpr
char const * irreversibilityFlagString() {
return "irreversibilityFlag"; }
155 static constexpr
char const * damageUpperBoundString() {
return "damageUpperBound"; }
156 static constexpr
char const * solidModelNamesString() {
return "solidMaterialNames"; }
160 } PhaseFieldDamageFEMViewKeys;
172 string const & getFieldName()
const
183 TimeIntegrationOption m_timeIntegrationOption;
184 LocalDissipation m_localDissipationOption;
186 real64 m_damageUpperBound;
200 "ExplicitTransient" );
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...
virtual void postInputInitialization() override final
string getCatalogName() const override
virtual void registerDataOnMesh(Group &meshBodies) override final
Register wrappers that contain data on the mesh objects.
virtual void saveSequentialIterationState(DomainPartition &domain) override
Save the state of the solver for sequential iteration.
Base class for all physics solvers.
ParallelMatrix m_matrix
System matrix.
ParallelVector m_solution
System solution vector.
virtual void resetStateToBeginningOfStep(DomainPartition &) override
reset state of physics back to the beginning of the step.
virtual void updateState(DomainPartition &domain) override final
Recompute all dependent quantities from primary variables (including constitutive models)
virtual void applyBoundaryConditions(real64 const time, real64 const dt, DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
apply boundary condition to system
virtual void applySystemSolution(DofManager const &dofManager, arrayView1d< real64 const > const &localSolution, real64 const scalingFactor, real64 const dt, DomainPartition &domain) override
Function to apply the solution vector to the state.
virtual real64 solverStep(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override
entry function to perform a solver step
virtual void setupDofs(DomainPartition const &domain, DofManager &dofManager) const override
Populate degree-of-freedom manager with fields relevant to this solver.
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 implicitStepComplete(real64 const &time, real64 const &dt, DomainPartition &domain) override
perform cleanup for implicit timestep
virtual real64 explicitStep(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override
Entry function for an explicit time integration step.
virtual real64 calculateResidualNorm(real64 const &time_n, real64 const &dt, DomainPartition const &domain, DofManager const &dofManager, arrayView1d< real64 const > const &localRhs) override
calculate the norm of the global system residual
virtual void implicitStepSetup(real64 const &, real64 const &, DomainPartition &) override
function to perform setup for implicit timestep
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
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.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
Array< T, 1 > array1d
Alias for 1D array.
LAInterface::ParallelVector ParallelVector
Alias for ParallelVector.
Structure to hold scoped key names.