1D Strength envelope
We provide a routine for computing a 1D strength envelope and the tools for setting up a temperature structure and lithostatic pressure profile.
GeoParams.ConstTemp Type
ConstTemp(T=1000)
Sets a constant temperature inside the box
Parameters:
- T : the value
GeoParams.LinTemp Type
LinTemp(Ttop=0, Tbot=1000)
Sets a linear temperature structure from top to bottom
Parameters:
Ttop: the value @ the top
Tbot: the value @ the bottom
GeoParams.HalfspaceCoolTemp Type
HalfspaceCoolTemp(Tsurface=0, Tmantle=1350, Age=60, Adiabat=0)
Sets a halfspace temperature structure in plate
Parameters:
Tsurface: surface temperature [C]
Tmantle: mantle temperature [C]
Age: Thermal Age of plate [Myr]
Adiabat: Mantle Adiabat [K/km]
GeoParams.CompTempStruct Function
CompTempStruct(Z, s::AbstractTempStruct)
Returns a temperature vector that matches the coordinate vector and temperature structure that were passed in
Parameters:
Z: vector with depth coordinates
s: Temperature structure (CostTemp, LinTemp, HalfspaceCoolTemp)
GeoParams.LithPres Function
LithPres(MatParam, Phases, ρ, T, dz, g)
Iteratively solves a 1D lithostatic pressure profile (compatible with temperature- and pressure-dependent densities)
Parameters:
MatParam: a tuple of materials (including the following properties: Phase, Density)
Phases: vector with the distribution of phases
ρ: density vector for initial guess(can be zeros)
T: temperature vector
dz: grid spacing
g: gravitational acceleration
GeoParams.StrengthEnvelopeComp Function
StrengthEnvelopeComp(MatParam::NTuple{N, AbstractMaterialParamsStruct}, Thickness::Vector{U}, TempType::AbstractTempStruct=LinTemp(0C, 800C), ε=1e-15/s, nz::Int64=101) where {N, U}
Calculates a 1D strength envelope. Pressure used for Drucker Prager plasticity is lithostatic. To visualize the results in a GUI, use StrengthEnvelopePlot.
Parameters:
MatParam: a tuple of materials (including the following properties: Phase, Density, CreepLaws, Plasticity)
Thickness: a vector listing the thicknesses of the respective layers (should carry units)
TempType: the type of temperature profile (ConstTemp(), LinTemp(), HalfspaceCoolTemp())
ε: background strainrate
nz: optional argument controlling the number of points along the profile (default = 101)
Example:
julia> using GLMakie
julia> MatParam = (SetMaterialParams(Name="UC", Phase=1, Density=ConstantDensity(ρ=2700kg/m^3), CreepLaws = SetDislocationCreep("Wet Quartzite | Ueda et al. (2008)"), Plasticity = DruckerPrager(ϕ=30.0, C=10MPa)),
SetMaterialParams(Name="MC", Phase=2, Density=Density=ConstantDensity(ρ=2900kg/m^3), CreepLaws = SetDislocationCreep("Plagioclase An75 | Ji and Zhao (1993)"), Plasticity = DruckerPrager(ϕ=20.0, C=10MPa)),
SetMaterialParams(Name="LC", Phase=3, Density=PT_Density(ρ0=2900kg/m^3, α=3e-5/K, β=1e-10/Pa), CreepLaws = SetDislocationCreep("Maryland strong diabase | Mackwell et al. (1998)"), Plasticity = DruckerPrager(ϕ=30.0, C=10MPa)));
julia> Thickness = [15,10,15]*km;
julia> StrengthEnvelopeComp(MatParam, Thickness, LinTemp(), ε=1e-15/s)
GeoParams.StrengthEnvelopePlot Function
StrengthEnvelopePlot(MatParam, Thickness; TempType, nz)
Requires GLMakie
Creates a GUI that plots a 1D strength envelope. In the GUI, temperature profile and strain rate can be adjusted. The Drucker-Prager plasticity uses lithostatic pressure.
Parameters:
MatParam: a tuple of materials (including the following properties: Phase, Density, CreepLaws, Plasticity)
Thickness: a vector listing the thicknesses of the respective layers (should carry units)
TempType: the type of temperature profile (LinTemp=default, HalfspaceCoolTemp, ConstTemp)
nz: optional argument controlling the number of points along the profile (default = 101)
Example:
julia> using GLMakie
julia> MatParam = (SetMaterialParams(Name="UC", Phase=1, Density=ConstantDensity(ρ=2700kg/m^3), CreepLaws = SetDislocationCreep("Wet Quartzite | Ueda et al. (2008)"), Plasticity = DruckerPrager(ϕ=30.0, C=10MPa)),
SetMaterialParams(Name="MC", Phase=2, Density=Density=ConstantDensity(ρ=2900kg/m^3), CreepLaws = SetDislocationCreep("Plagioclase An75 | Ji and Zhao (1993)"), Plasticity = DruckerPrager(ϕ=20.0, C=10MPa)),
SetMaterialParams(Name="LC", Phase=3, Density=PT_Density(ρ0=2900kg/m^3, α=3e-5/K, β=1e-10/Pa), CreepLaws = SetDislocationCreep("Maryland strong diabase | Mackwell et al. (1998)"), Plasticity = DruckerPrager(ϕ=30.0, C=10MPa)));
julia> Thickness = [15,10,15]*km;
julia> StrengthEnvelopePlot(MatParam, Thickness, LinTemp())