List functions
These are all the functions that are provided for the LaMEM Julia Setup interface
LaMEM.LaMEM_Model.BCBlock
— TypeLaMEM boundary condition `BCBlock` object
npath::Int64
: Number of path points of Bezier curve (path-points only!)theta::Vector{Float64}
: # Orientation angles at path points (counter-clockwise positive)time::Vector{Float64}
: Times at path pointspath::Vector{Float64}
: Path points x-y coordinatesnpoly::Int64
: Number of polygon verticespoly::Vector{Float64}
: Polygon x-y coordinates at initial timebot::Float64
: Polygon bottom coordinatetop::Float64
: Polygon top coordinate
LaMEM.LaMEM_Model.BoundaryConditions
— TypeStructure that contains the LaMEM boundary conditions information.
noslip::Vector{Int64}
: No-slip boundary flag mask (left right front back bottom top)open_top_bound::Int64
: Stress-free (free surface/infinitely fast erosion) top boundary flagtemp_top::Float64
: Constant temperature on the top boundarytemp_bot::Float64
: Constant temperature on the bottom boundaryexx_num_periods::Int64
: number intervals of constant background strain rate (x-axis)exx_time_delims::Vector{Float64}
: time delimiters (one less than number of intervals, not required for one interval)exx_strain_rates::Vector{Float64}
: strain rates for each intervaleyy_num_periods::Int64
: eyynumperiodseyy_time_delims::Vector{Float64}
: eyytimedelimseyy_strain_rates::Vector{Float64}
: eyystrainratesexy_num_periods::Int64
: exynumperiodsexy_time_delims::Vector{Float64}
: exytimedelimsexy_strain_rates::Vector{Float64}
: exystrainratesexz_num_periods::Int64
: exznumperiodsexz_time_delims::Vector{Float64}
: exztimedelimsexz_strain_rates::Vector{Float64}
: exzstrainrateseyz_num_periods::Int64
: eyznumperiodseyz_time_delims::Vector{Float64}
: eyztimedelimseyz_strain_rates::Vector{Float64}
: eyzstrainratesbg_ref_point::Vector{Float64}
: background strain rate reference point (fixed)VelocityBoxes::Vector{VelocityBox}
: List of added velocity boxesBCBlocks::Vector{BCBlock}
: List of added Bezier blocksVelCylinders::Vector{VelCylinder}
: List of added velocity cylindersbvel_face::Union{Nothing, String}
: Face identifier (Left; Right; Front; Back; CompensatingInflow)bvel_face_out::Union{Nothing, Int64}
: Velocity on opposite side: -1 for inverted velocity; 0 for no velocity; 1 for the same direction of velocitybvel_bot::Union{Nothing, Float64}
: Bottom coordinate of inflow windowbvel_top::Union{Nothing, Float64}
: Top coordinate of inflow windowvelin_num_periods::Union{Nothing, Int64}
: Number of periods when velocity changes (Optional)velin_time_delims::Union{Nothing, Vector}
: Change velocity at 2 and 5 Myrs (one less than number of intervals, not required for one interval) (Optional)bvel_velin::Union{Nothing, Vector}
: inflow velocity for each time interval(Multiple values required if velinnumperiods>1)bvel_velout::Union{Nothing, Float64}
: outflow velocity (if not specified, computed from mass balance)bvel_relax_d::Union{Nothing, Float64}
: vert.distance from bvelbot and bveltop over which velocity is reduced linearlybvel_velbot::Union{Nothing, Int64}
: bottom inflow velocity for use with bvel_face=CompensatingInflowbvel_veltop::Union{Nothing, Int64}
: top inflow velocity for use with bvel_face=CompensatingInflowbvel_temperature_inflow::Union{Nothing, String}
: bveltemperatureinflow: Thermal age of the plate, which can be constant if set to Fixedthermalage or ConstantTinflow (Temperature of the inflow material is constant everywhere)bvel_thermal_age::Union{Nothing, Float64}
: In dimensional unit. If the user specify this value, he needs to specify the temperature of the mantle and top as wellbvel_temperature_mantle::Union{Nothing, Float64}
: In dimensional unit. Temperature of the mantlebvel_temperature_top::Union{Nothing, Float64}
: In dimensional unit. temperature of the topbvel_temperature_constant::Union{Nothing, Float64}
: Constant temperature inflow.bvel_num_phase::Union{Nothing, Int64}
: Imposes a stratigraphy of phase injected in the inflow boundary [if undefined, it uses the phase close to the boundary]bvel_phase::Union{Nothing, Vector{Int64}}
: phase number of inflow material [if undefined, it uses the phase close to the boundary] from bottom to topbvel_phase_interval::Union{Nothing, Vector{Float64}}
: Depth interval of injection of the phase (the interval is defined by num_phase+1 coordinates). e.g. [-120 -100 -10 0 ]open_bot_bound::Union{Nothing, Int64}
: # Permeable lower boundary flagpermeable_phase_inflow::Union{Nothing, Int64}
: Phase of the inflow material from the bottom (The temperature of the inflow phase it is the same of the bottom boundary) in case of openbotbound=1fix_phase::Union{Nothing, Int64}
: fixed phase (no-flow condition)fix_cell::Union{Nothing, Int64}
: fixed cells (no-flow condition)fix_cell_file::Union{Nothing, String}
: fixed cells input file (extension is .xxxxxxxx.dat)temp_bot_num_periods::Union{Nothing, Int64}
: How many periods with different temp_bot do we have?temp_bot_time_delim::Union{Nothing, Vector{Float64}}
: At which time do we switch from one to the next period?Plume_InflowBoundary::Union{Nothing, Int64}
: # have a plume-like inflow boundary @ bottomPlume_Type::Union{Nothing, String}
: Type of plume inflow boundary."Inflow_type"
or"Pressure_type"
(circular) or"Permeable_Type"
which combines the open bot boundary with the plume boundary condition (the option herein listed overwrites open_bot, so do not activate that)
Plume_Dimension::Union{Nothing, String}
: 2D or 3D (circular)Plume_areaFrac::Union{Nothing, Float64}
: how much of the plume is actually in the model. This usually 1 (default) but lower if the plume is in a corner of a symmetric setup and matters for the outflowPlume_Phase::Union{Nothing, Int64}
: phase of plume materialPlume_Depth::Union{Nothing, Float64}
: # depth of provenience of the plume (i.e. how far from the bottom of the model the plume source is)Plume_Mantle_Phase::Union{Nothing, Int64}
: # Astenosphere phase (if the inflow occurs outside the plume radius)Plume_Temperature::Union{Nothing, Float64}
: # temperature of inflow plumePlume_Inflow_Velocity::Union{Nothing, Float64}
: # Inflow velocity (not required if Pressure_Type) in cm/year if using GEOunitsPlume_VelocityType::Union{Nothing, String}
:"Gaussian"
or"Poiseuille"
Plume_Center::Union{Nothing, Vector{Float64}}
: # [X,Y] of center (2nd only in case of 3D plume)Plume_Radius::Union{Nothing, Float64}
: # Width/Radius of plumePlume_Phase_Mantle::Union{Nothing, Int64}
: # Inflow phase. If the velocity happens to be positive in the domain, the inflow material has a constant phase and the temperature of the bottompres_top::Union{Nothing, Float64}
: Pressure on the top boundarypres_bot::Union{Nothing, Float64}
: Pressure on the bottom boundaryinit_pres::Union{Nothing, Int64}
: pressure initial guess flag; linear profile between prestop and presbot in the unconstrained cellsinit_temp::Union{Nothing, Int64}
: temperature initial guess flag; linear profile between temptop and tempbot
LaMEM.LaMEM_Model.Dike
— TypeDefines the properties related to inserting dikes
ID::Int64
: Material phase IDMf::Float64
: value for dike/magma- accommodated extension, between 0 and 1, in the front of the box, for phase dikeMc::Float64
: [optional] value for dike/magma- accommodate extension, between 0 and 1, for dike phase; M is linearly interpolated between Mf & Mc and Mc & Mb, if not set, Mc default is set to -1 so it is not usedy_Mc::Union{Nothing, Float64}
: [optional], location for Mc, must be between front and back boundaries of dike box, if not set, default value to 0.0, but not usedMb::Union{Nothing, Float64}
: value for dike/magma-accommodated extension, between 0 and 1, in the back of the box, for phase dikePhaseID::Union{Nothing, Int64}
: Phase IDPhaseTransID::Union{Nothing, Int64}
: Phase transition ID
LaMEM.LaMEM_Model.FreeSurface
— TypeStructure that contains the LaMEM free surface information.
surf_use::Int64
: Free surface activation flagsurf_corr_phase::Int64
: air phase ratio correction flag (phases in an element that contains are modified based on the surface position)surf_level::Union{Nothing, Float64}
: initial level of the free surfacesurf_air_phase::Union{Nothing, Int64}
: phase ID of sticky air layersurf_max_angle::Float64
: maximum angle with horizon (smoothed if larger)surf_topo_file::String
: initial topography file (redundant)erosion_model::Int64
: erosion model [0-none (default), 1-infinitely fast, 2-prescribed rate with given level]er_num_phases::Int64
: number of erosion phaseser_time_delims::Vector{Float64}
: erosion time delimiters (one less than number)er_rates::Vector{Float64}
: constant erosion rates in different time periodser_levels::Vector{Int64}
: levels above which we apply constant erosion rates in different time periodssediment_model::Int64
: sedimentation model [0-none (dafault), 1-prescribed rate with given level, 2-cont. margin]sed_num_layers::Int64
: number of sediment layerssed_time_delims::Vector{Float64}
: sediment layers time delimiters (one less than number)sed_rates::Vector{Float64}
: sediment rates in different time periodssed_levels::Vector{Float64}
: levels below which we apply constant sediment rates in different time periodssed_phases::Vector{Int64}
: sediment layers phase numbers in different time periodsmarginO::Vector{Float64}
: lateral coordinates of continental margin - originmarginE::Vector{Float64}
: lateral coordinates of continental margin - 2nd pointhUp::Float64
: up dip thickness of sediment cover (onshore)hDown::Float64
: down dip thickness of sediment cover (off shore)dTrans::Float64
: half of transition zoneTopography::Union{Nothing, GeophysicalModelGenerator.CartData}
: Topography grid
LaMEM.LaMEM_Model.GeomBox
— TypeLaMEM geometric primitive `Box` object
phase::Int64
: phasebounds::Vector{Float64}
: box bound coordinates:left
,right
,front
,back
,bottom
,top
Temperature::Union{Nothing, String}
: optional: Temperature structure. possibilities: [constant, linear, halfspace]cstTemp::Union{Nothing, Float64}
: required in case of [constant
]: temperature value [in Celcius in case of GEO units]topTemp::Union{Nothing, Float64}
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]botTemp::Union{Nothing, Float64}
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]thermalAge::Union{Nothing, Float64}
: required in case of [halfspace
]: thermal age of lithosphere [in Myrs if GEO units are used]
LaMEM.LaMEM_Model.GeomCylinder
— TypeLaMEM geometric primitive `Cylinder` object
phase::Int64
: phaseradius::Float64
: radius of cylinderbase::Vector{Float64}
: center of base of cylindercap::Vector{Float64}
: center of cap of cylinderTemperature::Union{Nothing, String}
: optional: Temperature structure. possibilities: [constant]cstTemp::Union{Nothing, Float64}
: required in case of [constant
]: temperature value [in Celcius in case of GEO units]
LaMEM.LaMEM_Model.GeomEllipsoid
— TypeLaMEM geometric primitive `Ellipsoid` object
phase::Int64
: phaseaxes::Vector{Float64}
: semi-axes of ellipsoid inx
,y
andz
center::Vector{Float64}
: center of sphereTemperature::Union{Nothing, String}
: optional: Temperature of the sphere. possibilities: [constant, or nothing]cstTemp::Union{Nothing, Float64}
: required in case of [constant]: temperature value [in Celcius in case of GEO units]
LaMEM.LaMEM_Model.GeomHex
— TypeLaMEM geometric primitive `Hex` object to define hexahedral elements
phase::Int64
: phasecoord::Vector{Float64}
:x
-y
-z
coordinates for each of 8 nodes (24 parameters) (counter)-clockwise for an arbitrary face, followed by the opposite face
LaMEM.LaMEM_Model.GeomLayer
— TypeLaMEM geometric primitive `Layer` object
phase::Int64
: phasetop::Float64
: top of layerbottom::Float64
: bottom of layercosine::Union{Nothing, Int64}
: optional: add a cosine perturbation on top of the interface (if 1)wavelength::Union{Nothing, Float64}
: required if cosine: wavelength in x-directionamplitude::Union{Nothing, Float64}
: required if cosine: amplitude of perturbationTemperature::Union{Nothing, String}
: optional: Temperature structure. possibilities: [constant, linear, halfspace]cstTemp::Union{Nothing, Float64}
: required in case of [constant
]: temperature value [in Celcius in case of GEO units]topTemp::Union{Nothing, Float64}
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]botTemp::Union{Nothing, Float64}
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]thermalAge::Union{Nothing, Float64}
: required in case of [halfspace
]: thermal age of lithosphere [in Myrs if GEO units are used]
LaMEM.LaMEM_Model.GeomRidgeSeg
— TypeLaMEM geometric primitive `RidgeSeg` object
phase::Int64
: phasebounds::Vector{Float64}
: box bound coordinates:left
,right
,front
,back
,bottom
,top
ridgeseg_x::Vector{Float64}
: coordinate order: left, right [can be different for oblique ridge]ridgeseg_y::Vector{Float64}
: coordinate order: front, back [can be different for oblique ridge]Temperature::String
: initial temperature structure [ridge must be set tohalfspace_age
–> setTemp=4]topTemp::Float64
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]botTemp::Float64
: required in case of [linear,halfspace
]: temperature @ top [in Celcius in case of GEO units]age0::Float64
: minimum age of seafloor at ridge [inMyr
in case of GEO units]maxAge::Union{Nothing, Float64}
: [optional] parameter that indicates the maximum thermal age of a platev_spread::Union{Nothing, Float64}
: [optional] parameter that indicates the spreading velocity of the plate; if not defined it uses bvel_velin specified elsewhere
LaMEM.LaMEM_Model.GeomSphere
— TypeLaMEM geometric primitive `sphere` object
phase::Int64
: phaseradius::Float64
: radius of spherecenter::Vector{Float64}
: center of sphereTemperature::Union{Nothing, String}
: optional: Temperature of the sphere. possibilities: [constant, or nothing]cstTemp::Union{Nothing, Float64}
: required in case of [constant]: temperature value [in Celcius in case of GEO units]
LaMEM.LaMEM_Model.Grid
— TypeStructure that contains the LaMEM grid information
nmark_x::Int64
: number of markers/element in x-directionnmark_y::Int64
: number of markers/element in y-directionnmark_z::Int64
: number of markers/element in x-directionnel_x::Vector{Int64}
: number of elements in x-directionnel_y::Vector{Int64}
: number of elements in y-directionnel_z::Vector{Int64}
: number of elements in z-directioncoord_x::Vector{Float64}
: coordinates in x-directioncoord_y::Vector{Float64}
: coordinates in y-directioncoord_z::Vector{Float64}
: coordinates in z-directionnseg_x::Int64
: number of segments in x-direction (if we employ variable grid spacing in x-direction)nseg_y::Int64
: number of segments in y-direction (if we employ variable grid spacing in y-direction)nseg_z::Int64
: number of segments in z-direction (if we employ variable grid spacing in z-direction)bias_x::Vector{Float64}
: bias in x-direction (if we employ variable grid spacing in x-direction)bias_y::Vector{Float64}
: bias in y-direction (if we employ variable grid spacing in y-direction)bias_z::Vector{Float64}
: bias in z-direction (if we employ variable grid spacing in z-direction)Grid::GeophysicalModelGenerator.LaMEM_grid
: Contains the LaMEM Grid objectPhases::Array{Int32}
: Phases; 3D phase informationTemp::Array{Float64}
: Temp; 3D phase information
Example 1
julia> d=LaMEM.Grid(coord_x=[0.0, 0.7, 0.8, 1.0], bias_x=[0.3,1.0,3.0], nel_x=[10,4,2])
LaMEM grid with 1D refinement:
nel : ([10, 4, 2], [16], [16])
marker/cell : (3, 3, 3)
x ϵ [0.0, 0.7, 0.8, 1.0], bias=[0.3, 1.0, 3.0], nseg=3, Δmin=0.025000000000000022, Δmax=0.1499999999999999
y ϵ [-10.0 : 0.0]
z ϵ [-10.0 : 0.0]
Example 2
julia> d=LaMEM.Grid(nel=(10,20))
LaMEM grid with constant Δ:
nel : ([10], [1], [20])
marker/cell : (3, 3, 3)
x ϵ [-10.0 : 10.0]
y ϵ [-10.0 : 0.0]
z ϵ [-10.0 : 0.0]
LaMEM.LaMEM_Model.Materials
— TypeStructure that contains the material properties in the current simulation
Phases::Vector{Phase}
: Different Materials implementedSofteningLaws::Vector{Softening}
: Softening laws implementedPhaseTransitions::Vector{PhaseTransition}
: Internal Phase Transitions (that change the ID of markers) implementedDikes::Vector{Dike}
: Dikes implemented (mostly for MOR simulations)PhaseAggregates::Vector{PhaseAggregate}
: Phase aggregates (combines different phases such as upper_lower crust into one for visualization purposes)
LaMEM.LaMEM_Model.Model
— TypeModel
Structure that holds all the information to create a LaMEM input file
Scaling::Scaling
: Scaling parametersGrid::Grid
: LaMEM GridTime::Any
: Time optionsFreeSurface::Any
: Free surface optionsBoundaryConditions::Any
: Boundary conditionsSolutionParams::Any
: Global solution parametersSolver::Any
: Solver options and optional PETSc optionsModelSetup::Any
: Model setupOutput::Any
: Output optionsPassiveTracers::Any
: Passive tracersMaterials::Any
: Material parameters for each of the phases
LaMEM.LaMEM_Model.Model
— MethodModel(args...)
Allow to define a model setup by specifying some of the basic objects
Example
julia> d = Model(Grid(nel=(10,1,20)), Scaling(NO_units()))
LaMEM Model setup
|
|-- Scaling : GeoParams.Units.GeoUnits{GeoParams.Units.NONE}
|-- Grid : nel=(10, 1, 20); xϵ(-10.0, 10.0), yϵ(-10.0, 0.0), zϵ(-10.0, 0.0)
|-- Time : nstep_max=50; nstep_out=1; time_end=1.0; dt=0.05
|-- Boundary conditions : noslip=[0, 0, 0, 0, 0, 0]
|-- Solution parameters :
|-- Solver options : direct solver; superlu_dist; penalty term=10000.0
|-- Model setup options : Type=geom;
|-- Output options : filename=output; pvd=1; avd=0; surf=0
|-- Materials : 1 phases;
LaMEM.LaMEM_Model.Model
— MethodModel(;
Scaling=Scaling(GEO_units()),
Grid=Grid(),
Time=Time(),
FreeSurface=FreeSurface(),
BoundaryConditions=BoundaryConditions(),
SolutionParams=SolutionParams(),
Solver=Solver(),
ModelSetup=ModelSetup(),
Output=Output(),
PassiveTracers=PassiveTracers(),
Materials=Materials()
)
Creates a LaMEM Model setup.
Scaling::Scaling
Grid::Grid
Time::Any
FreeSurface::Any
BoundaryConditions::Any
SolutionParams::Any
Solver::Any
ModelSetup::Any
Output::Any
PassiveTracers::Any
Materials::Any
LaMEM.LaMEM_Model.ModelSetup
— TypeStructure that contains the LaMEM Model Setup and Advection options
msetup::String
: Setup type - can begeom
(phases are assigned from geometric primitives, usingadd_geom!(model, ...)
),files
(from julia input),polygons
(from geomIO input, which requirespoly_file
to be specified)rand_noise::Int64
: add random noise to the particle locationrand_noiseGP::Int64
: random noise flag, subsequently applied to geometric primitivesbg_phase::Int64
: background phase IDsave_mark::Int64
: save marker to disk flagmark_load_file::String
: marker input file (extension is .xxxxxxxx.dat), if usingmsetup
=files
mark_save_file::String
: marker output file (extension is .xxxxxxxx.dat)poly_file::String
: polygon geometry file (redundant), if usingmsetup
=polygons
temp_file::String
: initial temperature file (redundant), if not set on markersadvect::String
: advection scheme; options=none
(no advection);basic
(Euler classical implementation [default]);Euler
(Euler explicit in time);rk2
(Runge-Kutta 2nd order in space)interp::String
: velocity interpolation scheme; options =stag
(trilinear interpolation from FDSTAG points),minmod
( MINMOD interpolation to nodes, trilinear interpolation to markers + correction),stagp
( STAG_P empirical approach by T. Gerya)stagp_a::Float64
: STAG_P velocity interpolation parametermark_ctrl::String
: marker control type; options aresubgrid
(default; marker control enforced over fine scale grid),none
(none),basic
(AVD for cells + corner insertion), andavd
(pure AVD for all control volumes)nmark_lim::Vector{Int64}
: min/max number per cell (marker control)nmark_avd::Vector{Int64}
: x-y-z AVD refinement factors (avd marker control)nmark_sub::Int64
: max number of same phase markers per subcell (subgrid marker control)geom_primitives::Vector
: Different geometric primitives that can be selected if wemsetup
=
geom; see
GeomSphere`
LaMEM.LaMEM_Model.Multigrid
— TypeStructure that has info about setting up multigrid for LaMEM
nel::Tuple{Int64, Int64, Int64}
: Number of elements at the fine level
levels::Int64
: Number of levels
smooth::Int64
: number of smoothening steps per level
smooth_jacobi_factor::Float64
: factor for jacbi smoothener oer level
smoother::String
: smoother used at every level
coarse_ksp::String
: coarse grid ksp type preonly or fgmres
coarse_pc::String
: coarse grid pc type ["superlu_dist", "mumps", "gamg", "telescope","redundant"]
coarse_coarse_pc::String
: coarse coarse grid solver in case we use redundant or telescope coarse grid solves
coarse_coarse_ksp::String
: coarse coarse grid solver in case we use redundant or telescope coarse grid solves
cores::Int64
: number of cores used in the simulation
cores_coarse::Int64
: number of cores used for coarse grid solver (in case we use pctelescope)
gamg_threshold::Float64
: GAMG threshold
gamg_coarse_eq_limit::Int64
: GAMG coarse grid equation limit
gamg_repartition::Bool
: GAMG repartition coarse grids? (default=false)
gamg_parallel_coarse::Bool
: GAMG parallel coarse grid solver? (default=false)
LaMEM.LaMEM_Model.Output
— TypeStructure that contains the LaMEM output options
out_file_name::Any
: output file nameout_dir::Any
: output directoryparam_file_name::Any
: parameter filenamewrite_VTK_setup::Any
: write VTK initial model setupout_pvd::Any
: activate writing .pvd fileout_phase::Any
: dominant phaseout_density::Any
: densityout_visc_total::Any
: total (viscoelastoplastic) viscosityout_visc_creep::Any
: creep viscosityout_velocity::Any
: velocityout_pressure::Any
: (dynamic) pressureout_tot_press::Any
: total pressureout_eff_press::Any
: effective pressureout_over_press::Any
: outoverpressout_litho_press::Any
: lithospheric pressureout_pore_press::Any
: pore pressureout_temperature::Any
: temperatureout_dev_stress::Any
: deviatoric strain rate tensorout_j2_dev_stress::Any
: second invariant of deviatoric stress tensorout_strain_rate::Any
: deviatoric strain rate tensorout_j2_strain_rate::Any
: second invariant of strain rate tensorout_shmax::Any
: sh maxout_ehmax::Any
: eh maxout_yield::Any
: yield stressout_rel_dif_rate::Any
: relative proportion of diffusion creep strainrateout_rel_dis_rate::Any
: relative proportion of dislocation creep strainrateout_rel_prl_rate::Any
: relative proportion of peierls creep strainrateout_rel_pl_rate::Any
: relative proportion of plastic strainrateout_plast_strain::Any
: accumulated plastic strainout_plast_dissip::Any
: plastic dissipationout_tot_displ::Any
: total displacementout_moment_res::Any
: momentum residualout_cont_res::Any
: continuity residualout_energ_res::Any
: energy residualout_melt_fraction::Any
: Melt fractionout_fluid_density::Any
: fluid densityout_conductivity::Any
: conductivityout_vel_gr_tensor::Any
: velocity gradient tensorout_surf::Any
: activate surface outputout_surf_pvd::Any
: activate writing .pvd fileout_surf_velocity::Any
: surface velocityout_surf_topography::Any
: surface topographyout_surf_amplitude::Any
: amplitude of topography (=topo-average(topo))out_mark::Any
: activate marker outputout_mark_pvd::Any
: activate writing .pvd fileout_avd::Any
: activate AVD phase outputout_avd_pvd::Any
: activate writing .pvd fileout_avd_ref::Any
: AVD grid refinement factorout_ptr::Any
: activateout_ptr_ID::Any
: ID of the passive tracersout_ptr_phase::Any
: phase of the passive tracersout_ptr_Pressure::Any
: interpolated pressureout_ptr_Temperature::Any
: temperatureout_ptr_MeltFraction::Any
: melt fraction computed using P-T of the markerout_ptr_Active::Any
: option that highlight the marker that are currently activeout_ptr_Grid_Mf::Any
: option that allow to store the melt fraction seen within the cell
LaMEM.LaMEM_Model.PassiveTracers
— TypeStructure that contains the LaMEM passive tracers parameters.
Passive_Tracer::Int64
: activate passive tracers?"
PassiveTracer_Box::Union{Nothing, Vector{Float64}}
: Dimensions of box in which we distribute passive tracers [Left, Right, Front, Back, Bottom, Top]
PassiveTracer_Resolution::Vector{Int64}
: The number of passive tracers in every direction
PassiveTracer_ActiveType::Union{Nothing, String}
: Under which condition are they activated? ["Always"], "Melt_Fraction", "Temperature", "Pressure", "Time"
PassiveTracer_ActiveValue::Union{Nothing, Float64}
: The value to activate them
LaMEM.LaMEM_Model.Phase
— TypeDefines the material properties for each of the phases
ID::Union{Nothing, Int64}
: Material phase IDName::Union{Nothing, String}
: Description of the phaserho::Union{Nothing, Float64}
: Density [kg/m^3]eta::Union{Nothing, Float64}
: Linear viscosity [Pas]visID::Union{Nothing, Int64}
: material ID for phase visualization (default is ID)diff_prof::Union{Nothing, String}
: Build-in DIFFUSION creep profiles:Example:
"Dry__Olivine_diff_creep-Hirth_Kohlstedt_2003"
Available build-in diffusion creep rheologies are:
- From [Hirth, G. and Kohlstedt D. (2003), Rheology of the upper mantle and the mantle wedge: A view from the experimentalists]:
"Dry_Olivine_diff_creep-Hirth_Kohlstedt_2003"
"Wet_Olivine_diff_creep-Hirth_Kohlstedt_2003_constant_C_OH"
"Wet_Olivine_diff_creep-Hirth_Kohlstedt_2003"
- From [Rybacki and Dresen, 2000, JGR]:
"Dry_Plagioclase_RybackiDresen_2000"
"Wet_Plagioclase_RybackiDresen_2000"
Note that you can always specify your own, by setting
Bd
,Ed
,Vd
accordingly.
disl_prof::Union{Nothing, String}
: Build-in DISLOCATION creep profiles:Example:
"Granite-Tirel_et_al_2008"
Available build-in dislocation creep rheologies are:
- From [Ranalli 1995]:
"Dry_Olivine-Ranalli_1995"
"Wet_Olivine-Ranalli_1995"
"Wet_Quarzite-Ranalli_1995"
"Quarzite-Ranalli_1995"
"Mafic_Granulite-Ranalli_1995"
"Plagioclase_An75-Ranalli_1995"
- From [Carter and Tsenn (1986). Flow properties of continental lithosphere - page 18]:
"Quartz_Diorite-Hansen_Carter_1982"
- From [J. de Bremond d'Ars et al. Tectonophysics (1999). Hydrothermalism and Diapirism in the Archaean: gravitational instability constrains. - page 5]
"Diabase-Caristan_1982"
"Tumut_Pond_Serpentinite-Raleigh_Paterson_1965"
- From [Mackwell, Zimmerman & Kohlstedt (1998). High-temperature deformation]:
"Maryland_strong_diabase-Mackwell_et_al_1998"
- From [Ueda et al (PEPI 2008)]:
"Wet_Quarzite-Ueda_et_al_2008"
- From [Huismans et al 2001]:
"Diabase-Huismans_et_al_2001"
"Granite-Huismans_et_al_2001"
- From [Burg And Podladchikov (1999)]:
"Dry_Upper_Crust-Schmalholz_Kaus_Burg_2009"
"Weak_Lower_Crust-Schmalholz_Kaus_Burg_2009"
"Olivine-Burg_Podladchikov_1999"
- From [Rybacki and Dresen, 2000, JGR]:
"Dry_Plagioclase_RybackiDresen_2000"
"Wet_Plagioclase_RybackiDresen_2000"
- From [Hirth, G. & Kohlstedt (2003), D. Rheology of the upper mantle and the mantle wedge: A view from the experimentalists]:
"Wet_Olivine_disl_creep-Hirth_Kohlstedt_2003"
"Wet_Olivine_disl_creep-Hirth_Kohlstedt_2003_constant_C_OH"
"Dry_Olivine_disl_creep-Hirth_Kohlstedt_2003"
- From [SchmalholzKausBurg(2009), Geology (wet olivine)]:
"Wet_Upper_Mantle-Burg_Schmalholz_2008"
"Granite-Tirel_et_al_2008"
- From [Urai et al.(2008)]:
"Ara_rocksalt-Urai_et_al.(2008)"
- From [Bräuer et al. (2011) Description of the Gorleben site (PART 4): Geotechnical exploration of the Gorleben salt dome - page 126]:
"RockSaltReference_BGRa_class3-Braeumer_et_al_2011"
- From [Mueller and Briegel (1978)]:
"Polycrystalline_Anhydrite-Mueller_and_Briegel(1978)"
Note that you can always specify your own, by setting
Bn
,En
,Vn
, andn
accordingly.
peir_prof::Union{Nothing, String}
: Build-in PEIERLS creep profiles:example:
"Olivine_Peierls-Kameyama_1999"
Available profiles:
"Olivine_Peierls-Kameyama_1999"
rho_n::Union{Nothing, Float64}
: depth-dependent density model parameterrho_c::Union{Nothing, Float64}
: depth-dependent density model parameterbeta::Union{Nothing, Float64}
: pressure-dependent density model parameterG::Union{Nothing, Float64}
: shear modulusKb::Union{Nothing, Float64}
: bulk modulusE::Union{Nothing, Float64}
: Young's modulusnu::Union{Nothing, Float64}
: Poisson's ratioKp::Union{Nothing, Float64}
: pressure dependence parameterBd::Union{Nothing, Float64}
: DIFFUSION creep pre-exponential constantEd::Union{Nothing, Float64}
: activation energyVd::Union{Nothing, Float64}
: activation volumeeta0::Union{Nothing, Float64}
: POWER LAW reference viscositye0::Union{Nothing, Float64}
: reference strain rateBn::Union{Nothing, Float64}
: DISLOCATION creep pre-exponential constantEn::Union{Nothing, Float64}
: activation energyVn::Union{Nothing, Float64}
: activation volumen::Union{Nothing, Float64}
: power law exponentBp::Union{Nothing, Float64}
: PEIERLS creep pre-exponential constantEp::Union{Nothing, Float64}
: activation energyVp::Union{Nothing, Float64}
: activation volumetaup::Union{Nothing, Float64}
: scaling stressgamma::Union{Nothing, Float64}
: approximation parameterq::Union{Nothing, Float64}
: stress-dependence parametereta_fk::Union{Nothing, Float64}
: reference viscosity for Frank-Kamenetzky viscositygamma_fk::Union{Nothing, Float64}
: gamma parameter for Frank-Kamenetzky viscosityTRef_fk::Union{Nothing, Float64}
: reference Temperature for Frank-Kamenetzky viscosity (if not set it is 0°C)ch::Union{Nothing, Float64}
: cohesionfr::Union{Nothing, Float64}
: friction angleeta_st::Union{Nothing, Float64}
: stabilization viscosity (default is eta_min)eta_vp::Union{Nothing, Float64}
: viscoplastic plasticity regularisation viscosityrp::Union{Nothing, Float64}
: pore-pressure ratiochSoftID::Union{Nothing, Int64}
: friction softening law IDfrSoftID::Union{Nothing, Int64}
: cohesion softening law IDhealID::Union{Nothing, Int64}
: healing ID, points to healTau in Softeningalpha::Union{Nothing, Float64}
: thermal expansivityCp::Union{Nothing, Float64}
: specific heat (capacity), J⋅K−1⋅kg−1k::Union{Nothing, Float64}
: thermal conductivityA::Union{Nothing, Float64}
: radiogenic heat productionT::Union{Nothing, Float64}
: optional temperature to set within the phaseLatent_hx::Union{Nothing, Float64}
: optional, used for dike heating, J/kgT_liq::Union{Nothing, Float64}
: optional, used for dike heating, liquidus temperature of material, celsiusT_sol::Union{Nothing, Float64}
: optional, used for dike heating, solidus temperature of material, celsiusT_Nu::Union{Nothing, Float64}
: default value for thermal conductivity boundarynu_k::Union{Nothing, Float64}
: optional parameter, Nusselt number for use with conductivityrho_ph::Union{Nothing, String}
: name of the phase diagram you want to use (still needs rho to be defined for the initial guess of pressure)rho_ph_dir::Union{Nothing, String}
: in case the phase diagram has a different path provide the path (without the name of the actual PD) heremfc::Union{Nothing, Float64}
: melt fraction viscosity correction factor (positive scalar)GeoParams::Union{Nothing, Vector{GeoParams.MaterialParameters.ConstitutiveRelationships.AbstractCreepLaw}}
: GeoParams creeplawsSet diffusion or dislocation creeplaws as provided by the GeoParams package:
julia> using GeoParams julia> a = SetDiffusionCreep(GeoParams.Diffusion.dry_anorthite_Rybacki_2006); julia> p = Phase(ID=1,Name="test", GeoParams=[a]);
Note that GeoParams should be a vector, as you could, for example, have diffusion and dislocation creep parameters
Note also that this will overwrite any other creeplaws provided in the Phase struct.
grainsize::Union{Nothing, Float64}
: grainsize m This is not actually used in LaMEM, but is required when setting diffusion creep parameters by using GeoParams
LaMEM.LaMEM_Model.PhaseAggregate
— TypeDefines phase aggregates, which can be useful for visualization purposes
name::String
: Name of the phase aggregatephaseID::Union{Nothing, Vector{Int64}}
: Phases to be combinednumPhase::Union{Nothing, Int64}
: number of aggregated phases
LaMEM.LaMEM_Model.PhaseTransition
— TypeDefines phase transitions on markers (that change the Phase ID of a marker depending on some conditions)
ID::Int64
: Phase_transition law IDType::String
: [Constant, Clapeyron, Box]: Constant - the phase transition occurs only at a fixed value of the parameter; Clapeyron - clapeyron slopeName_Clapeyron::Union{Nothing, String}
: Type of predefined Clapeyron slope, such as MantleTransition660kmPTBox_Bounds::Union{Nothing, Vector{Float64}}
: box bound coordinates: [left, right, front, back, bottom, top]BoxVicinity::Union{Nothing, Int64}
: 1: only check particles in the vicinity of the box boundaries (2: in all directions)Parameter_transition::Union{Nothing, String}
: [T = Temperature, P = Pressure, Depth = z-coord, X=x-coord, Y=y-coord, APS = accumulated plastic strain, MeltFraction, t = time] parameter that triggers the phase transitionConstantValue::Union{Nothing, Float64}
: Value of the parameter [unit of T,P,z, APS]number_phases::Union{Nothing, Int64}
: The number of involved phases [default=1]PhaseAbove::Union{Nothing, Vector{Int64}}
: Above the chosen value the phase is 1, below it, the value is PhaseBelowPhaseBelow::Union{Nothing, Vector{Int64}}
: Below the chosen value the phase is PhaseBelow, above it, the value is 1PhaseInside::Union{Nothing, Vector{Int64}}
: Phase within the box [use -1 if you don't want to change the phase inside the box]PhaseOutside::Union{Nothing, Vector{Int64}}
: Phase outside the box [use -1 if you don't want to change the phase outside the box. If combined with OutsideToInside, all phases that come in are set to PhaseInside]PhaseDirection::Union{Nothing, String}
: [BothWays=default; BelowToAbove; AboveToBelow] Direction in which transition worksResetParam::Union{Nothing, String}
: [APS] Parameter to reset on particles below PT or within boxPTBox_TempType::Union{Nothing, String}
: # Temperature condition witin the box [none, constant, linear, halfspace]PTBox_topTemp::Union{Nothing, Float64}
: Temp @ top of box [for linear & halfspace]PTBox_botTemp::Union{Nothing, Float64}
: Temp @ bottom of box [for linear & halfspace]PTBox_thermalAge::Union{Nothing, Float64}
: Thermal age, usually in geo-units [Myrs] [only in case of halfspace]PTBox_cstTemp::Union{Nothing, Float64}
: Temp within box [only for constant T]v_box::Union{Nothing, Float64}
: [optional] only for NotInAirBox, velocity with which box moves in cm/yrt0_box::Union{Nothing, Float64}
: [optional] beginning time of movemen in Myrt1_box::Union{Nothing, Float64}
: [optional] end time of movement in Myrclapeyron_slope::Union{Nothing, Float64}
: [optional] clapeyron slope of phase transition [in K/MPa];P = ( T - T0_clapeyron ) * clapeyron_slope + P0_clapeyron
P0_clapeyron::Union{Nothing, Float64}
: [optional] P0_clapeyron [Pa]T0_clapeyron::Union{Nothing, Float64}
: [optional] T0_clapeyron [C]
LaMEM.LaMEM_Model.Scaling
— TypeScaling{T} is a structure that contains the scaling info, employed in the current simulation
Scaling::Any
: Scaling object (as in GeoParams), which can beGEO_units()
,NO_units()
, orSI_units()
LaMEM.LaMEM_Model.Softening
— TypeDefines strain softening parameters
ID::Int64
: softening law IDAPS1::Float64
: Begin of softening, in units of accumulated plastic strain (APS)APS2::Float64
: End of softening, in units of accumulated plastic strain (APS)A::Float64
: Reduction ratioLm::Union{Nothing, Float64}
: Material length scale (in selected units, e.g. km in geo)APSheal2::Union{Nothing, Float64}
: APS when healTau2 activateshealTau::Union{Nothing, Float64}
: healing timescale parameter [Myr]healTau2::Union{Nothing, Float64}
: healing timescale parameter [Myr] starting at APS=APSheal2
LaMEM.LaMEM_Model.SolutionParams
— TypeStructure that contains the LaMEM global solution parameters.
gravity::Vector{Float64}
: gravitational acceleration vectorFSSA::Float64
: free surface stabilization parameter [0 - 1]; The value has to be between 0 and 1
FSSA_allVel::Int64
: free surface stabilization parameter applied to all velocity components? Default is yes; if not it is only applied to the z-component
shear_heat_eff::Float64
: shear heating efficiency parameter [0 - 1]Adiabatic_Heat::Float64
: Adiabatic Heating activation flag and efficiency. 0.0 - 1.0act_temp_diff::Int64
: temperature diffusion activation flagact_therm_exp::Int64
: thermal expansion activation flagact_steady_temp::Int64
: steady-state temperature initial guess activation flagsteady_temp_t::Float64
: time for (quasi-)steady-state temperature initial guessnstep_steady::Int64
: number of steps for (quasi-)steady-state temperature initial guess (default = 1)act_heat_rech::Int64
: recharge heat in anomalous bodies after (quasi-)steady-state temperature initial guess (=2: recharge after every diffusion step of initial guess)init_lith_pres::Int64
: sets initial pressure to be the lithostatic pressure (stabilizes compressible setups in the first steps)init_guess::Int64
: create an initial guess step (using constant viscosityeta_ref
before starting the simulationp_litho_visc::Int64
: use lithostatic instead of dynamic pressure for creep lawsp_litho_plast::Int64
: use lithostatic pressure for plasticityp_lim_plast::Int64
: limit pressure at first iteration for plasticityp_shift::Int64
: add a constant value [MPa] to the total pressure field, before evaluating plasticity (e.g., when the domain is located @ some depth within the crust)act_p_shift::Int64
: pressure shift activation flag (enforce zero pressure on average in the top cell layer); note: this overwrites p_shift above!eta_min::Float64
: viscosity lower bound [Pas]eta_max::Float64
: viscosity upper limit [Pas]eta_ref::Float64
: Reference viscosity (used for the initial guess) [Pas]T_ref::Float64
: Reference temperature [C]RUGC::Float64
: universal gas constant (you need to change this only for non-dimensional setups)min_cohes::Float64
: cohesion lower bound [Pa]min_fric::Float64
: friction lower bound [degree]tau_ult::Float64
: ultimate yield stress [Pa]rho_fluid::Float64
: fluid density for depth-dependent density modelgw_level_type::String
: ground water level type for pore pressure computation (see below)gw_level::Float64
: ground water level at the free surface (if defined)biot::Float64
: Biot pressure parameterget_permea::Float64
: effective permeability computation activation flagrescal::Float64
: stencil rescaling flag (for internal constraints, for example while computing permeability)mfmax::Float64
: maximum melt fraction affecting viscosity reductionlmaxit::Int64
: maximum number of local rheology iterationslrtol::Float64
: local rheology iterations relative toleranceact_dike::Int64
: dike activation flag (additonal term in divergence)useTk::Int64
: switch to use T-dependent conductivity, 0: not activedikeHeat::Int64
: switch to use Behn & Ito heat source in the dikeadiabatic_gradient::Float64
: Adiabatic gradient in combination with Behn & Ito dikeCompute_velocity_gradient::Int64
: compute the velocity gradient tensor 1: active, 0: not active. If active, it automatically activates the output in the .pvd filePhasetrans::Int64
: Activate Phase Transitions on Particles or not, 0: not.Passive_Tracer::Int64
: Activate Passive Tracers or not?
LaMEM.LaMEM_Model.Solver
— TypeStructure that contains the LaMEM solver options
SolverType::String
: solver employed ["direct"
or"multigrid"
]DirectSolver::String
: mumps/superlu_dist/pastix/umfpack (requires these external PETSc packages to be installed!)DirectPenalty::Float64
: penalty parameter [employed if we use a direct solver]MGLevels::Int64
: number of MG levels [default=3]MGSweeps::Int64
: number of MG smoothening steps per level [default=10]MGSmoother::String
: type of smoothener used [chebyshev or jacobi]MGJacobiDamp::Float64
: Dampening parameter [only employed for Jacobi smoothener; default=0.6]MGCoarseSolver::String
: coarse grid solver if using multigrid ["direct"
/"mumps"
/"superlu_dist"
or"redundant"
- more options specifiable through the command-line options-crs_ksp_type
&-crs_pc_type
]MGRedundantNum::Int64
: How many times do we copy the coarse grid? [only employed for redundant solver; default is 4]MGRedundantSolver::String
: The coarse grid solver for each of the redundant solves [only employed for redundant; options are"mumps"
/"superlu_dist"
with default"superlu_dist"
]PETSc_options::Vector{String}
: List with (optional) PETSc options
LaMEM.LaMEM_Model.Time
— TypeStructure that contains the LaMEM timestepping information. An explanation of the paramneters is given in the struct `Time_info`
time_end::Float64
: simulation end timedt::Float64
: initial time stepdt_min::Float64
: minimum time step (declare divergence if lower value is attempted)dt_max::Float64
: maximum time stepdt_out::Float64
: output step (output at least at fixed time intervals)inc_dt::Float64
: time step increment per time step (fraction of unit)CFL::Float64
: CFL (Courant-Friedrichs-Lewy) criterionCFLMAX::Float64
: CFL criterion for elasticitynstep_max::Int64
: maximum allowed number of steps (lower bound: timeend/dtmax)nstep_out::Int64
: save output every n steps; Set this to -1 to deactivate saving outputnstep_rdb::Int64
: save restart database every n stepsnum_dt_periods::Int64
: number of time stepping periodstime_dt_periods::Vector{Int64}
: timestamps where timestep should be fixed (first entry has to 0)step_dt_periods::Vector{Float64}
: target timesteps ar timestamps abovenstep_ini::Int64
: save output for n initial stepstime_tol::Float64
: relative tolerance for time comparisons
LaMEM.LaMEM_Model.VelCylinder
— TypeLaMEM boundary condition internal velocty cylinder `VelCylinder` object
baseX::Float64
: X-coordinate of base of cylinderbaseY::Float64
: Y-coordinate of base of cylinderbaseZ::Float64
: Z-coordinate of base of cylindercapX::Float64
: X-coordinate of cap of cylindercapY::Float64
: Y-coordinate of cap of cylindercapZ::Float64
: Z-coordinate of cap of cylinderradius::Float64
: radius of cylindervx::Union{Nothing, Float64}
: Vx velocity of cylinder (default is unconstrained)vy::Union{Nothing, Float64}
: Vy velocity of cylinder (default is unconstrained)vz::Union{Nothing, Float64}
: Vz velocity of cylinder (default is unconstrained)advect::Int64
: cylinder advection flagvmag::Float64
: magnitude of velocity applied along the cylinder's axis of orientationtype::String
: velocity profile [uniform or parabolic]
LaMEM.LaMEM_Model.VelocityBox
— TypeDefine velocity regions within the modelling region, by specifying its center point and width along the three axis.
cenX::Float64
: X-coordinate of center of boxcenY::Float64
: Y-coordinate of center of boxcenZ::Float64
: Z-coordinate of center of boxwidthX::Float64
: Width of box in x-directionwidthY::Float64
: Width of box in y-directionwidthZ::Float64
: Width of box in Z-directionvx::Union{Nothing, Float64}
: Vx velocity of box (default is unconstrained)vy::Union{Nothing, Float64}
: Vx velocity of box (default is unconstrained)vz::Union{Nothing, Float64}
: Vx velocity of box (default is unconstrained)advect::Int64
: box advection flag
GeophysicalModelGenerator.above_surface
— Methodabove_surface(model::Model, DataSurface_Cart::CartData)
Returns a boolean grid that is true
if the Phases/Temp
grid are above the surface
GeophysicalModelGenerator.add_box!
— Methodadd_box!(model::Model; xlim=Tuple{2}, [ylim=Tuple{2}], zlim=Tuple{2},
Origin=nothing, StrikeAngle=0, DipAngle=0,
phase = ConstantPhase(1),
T=nothing )
Adds a box with phase & temperature structure to a 3D model setup. This simplifies creating model geometries in geodynamic models See the documentation of the GMG routine for the full options.
GeophysicalModelGenerator.add_cylinder!
— Methodadd_cylinder!(model::Model; # required input
base=Tuple{3}, cap=Tuple{3}, radius=Tuple{1}, # center and radius of the sphere
phase = ConstantPhase(1), # Sets the phase number(s) in the sphere
T=nothing ) # Sets the thermal structure (various fucntions are available)
See the documentation of the GMG routine
GeophysicalModelGenerator.add_ellipsoid!
— Methodadd_ellipsoid!(model::Model; # required input
cen=Tuple{3}, axes=Tuple{3}, # center and semi-axes of the ellpsoid
Origin=nothing, StrikeAngle=0, DipAngle=0, # origin & dip/strike
phase = ConstantPhase(1), # Sets the phase number(s) in the box
T=nothing )
See the documentation of the GMG routine
GeophysicalModelGenerator.add_layer!
— Methodadd_layer!(model::Model; xlim, ylim, zlim=Tuple{2},
phase = ConstantPhase(1),
T=nothing )
Adds a layer with phase & temperature structure to a 3D model setup. This simplifies creating model geometries in geodynamic models See the documentation of the GMG routine for the full options.
GeophysicalModelGenerator.add_polygon!
— Methodadd_polygon!(model::Model; # required input
xlim::Vector,
ylim=Vector,
zlim=Vector(),
phase = ConstantPhase(1), # Sets the phase number(s) in the box
T=nothing)
See the documentation of the GMG routine
GeophysicalModelGenerator.add_slab!
— Methodadd_slab!(model::Model; # required input
trench::Trench;
phase = ConstantPhase(1), # Sets the phase number(s) in the box
T=nothing)
See the documentation of the GMG routine
GeophysicalModelGenerator.add_sphere!
— Methodadd_sphere!(model::Model; cen=Tuple{3}, radius=Tuple{1}, phase = ConstantPhase(1), T=nothing)
See the documentation of the GMG routine
GeophysicalModelGenerator.add_stripes!
— Methodadd_stripes!(Phase, Grid::AbstractGeneralGrid;
stripAxes = (1,1,0),
stripeWidth = 0.2,
stripeSpacing = 1,
Origin = nothing,
StrikeAngle = 0,
DipAngle = 10,
phase = ConstantPhase(3),
stripePhase = ConstantPhase(4))
See the documentation of the GMG routine
GeophysicalModelGenerator.below_surface
— Methodbelow_surface(model::Model, DataSurface_Cart::CartData)
Returns a boolean grid that is true
if the Phases/Temp
grid are below the surface
LaMEM.IO_functions.passivetracer_time
— FunctionLaMEM.IO_functions.passivetracer_time
— MethodPT = passivetracer_time(ID::Union{Vector{Int64},Int64}, model::Model)
This reads passive tracers with ID
from a LaMEM simulation specified by model
, and returns a named tuple with the temporal evolution of these passive tracers. We return x
,y
,z
coordinates and all fields specified in FileName
for particles number ID
.
LaMEM.IO_functions.read_LaMEM_simulation
— MethodTimestep, FileNames, Time = read_LaMEM_simulation(model::Model; phase=false, surf=false, passive_tracers=false)
Reads a LaMEM simulation as specified in model
and returns the timesteps, times and filenames of that simulation once it is finished.
LaMEM.IO_functions.read_LaMEM_timestep
— Functiondata, time = read_LaMEM_timestep(model::Model, TimeStep::Int64=0; fields=nothing, phase=false, surf=false, last=true)
Reads a specific Timestep
from a simulation specified in model
LaMEM.LaMEM_Model.Check_LaMEM_Model
— MethodCheck_LaMEM_Model(m::Model)
Checks the LaMEM Setup Model m
for errors
LaMEM.LaMEM_Model.Create_Grid
— MethodThis creates a LaMEM grid
LaMEM.LaMEM_Model.UpdateDefaultParameters
— Methodmodel = UpdateDefaultParameters(model::Model)
This updates the default parameters depending on some of the input parameters. If you activate passive tracers, for example, it will also activate output for that
LaMEM.LaMEM_Model.above_surface!
— Methodabove_surface!(model::Model, DataSurface_Cart::CartData; phase::Int64=nothing, T::Number=nothing)
Sets the Temp
or Phases
above the surface DataSurface_Cart
to a constant value.
LaMEM.LaMEM_Model.add_dike!
— Methodadd_dike!(model::Model, dike::Dike)
This adds a phase transition phase_trans
to model
LaMEM.LaMEM_Model.add_geom!
— Methodadd_geom!(model::Model, geom_object)
This adds an internal geometric primitive object geom_object
to the LaMEM Model Setup model
.
Currently available primitive geom objects are:
GeomSphere
GeomEllipsoid
GeomBox
GeomLayer
GeomCylinder
GeomRidgeSeg
GeomHex
LaMEM.LaMEM_Model.add_geom!
— Methodadd_geom!(model::Model, geom_object)
Add several geometric objects @ once.
LaMEM.LaMEM_Model.add_petsc!
— Methodadd_petsc!(model::Model, option::String)
Adds one or more PETSc options to the model
Example
julia> d = Model()
julia> add_petsc!(d,"-snes_npicard 3")
LaMEM.LaMEM_Model.add_phase!
— Methodadd_phase!(model::Model, phase::Phase)
This adds a phase
(with material properties) to model
LaMEM.LaMEM_Model.add_phase!
— Methodadd_phase!(model::Model, phases...)
Add several phases @ once.
LaMEM.LaMEM_Model.add_phaseaggregate!
— Methodadd_phaseaggregate!(model::Model, phaseagg::PhaseAggregate)
This adds a phase aggregate law phaseagg
to model
LaMEM.LaMEM_Model.add_phasetransition!
— Methodadd_phasetransition!(model::Model, phase_trans::PhaseTransition)
This adds a phase transition phase_trans
to model
LaMEM.LaMEM_Model.add_softening!
— Methodadd_softening!(model::Model, soft::Softening)
This adds a plastic softening law soft
to model
LaMEM.LaMEM_Model.add_topography!
— Methodadd_topography!(model::Model, topography::CartData; surf_air_phase=0, surf_topo_file="topography.txt", open_top_bound=1, surf_level=0.0)
Adds the topography surface to the model
LaMEM.LaMEM_Model.add_vbox!
— Methodadd_vbox!(model::Model, vboxes...)
Add several phases @ once.
LaMEM.LaMEM_Model.add_vbox!
— Methodadd_vbox!(model::Model, vbox::VelocityBox) This adds a vbox
(with its properties) to model
LaMEM.LaMEM_Model.adjust_for_platforms
— Methodmodel, cores = adjust_for_platforms(model, cores::Int64)
On certain platforms we have restrictions (MPI is broken on windows currently, so we need to adjust things accordingly)
LaMEM.LaMEM_Model.below_surface!
— Methodbelow_surface!(model::Model, DataSurface_Cart::CartData; phase::Union{Int64,Nothing}=nothing, T::Union{Number,Nothing}=nothing)
Sets the Temp
or Phases
below the surface DataSurface_Cart
to a constant value.
LaMEM.LaMEM_Model.compute_dof
— MethodReturns the total degrees of freedom for a LaMEM simulation
LaMEM.LaMEM_Model.copy_phase
— Methodcopy_phase(phase::Phase; kwargs...)
This copies a phase with material properties, while allowing to change some parameters
LaMEM.LaMEM_Model.create_initialsetup
— Functioncreate_initialsetup(model::Model, cores::Int64=1, args::String=""; verbose=verbose)
Creates the initial model setup of LaMEM from model
, which includes:
- Writing the LaMEM (*.dat) input file
and in case we do not employt geometric primitives to create the setup:
- Write the VTK file (if requested when
model.Output.write_VTK_setup=true
) - Write the marker files to disk (if
model.ModelSetup.msetup="files"
)
LaMEM.LaMEM_Model.cross_section
— FunctionCross = cross_section(cart::CartData, field::Symbol =:phase; x=nothing, y=nothing, z=nothing)
Creates a cross-section through the data and returns x,z
coordinates
LaMEM.LaMEM_Model.cross_section
— Functiondata_tuple, axes_str = cross_section(model::LaMEM.Model, field=:phases; x=nothing, y=nothing, z=nothing)
This creates a cross-section through the initial model setup & returns a 2D array
LaMEM.LaMEM_Model.digitsep
— Methoddigitsep(value::Integer; separator=",", per_separator=3)
Convert an integer to a string, separating each per_separator
digits by separator
.
digitsep(12345678) # "12,345,678"
digitsep(12345678, seperator= "'") # "12'345'678"
digitsep(12345678, seperator= "-", per_separator=4) # "1234-5678"
LaMEM.LaMEM_Model.flatten
— MethodCreates a 2D array out of a cross-section and a specified data field
LaMEM.LaMEM_Model.hasplasticity
— Methodhasplasticity(p::Phase)
true
if p
contains plastic parameters (cohesion or friction angle)
LaMEM.LaMEM_Model.is_rectilinear
— Methodis_rectilinear(topography::CartData)
Checks whether topography
is rectilinear
LaMEM.LaMEM_Model.isdefault
— Methodisdefault(s1::S, s_default::S)
Checks whether a struct s1
has default parameters s_default
LaMEM.LaMEM_Model.prepare_lamem
— Functionprepare_lamem(model::Model, cores::Int64=1, args:String=""; verbose=false)
Prepares a LaMEM run for the parameters that are specified in model
, without running the simulation 1) Create the *.dat
file 2) Write markers to disk in case we use a "files" setup
This is useful if you want to prepare a model on one machine but run it on another one (e.g. a cluster)
Set model.Output.write_VTK_setup
to true
if you want to write a VTK
file of the model setup
LaMEM.LaMEM_Model.print_short
— MethodThis creates a single string, so we can use it in the command line
LaMEM.LaMEM_Model.replace_phase!
— Methodreplace_phase!(model::Model, phase_new::Phase; ID::Int64=nothing, Name::String=nothing)
This replaces a phase
within a LaMEM Model Setup model
with phase_new
either based on its Name
or ID
. Note that it is expected that only one such phase is present in the current setup.
LaMEM.LaMEM_Model.rm_geom!
— Methodrm_geom!(model::Model)
This removes all existing geometric objects from model
LaMEM.LaMEM_Model.rm_last_phase!
— Methodrm_last_phase!(model::Model, phase::Phase)
This removes the last added phase
from model
LaMEM.LaMEM_Model.rm_last_vbox!
— Methodrmlastvbox!(model::Model) This removes the last added vbox
from model
LaMEM.LaMEM_Model.rm_phase!
— Methodrm_phase!(model::Model, ID::Int64)
This removes a phase with ID
from model
LaMEM.LaMEM_Model.rm_phase!
— Methodrm_phase!(model::Model)
This removes all existing phases from model
LaMEM.LaMEM_Model.rm_vbox!
— Methodrm_vbox!(model::Model)
This removes all existing velocity boxes from model
LaMEM.LaMEM_Model.set_air
— Methodset_air(; Name="air", ID=0, rho=1, alpha=nothing, eta=1e17, G=nothing, nu=nothing, fr=nothing, ch=nothing, k=30,Cp=1000)
Sets an air phase, with high conductivity
LaMEM.LaMEM_Model.set_geom!
— MethodThis sets the geometry
LaMEM.LaMEM_Model.stress_strainrate_0D
— Methodτ = stress_strainrate_0D(rheology, ε_vec::Vector; n=8, T=700, nstep_max=2, clean=true)
Computes the stress for a given strain rate and 0D rheology setup, for viscous creep rheologies. n
is the resolution in x,z
, T
the temperature, nstep_max
the number of time steps, ε_vec
the strainrate vector (in 1/s).
LaMEM.LaMEM_Model.within_bounds
— Methodwithin_bounds(model::Model, topography::CartData)
Verifies that the bounds of the topography grid are larger than that of the model
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Functionwrite_LaMEM_inputFile(d::Model,fname::String; dir=pwd())
Writes a LaMEM input file based on the data stored in Model
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::BoundaryConditions)
Writes the boundary conditions related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::FreeSurface)
Writes the free surface related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomBox)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomCylinder)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomEllipsoid)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomHex)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomLayer)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomRidgeSeg)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomSphere)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::Grid)
This writes grid info to a LaMEM input file
Example
julia> d=LaMEM.Grid(coord_x=[0.0, 0.7, 0.8, 1.0], bias_x=[0.3,1.0,3.0], nel_x=[10,4,2])
julia> io = open("test.dat","w")
julia> LaMEM.write_LaMEM_inputFile(io, d)
julia> close(io)
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::Output)
Writes the free surface related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::ModelSetup)
Writes options related to the Model Setup to disk
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::Output)
Writes the free surface related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::PassiveTracers)
Writes the boundary conditions related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::SolutionParams)
Writes the boundary conditions related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::Solver)
Writes the free surface related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— MethodWrites the Time related parameters to file
LaMEM.LaMEM_Model.write_LaMEM_inputFile
— Methodwrite_LaMEM_inputFile(io, d::GeomSphere)
LaMEM.LaMEM_Model.write_LaMEM_inputFile_PETSc
— Methodwrite_LaMEM_inputFile_PETSc(io, d::Solver)
Writes the (optional) PETSc options to file
LaMEM.Run.run_lamem
— Functionrun_lamem(model::Model, cores::Int64=1, args:String=""; wait=true)
Performs a LaMEM run for the parameters that are specified in model