Materials

EarthBox.ModelDataContainer.MaterialContainer.MaterialsType
Materials <: CollectionContainer

Data structure containing parameter, array and dictionary objects associated with material properties.

Fields

  • parameters::Parameters: Parameter groups for material properties
  • arrays::Arrays: Array groups containing material property values
  • dicts::Dicts: Dictionary groups for mapping material names to IDs
  • colors::MaterialColors: Struct with material color information

Constructor

Materials()::Materials
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.ParametersType
Parameters <: AbstractParameterCollection

Parameter collection for material properties.

Fields

  • material_description::MaterialDescription: Parameters for material model identifiers
  • random_friction::RandomFriction: Parameters for spatial and temporal variation of friction coefficient
  • softening::Softening: Parameters for strain softening behavior whereby pre-exponential is modified with increasing strain
  • viscosity_limits::ViscosityLimits: Minimum and maximum viscosity limits
  • stress_limits_yield::StressLimitsYield: Stress limits for plastic yielding
  • stress_limits_power_law::StressLimitsPowerLaw: Stress limits for power law creep
  • hydrothermal::Hydrothermal: Parameters for hydrothermal circulation model used to mimic the effects of hydrothermal circulation on thermal structure
  • compaction::Compaction: Parameters for sediment compaction
  • boundary_friction::BoundaryFriction: Parameters for boundary friction zones
  • serpentinization::Serpentinization: Parameters for serpentinization model
  • melt_damage::MeltDamage: Parameters for melt-induced damage

Constructor

Parameters()::Parameters
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.MaterialDescriptionGroup.MaterialDescriptionType
MaterialDescription <: AbstractParameterGroup

Parameter group for material and plasticity model descriptions.

Fields

  • itype_mat::ParameterInt: Material and marker initialization model option
  • stype_mat::ParameterStr: Material and marker initialization model option name
  • nmats::ParameterInt: Maximum number of materials allowed in model
  • itype_plasticity::ParameterInt: Plasticity model type: 0 = viscoelastic; 1 = purely elastic
  • stype_plasticity::ParameterStr: Plasticity model name
  • obj_list::Vector{ParameterInt}: List of parameter objects

Nested Dot Access

  • itype_mat = model.materials.parameters.description.itype_mat.value
  • stype_mat = model.materials.parameters.description.stype_mat.value
  • nmats = model.materials.parameters.description.nmats.value
  • itype_plasticity = model.materials.parameters.description.itype_plasticity.value
  • stype_plasticity = model.materials.parameters.description.stype_plasticity.value

Constructor

MaterialDescription()

Create a new MaterialDescription parameter group with default values.

Returns

  • MaterialDescription: New MaterialDescription parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.RandomFrictionGroup.RandomFrictionType
RandomFriction <: AbstractParameterGroup

Parameter group for random friction properties.

Fields

  • iuse_random_fric::ParameterInt: Randomize initial friction coefficient using deltafriccoef: 0 off; 1 on
  • delta_fric_coef::ParameterFloat: Friction coefficient perturbation used to randomize initial marker friction coefficients
  • iuse_random_fric_time::ParameterInt: Randomize marker friction coefficients with each time step: 0 off; 1 on
  • randomization_factor::ParameterFloat: Randomization factor used to randomize marker friction coefficients with each time step
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of parameter objects

Nested Dot Access

  • iuse_random_fric = model.materials.parameters.random_friction.iuse_random_fric.value
  • delta_fric_coef = model.materials.parameters.random_friction.delta_fric_coef.value
  • iuse_random_fric_time = model.materials.parameters.random_friction.iuse_random_fric_time.value
  • randomization_factor = model.materials.parameters.random_friction.randomization_factor.value

Constructor

RandomFriction()

Create a new RandomFriction parameter group with default values.

Returns

  • RandomFriction: New RandomFriction parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.SofteningGroup.SofteningType
Softening <: AbstractParameterGroup

Parameter group for viscous strain softening properties.

Fields

  • iuse_viscous_strain_soft::ParameterInt: Viscous strain softening: 0 off; 1 on
  • vsoftfac::ParameterFloat: Softening factor multiplied by power-law pre-exponential
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of parameter objects

Nested Dot Access

  • iuse_viscous_strain_soft = model.materials.parameters.softening.iuse_viscous_strain_soft.value
  • vsoftfac = model.materials.parameters.softening.vsoftfac.value

Constructor

Softening()

Create a new Softening parameter group with default values.

