19 #ifndef GEOS_PHYSICSSOLVERS_SURFACEGENERATION_SURFACEGENERATOR_HPP_
20 #define GEOS_PHYSICSSOLVERS_SURFACEGENERATION_SURFACEGENERATOR_HPP_
22 #include "mesh/mpiCommunications/NeighborCommunicator.hpp"
30 class SpatialPartition;
34 class ElementRegionManager;
35 class ElementRegionBase;
47 Group *
const parent );
51 static string catalogName() {
return "SurfaceGenerator"; }
70 real64 const eventProgress,
80 inline string const getFractureRegionName()
const {
return m_fractureRegionName; }
93 stdVector< NeighborCommunicator > & neighbors,
95 int const numTileColors,
131 bool const prefrac );
152 real64 ( &vecTipNorm )[3],
190 real64 ( &vecTipNorm )[3],
193 bool threeNodesPinched,
209 void markRuptureFaceFromEdge(
localIndex const edgeID,
215 real64 ( &vecTipNorm )[3],
218 int const edgeMode );
229 void markRuptureFaceFromNode(
localIndex const nodeIndex,
245 void postUpdateRuptureStates(
NodeManager const & nodeManager,
283 void buildFilteredRuptureMaps(
310 int checkEdgeSplitability(
localIndex const edgeID,
314 const
bool prefrac );
343 const
bool prefrac );
360 bool findFracturePlanes(
localIndex const nodeID,
388 void performFracture(
localIndex const nodeID,
402 void mapConsistencyCheck(
localIndex const nodeID,
440 bool assignLocationsBFS( std::
set<
localIndex > const & separationPathFaces,
470 void calculateKinkAngles(
FaceManager const & faceManager,
474 bool const prefrac );
480 void synchronizeTipSets(
FaceManager & faceManager,
532 bool isGhostBoundaryFace(
localIndex const faceIndex )
const
534 return m_originalFacesToElemIndex( faceIndex, 1 ) == -1;
538 real64 const (&faceCenter)[3],
539 real64 const initialRockToughness,
540 real64 const toughnessScalingFactor );
547 constexpr
static char const * failCriterionString() {
return "failCriterion"; }
548 constexpr
static char const * solidMaterialNameString() {
return "solidMaterialNames"; }
549 constexpr
static char const * fExternalString() {
return "fExternal"; }
550 constexpr
static char const * tipNodesString() {
return "tipNodes"; }
551 constexpr
static char const * tipEdgesString() {
return "tipEdges"; }
552 constexpr
static char const * tipFacesString() {
return "tipFaces"; }
553 constexpr
static char const * trailingFacesString() {
return "trailingFaces"; }
554 constexpr
static char const * fractureRegionNameString() {
return "fractureRegion"; }
555 constexpr
static char const * mpiCommOrderString() {
return "mpiCommOrder"; }
556 constexpr
static char const * isPoroelasticString() {
return "isPoroelastic";}
560 constexpr
static char const * initialRockToughnessString() {
return "initialRockToughness"; }
561 constexpr
static char const * toughnessScalingFactorString() {
return "toughnessScalingFactor"; }
563 constexpr
static char const * fractureOriginString() {
return "fractureOrigin"; }
566 constexpr
static char const * nodeBasedSIFString() {
return "nodeBasedSIF"; }
572 constexpr
static real64 m_nonRuptureTime = 1e9;
577 array1d< localIndex > m_solidMaterialFullIndex;
583 real64 m_initialRockToughness;
585 real64 m_toughnessScalingFactor;
593 SortedArray< localIndex > m_separableFaceSet;
596 ArrayOfSets< localIndex > m_originalNodetoFaces;
599 ArrayOfSets< localIndex > m_originalNodetoEdges;
602 ArrayOfArrays< localIndex > m_originalFaceToEdges;
605 array1d< SortedArray< localIndex > > m_usedFacesForNode;
608 array2d< localIndex > m_originalFacesToElemRegion;
611 array2d< localIndex > m_originalFacesToElemSubRegion;
614 array2d< localIndex > m_originalFacesToElemIndex;
617 string m_fractureRegionName;
619 SortedArray< localIndex > m_tipNodes;
621 SortedArray< localIndex > m_tipEdges;
623 SortedArray< localIndex > m_tipFaces;
625 SortedArray< localIndex > m_trailingFaces;
627 SortedArray< localIndex > m_faceElemsRupturedThisSolve;
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
This class provides an interface to ObjectManagerBase in order to manage edge data.
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data.
The class is used to manage mesh body.
Class facilitating the representation of a multi-level discretization of a MeshBody.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data.
The ObjectManagerBase is the base object of all object managers in the mesh data hierachy.
Base class for all physics solvers.
void postInputInitialization() override final
virtual void initializePostInitialConditionsPreSubGroups() override final
Called by InitializePostInitialConditions() prior to initializing sub-Groups.
virtual void postRestartInitialization() override final
Performs initialization required after reading from a restart file.
string getCatalogName() const override
virtual void registerDataOnMesh(Group &MeshBody) override final
Register wrappers that contain data on the mesh objects.
Base template for ordered and unordered maps.
virtual real64 solverStep(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override
entry function to perform a solver step
virtual bool execute(real64 const time_n, real64 const dt, integer const cycleNumber, integer const eventCounter, real64 const eventProgress, DomainPartition &domain) override
Main extension point of executable targets.
array1d< localIndex > localIndex_array
A 1-dimensional array of geos::localIndex types.
std::set< T > set
A set of local indices.
double real64
64-bit floating point type.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Tensor< real64, 3 > R1Tensor
Alias for a local (stack-based) rank-1 tensor type.
int integer
Signed integer type.
internal::StdVectorWrapper< T, Allocator, USE_STD_CONTAINER_BOUNDS_CHECKING > stdVector
Structure to hold scoped key names.