Skip to content

Commit 9062899

Browse files
authored
refactor: Phase-field and damage solid model cleanup, refactor (#4096)
* PhaseFieldFractureSolver, PhaseFieldPoromechanicsSolver, and PhaseFieldDamageFEM cleanup * added a check for nucleation model to see if the dissipation option is linear * move localDissipationoption to constitutive model and added FractureModelType option * updated xmls * renamed sed to crackDrivingForce * apply Damage default field values after array allocation * refactored and added spectral/vol-dev split test decks for all fracture-model types * fix save history of crack driving force * enabled multi-region run with certain defined regions have no damage dof * register nodal damage as a field trait instead of an XML fieldName * Add phase-field benchmark * add viscous regularization * removed fieldName in benchmarks, updated schemas * use internal meshes for single notch examples and stop tracking lfs * removed useless coeffField and call setConstitutiveNamesCallSuper * Error out on unimplemented ExplicitTransient time integration * moved fine mesh files to GEOSDATA, created coarse meshes for integrated tests * fix a bug to save the crack driving force history also on the host * rebaseline * make the fracture model type and dissipation option clear in examples * merged damage interpolation kernels
1 parent 3c127a6 commit 9062899

58 files changed

Lines changed: 8289 additions & 1360 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.integrated_tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
baselines:
22
bucket: geosx
3-
baseline: integratedTests/baseline_integratedTests-pr4127-17399-63445db
3+
baseline: integratedTests/baseline_integratedTests-pr4096-17439-18734f3
44

55
allow_fail:
66
all: ''

BASELINE_NOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ This file is designed to track changes to the integrated test baselines.
55
Any developer who updates the baseline ID in the .integrated_tests.yaml file is expected to create an entry in this file with the pull request number, date, and their justification for rebaselining.
66
These notes should be in reverse-chronological order, and use the following time format: (YYYY-MM-DD).
77

8+
PR #4096 (2026-08-27) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4096-17439-18734f3.tar.gz>
9+
Refactor the phase-field module and add new benchmarks for baseline
10+
811
PR #4127 (2026-08-23) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4127-17399-63445db.tar.gz>
912
=====================
1013
Rebaseline five restart checks after the TPL update changed VTK/Scotch mesh partitioning. Global mesh topology and fields are unchanged.

inputFiles/phaseField/PhaseFieldFracture.ats

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,45 @@ decks = [
2828
check_step=10,
2929
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
3030
TestDeck(
31-
name="PhaseFieldFracture_SpectralSplit",
31+
name="PhaseFieldFracture_SpectralSplit_Cohesive",
3232
description=
3333
'Testing the spectral split of the stress tensor in PF Fracture',
3434
partitions=((1, 1, 1), (2, 2, 1)),
3535
restart_step=15,
3636
check_step=30,
3737
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
3838
TestDeck(
39-
name="PhaseFieldFracture_VolDevSplit",
39+
name="PhaseFieldFracture_SpectralSplit_Brittle",
40+
description=
41+
'Testing the spectral split with the brittle degradation function in PF Fracture',
42+
partitions=((1, 1, 1), (2, 2, 1)),
43+
restart_step=15,
44+
check_step=30,
45+
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
46+
TestDeck(
47+
name="PhaseFieldFracture_VolDevSplit_Brittle",
4048
description=
4149
'Testing the volumetric-deviatoric split of the stress tensor in PF Fracture',
4250
partitions=((1, 1, 1), (2, 2, 1)),
4351
restart_step=15,
4452
check_step=30,
4553
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
54+
TestDeck(
55+
name="PhaseFieldFracture_VolDevSplit_Cohesive",
56+
description=
57+
'Testing the volumetric-deviatoric split with the cohesive degradation function in PF Fracture',
58+
partitions=((1, 1, 1), (2, 2, 1)),
59+
restart_step=15,
60+
check_step=30,
61+
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
62+
TestDeck(
63+
name="PhaseFieldFracture_MultiRegion",
64+
description=
65+
'Testing PF Fracture on one region of a multi-region problem, with mechanics only elsewhere',
66+
partitions=((1, 1, 1), (2, 2, 1)),
67+
restart_step=10,
68+
check_step=20,
69+
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
4670
TestDeck(name="PhaseFieldFracture_Nucleation_smoke",
4771
description='Testing the nucleation model for PF Fracture',
4872
partitions=((1, 1, 1), (2, 2, 1)),

inputFiles/phaseField/PhaseFieldFracture_CohesiveModel.xml

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
name="DamageSolve"
3232
discretization="FE1"
3333
timeIntegrationOption="SteadyState"
34-
fieldName="Damage"
35-
localDissipation="Linear"
3634
logLevel="1"
3735
targetRegions="{ Region1 }">
3836
<NonlinearSolverParameters
@@ -110,7 +108,9 @@
110108
defaultShearModulus="8.3333e9"
111109
lengthScale="0.2"
112110
defaultCriticalFractureEnergy="2.7"
113-
criticalStrainEnergy="1.0"/>
111+
criticalStrainEnergy="1.0"
112+
fractureModelType="Cohesive"
113+
localDissipationOption="Linear"/>
114114
</Constitutive>
115115

116116
<FieldSpecifications>
@@ -119,14 +119,6 @@
119119
objectPath="nodeManager"
120120
scale="0"
121121
setNames="{xneg, xpos, yneg, ypos, zneg, zpos}"/> -->
122-
<FieldSpecification
123-
name="Gc"
124-
initialCondition="1"
125-
setNames="{ all }"
126-
objectPath="ElementRegions/Region1"
127-
fieldName="shale_criticalFractureEnergy"
128-
scale="2.7"/>
129-
130122
<FieldSpecification
131123
name="xpos"
132124
objectPath="nodeManager"
@@ -167,25 +159,17 @@
167159
setNames="{ all }"/>
168160

169161
<!-- <FieldSpecification name="pointSource"
170-
fieldName="Damage"
162+
fieldName="damage"
171163
initialCondition="0"
172164
objectPath="nodeManager"
173165
scale="1"
174166
setNames="{centerLine}"/> -->
175167
<!-- FieldSpecification name="pointSource2"
176-
fieldName="Damage"
168+
fieldName="damage"
177169
initialCondition="0"
178170
objectPath="nodeManager"
179171
scale="0"
180172
setNames="{xneg,xpos}"/> -->
181-
<!-- <FieldSpecification name="diffusionCoeff"
182-
initialCondition="1"
183-
setNames="{all}"
184-
objectPath="ElementRegions"
185-
fieldName="coeffField"
186-
scale="2e3"
187-
functionName="f_b"
188-
/> -->
189173
</FieldSpecifications>
190174

191175
<Functions>

inputFiles/phaseField/PhaseFieldFracture_DamageAndLoad.xml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@
3434
name="DamageSolve"
3535
discretization="FE1"
3636
timeIntegrationOption="SteadyState"
37-
fieldName="Damage"
38-
39-
localDissipation="Quadratic"
4037
logLevel="1"
4138
targetRegions="{ Region1 }">
4239
<NonlinearSolverParameters
@@ -114,18 +111,12 @@
114111
defaultShearModulus="3.00e5"
115112
lengthScale="0.2"
116113
defaultCriticalFractureEnergy="2.7"
117-
criticalStrainEnergy="0"/>
114+
criticalStrainEnergy="0"
115+
fractureModelType="Brittle"
116+
localDissipationOption="Quadratic"/>
118117
</Constitutive>
119118

120119
<FieldSpecifications>
121-
<FieldSpecification
122-
name="Gc"
123-
initialCondition="1"
124-
setNames="{ all }"
125-
objectPath="ElementRegions/Region1"
126-
fieldName="shale_criticalFractureEnergy"
127-
scale="2.7"/>
128-
129120
<FieldSpecification
130121
name="xtraction"
131122
fieldName="totalDisplacement"
@@ -158,7 +149,7 @@
158149

159150
<FieldSpecification
160151
name="pointSource"
161-
fieldName="Damage"
152+
fieldName="damage"
162153
objectPath="nodeManager"
163154
scale="1"
164155
setNames="{ middle }"/>

inputFiles/phaseField/PhaseFieldFracture_DamageOnly.xml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@
3434
name="DamageSolve"
3535
discretization="FE1"
3636
timeIntegrationOption="SteadyState"
37-
fieldName="Damage"
38-
39-
localDissipation="Linear"
4037
logLevel="1"
4138
targetRegions="{ Region1 }">
4239
<NonlinearSolverParameters
@@ -116,18 +113,12 @@
116113
defaultShearModulus="8.0769e4"
117114
lengthScale="0.2"
118115
defaultCriticalFractureEnergy="2.7"
119-
criticalStrainEnergy="1.5"/>
116+
criticalStrainEnergy="1.5"
117+
fractureModelType="Brittle"
118+
localDissipationOption="Linear"/>
120119
</Constitutive>
121120

122121
<FieldSpecifications>
123-
<FieldSpecification
124-
name="Gc"
125-
initialCondition="1"
126-
setNames="{ all }"
127-
objectPath="ElementRegions/Region1"
128-
fieldName="shale_criticalFractureEnergy"
129-
scale="2.7"/>
130-
131122
<FieldSpecification
132123
name="xboundary"
133124
fieldName="totalDisplacement"
@@ -151,7 +142,7 @@
151142

152143
<FieldSpecification
153144
name="pointSource"
154-
fieldName="Damage"
145+
fieldName="damage"
155146
objectPath="nodeManager"
156147
scale="1"
157148
setNames="{ centerPoint }"/>

inputFiles/phaseField/PhaseFieldFracture_VolDevSplit.xml renamed to inputFiles/phaseField/PhaseFieldFracture_DecompositionSplit_base.xml

Lines changed: 3 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
name="PhaseFieldSolve"
88
solidSolverName="SolidMechSolve"
99
damageSolverName="DamageSolve"
10-
logLevel="2"
10+
logLevel="1"
1111
targetRegions="{ Region1 }">
1212
<NonlinearSolverParameters
1313
couplingType="Sequential"
14-
lineSearchAction="None"
14+
lineSearchAction="None"
1515
newtonMaxIter="100"/>
1616
</PhaseFieldFracture>
1717

@@ -32,9 +32,6 @@
3232
name="DamageSolve"
3333
discretization="FE1"
3434
timeIntegrationOption="SteadyState"
35-
fieldName="Damage"
36-
37-
localDissipation="Quadratic"
3835
logLevel="1"
3936
targetRegions="{ Region1 }">
4037
<NonlinearSolverParameters
@@ -73,37 +70,6 @@
7370
xMax="{ 1.01, 1.01, 0.11 }"/>
7471
</Geometry>
7572

76-
<Events
77-
maxTime="30.0">
78-
<!-- <SoloEvent name="siloOutput0"
79-
target="/Outputs/SiloOutput"/> -->
80-
<!-- This event is applied every cycle, and overrides the
81-
solver time-step request -->
82-
<PeriodicEvent
83-
name="solverApplications"
84-
forceDt="1.0"
85-
target="/Solvers/PhaseFieldSolve"/>
86-
87-
<!-- This event is applied every 1.0s. The targetExactTimestep
88-
flag allows this event to request a dt modification to match an
89-
integer multiple of the timeFrequency. -->
90-
<PeriodicEvent
91-
name="vtkOutput"
92-
timeFrequency="1.0"
93-
target="/Outputs/Mode2VolDev_VTKOutput"/>
94-
95-
<PeriodicEvent
96-
name="siloOutputs"
97-
timeFrequency="1.0"
98-
target="/Outputs/Mode2VolDev_SiloOutput"/>
99-
100-
<PeriodicEvent
101-
name="restarts"
102-
timeFrequency="15.0"
103-
targetExactTimestep="0"
104-
target="/Outputs/restartOutput"/>
105-
</Events>
106-
10773
<NumericalMethods>
10874
<FiniteElements>
10975
<FiniteElementSpace
@@ -119,26 +85,7 @@
11985
materialList="{ shale }"/>
12086
</ElementRegions>
12187

122-
<Constitutive>
123-
<DamageVolDevElasticIsotropic
124-
name="shale"
125-
defaultDensity="2700"
126-
defaultBulkModulus="1.750e5"
127-
defaultShearModulus="8.077e4"
128-
lengthScale="0.25"
129-
defaultCriticalFractureEnergy="54.0"
130-
criticalStrainEnergy="14.88"/>
131-
</Constitutive>
132-
13388
<FieldSpecifications>
134-
<FieldSpecification
135-
name="Gc"
136-
initialCondition="1"
137-
setNames="{ all }"
138-
objectPath="ElementRegions/Region1"
139-
fieldName="shale_criticalFractureEnergy"
140-
scale="54.0"/>
141-
14289
<FieldSpecification
14390
name="shearLoad"
14491
fieldName="totalDisplacement"
@@ -178,22 +125,4 @@
178125
values="{ -1, 100 }"/>
179126
</Functions>
180127

181-
<Outputs>
182-
<Silo
183-
name="Mode2VolDev_SiloOutput"/>
184-
185-
<VTK
186-
name="Mode2VolDev_VTKOutput"
187-
plotFileRoot="plot"/>
188-
189-
<Restart
190-
name="restartOutput"/>
191-
</Outputs>
192-
193-
<!-- <Geometry> -->
194-
<!-- <Box name="bottom" xMin="{-0.51, -0.51, -0.01" xMax="0.51, -0.49, +0.11"/> -->
195-
<!-- <Box name="top" xMin="{-0.51, 0.49, -0.01" xMax="0.51, 0.51, +0.11"/> -->
196-
<!-- <Box name="left" xMin="{-0.51, -0.51, -0.01" xMax="-0.49, 0.51, +0.11"/> -->
197-
<!-- <Box name="right" xMin="0.49, -0.51, -0.01" xMax="0.51, 0.51, +0.11"/> -->
198-
<!-- </Geometry> -->
199-
</Problem>
128+
</Problem>

0 commit comments

Comments
 (0)