Returns

  • Softening: New Softening parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.ViscosityLimitsGroup.ViscosityLimitsType
ViscosityLimits <: AbstractParameterGroup

Parameter group for viscosity limits.

Fields

  • viscosity_min::ParameterFloat: Minimum viscosity
  • viscosity_max::ParameterFloat: Maximum viscosity
  • obj_list::Vector{ParameterFloat}: List of parameter objects

Nested Dot Access

  • viscosity_min = model.materials.parameters.viscosity_limits.viscosity_min.value
  • viscosity_max = model.materials.parameters.viscosity_limits.viscosity_max.value

Constructor

ViscosityLimits()

Returns

  • ViscosityLimits: New ViscosityLimits parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.StressLimitsYieldGroup.StressLimitsYieldType
StressLimitsYield <: AbstractParameterGroup

Parameter group for yield stress limits and plastic failure properties.

Fields

  • yield_stress_min::ParameterFloat: Minimum stress limit for plastic failure in Pa
  • yield_stress_max::ParameterFloat: Maximum stress limit for plastic failure in Pa
  • iuse_fluid_pressure_for_yield::ParameterInt: Flag to use fluid pressure for yield stress calculation
  • plastic_healing_rate::ParameterFloat: Rate of plastic healing in 1/s
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of parameter objects

Nested Dot Access

  • yield_stress_min = model.materials.parameters.stress_limits_yield.yield_stress_min.value
  • yield_stress_max = model.materials.parameters.stress_limits_yield.yield_stress_max.value
  • iuse_fluid_pressure_for_yield = model.materials.parameters.stress_limits_yield.iuse_fluid_pressure_for_yield.value
  • plastic_healing_rate = model.materials.parameters.stress_limits_yield.plastic_healing_rate.value

Constructor

StressLimitsYield()

Create a new StressLimitsYield parameter group with default values.

Returns

  • StressLimitsYield: New StressLimitsYield parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.StressLimitsPowerLawGroup.StressLimitsPowerLawType
StressLimitsPowerLaw <: AbstractParameterGroup

Parameter group for power-law stress limits.

Fields

  • powerlaw_stress_min::ParameterFloat: Minimum stress limit for power law
  • obj_list::Vector{ParameterFloat}: List of parameter objects

Nested Dot Access

  • powerlaw_stress_min = model.materials.parameters.stress_limits_powerlaw.powerlaw_stress_min.value

Constructor

StressLimitsPowerLaw()

Returns

  • StressLimitsPowerLaw: New StressLimitsPowerLaw parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.HydrothermalGroup.HydrothermalType
Hydrothermal <: AbstractParameterGroup

Parameter group for hydrothermal circulation properties.

Fields

  • iuse_hydrothermal::ParameterInt: Hydrothermal circulation: 0 off; 1 on (iuse_topo must be 1)
  • iuse_melt_lens::ParameterInt: Include shallow melt lens effect: 0 off; 1 on
  • hydrothermal_smoothing_factor::ParameterFloat: Hydrothermal smoothing factor
  • hydrothermal_nusselt_number::ParameterFloat: Hydrothermal Nusselt number
  • hydrothermal_max_temperature::ParameterFloat: Hydrothermal max temperature in Celsius
  • hydrothermal_max_depth::ParameterFloat: Hydrothermal max depth in meters
  • iuse_plastic_strain_rate_for_hydrothermal::ParameterInt: Use plastic strain rate for hydrothermal circulation: 0 off; 1 on
  • hydrothermal_decay_length::ParameterFloat: Hydrothermal decay length in meters
  • hydrothermal_buffer_distance::ParameterFloat: Hydrothermal buffer distance in meters
  • hydrothermal_plastic_strain_rate_reference::ParameterFloat: Hydrothermal plastic strain rate reference in 1/s
  • iuse_plastic_strain_for_hydrothermal::ParameterInt: Use plastic strain for hydrothermal circulation: 0 off; 1 on
  • hydrothermal_plastic_strain_reference::ParameterFloat: Hydrothermal plastic strain reference
  • sediment_thickness_threshold::ParameterFloat: Sediment thickness threshold in meters
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of

parameter objects

