API reference
Basic structs
FastIsostasy.KernelMatrix — TypeKernelMatrixAn allias for Union{Matrix{T}, CuMatrix{T}} where {T<:AbstractFloat}.
FastIsostasy.ComputationDomain — TypeComputationDomain
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)FastIsostasy.PhysicalConstants — TypePhysicalConstantsReturn 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).
FastIsostasy.LateralVariability — TypeLateralVariability(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 = LateralVariability(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.
FastIsostasy.RefGeoState — TypeRefGeoStateReturn a struct containing the reference GeoState.
FastIsostasy.GeoState — TypeGeoStateReturn 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.
FastIsostasy.FastIsoTools — TypeFastIsoTools(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.
FastIsostasy.FastIsoProblem — TypeFastIsoProblem(Omega, c, p, t_out, interactive_sealevel)
FastIsoProblem(Omega, c, p, t_out, interactive_sealevel, Hice)
FastIsoProblem(Omega, c, p, t_out, interactive_sealevel, 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::LateralVariability. The outputs are stored at t_out::Vector{<:AbstractFloat}.
Mechanics
FastIsostasy.solve! — Methodsolve!(fip)Solve the isostatic adjustment problem defined in fip::FastIsoProblem.
FastIsostasy.init — Functioninit(fip)Initialize an ode::CoupledODEs, aimed to be used in step!.
FastIsostasy.step! — Functionstep!(fip)Step fip::FastIsoProblem over tspan and based on ode::CoupledODEs, typically obtained by init.
FastIsostasy.update_diagnostics! — Functionupdate_diagnostics!(dudt, u, fip, t)Update all the diagnotisc variables, i.e. all fields of fip.geostate apart from the displacement, which requires an integrator.
FastIsostasy.dudt_isostasy! — Functiondudt_isostasy!()Update the displacement rate dudt of the viscous response.
FastIsostasy.update_elasticresponse! — Functionupdate_elasticresponse!(fip::FastIsoProblem)Update the elastic response by convoluting the Green's function with the load anom. To use coefficients differing from [Farrell1972], see FastIsoTools.
Parameter inversion
FastIsostasy.InversionConfig — TypeInversionConfigStruct 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
FastIsostasy.InversionData — TypeInversionDataStruct containing data (either observational or output of a golden standard model) for a [InversionProblem].
FastIsostasy.InversionProblem — TypeInversionProblemStruct 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.
FastIsostasy.solve! — Methodsolve!(paraminv::InversionProblem)Return priors and ukiobj that allow to extract the results of the parameter inversion as initialized in paraminv.
Utils
FastIsostasy.years2seconds — Functionyears2seconds(t::Real)Convert input time t from years to seconds.
FastIsostasy.seconds2years — Functionseconds2years(t::Real)Convert input time t from seconds to years.
FastIsostasy.m_per_sec2mm_per_yr — Functionm_per_sec2mm_per_yr(dudt::Real)Convert displacement rate dudt from $ m \, s^{-1} $ to $ mm \, \mathrm{yr}^{-1} $.
FastIsostasy.meshgrid — Functionmeshgrid(x, y)Return a 2D meshgrid spanned by x, y.
Missing docstring for scalefactor. Check Documenter's build log for details.
FastIsostasy.latlon2stereo — Functionlatlon2stereo(lat, lon, lat0, lon0)Compute stereographic projection (x,y) for a given latitude lat longitude lon, reference latitude lat0 and reference longitude lon0. Optionally one can provide lat::KernelMatrix and lon::KernelMatrix if the projection is to be computed for the whole domain. Note: angles must be provided in degrees! Reference: John P. Snyder (1987), p. 157, eq. (21-2), (21-3), (21-4).
FastIsostasy.stereo2latlon — Functionstereo2latlon(x, y, lat0, lon0)Compute the inverse stereographic projection (lat, lon) based on Cartesian coordinates (x,y) and for a given reference latitude lat0 and reference longitude lon0. Optionally one can provide x::KernelMatrix and y::KernelMatrix if the projection is to be computed for the whole domain. Note: angles must be para elloprovided in degrees!
Convert stereographic (x,y)-coordinates to latitude-longitude. Reference: John P. Snyder (1987), p. 159, eq. (20-14), (20-15), (20-18), (21-15).
FastIsostasy.write_out! — Functionwrite_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.
- Goelzer2020Heiko Goelzer et al. (2020): Brief communication: On calculating the sea-level contribution in marine ice-sheet models
- Snyder1987John Snyder (1987): Map projections – A working manual
- Farrell1972William Farrel (1972): Deformation of the Earth by surface Loads, Farell 1972