Green functions

In all examples shown so far, the elastic displacement and the gravitational response were computed by convolving the load with suitable Green's functions. Adhikari et al. (in rev.) suggested to expand this idea to the computation of the viscous displacement. This excludes the possibility of including lateral variability without significant improvement of the performance compared to the direct solution of the PDEs. Therefore, we offer this implementation for comparison purposes, but it is not recommended for real applications.

using FastIsostasy, CairoMakie

T, W, n = Float32, 3f6, 7
domain = RegionalDomain(W, n, correct_distortion = false)

H_ice_0 = zeros(domain)
H_ice_1 = 1f3 .* (domain.R .< 1f6)
t_ice = [0, 1, 5f4]
H_ice = [H_ice_0, H_ice_1, H_ice_1]
it = TimeInterpolatedIceThickness(t_ice, H_ice, domain)
bcs = BoundaryConditions(domain, ice_thickness = it)
sealevel = RegionalSeaLevel()
 Sea surface:            LaterallyConstantSeaSurface
 Sea-level load:         NoSealevelLoad
 Barystatic sea level:   ConstantBSL{Float32, ReferenceBSL{Float32, TimeInterpolation0D{Float32}}}
 BSL update:             InternalBSLUpdate
 Volume contribution:    GoelzerVolumeContribution
 Density contribution:   GoelzerDensityContribution
 Adjustment contribution: NoAdjustmentContribution

solidearth = SolidEarth( domain, tau = 3f3, lithosphere = AdhikariLithosphere(), mantle = AdhikariMantle(), ) nout = NativeOutput(vars = [:u, :ue, :dzss, :Hice], t = [0, 1f2, 3f2, 1f3, 3f3, 1f4, 2f4, 5f4])

sim = Simulation(domain, bcs, sealevel, solidearth, (0, 50f3); nout = nout) run!(sim) println("Took sim.timer.t_computation[end] seconds!")

fig = plot_transect(sim, [:u])