Public Interface
Oetqf.assemble
— Methodassemble(gf₁₁::AbstractArray, gf₁₂::AbstractMatrix, gf₂₁::AbstractMatrix, gf₂₂::AbstractMatrix,
pf::RateStateQuasiDynamicProperty, pa::ViscosityProperty, u0::ArrayPartition, tspan::NTuple{2};
se::StateEvolutionLaw=DieterichStateLaw(), kwargs...)
Construct an ODEProblem
for viscoelastic rate-and-state friction model with quasi-dynamic evolution.
Arguments
gf₁₁
: Greens function array for fault-fault interactiongf₁₂
: Greens function array for fault-mantle interactiongf₂₁
: Greens function array for mantle-fault interactiongf₂₂
: Greens function array for mantle-mantle interactionpf
: rate-and-state quasi-dynamic property for faultpa
: viscosity property for mantleu0
: initial state partition, must be anArrayPartition
with 5 components: velocity, state variable, strain, stress, and fault sliptspan
: time span for the simulation, a tuple of two values (start, stop)se
: state evolution law, defaults toDieterichStateLaw()
Oetqf.assemble
— Methodassemble(gf::AbstractArray, p::RateStateQuasiDynamicProperty, u0::ArrayPartition, tspan::NTuple{2};
se::StateEvolutionLaw=DieterichStateLaw(), kwargs...)
Construct an ODEProblem
for rate-and-state friction model with quasi-dynamic evolution.
Arguments
gf
: Greens function array for the faultp
: rate-and-state quasi-dynamic propertyu0
: initial state partition, must be anArrayPartition
with 3 components: velocity, state variable, and fault sliptspan
: time span for the simulation, a tuple of two values (start, stop)se
: state evolution law, defaults to `DieterichStateLaw()
Oetqf.assemble
— Methodassemble(gf::AbstractArray, p::RateStateQuasiDynamicProperty, dila::DilatancyProperty, u0::ArrayPartition, tspan::NTuple{2};
se::StateEvolutionLaw=DieterichStateLaw(), kwargs...)
Construct an ODEProblem
for rate-and-state friction model with dilatancy and quasi-dynamic evolution.
Arguments
gf
: Greens function array for the faultp
: rate-and-state quasi-dynamic propertydila
: dilatancy propertyu0
: initial state partition, must be anArrayPartition
with 4 components: velocity, state variable, pressure, and fault sliptspan
: time span for the simulation, a tuple of two values (start, stop)se
: state evolution law, defaults toDieterichStateLaw()
Oetqf.gen_gmsh_mesh
— Methodgen_gmsh_mesh(::Val{:BEMHex8Mesh},
llx::T, lly::T, llz::T, dx::T, dy::T, dz::T, nx::I, ny::I, nz::I;
rfx::T=one(T), rfy::T=one(T), rfzh::AbstractVector=ones(nz),
rfxType::AbstractString="Bump", rfyType::AbstractString="Bump",
output::AbstractString="temp.msh"
) where {T, I}
Gernate a box using 8-node hexahedron elements by vertically extruding transfinite curve on xy plane, allowing total flexibility on the mesh size in z direction, and refinement in xy plane.
Arguments
llx
,lly
,llz
: coordinates of low-left corner on the top surfacedx
,dy
,dz
: x-, y-, z-extensionnx
,ny
: number of cells along x-, y-axisrfx
,rfy
: refinement coefficients along x-, y-axis using Bump algorithm, please refergmsh.model.geo.mesh.setTransfiniteCurve
rfzh
: accumulated height of cells along z-axis which will be normalized automatically, please referheights
ingmsh.model.geo.extrude
Oetqf.gen_mesh
— Methodgen_mesh(::Val{:RectOkada},
x::T, ξ::T, Δx::T, Δξ::T, dip::T) where T
Generate a rectangular mesh for Okada's fault model in 2D.
Arguments
x
: length of the fault along strikeξ
: length of the fault along downdipΔx
: cell size along strikeΔξ
: cell size along downdipdip
: dipping angle of the fault in degrees
Oetqf.wsolve
— Methodwsolve(prob::ODEProblem, alg::OrdinaryDiffEqAlgorithm,
file, nstep, getu, ustrs, tstr; kwargs...)
Write the solution to HDF5 file while solving the ODE. The interface is exactly the same as solve
an ODEProblem
except a few more about the saving procedure. Notice, it will set save_everystep=false
so to avoid memory blow up. The return code will be written as an attribute in tstr
data group.
Extra Arguments
file::AbstractString
: name of file to be savednstep::Integer
: number of steps after which a saving operation will be performedgetu::Function
: function handler to extract desired solution for savingustr::AbstractVector
: list of names to be assigned for each components, whose length must equal the length ofgetu
outputtstr::AbstractString
: name of time data
KWARGS
stride::Integer=1
: downsampling rate for saving outputsappend::Bool=false
: if true then append solution after the end offile
force::Bool=false
: force to overwrite the existing solution file