API reference

Basic structs

FastIsostasy.ComputationDomainType
ComputationDomain
ComputationDomain(W, n)
ComputationDomain(Wx, Wy, Nx, Ny)

Return a struct containing all information related to geometry of the domain and potentially used parallelism. To initialize one with 2*W and 2^n grid cells:

Omega = ComputationDomain(W, n)

If a rectangular domain is needed, run:

Omega = ComputationDomain(Wx, Wy, Nx, Ny)
source
FastIsostasy.PhysicalConstantsType
PhysicalConstants

Return a struct containing important physical constants. Comes with default values that can however be changed by the user, for instance by running:

c = PhysicalConstants(rho_ice = 0.93)   # (kg/m^3)

All constants are given in SI units (kilogram, meter, second).

source
FastIsostasy.LayeredEarthType
LayeredEarth(Omega; layer_boundaries, layer_viscosities)

Return a struct containing all information related to the lateral variability of solid-Earth parameters. To initialize with values other than default, run:

Omega = ComputationDomain(3000e3, 7)
lb = [100e3, 300e3]
lv = [1e19, 1e21]
p = LayeredEarth(Omega, layer_boundaries = lb, layer_viscosities = lv)

which initializes a lithosphere of thickness $T_1 = 100 \mathrm{km}$, a viscous channel between $T_1$ and $T_2 = 200 \mathrm{km}$ and a viscous halfspace starting at $T_2$. This represents a homogenous case. For heterogeneous ones, simply make lb::Vector{Matrix}, lv::Vector{Matrix} such that the vector elements represent the lateral variability of each layer on the grid of Omega::ComputationDomain.

source
FastIsostasy.CurrentStateType
CurrentState

Return a mutable struct containing the geostate which will be updated over the simulation. The geostate contains all the states of the [FastIsoProblem] to be solved.

source
FastIsostasy.FastIsoToolsType
FastIsoTools(Omega, c, p)

Return a struct containing pre-computed tools to perform forward-stepping of the model. This includes the Green's functions for the computation of the lithosphere and geoid displacement, plans for FFTs, interpolators of the load and the viscosity over time and preallocated arrays.

source
FastIsostasy.OceanSurfaceChangeType
OceanSurfaceChange(; z0 = 0.0)

Return a mutable struct OceanSurfaceChange containing:

  • z_k: the GMSL at current time step k.
  • A_k: the ocean surface at current time step k.
  • z: a vector of GMSL values used as knots for interpolation.
  • A: a vector of ocean surface values used as knots for interpolation.
  • A_itp: an interpolator of ocean surface over depth. Bias-free for present-day.
  • A_pd: the present-day ocean surface.
  • res: residual of the nonlinear equation solved numerically.

An osc::OceanSurfaceChange can be used as function to update osc.z_k and osc.A_k based on osc.A_itp and an input delta_V by running:

osc(delta_V)
source
FastIsostasy.FastIsoProblemType
FastIsoProblem(Omega, c, p, t_out)
FastIsoProblem(Omega, c, p, t_out, Hice)
FastIsoProblem(Omega, c, p, t_out, t_Hice, Hice)

Return a struct containing all the other structs needed for the forward integration of the model over Omega::ComputationDomain with parameters c::PhysicalConstants and p::LayeredEarth. The outputs are stored at t_out::Vector{<:AbstractFloat}.

source

Mechanics

FastIsostasy.step!Function
step!(fip)

Step fip::FastIsoProblem over tspan and based on ode::CoupledODEs, typically obtained by init.

source
FastIsostasy.update_diagnostics!Function
update_diagnostics!(dudt, u, fip, t)

Update all the diagnotisc variables, i.e. all fields of fip.now apart from the displacement, which requires an integrator.

source
FastIsostasy.lv_elva!Function
lv_elva!(dudt, u, fip, t)

Update the displacement rate dudt of the viscous response according to LV-ELVA.

source

Parameter inversion

FastIsostasy.InversionConfigType
InversionConfig

Struct containing configuration parameters for a [InversionProblem].

Need to choose regularization factor α ∈ (0,1], When you have enough observation data α=1: no regularization

update_freq 1 : approximate posterior cov matrix with an uninformative prior 0 : weighted average between posterior cov matrix with an uninformative prior and prior

source
FastIsostasy.InversionDataType
InversionData

Struct containing data (either observational or output of a golden standard model) for a [InversionProblem].

source
FastIsostasy.InversionProblemType
InversionProblem

Struct containing variables and configs for the inversion of Solid-Earth parameter fields. For now, only viscosity can be inverted but future versions will support lithosphere rigidity. For now, the unscented Kalman inversion is the only method available but ensemble Kalman inversion will be available in future.

source
FastIsostasy.solve!Method
solve!(paraminv::InversionProblem)

Return priors and ukiobj that allow to extract the results of the parameter inversion as initialized in paraminv.

source

Convenience

FastIsostasy.load_datasetFunction
load_dataset(name) → (dims), field, interpolator

Return the dims::Tuple{Vararg{Vector}}, the field<:Array and the interpolator corresponding to a data set defined by a unique name::String. For instance:

(lon180, lat, t), Hice, Hice_itp = load_dataset("ICE6G_D")

Following options are available for parameter fields:

  • "ICE6GD": ice loading history from ICE6GD.
  • "Wiens2022": viscosity field from (Wiens et al. 2022)
  • "Lithothickness_Pan2022": lithospheric thickness field from (Pan et al. 2022)
  • "Viscosity_Pan2022": viscosity field from (Pan et al. 2022)

Following options are available for model results:

  • "Spada2011"
  • "LatychevGaussian"
  • "LatychevICE6G"
source
FastIsostasy.write_out!Function
write_out!(fip::FastIsoProblem)

Write results in output vectors if the load is updated internally. If the load is updated externally, the user is responsible for writing results.

source
FastIsostasy.savefipFunction
savefip(filename, fip; T = Float32)

Save the output of fip::FastIsoProblem as NetCDF file under filename.

source