Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add rate- and state-dependent friction model & quasi-dynamic solver. #3280

Merged
merged 49 commits into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from 45 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
6246ded
feat: add rate- and state-dependent friction model.
CusiniM Aug 12, 2024
2dc8e16
wip rate and state impl.
CusiniM Aug 13, 2024
02c0918
WiP: implemented several rs functions.
CusiniM Aug 15, 2024
e959ca6
add TwoByTwo dense solver.
CusiniM Aug 15, 2024
634ee68
add solver and kernels.
CusiniM Aug 15, 2024
933f289
wip.
CusiniM Aug 20, 2024
4e16608
remove solvers.
CusiniM Aug 26, 2024
f1ac5b1
Merge remote-tracking branch 'origin/develop' into feature/cusini/rat…
CusiniM Aug 26, 2024
aa4590f
Merge remote-tracking branch 'origin/develop' into feature/cusini/rat…
CusiniM Sep 12, 2024
bd377d4
add physicsPackage.
CusiniM Sep 13, 2024
b013a8e
Merge remote-tracking branch 'origin/develop' into feature/cusini/rat…
CusiniM Sep 13, 2024
b002441
add o cmake list plus add some needed keys.
CusiniM Sep 13, 2024
0c23356
add missing files.
CusiniM Sep 13, 2024
b892630
added shearIMpedance.
CusiniM Sep 16, 2024
fdde350
fixed compilation errors.
CusiniM Sep 18, 2024
b4dec1b
Merge remote-tracking branch 'origin/develop' into feature/cusini/rat…
CusiniM Oct 3, 2024
26263d3
submodule update
CusiniM Oct 3, 2024
e146040
submodule update
CusiniM Oct 3, 2024
593ef7c
Use asinh.
CusiniM Oct 3, 2024
23e926d
compiles fine.
CusiniM Oct 3, 2024
b7ca2aa
wip: adding spring-slider example.
CusiniM Oct 7, 2024
91425f4
wip: spring-slider.
CusiniM Oct 7, 2024
272eb34
move changes.
CusiniM Oct 8, 2024
81772bf
wip spring-slider
CusiniM Oct 8, 2024
6a95883
added timestep control
CusiniM Oct 9, 2024
2032024
wip: running.
CusiniM Oct 10, 2024
863a6be
spring slider first timestep working. Wip on continuing.
CusiniM Oct 11, 2024
f57ea0b
Spring slider works
CusiniM Oct 11, 2024
f3e6573
add integratedTest.
CusiniM Oct 11, 2024
34616eb
Merge branch 'develop' into feature/cusini/rate-and-state
CusiniM Oct 11, 2024
7515bc3
wip: Use 2-component slip/slipRate in rate-and-state kernel
VidarStiernstrom Oct 14, 2024
5349711
1D spring slider with 2-component slip/sliprate working
VidarStiernstrom Oct 14, 2024
0ef3b42
Fix copy of slip rate vector
VidarStiernstrom Oct 17, 2024
7996ae6
wip: Add missing components to xml required for setting up 2D spring …
VidarStiernstrom Oct 17, 2024
067e13b
Use non-linear solve for slip rate + projection to compute slip velocity
VidarStiernstrom Oct 18, 2024
53e1fca
change size of spring slider.
CusiniM Oct 21, 2024
0fb4435
Merge branch 'develop' into feature/cusini/rate-and-state
CusiniM Oct 25, 2024
16fdabd
use nonlinearSolverParameters.
CusiniM Oct 25, 2024
bdc0afc
Merge branch 'feature/cusini/rate-and-state' of github.com:GEOS-DEV/G…
CusiniM Oct 25, 2024
e98519d
fix timestepping.
CusiniM Oct 25, 2024
a3b615f
Merge branch 'develop' into feature/cusini/rate-and-state
CusiniM Oct 28, 2024
b2b65e4
Merge branch 'develop' into feature/cusini/rate-and-state
CusiniM Nov 4, 2024
8c2c9b9
Merge remote-tracking branch 'origin/develop' into feature/cusini/rat…
CusiniM Nov 4, 2024
169d324
fix post merge + use camp::tuple.
CusiniM Nov 5, 2024
89ef1eb
lvarray update.
CusiniM Nov 5, 2024
efb1212
Apply suggestions from code review
CusiniM Nov 5, 2024
00f0ac0
add restarts.
CusiniM Nov 5, 2024
4595d21
LvArray update.
CusiniM Nov 5, 2024
180c11b
rebaseline
CusiniM Nov 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 165 additions & 0 deletions inputFiles/inducedSeismicity/SpringSlider_base.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
<?xml version="1.0" ?>
<Problem>
<Solvers>
<QuasiDynamicEQ
name="SpringSlider"
targetRegions="{ Fault }"
shearImpedance="4.41"
initialDt="1"
logLevel="1"
discretization="FE1">
</QuasiDynamicEQ>