Nested Dot Access

  • iuse_hydrothermal = model.materials.parameters.hydrothermal.iuse_hydrothermal.value
  • iuse_melt_lens = model.materials.parameters.hydrothermal.iuse_melt_lens.value
  • hydrothermal_smoothing_factor = model.materials.parameters.hydrothermal.hydrothermal_smoothing_factor.value
  • hydrothermal_nusselt_number = model.materials.parameters.hydrothermal.hydrothermal_nusselt_number.value
  • hydrothermal_max_temperature = model.materials.parameters.hydrothermal.hydrothermal_max_temperature.value
  • hydrothermal_max_depth = model.materials.parameters.hydrothermal.hydrothermal_max_depth.value
  • iuse_plastic_strain_rate_for_hydrothermal = model.materials.parameters.hydrothermal.iuse_plastic_strain_rate_for_hydrothermal.value
  • hydrothermal_decay_length = model.materials.parameters.hydrothermal.hydrothermal_decay_length.value
  • hydrothermal_buffer_distance = model.materials.parameters.hydrothermal.hydrothermal_buffer_distance.value
  • hydrothermal_plastic_strain_rate_reference = model.materials.parameters.hydrothermal.hydrothermal_plastic_strain_rate_reference.value
  • iuse_plastic_strain_for_hydrothermal = model.materials.parameters.hydrothermal.iuse_plastic_strain_for_hydrothermal.value
  • hydrothermal_plastic_strain_reference = model.materials.parameters.hydrothermal.hydrothermal_plastic_strain_reference.value
  • sediment_thickness_threshold = model.materials.parameters.hydrothermal.sediment_thickness_threshold.value

Constructor

Hydrothermal()

Create a new Hydrothermal parameter group with default values.

Returns

  • Hydrothermal: New Hydrothermal parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.CompactionGroup.CompactionType
Compaction <: AbstractParameterGroup

Parameter group for sediment compaction and water properties.

Fields

  • iuse_sed_porosity::ParameterInt: Depth-dependent sediment porosity: 0 off; 1 on
  • conductivity_water::ParameterFloat: Thermal conductivity of water
  • density_water::ParameterFloat: Density of water
  • heat_capacity_water::ParameterFloat: Heat capacity of water
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of

parameter objects

Nested Dot Access

  • iuse_sed_porosity = model.materials.parameters.compaction.iuse_sed_porosity.value
  • conductivity_water = model.materials.parameters.compaction.conductivity_water.value
  • density_water = model.materials.parameters.compaction.density_water.value
  • heat_capacity_water = model.materials.parameters.compaction.heat_capacity_water.value

Constructor

Compaction()

Create a new Compaction parameter group with default values.

Returns

  • Compaction: New Compaction parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.BoundaryFrictionGroup.BoundaryFrictionType
BoundaryFriction <: AbstractParameterGroup

Parameter group for boundary friction zone properties.

Fields

  • boundary_friction_width::ParameterFloat: Width of boundary friction zone
  • boundary_friction_angle::ParameterFloat: Friction angle of boundary friction zone
  • boundary_cohesion::ParameterFloat: Cohesion of boundary friction zone
  • obj_list::Vector{ParameterFloat}: List of parameter objects

Nested Dot Access

  • boundary_friction_width = model.materials.parameters.boundary_friction.boundary_friction_width.value
  • boundary_friction_angle = model.materials.parameters.boundary_friction.boundary_friction_angle.value
  • boundary_cohesion = model.materials.parameters.boundary_friction.boundary_cohesion.value

Constructor

BoundaryFriction()

Create a new BoundaryFriction parameter group with default values.

Returns

  • BoundaryFriction: New BoundaryFriction parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.SerpentinizationGroup.SerpentinizationType
Serpentinization <: AbstractParameterGroup

Parameter group for serpentinization model properties.

Fields

  • iuse_serpentinization::ParameterInt: Serpentinization model: 0 off; 1 on. Topography must be activated for serpentinization (i.e. iuse_topo must be equal to 1). See EarthBox.SurfaceProcesses.Topography.initialize!) for more details on topography initialization.
  • serpentinization_temperature::ParameterFloat: Temperature in Celsius that controls when serpentinization rate reaches maximum and then rapidly decreases. Typical values from the literature are around 613.15K (340.15C) (e.g. Mezri et al. (2024)).
  • maximum_serpentinization_depth::ParameterFloat: Maximum submud serpentinization depth in meters
  • maximum_serpentinization_rate::ParameterFloat: Maximum serpentinization rate (1/s). Typical values from the literature are around 1e-10 to 1e-11 1/s (e.g. Mezri et al. (2024)).
  • nominal_strain_rate_serpentinization::ParameterFloat: Nominal plastic strain rate for serpentinization (1/s). Plastic strain rate beyond which the effect of plastic strain rate on serpentinization rate rapidly increases and then becomes constant (e.g. Merzi et al., 2024). Typical values from the literature are around 1e-12 to 1e-13 1/s (e.g. Mezri et al. (2024)).
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of parameter objects

