JuliaGeodynamics / GeoParams.jl

Define material parameters, perform non-dimensionalization and provide computational routines for material parameters in geodynamic simulations
MIT License
43 stars 11 forks source link

Add ice diffusion creep law #52

Open luraess opened 2 years ago

luraess commented 2 years ago

Adding ice flow composite rheology requires to incorporate following diffusion creep law from Goldsby and Kohlstedt (2001), eq.4 + Table 6:

# Diffusion creep rheology (Goldsby and Kohlstedt 2001, eq.4 + Table 6)
m_diff     = 2
n_diff     = 1
F_diff     = (2^((2*n_diff-1)/n_diff))^-1          # simple shear epxeriments (not sure 100%)
Dv         = 9.1e-4                                # Dv: exponential prefactor[m^2/s]
Vm         = 1.97e-5                               # Vm: molar volume
A_diff     = 42.0*Vm./(R.*T_h).*Dv
Q_diff     = 59.4e3                                # Q1: diffusional activation energy[J/mol]
# Pre-computations
B_diff     = F_diff .* A_diff .^(-1.0) .* exp.( Q_diff  ./(R.*T_h))
# Isolated viscosities
Eta_diff  .= fact^(n_diff-1) .* B_diff .* Tii.^(1.0-n_diff ).*d.^m_diff

The "problem" is that the factor A_diff depends on temperature (and R*T). It is unclear how to implement this flow law. Can we readily use abstract flow laws to account for this or is more engineering needed?

Below screenshots from the paper:

Screenshot 2022-10-06 at 23 28 14 Screenshot 2022-10-06 at 23 28 31
boriskaus commented 2 years ago

This cannot be done with the existing DiffusionCreep structure, but instead you would have to create a new one (say DiffusionCreep_ice).

Much of what is required can be seen here, and you could add a data table for this as well (see this example), which would allow you to predefine multiple ice rheologies. Once implemented, it should work with all composite rheologies, plotting and computational routines in GeoParams (and can be combined with elasticity, plasticity).