<SurfaceGenerator
name="SurfaceGen"
targetRegions="{ Domain }"
rockToughness="1.0"
mpiCommOrder="1"
fractureRegion="Fault"/>
</Solvers>

<NumericalMethods>
<FiniteElements>
<FiniteElementSpace
name="FE1"
order="1"/>
</FiniteElements>
</NumericalMethods>

<Mesh>
<InternalMesh
name="mesh"
elementTypes="{ C3D8 }"
xCoords="{ 0, 1 }"
yCoords="{ 0, 2 }"
zCoords="{ 0, 1 }"
nx="{ 100 }"
ny="{ 2 }"
nz="{ 1 }"
cellBlockNames="{ cb1 }"/>
</Mesh>

<Geometry>
<ThickPlane
name="faultPlane"
normal="{ 0, 1, 0 }"
origin="{ 0, 1, 0 }"
thickness="0.1"/>
</Geometry>

<ElementRegions>
<CellElementRegion
name="Domain"
cellBlocks="{ cb1 }"
materialList="{}"/>

<SurfaceElementRegion
name="Fault"
materialList="{frictionLaw}"
defaultAperture="1e-3"/>
</ElementRegions>

<Constitutive>
<RateAndStateFriction
name="frictionLaw"
defaultA="0.01"
defaultB="0.015"
defaultDc="1.0e-5"
defaultReferenceVelocity="1.0e-6"
defaultReferenceFrictionCoefficient="0.6"/>
</Constitutive>

<FieldSpecifications>
<FieldSpecification
name="fault"
fieldName="ruptureState"
initialCondition="1"
objectPath="faceManager"
scale="1"
setNames="{ faultPlane }"/>

<FieldSpecification
name="normalTraction"
fieldName="traction"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
component="0"
scale="50"
setNames="{all}"/>

<FieldSpecification
name="shearTraction1"
fieldName="traction"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
component="1"
scale="21.2132034356"
setNames="{all}"/>
<FieldSpecification
name="shearTraction2"
fieldName="traction"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
component="2"
scale="21.2132034356"
setNames="{all}"/>
<FieldSpecification
name="stateVariable"
fieldName="stateVariable"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
scale="0.6"
setNames="{all}"/>
<FieldSpecification
name="slipRate"
fieldName="slipRate"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
scale="1.0e-6"
setNames="{all}"/>
<FieldSpecification
name="slipVelocity1"
fieldName="slipVelocity"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
component="0"
scale="0."
setNames="{all}"/>
<FieldSpecification
name="slipVelocity2"
fieldName="slipVelocity"
initialCondition="1"
objectPath="ElementRegions/Fault/FractureSubRegion"
component="1"
scale="0."
setNames="{all}"/>
</FieldSpecifications>

<Outputs>
<VTK
name="vtkOutput"
plotFileRoot="springSlider"/>

<TimeHistory
name="timeHistoryOutput"
sources="{/Tasks/slipCollection,/Tasks/slipRateCollection,/Tasks/stateVariableCollection}"
filename="springSlider"/>
</Outputs>

<Tasks>
<PackCollection
name="slipCollection"
objectPath="ElementRegions/Fault/FractureSubRegion"
fieldName="displacementJump"/>

<PackCollection
name="slipRateCollection"
objectPath="ElementRegions/Fault/FractureSubRegion"
fieldName="slipRate"/>

<PackCollection
name="stateVariableCollection"
objectPath="ElementRegions/Fault/FractureSubRegion"
fieldName="stateVariable"/>
</Tasks>
</Problem>
46 changes: 46 additions & 0 deletions inputFiles/inducedSeismicity/SpringSlider_smoke.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" ?>
<Problem>
<Included>
<File
name="./SpringSlider_base.xml"/>
</Included>