Nested Dot Access

  • iuse_serpentinization = model.materials.parameters.serpentinization.iuse_serpentinization.value
  • serpentinization_temperature = model.materials.parameters.serpentinization.serpentinization_temperature.value
  • maximum_serpentinization_depth = model.materials.parameters.serpentinization.maximum_serpentinization_depth.value
  • maximum_serpentinization_rate = model.materials.parameters.serpentinization.maximum_serpentinization_rate.value
  • nominal_strain_rate_serpentinization = model.materials.parameters.serpentinization.nominal_strain_rate_serpentinization.value

Constructor

Serpentinization()

Create a new Serpentinization parameter group with default values.

Returns

  • Serpentinization: New Serpentinization parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ParameterCollection.MeltDamageGroup.MeltDamageType
MeltDamage <: AbstractParameterGroup

Parameter group for melt damage properties.

Fields

  • iuse_melt_damage::ParameterInt: Integer flag that activates melt damage model where the damage factor is calculated for markers in the melt damage zone above partially molten mantle.
  • melt_damage_distance::ParameterFloat: Distance in meters from the shallow partially molten mantle where the damage factor is calculated for markers in the melt damage zone.
  • melt_damage_factor::ParameterFloat: Maximum melt damage factor. Friction angle is divided by this factor to account for melt damage.
  • melt_damage_taper_distance::ParameterFloat: Distance in meters over which melt damage factor tapers to one.
  • iuse_probabilistic_melt_damage::ParameterInt: Integer flag that activates probabilistic melt damage model where the damage factor is calculated probabilistically for markers in the melt damage zone.
  • maximum_damage_probability::ParameterFloat: Maximum probability (fraction) of melt damage for markers in the central melt damage zone.
  • magmatic_crust_height_threshold::ParameterFloat: Threshold height in meters for magmatic crust used in linear melt damage probability model
  • magmatic_crust_height_minimum::ParameterFloat: Minimum height in meters for magmatic crust used in linear melt damage probability model
  • magmatic_crust_height_maximum::ParameterFloat: Maximum height in meters for magmatic crust used in linear melt damage probability model.
  • magmatic_crust_height_intermediate::ParameterFloat: Intermediate height in meters for magmatic crust used in linear melt damage probability model.
  • intermediate_damage_probability::ParameterFloat: Intermediate probability (fraction) of melt damage for markers in the central melt damage zone.
  • obj_list::Vector{Union{ParameterFloat, ParameterInt}}: List of

parameter objects

Nested Dot Access

  • iuse_melt_damage = model.materials.parameters.melt_damage.iuse_melt_damage.value
  • melt_damage_distance = model.materials.parameters.melt_damage.melt_damage_distance.value
  • melt_damage_factor = model.materials.parameters.melt_damage.melt_damage_factor.value
  • melt_damage_taper_distance = model.materials.parameters.melt_damage.melt_damage_taper_distance.value
  • iuse_probabilistic_melt_damage = model.materials.parameters.melt_damage.iuse_probabilistic_melt_damage.value
  • maximum_damage_probability = model.materials.parameters.melt_damage.maximum_damage_probability.value
  • magmatic_crust_height_threshold = model.materials.parameters.melt_damage.magmatic_crust_height_threshold.value
  • magmatic_crust_height_minimum = model.materials.parameters.melt_damage.magmatic_crust_height_minimum.value
  • magmatic_crust_height_maximum = model.materials.parameters.melt_damage.magmatic_crust_height_maximum.value
  • magmatic_crust_height_intermediate = model.materials.parameters.melt_damage.magmatic_crust_height_intermediate.value
  • intermediate_damage_probability = model.materials.parameters.melt_damage.intermediate_damage_probability.value

Constructor

MeltDamage()

Returns

  • MeltDamage: New MeltDamage parameter group with initialized values
source
EarthBox.ModelDataContainer.MaterialContainer.ArrayCollection.ArraysType
Arrays

Collection of material property arrays used in EarthBox.

