Type tree

FastIsostasy is organized around a handful of small abstract type hierarchies (one per concern: domains, mantle rheology, sea-level contributions, ice-loading schemes, ...) rather than one big class tree. The snippet below walks the module with AbstractTrees.jl and prints every such hierarchy, so that this page stays in sync with the source instead of being maintained by hand.

using FastIsostasy, AbstractTrees, InteractiveUtils

AbstractTrees.children(T::Type) = subtypes(T)

roots = filter(names(FastIsostasy; all = true)) do name
    isdefined(FastIsostasy, name) || return false
    obj = getfield(FastIsostasy, name)
    obj isa Type && isabstracttype(obj) && supertype(obj) === Any
end
roots = sort(unique(getfield.(Ref(FastIsostasy), roots)); by = string)

for root in roots
    print_tree(root)
end
AbstractAdjustmentContribution
AbstractBC
├─ NoBC
└─ OffsetBC
AbstractBCSpace
├─ ExtendedBCSpace
└─ RegularBCSpace
AbstractBSL
├─ CombinedBSL{T} where T<:AbstractFloat
├─ ConstantBSL{T} where T<:AbstractFloat
├─ ConstantOceanSurfaceBSL{T, R} where {T<:AbstractFloat, R<:(ReferenceBSL{T, I} where I<:TimeInterpolation0D{T})}
├─ ImposedBSL{T, R} where {T<:AbstractFloat, R<:(ReferenceBSL{T, I} where I<:TimeInterpolation0D{T})}
├─ PiecewiseConstantBSL{T, R} where {T<:AbstractFloat, R<:(ReferenceBSL{T, I} where I<:TimeInterpolation0D{T})}
└─ PiecewiseLinearOceanSurfaceBSL{T, R} where {T<:AbstractFloat, R<:(ReferenceBSL{T, I} where I<:TimeInterpolation0D{T})}
AbstractBSLUpdate
├─ ExternalBSLUpdate
└─ InternalBSLUpdate
AbstractCalibration
AbstractCompressibility
AbstractDensityContribution
AbstractDiffMode
├─ AdjointMode
└─ TangentMode
AbstractDomain
├─ GlobalDomain
└─ RegionalDomain
AbstractEncoding
├─ AutoEncoding{T} where T<:AbstractFloat
├─ EOFEncoding{T} where T<:AbstractFloat
├─ Test1Encoding{T} where T<:AbstractFloat
├─ Test2Encoding
└─ VariationalAutoEncoding{T} where T<:AbstractFloat
AbstractFFTBackend
├─ ComplexFFTBackend
└─ RealFFTBackend
AbstractIceThickness
├─ ExternallyUpdatedIceThickness
└─ TimeInterpolatedIceThickness
AbstractIntegrator
├─ BS3Integrator
├─ EulerIntegrator
├─ RKCIntegrator
└─ Tsit5Integrator
AbstractInversion
├─ IceLoadInversion
└─ ParameterInversion
AbstractLayering
├─ EqualizedLayering{T} where T<:AbstractFloat
├─ FoldedLayering{T} where T<:AbstractFloat
├─ ParallelLayering{T} where T<:AbstractFloat
└─ UniformLayering{T} where T<:AbstractFloat
AbstractLithosphere
├─ LaterallyConstantLithosphere
├─ LaterallyVariableLithosphere
└─ RigidLithosphere
AbstractLithosphereColumn
├─ CompressibleLithosphereColumn
└─ IncompressibleLithosphereColumn
AbstractLoss
└─ DefaultLoss
AbstractMantle
├─ RelaxedMantle
├─ RigidMantle
├─ TransientCreepMantle
└─ ViscousMantle
AbstractObservable
├─ BarystaticContributionObservable
├─ HorizontalDisplacementRateObservable
├─ RelativeSeaLevelObservable
├─ VerticalUpliftObservable
└─ VerticalUpliftRateObservable
AbstractRegOrder
├─ Order0
└─ Order1
AbstractRegTarget
├─ FieldTarget
├─ SurfaceTarget
└─ ThetaTarget
AbstractRegularization
├─ DecodedBounds
└─ TikhonovReg
AbstractSeaSurface
├─ ImposedSeaSurface
├─ LaterallyConstantSeaSurface
└─ LaterallyVariableSeaSurface
AbstractSealevelLoad
├─ InteractiveSealevelLoad
└─ NoSealevelLoad
AbstractTransition
├─ SharpTransition
└─ SmoothTransition
AbstractViscosityLumping
AbstractVolumeContribution
BoundedQuantity
├─ LithoDensity
├─ Log10Viscosity
└─ UpperMantleDensity
AbstractBarystaticContribution
AbstractIntegratorState
├─ RKCIntegratorState
└─ TableauIntegratorState
AbstractOutputCrop
├─ AsymetricOutputCrop
└─ PaddedOutputCrop
AbstractSedimentThickness
├─ ExternallyUpdatedSedimentThickness
└─ TimeInterpolatedSedimentThickness
AbstractState
├─ CurrentState
└─ ReferenceState
ParameterReduction