<Events
maxTime="4.5e4">

<SoloEvent
name="generateFault"
target="/Solvers/SurfaceGen"/>

<PeriodicEvent
name="vtkOutput"
cycleFrequency="1"
targetExactTimestep="0"
target="/Outputs/vtkOutput"/>

<PeriodicEvent
name="solverApplications"
maxEventDt="1e4"
target="/Solvers/SpringSlider"/>

<PeriodicEvent
name="seismicRateCollection"
cycleFrequency="1"
target="/Tasks/slipCollection"/>

<PeriodicEvent
name="slipRateCollection"
cycleFrequency="1"
target="/Tasks/slipRateCollection"/>

<PeriodicEvent
name="stateVariableCollection"
cycleFrequency="1"
target="/Tasks/stateVariableCollection"/>

<PeriodicEvent
name="timeHistoryOutput"
cycleFrequency="1"
target="/Outputs/timeHistoryOutput" />
</Events>
</Problem>
9 changes: 8 additions & 1 deletion inputFiles/inducedSeismicity/inducedSeismicity.ats
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,19 @@ decks = [
restart_step=20,
check_step=30,
restartcheck_params=RestartcheckParameters(atol=1e-4, rtol=1e-3)),
TestDeck(
TestDeck(
name="SeismicityRate_analytical_verification_smoke",
description="Prescribed logarithmic stressing history",
partitions=((1, 1, 1), ),
restart_step=0,
check_step=100,
curvecheck_params=CurveCheckParameters(**curvecheck_params))
CusiniM marked this conversation as resolved.
Show resolved Hide resolved
TestDeck(
name="SpringSlider_smoke",
description="Spring slider 0D system",
partitions=((1, 1, 1), ),
restart_step=0,
check_step=3265,
restartcheck_params=RestartcheckParameters(atol=1e-4, rtol=1e-3) )
CusiniM marked this conversation as resolved.
Show resolved Hide resolved
]
generate_geos_tests(decks)
2 changes: 1 addition & 1 deletion src/coreComponents/LvArray
2 changes: 2 additions & 0 deletions src/coreComponents/constitutive/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ set( constitutive_headers
contact/HydraulicApertureBase.hpp
contact/HydraulicApertureRelationSelector.hpp
contact/HydraulicApertureTable.hpp
contact/RateAndStateFriction.hpp
diffusion/ConstantDiffusion.hpp
diffusion/DiffusionBase.hpp
diffusion/DiffusionFields.hpp
Expand Down Expand Up @@ -194,6 +195,7 @@ set( constitutive_sources
contact/FrictionlessContact.cpp
contact/HydraulicApertureBase.cpp
contact/HydraulicApertureTable.cpp
contact/RateAndStateFriction.cpp
diffusion/ConstantDiffusion.cpp
diffusion/DiffusionBase.cpp
dispersion/DispersionBase.cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ CoulombFriction::CoulombFriction( string const & name, Group * const parent ):
registerWrapper( viewKeyStruct::elasticSlipString(), &m_elasticSlip ).
setApplyDefaultValue( 0.0 ).
setDescription( "Elastic Slip" );

}

CoulombFriction::~CoulombFriction()
Expand Down
14 changes: 0 additions & 14 deletions src/coreComponents/constitutive/contact/CoulombFriction.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,20 +169,6 @@ class CoulombFriction : public FrictionBase
virtual void allocateConstitutiveData( dataRepository::Group & parent,
localIndex const numConstitutivePointsPerParentIndex ) override final;

/**
* @brief Const accessor for cohesion
* @return A const reference to arrayView1d<real64 const> containing the
* cohesions (at every element).
*/
real64 const & cohesion() const { return m_cohesion; }
CusiniM marked this conversation as resolved.
Show resolved Hide resolved

/**
* @brief Const accessor for friction angle
* @return A const reference to arrayView1d<real64 const> containing the
* friction coefficient (at every element).
*/
real64 const & frictionCoefficient() const { return m_frictionCoefficient; }

/// Type of kernel wrapper for in-kernel update
using KernelWrapper = CoulombFrictionUpdates;

Expand Down
Loading
Loading