Skip to content

Commit 04075f3

Browse files
jhuang2601CusiniM
andauthored
[Feature] implement fault permeability models (#1564)
* initial commit * Shear strain dependent permeability (simple linear multiplier) * switch to shear displacement dependent correlation * update the primary variable and linearization * register CompressibleSolidSlipDependentPermeability * set initial permeability value. * moving from dAper to dDispJump * changed initialPermeability to a model input. * add docs for the model * update docs for CompressibleSolidSlipDependentPermeability * integratedTests tag. Co-authored-by: Matteo Cusini <[email protected]>
1 parent 182b2a8 commit 04075f3

40 files changed

+1395
-313
lines changed
Lines changed: 377 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,377 @@
1+
<?xml version="1.0" ?>
2+
3+
<Problem>
4+
<Solvers
5+
gravityVector="{0.0, 0.0, 0.0}">
6+
<SinglePhasePoromechanicsEmbeddedFractures
7+
name="poroSolver"
8+
targetRegions="{ Domain, Fracture }"
9+
initialDt="1e-3"
10+
fracturesSolverName="fractureMechSolver"
11+
fluidSolverName="flowSolver"
12+
solidSolverName="matrixMechSolver"
13+
porousMaterialNames="{ porousRock, fractureFilling }"
14+
logLevel="1">
15+
<NonlinearSolverParameters
16+
newtonTol="1.0e-5"
17+
newtonMaxIter="10"
18+
maxTimeStepCuts="1"/>
19+
<LinearSolverParameters
20+
directParallel="0"/>
21+
</SinglePhasePoromechanicsEmbeddedFractures>
22+
23+
<SolidMechanicsEmbeddedFractures
24+
name="fractureMechSolver"
25+
targetRegions="{ Domain }"
26+
solidSolverName="matrixMechSolver"
27+
fractureRegionName="Fracture"
28+
contactRelationName="fractureContact"/>
29+
30+
<SolidMechanicsLagrangianSSLE
31+
name="matrixMechSolver"
32+
timeIntegrationOption="QuasiStatic"
33+
discretization="FE1"
34+
targetRegions="{ Domain }"
35+
solidMaterialNames="{ rock }"/>
36+
37+
<SinglePhaseFVM
38+
name="flowSolver"
39+
discretization="singlePhaseTPFA"
40+
targetRegions="{ Domain, Fracture }"
41+
fluidNames="{ water }"
42+
solidNames="{ porousRock, fractureFilling }"
43+
permeabilityNames="{ rockPerm, fracturePerm }"/>
44+
45+
<EmbeddedSurfaceGenerator
46+
name="SurfaceGenerator"
47+
solidMaterialNames="{ rock }"
48+
targetRegions="{ Domain, Fracture }"
49+
fractureRegion="Fracture"
50+
logLevel="2"
51+
mpiCommOrder="1"/>
52+
</Solvers>
53+
54+
<Mesh>
55+
<InternalMesh
56+
name="mesh1"
57+
elementTypes="{ C3D8 }"
58+
xCoords="{ -40, -3.5, 3.5, 40 }"
59+
yCoords="{ -40, -3.5, 3.5, 40 }"
60+
zCoords="{ 0, 1 }"
61+
nx="{ 10, 21, 10 }"
62+
ny="{ 10, 21, 10 }"
63+
nz="{ 1 }"
64+
cellBlockNames="{ cb1 }"/>
65+
</Mesh>
66+
67+
<Geometry>
68+
<BoundedPlane
69+
name="FracturePlane"
70+
normal="{-0.342020143325669, 0.939692620785908, 0.0}"
71+
origin="{0.0, 0.0, 0.5}"
72+
lengthVector="{0.939692620785908, 0.342020143325669, 0.0}"
73+
widthVector="{0, 0, 1}"
74+
dimensions="{ 2, 10 }"/>
75+
76+
<Box
77+
name="rightPoint"
78+
xMin="{ 39.9, -0.5, -0.001}"
79+
xMax="{ 40.1, 0.5, 1.001}"/>
80+
81+
<Box
82+
name="leftPoint"
83+
xMin="{-40.1, -0.5, -0.001}"
84+
xMax="{-39.9, 0.5, 1.001}"/>
85+
86+
<Box
87+
name="topPoint"
88+
xMin="{-0.5, 39.9, -0.001}"
89+
xMax="{ 0.5, 40.1, 1.001}"/>
90+
91+
<Box
92+
name="bottomPoint"
93+
xMin="{-0.5, -40.1, -0.001}"
94+
xMax="{ 0.5, -39.9, 1.001}"/>
95+
</Geometry>
96+
97+
<Events
98+
maxTime="1.0e-2">
99+
<SoloEvent
100+
name="preFracture"
101+
target="/Solvers/SurfaceGenerator"/>
102+
103+
<PeriodicEvent
104+
name="outputs"
105+
timeFrequency="5.0e-03"
106+
target="/Outputs/vtkOutput"/>
107+
108+
<PeriodicEvent
109+
name="solverApplication0"
110+
endTime="1.e-10"
111+
forceDt="1.e-10"
112+
target="/Solvers/poroSolver"/>
113+
114+
<PeriodicEvent
115+
name="solverApplication1"
116+
beginTime="1.e-10"
117+
endTime="5.0000000e-03"
118+
forceDt="4.9999999e-03"
119+
target="/Solvers/poroSolver"/>
120+
121+
<PeriodicEvent
122+
name="solverApplication2"
123+
beginTime="5.0e-03"
124+
endTime="0.05"
125+
forceDt="5.0e-03"
126+
target="/Solvers/poroSolver"/>
127+
128+
<PeriodicEvent
129+
name="solverApplication3"
130+
beginTime="0.05"
131+
endTime="10.0"
132+
forceDt="0.01"
133+
target="/Solvers/poroSolver"/>
134+
135+
<PeriodicEvent
136+
name="timeHistoryCollection"
137+
target="/Tasks/tractionCollection" />
138+
139+
<PeriodicEvent
140+
name="timeHistoryOutput"
141+
targetExactTimestep="0"
142+
target="/Outputs/timeHistoryOutput"/>
143+
144+
<PeriodicEvent
145+
name="timeHistoryCollection1"
146+
target="/Tasks/displacementJumpCollection" />
147+
148+
<PeriodicEvent
149+
name="timeHistoryOutput1"
150+
targetExactTimestep="0"
151+
target="/Outputs/timeHistoryOutput1"/>
152+
153+
<PeriodicEvent
154+
name="timeHistoryCollection2"
155+
target="/Tasks/fracPermeabilityCollection" />
156+
157+
<PeriodicEvent
158+
name="timeHistoryOutput2"
159+
targetExactTimestep="0"
160+
target="/Outputs/timeHistoryOutput2"/>
161+
</Events>
162+
163+
<NumericalMethods>
164+
<FiniteElements>
165+
<FiniteElementSpace
166+
name="FE1"
167+
order="1"/>
168+
</FiniteElements>
169+
170+
<FiniteVolume>
171+
<TwoPointFluxApproximation
172+
name="singlePhaseTPFA"
173+
fieldName="pressure"
174+
coefficientName="permeability"
175+
coefficientModelNames="{ rockPerm, fracturePerm, fractureContact }"/>
176+
</FiniteVolume>
177+
</NumericalMethods>
178+
179+
<ElementRegions>
180+
<CellElementRegion
181+
name="Domain"
182+
cellBlocks="{ cb1 }"
183+
materialList="{ porousRock, water }"/>
184+
185+
<SurfaceElementRegion
186+
name="Fracture"
187+
subRegionType="embeddedElement"
188+
materialList="{ water, fractureFilling, fractureContact }"
189+
defaultAperture="1e-3"/>
190+
</ElementRegions>
191+
192+
<Constitutive>
193+
<PorousElasticIsotropic
194+
name="porousRock"
195+
solidModelName="rock"
196+
porosityModelName="rockPorosity"
197+
permeabilityModelName="rockPerm"/>
198+
199+
<ElasticIsotropic
200+
name="rock"
201+
defaultDensity="2700"
202+
defaultBulkModulus="16.66666666666666e9"
203+
defaultShearModulus="1.0e10"/>
204+
205+
<ConstantPermeability
206+
name="rockPerm"
207+
permeabilityComponents="{ 1.0e-12, 1.0e-12, 1.0e-12 }"/>
208+
209+
<CompressibleSinglePhaseFluid
210+
name="water"
211+
defaultDensity="1000"
212+
defaultViscosity="1.0e-3"
213+
referencePressure="1e6"
214+
compressibility="0.0e0"
215+
referenceViscosity="1e-3"
216+
viscosibility="0.0"/>
217+
218+
<BiotPorosity
219+
name="rockPorosity"
220+
grainBulkModulus="1.0e27"
221+
defaultReferencePorosity="0.2"/>
222+
223+
<CompressibleSolidSlipDependentPermeability
224+
name="fractureFilling"
225+
solidModelName="nullSolid"
226+
porosityModelName="fracturePorosity"
227+
permeabilityModelName="fracturePerm"/>
228+
229+
<!--CompressibleSolidParallelPlatesPermeability
230+
name="fractureFilling"
231+
solidModelName="nullSolid"
232+
porosityModelName="fracturePorosity"
233+
permeabilityModelName="fracturePerm2"/-->
234+
235+
<NullModel
236+
name="nullSolid"/>
237+
238+
<PressurePorosity
239+
name="fracturePorosity"
240+
defaultReferencePorosity="1.00"
241+
referencePressure="0.0"
242+
compressibility="0.0"/>
243+
244+
<SlipDependentPermeability
245+
name="fracturePerm"
246+
shearDispThreshold="0.05"
247+
maxPermMultiplier="100"
248+
initialPermeability="{1e-15, 1e-15, 1e-15}"/>
249+
250+
<ParallelPlatesPermeability
251+
name="fracturePerm2"/>
252+
253+
<FrictionlessContact
254+
name="fractureContact"
255+
penaltyStiffness="2.0e11"
256+
apertureTableName="aperTable"/>
257+
</Constitutive>
258+
259+
<Functions>
260+
<TableFunction
261+
name="aperTable"
262+
coordinates="{ -1.0e-3, 0.0 }"
263+
values="{ 1.0e-6, 1.0e-4 }"/>
264+
</Functions>
265+
266+
<FieldSpecifications>
267+
<FieldSpecification
268+
name="fracPorosity"
269+
initialCondition="0"
270+
setNames="{ all }"
271+
objectPath="ElementRegions/Fracture"
272+
fieldName="fracturePorosity_porosity"
273+
scale="1.00"/>
274+
275+
<FieldSpecification
276+
name="initialPressure"
277+
initialCondition="1"
278+
setNames="{ all }"
279+
objectPath="ElementRegions/Domain/cb1"
280+
fieldName="pressure"
281+
scale="0.0"/>
282+
283+
<FieldSpecification
284+
name="initialPressureFracture"
285+
initialCondition="1"
286+
setNames="{ all }"
287+
objectPath="ElementRegions/Fracture/embeddedSurfaceSubRegion"
288+
fieldName="pressure"
289+
scale="0.0"/>
290+
291+
<FieldSpecification
292+
name="xnegconstraint"
293+
objectPath="nodeManager"
294+
fieldName="TotalDisplacement"
295+
component="0"
296+
scale="0.0"
297+
setNames="{ bottomPoint, topPoint }"/>
298+
299+
<FieldSpecification
300+
name="yposconstraint"
301+
objectPath="nodeManager"
302+
fieldName="TotalDisplacement"
303+
component="1"
304+
scale="0.0"
305+
setNames="{ leftPoint, rightPoint }"/>
306+
307+
<FieldSpecification
308+
name="zconstraint"
309+
objectPath="nodeManager"
310+
fieldName="TotalDisplacement"
311+
component="2"
312+
scale="0.0"
313+
setNames="{ zneg, zpos }"/>
314+
315+
<Traction
316+
name="xload1"
317+
objectPath="faceManager"
318+
tractionType="vector"
319+
direction="{1,0,0}"
320+
scale="-1.0e7"
321+
setNames="{ xpos }"/>
322+
323+
<Traction
324+
name="xload2"
325+
objectPath="faceManager"
326+
tractionType="vector"
327+
direction="{1,0,0}"
328+
scale="+1.0e7"
329+
setNames="{ xneg }"/>
330+
331+
<FieldSpecification
332+
name="boundaryPressure"
333+
objectPath="faceManager"
334+
fieldName="pressure"
335+
scale="0.0"
336+
setNames="{ ypos, yneg }"/>
337+
</FieldSpecifications>
338+
339+
<Tasks>
340+
<PackCollection
341+
name="tractionCollection"
342+
objectPath="ElementRegions/Fracture/embeddedSurfaceSubRegion"
343+
fieldName="fractureTraction"/>
344+
345+
<PackCollection
346+
name="displacementJumpCollection"
347+
objectPath="ElementRegions/Fracture/embeddedSurfaceSubRegion"
348+
fieldName="displacementJump"/>
349+
350+
<PackCollection
351+
name="fracPermeabilityCollection"
352+
objectPath="ElementRegions/Fracture/embeddedSurfaceSubRegion"
353+
fieldName="fracturePerm_permeability"/>
354+
</Tasks>
355+
356+
<Outputs>
357+
<VTK
358+
name="vtkOutput"
359+
plotLevel="3"
360+
writeBinaryData="1"/>
361+
362+
<TimeHistory
363+
name="timeHistoryOutput"
364+
sources="{/Tasks/tractionCollection}"
365+
filename="traction_history" />
366+
367+
<TimeHistory
368+
name="timeHistoryOutput1"
369+
sources="{/Tasks/displacementJumpCollection}"
370+
filename="displacementJump_history" />
371+
372+
<TimeHistory
373+
name="timeHistoryOutput2"
374+
sources="{/Tasks/fracPermeabilityCollection}"
375+
filename="fracPermeability_history" />
376+
</Outputs>
377+
</Problem>

0 commit comments

Comments
 (0)