Skip to content

GeoParams.jl DocsMaterial parameters for geoscientific models.

Easily extendable material parameters for the direct use in numerical simulations

GeoParams.jl

GeoParams.jl

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).

Installation

GeoParams is registered, so it installs with the package manager:

julia
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.

Getting started

Pick characteristic values, then use them to nondimensionalize a quantity:

julia
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.9999999999999998

Material parameters for one phase are collected in a single object that the computational routines accept directly:

julia
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.0

The Nondimensionalization and Material Parameters pages go into more detail.

Funding

The development of this package was supported by the European Research Council (ERC CoG #771143 MAGMA) as well as by the GPU4GEO PASC project.