Public Interface

Oetqf.assembleMethod
assemble(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 interaction
  • gf₁₂: Greens function array for fault-mantle interaction
  • gf₂₁: Greens function array for mantle-fault interaction
  • gf₂₂: Greens function array for mantle-mantle interaction
  • pf: rate-and-state quasi-dynamic property for fault
  • pa: viscosity property for mantle
  • u0: initial state partition, must be an ArrayPartition with 5 components: velocity, state variable, strain, stress, and fault slip
  • tspan: time span for the simulation, a tuple of two values (start, stop)
  • se: state evolution law, defaults to DieterichStateLaw()
source
Oetqf.assembleMethod
assemble(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 fault
  • p: rate-and-state quasi-dynamic property
  • u0: initial state partition, must be an ArrayPartition with 3 components: velocity, state variable, and fault slip
  • tspan: time span for the simulation, a tuple of two values (start, stop)
  • se: state evolution law, defaults to `DieterichStateLaw()
source
Oetqf.assembleMethod
assemble(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 fault
  • p: rate-and-state quasi-dynamic property
  • dila: dilatancy property
  • u0: initial state partition, must be an ArrayPartition with 4 components: velocity, state variable, pressure, and fault slip
  • tspan: time span for the simulation, a tuple of two values (start, stop)
  • se: state evolution law, defaults to DieterichStateLaw()
source
Oetqf.gen_gmsh_meshMethod
gen_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 surface
  • dx, dy, dz: x-, y-, z-extension
  • nx, ny: number of cells along x-, y-axis
  • rfx, rfy: refinement coefficients along x-, y-axis using Bump algorithm, please refer gmsh.model.geo.mesh.setTransfiniteCurve
  • rfzh: accumulated height of cells along z-axis which will be normalized automatically, please refer heights in gmsh.model.geo.extrude
source
Oetqf.gen_meshMethod
gen_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 downdip
  • dip: dipping angle of the fault in degrees
source
Oetqf.wsolveMethod
wsolve(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 saved
  • nstep::Integer: number of steps after which a saving operation will be performed
  • getu::Function: function handler to extract desired solution for saving
  • ustr::AbstractVector: list of names to be assigned for each components, whose length must equal the length of getu output
  • tstr::AbstractString: name of time data

KWARGS

  • stride::Integer=1: downsampling rate for saving outputs
  • append::Bool=false: if true then append solution after the end of file
  • force::Bool=false: force to overwrite the existing solution file
source