Fields

  • mat_rho::MaterialArrayFloat2DState: (nmats, 4) : Density-related properties
    • Column 1: Standard density (kg/m^3)
    • Column 2: Thermal expansion coefficient (1/K)
    • Column 3: Compressibility (1/Pa)
    • Column 4: Melt density (kg/m^3)
  • mat_flow_type::MaterialArrayInt1DState: (nmats) : Flow law type integer ID for each material
  • mat_flow::MaterialArrayFloat2DState: (nmats, 17) : Flow law parameters
    • Column 1: Viscosity for isoviscous models (Pa.s)
    • Column 2: Pre-exponential factor for power law (1/s/MPa^n)
    • Column 3: Power law stress exponent n
    • Column 4: Activation energy for power law (kJ/mol)
    • Column 5: Activation volume for power law (J/MPa/mol)
    • Column 6: Pre-exponential term for Peierls creep (s^-1*MPa^-2)
    • Column 7: Peierls creep stress exponent 1
    • Column 8: Peierls creep stress exponent 2
    • Column 9: Peierls stress (MPa)
    • Column 10: Pre-exponential terms for diffusion creep (1/s/MPa^n)
    • Column 11: Activation energy for diffusion creep (kJ/mol)
    • Column 12: Activation volume for diffusion creep (J/MPa/mol)
    • Column 13: Pre-exponential term for temperature-dependent viscosity (Pa.s)
    • Column 14: Activation energy for temperature-dependent viscosity (kJ/mol)
    • Column 15: Reference viscosity for flow law from Blankenbach (1989) (Pa.s)
    • Column 16: b term for flow law from Blankenbach (1989)
    • Column 17: c term for flow law from Blankenbach (1989)
  • mat_mu::MaterialArrayFloat1DState: (nmats) : Shear modulus (Pa)
    • Column 1: Shear modulus (Pa)
  • mat_plastic::MaterialArrayFloat2DState: (nmats, 7) : Plastic deformation parameters
    • Column 1: Cohesion (C0) at initial strain GAM0 (Pa)
    • Column 2: Cohesion (C1) at final strain GAM1 (Pa)
    • Column 3: Sine of friction angle at strain GAM0
    • Column 3: Sine of friction angle at strain GAM1
    • Column 5: Initial strain GAM0
    • Column 6: Final strain GAM1
    • Column 7: Dilatation angle
  • mat_cp::MaterialArrayFloat1DState: (nmats) : Heat capacity (J/kg/K)
  • mat_kt::MaterialArrayFloat2DState: (nmats, 2) : Thermal conductivity parameters
    • Column 1: Reference thermal conductivity k0 (W/m/k)
    • Column 2: Thermal conductivity term a (W/m)
  • mat_hr::MaterialArrayFloat1DState: (nmats) : Radiogenic heat production rate (W/m^3)
  • mat_melting_itypes::MaterialArrayInt2DState: (nmats, 2) : Melting model type IDs
    • Column 1: Integer type ID for solidus
    • Column 2: Integer type ID for liquidus
  • mat_melting::MaterialArrayFloat2DState: (nmats, 2) : Melting model parameters
    • Column 1: Latent heat (J/kg)
    • Column 2: Shift in solidus and liquidus temperature to account for fractional crystallization above the Moho at spreading ridges. (K)
  • mat_compaction::MaterialArrayFloat2DState: Compaction parameters
    • Column 1: Initial porosity at sediment-water interface (fraction)
    • Column 2: Porosity decay depth (meters)

Nested Dot Access

  • mat_rho = model.materials.arrays.mat_rho.array
  • mat_flow_type = model.materials.arrays.mat_flow_type.array
  • mat_flow = model.materials.arrays.mat_flow.array
  • mat_mu = model.materials.arrays.mat_mu.array
  • mat_plastic = model.materials.arrays.mat_plastic.array
  • mat_cp = model.materials.arrays.mat_cp.array
  • mat_kt = model.materials.arrays.mat_kt.array
  • mat_hr = model.materials.arrays.mat_hr.array
  • mat_melting_itypes = model.materials.arrays.mat_melting_itypes.array
  • mat_melting = model.materials.arrays.mat_melting.array
  • mat_compaction = model.materials.arrays.mat_compaction.array

Constructor

Arrays(nmats::Int)

Arguments

  • nmats::Int: Number of materials

Returns

  • Arrays: New Arrays collection with initialized arrays
source
EarthBox.ModelDataContainer.MaterialContainer.DictCollection.DictsType
Dicts

Collection of material property dictionaries.

Fields

  • matid_domains::Dict{String, Int64}: Dictionary mapping domain name to a single material ID
  • matid_types::Dict{String, Vector{Int64}}: Dictionary mapping type name to multiple material IDs

Nested Dot Access

  • matid_domains = model.materials.dicts.matid_domains
  • matid_types = model.materials.dicts.matid_types
source