# Diagnostics

`CryoGrid.Diagnostics.active_layer_thickness`

— Method`active_layer_thickness(T::AbstractDimArray{<:TempQuantity})`

Computes active layer thickness annually. The active layer thickness is defined here as the maximum thaw depth throughout the calendar year. Assumes `T`

to have dimensions `Ti`

(time) and `Z`

(depth) in any order.

`CryoGrid.Diagnostics.computejac`

— Method`computejac(tile::Tile, u, p, t)`

Helper function that computes the Jacobian of the given `tile`

at `u`

with parameters `p`

and time `t`

.

`CryoGrid.Diagnostics.integrate`

— Method`integrate(X::AbstractDimArray, grid::Grid{Edges}; upper_limit=0u"m", lower_limit=10u"m")`

Integrates the quantity `X`

over the given `grid`

, which is assumed to be spatially alligned, i.e. `length(grid) == length(dims(X,Z)) + 1`

and `cells(grid) .≈ dims(X,Z)`

are necessary preconditions.

`CryoGrid.Diagnostics.mean_annual_ground_temperature`

— Method`mean_annual_ground_temperature(T::AbstractDimArray; upper_limit=0u"m", lower_limit=10u"m")`

Computes mean annual ground temperature between `upper_limit`

and `lower_limit`

. Assumes `T`

to have dimensions `Ti`

(time) and `Z`

(depth) in any order.

`CryoGrid.Diagnostics.permafrostbase`

— Method`permafrostbase(T::AbstractDimArray{<:TempQuantity})`

Computes depth of permafrost base for all years, i.e. the closest depth to the "bottom" at which the maximum annual temperature is strictly `< 0°C`

. Assumes `T`

to have dimensions `Ti`

(time) and `Z`

(depth) in any order.

`CryoGrid.Diagnostics.permafrosttable`

— Method`permafrosttable(T::AbstractDimArray{<:TempQuantity})`

Computes depth of permafrost table for all years, i.e. the closest depth to the surface at which the maximum annual temperature is strictly less than `Tmelt`

. Assumes `T`

to have dimensions `Ti`

(time) and `Z`

(depth) in any order.

`CryoGrid.Diagnostics.spinup`

— Method`spinup(setup::Tile, tspan::NTuple{2,DateTime}, p, tol, layername; kwargs...)`

Implements a simple, iterative spin-up procedure. Runs the model specified by `setup`

over `tspan`

until the profile mean up to `maxdepth`

over the whole time span changes only within the given tolerance `tol`

. Returns the `ODESolution`

generated by the final iteration.

`CryoGrid.Diagnostics.thawdepth`

— Method`thawdepth(T::AbstractDimArray{<:TempQuantity}; Tmelt=0.0u"°C")`

Computes sub-grid thaw depth (a.k.a freezing front) from temperature at all time steps. The sub-grid depth of the zero degree isotherm is determined by linearly interpolating between grid cell temperatures in `T`

. Note that `T`

is assumed to have units °C and dimensions `Ti`

(time) and `Z`

(depth) in any order.

`CryoGrid.Diagnostics.zero_annual_amplitude`

— Method`zero_annual_amplitude(T::AbstractDimArray{<:TempQuantity}; threshold=0.5u"K")`

Computes annual depth of zero amplitude (where `|max - min| < threshold`

) and returns the result for each year. Assumes `T`

to have dimensions `Ti`

(time) and `Z`

(depth) in any order.