Creep laws
Effortlessly switch between linear and nonlinear creep laws.
Easily extendable material parameters for the direct use in numerical simulations

Typical geodynamic simulations involve a large number of material parameters that have units that are often inconvenient to be directly used in numerical models. This package has three main features that help with this:
Nondimensionalization object, which can be used to transfer dimensional to non-dimensional parameters (usually better for numerical solvers).
Material parameters object in which you can specify parameters employed in the geodynamic simulations. This object is designed to be extensible and can be passed on to the solvers, such that new creep laws or features can be readily added.
Allocation-free computational routines for CPUs and GPUs, which replace the point-wise calculations in your solver.
We also implement some typically used creep law parameters, together with tools to plot them versus and compare our results with those of published papers (to minimize mistakes).
GeoParams is registered, so it installs with the package manager:
julia> using Pkg; Pkg.add("GeoParams")Plotting routines live in a package extension, so they become available once a Makie backend is loaded alongside GeoParams.
Pick characteristic values, then use them to nondimensionalize a quantity:
julia> using GeoParams
julia> CharDim = GEO_units(length=1000km, temperature=1000C, stress=10MPa, viscosity=1e20Pas)
Employing GEO units
Characteristic values:
length: 1000 km
time: 0.3169 Myr
stress: 10 MPa
temperature: 1000.0 °C
julia> nondimensionalize(10MPa, CharDim)
0.9999999999999998Material parameters for one phase are collected in a single object that the computational routines accept directly:
julia> using GeoParams
julia> phase = SetMaterialParams(Name="Matrix", Phase=1,
Density = ConstantDensity(ρ=2900kg/m^3),
CreepLaws = LinearViscous(η=1e23Pa*s));
julia> compute_density(phase.Density[1], (;))
2900.0The Nondimensionalization and Material Parameters pages go into more detail.
The development of this package was supported by the European Research Council (ERC CoG #771143 MAGMA) as well as by the GPU4GEO PASC project.