Common Information#
In addition to the finite-element mesh, PyLith requires files to specify the simulation parameters.
We specify parameters common to all simulations in a directory in pylithapp.cfg.
The pylithapp.cfg file contains numerous comments, so we only summarize the parameters here.
Metadata, Mesh, and Output#
The pylithapp.metadata section specifies metadata common to all simulations in the directory.
We control the verbosity of the output written to stdout using journal.info.
We set the parameters for importing the finite-element mesh in pylithapp.mesh_generator.
Physics#
These quasi-static simulations solve the poroelasticity equation with state-variables, so we have a solution field with displacement, pressure, volumetric strain, velocity, the time derivative of pressure, and the volumetric strain rate subfields.
We specify a basis order of 2 for the displacement, the velocity, and the isotropic permeability subfields, and a basis order of 1 for each of the remaining subfields.
[pylithapp.problem]
solution = pylith.problems.SolnDispPresTracStrainVelPdotTdot
defaults.quadrature_order = 2
[pylithapp.problem.solution.subfields]
displacement.basis_order = 2
pressure.basis_order = 1
trace_strain.basis_order = 1
velocity.basis_order = 2
pressure_t.basis_order = 1
trace_strain_t.basis_order = 1
[pylithapp.problem.materials.slab.bulk_rheology]
auxiliary_subfields.isotropic_permeability.basis_order = 2
[pylithapp.problem]
normalizer = spatialdata.units.NondimElasticQuasistatic
normalizer.length_scale = 100.0*m
normalizer.relaxation_time = 1*year
normalizer.shear_modulus = 10.0*GPa
[pylithapp.timedependent]
start_time = -6e3*year
initial_dt = 6e3*year
end_time = 300e3*year
We set the material parameters that are common across the three steps in the pylithapp.cfg file to avoid repeating parameters.
We only have a single material with spatially varying material properties so we use a SimpleGridDB spatial database.
We use differ SimpleGridDB files to initialize the material properties for the three steps, so we specify the filename in the parameter file for each step.
[pylithapp.problem]
materials = [slab]
materials.slab = pylith.materials.Poroelasticity
[pylithapp.problem.materials]
slab.bulk_rheology = pylith.materials.IsotropicLinearPoroelasticity
[pylithapp.problem.materials.slab]
description = slab
label_value = 1
use_state_variables = True
db_auxiliary_field = spatialdata.spatialdb.SimpleGridDB
db_auxiliary_field.description = Spatial database for material properties and state variables
db_auxiliary_field.query_type = linear
observers.observer.data_fields = [displacement, pressure, cauchy_stress, velocity, porosity, isotropic_permeability, water_content]
For all steps, the left boundary is held fixed, which allows the rest of the boundary to pivot about this anchor point. The top boundary always has a fluid pressure boundary condition, while the displacement boundary condition varies between steps for the top boundary. The bottom and right boundaries remain unconstrained.
[pylithapp.problem]
bc = [bc_xneg, bc_ypos, bc_ypos_fluid]
bc.bc_west = pylith.bc.DirichletTimeDependent
bc.bc_ypos = pylith.bc.DirichletTimeDependent
bc.bc_ypos_fluid = pylith.bc.DirichletTimeDependent
[pylithapp.problem.bc.bc_xneg]
constrained_dof = [0, 1]
label = boundary_xneg
label_value = 11
field = displacement
db_auxiliary_field = pylith.bc.ZeroDB
db_auxiliary_field.description = Dirichlet BC on -x for displacement
[pylithapp.problem.bc.bc_ypos]
constrained_dof = [0, 1]
label = boundary_ypos
label_value = 10
field = displacement
db_auxiliary_field = pylith.bc.ZeroDB
db_auxiliary_field.description = Dirichlet BC on +y for displacement
[pylithapp.problem.bc.bc_ypos_fluid]
constrained_dof = [0]
label = boundary_ypos
label_value = 10
field = pressure
use_initial = True
db_auxiliary_field = spatialdata.spatialdb.SimpleDB
db_auxiliary_field.description = Dirichlet BC on +y for fluid pressure
db_auxiliary_field.iohandler.filename = simpleDB_files/surface_fluid_pressure.txt
Generate spatial databases#
Important
The spatial database files are not provided because some of them are large. You generate them using the provided Python scripts before running the simulations.
# Generate spatial databases for the Dirichlet BC on the top surface.
./generate_spatialdb_ypos.py
# Generate spatial databases for the material properties.
./generate_spatialdb_matprops.py