Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update comments and parameter name
Browse files Browse the repository at this point in the history
anne-glerum committed Jun 2, 2024
1 parent 89634b3 commit af20e85
Showing 5 changed files with 78 additions and 56 deletions.
30 changes: 16 additions & 14 deletions include/aspect/material_model/rheology/elasticity.h
Original file line number Diff line number Diff line change
@@ -34,9 +34,9 @@ namespace aspect
using namespace dealii;

/**
* Additional output fields for the elastic shear modulus to be added to
* the MaterialModel::MaterialModelOutputs structure and filled in the
* MaterialModel::Interface::evaluate() function.
* Additional output fields for the elastic shear modulus and other
* elastic outputs to be added to the MaterialModel::MaterialModelOutputs
* structure and filled in the MaterialModel::Interface::evaluate() function.
*/
template <int dim>
class ElasticAdditionalOutputs : public NamedAdditionalMaterialOutputs<dim>
@@ -69,7 +69,9 @@ namespace aspect

/**
* The deviatoric stress of the current timestep, so including
* the rotation, advection and stress update.
* the rotation, advection and stress update, at the evaluation points
* passed to the instance of MaterialModel::Interface::evaluate()
* that fills the current object.
*/
std::vector<SymmetricTensor<2,dim>> deviatoric_stress;
};
@@ -96,8 +98,9 @@ namespace aspect
parse_parameters (ParameterHandler &prm);

/**
* Create the additional material model output objects that contain the
* elastic shear moduli, elastic viscosity, timestep ratio and reaction rates.
* Create the two additional material model output objects that contain the
* elastic shear moduli, elastic viscosity, ratio of computational to elastic timestep,
* and deviatoric stress of the current timestep and the reaction rates.
*/
void
create_elastic_additional_outputs (MaterialModel::MaterialModelOutputs<dim> &out) const;
@@ -119,7 +122,8 @@ namespace aspect
* the elastic shear moduli @p average_elastic_shear_moduli a each point,
* and the (viscous) viscosities given in the material model outputs object @p out,
* fill a material model outputs (ElasticAdditionalOutputs) objects with the
* average shear modulus, elastic viscosity and ratio of computational to elastic timestep.
* average shear modulus, elastic viscosity, ratio of computational to elastic timestep,
* and the deviatoric stress of the current timestep.
*/
void
fill_elastic_additional_outputs (const MaterialModel::MaterialModelInputs<dim> &in,
@@ -158,7 +162,7 @@ namespace aspect
get_elastic_shear_moduli () const;

/**
* Calculates the effective elastic viscosity (this is the equivalent viscosity of
* Calculate the effective elastic viscosity (this is the equivalent viscosity of
* a material which was unstressed at the end of the previous timestep).
*/
double
@@ -189,8 +193,6 @@ namespace aspect
const double viscosity_pre_yield,
const double shear_modulus) const;



/**
* Compute the elastic time step.
*/
@@ -208,7 +210,7 @@ namespace aspect
/**
* Get the stored stress of the previous timestep. For fields, use a
* composition evaluator of the old solution. For particles, get the
* stress directly from the particles that is stored in in.composition.
* stress directly from the particles, which is available from in.composition.
*/
std::vector<SymmetricTensor<2, dim>>
retrieve_stress_previous_timestep (const MaterialModel::MaterialModelInputs<dim> &in,
@@ -234,7 +236,7 @@ namespace aspect
bool use_fixed_elastic_time_step;

/**
* Double for fixed elastic time step value, read from parameter file
* Double for fixed elastic time step value, read from parameter file.
*/
double fixed_elastic_time_step;

@@ -249,8 +251,8 @@ namespace aspect

/**
* We cache the evaluators that are necessary to evaluate the velocity
* gradients and the old compositions. They are required to compute the elastic stresses, but
* are not provided by the material model.
* gradients and the old compositions. They are required to compute the elastic stresses,
* but are not provided by the material model.
* By caching the evaluators, we can avoid recreating them every time we need them.
*/
mutable std::unique_ptr<FEPointEvaluation<dim, dim>> evaluator;
3 changes: 2 additions & 1 deletion include/aspect/material_model/rheology/visco_plastic.h
Original file line number Diff line number Diff line change
@@ -71,7 +71,8 @@ namespace aspect
std::vector<double> friction_angles;

/**
* The plastic yield stress.
* The current plastic yield stress, depending on composition,
* pressure, and strain.
*/
std::vector<double> yield_stresses;

33 changes: 19 additions & 14 deletions include/aspect/material_model/visco_plastic.h
Original file line number Diff line number Diff line change
@@ -77,9 +77,12 @@ namespace aspect
* representing these components must be named and listed in a very specific
* format, which is designed to minimize mislabeling stress tensor components
* as distinct 'compositional rock types' (or vice versa). For 2D models,
* the first three compositional fields must be labeled ve_stress_xx, ve_stress_yy
* and ve_stress_xy. In 3D, the first six compositional fields must be labeled
* ve_stress_xx, ve_stress_yy, ve_stress_zz, ve_stress_xy, ve_stress_xz, ve_stress_yz.
* 3+3 consecutive compositional fields must be labeled ve_stress_xx, ve_stress_yy
* ve_stress_xy, ve_stress_xx_old, ve_stress_yy_old, ve_stress_xy_old.
* In 3D, six consecutive compositional fields must be labeled
* ve_stress_xx, ve_stress_yy, ve_stress_zz, ve_stress_xy, ve_stress_xz, ve_stress_yz,
* ve_stress_xx_old, ve_stress_yy_old, ve_stress_zz_old, ve_stress_xy_old,
* ve_stress_xz_old, ve_stress_yz_old.
*
* Combining this viscoelasticity implementation with non-linear viscous flow
* and plasticity produces a constitutive relationship commonly referred to
@@ -95,10 +98,11 @@ namespace aspect
*
* The overview below directly follows Moresi et al. (2003) eqns. 23-32.
* However, an important distinction between this material model and
* the studies above is the use of compositional fields, rather than
* the studies above is the option to use of compositional fields, rather than
* particles, to track individual components of the viscoelastic stress
* tensor. The material model will be updated when an option to track
* and calculate viscoelastic stresses with particles is implemented.
* tensor. Calculating viscoelastic stresses with particles is also implemented,
* and can be switched on by using particles with the particle property
* 'elastic stress'.
* Moresi et al. (2003) begins (eqn. 23) by writing the deviatoric
* rate of deformation ($\hat{D}$) as the sum of elastic
* ($\hat{D_{e}}$) and viscous ($\hat{D_{v}}$) components:
@@ -130,12 +134,11 @@ namespace aspect
* W^{t}\tau^{t} + \tau^{t}W^{t}$.
* In this material model, the size of the time step above ($\Delta t^{e}$)
* can be specified as the numerical time step size or an independent fixed time
* step. If the latter case is selected, the user has an option to apply a
* stress averaging scheme to account for the differences between the numerical
* and fixed elastic time step (eqn. 32). If one selects to use a fixed elastic time
* step throughout the model run, an equal numerical and elastic time step can be
* achieved by using CFL and maximum time step values that restrict the numerical
* time step to the fixed elastic time step.
* step. If the latter case is selected, a stress averaging scheme is applied
* to account for the differences between the numerical
* and fixed elastic time step (eqn. 32). A fixed computational time
* step throughout the model run can be achieved by using a large CFL number and
* smaller maximum time step values that restrict the numerical time step to a specific time.
*
* The formulation above allows rewriting the total rate of deformation (eqn. 29) as
* $\tau^{t + \Delta t^{e}} = \eta_{eff} \left (
@@ -150,8 +153,10 @@ namespace aspect
* viscosity is reduced relative to the initial viscosity.
*
* Elastic effects are introduced into the governing Stokes equations through
* an elastic force term (eqn. 30) using stresses from the previous time step:
* $F^{e,t} = -\frac{\eta_{eff}}{\mu \Delta t^{e}} \tau^{t}$.
* an elastic force term (eqn. 30 updated to the version in Farrington et al. 2014)
* using stresses from the previous time step rotated and advected into the current
* time step:
* $F^{e,t} = -\frac{\eta_{eff}}{\mu \Delta t^{e}} \tau^{0adv}$.
* This force term is added onto the right-hand side force vector in the
* system of equations.
*
42 changes: 25 additions & 17 deletions include/aspect/material_model/viscoelastic.h
Original file line number Diff line number Diff line change
@@ -45,9 +45,12 @@ namespace aspect
* representing these components must be named and listed in a very specific
* format, which is designed to minimize mislabeling stress tensor components
* as distinct 'compositional rock types' (or vice versa). For 2D models,
* the first three compositional fields must be labeled ve_stress_xx, ve_stress_yy
* and ve_stress_xy. In 3D, the first six compositional fields must be labeled
* ve_stress_xx, ve_stress_yy, ve_stress_zz, ve_stress_xy, ve_stress_xz, ve_stress_yz.
* 3+3 consecutive compositional fields must be labeled ve_stress_xx, ve_stress_yy,
* ve_stress_xy, ve_stress_xx_old, ve_stress_yy_old, ve_stress_xy_old.
* In 3D, 6+6 consecutive compositional fields must be labeled
* ve_stress_xx, ve_stress_yy, ve_stress_zz, ve_stress_xy, ve_stress_xz, ve_stress_yz,
* ve_stress_xx_old, ve_stress_yy_old, ve_stress_zz_old, ve_stress_xy_old,
* ve_stress_xz_old, ve_stress_yz_old.
*
* Expanding the model to include non-linear viscous flow (e.g.,
* diffusion/dislocation creep) and plasticity would produce a constitutive
@@ -63,10 +66,11 @@ namespace aspect
*
* The overview below directly follows Moresi et al. (2003) eqns. 23-32.
* However, an important distinction between this material model and
* the studies above is the use of compositional fields, rather than
* the studies above is the option to use of compositional fields, rather than
* particles, to track individual components of the viscoelastic stress
* tensor. The material model will be updated when an option to track
* and calculate viscoelastic stresses with particles is implemented.
* tensor. Calculating viscoelastic stresses with particles is also implemented,
* and can be switched on by using particles with the particle property
* 'elastic stress'.
*
* Moresi et al. (2003) begins (eqn. 23) by writing the deviatoric
* rate of deformation ($\hat{D}$) as the sum of elastic
@@ -92,11 +96,11 @@ namespace aspect
* W^{t}\tau^{t} + \tau^{t}W^{t}$.
* In this material model, the size of the time step above ($\Delta t^{e}$)
* can be specified as the numerical time step size or an independent fixed time
* step. If the latter case is a selected, the user has an option to apply a
* stress averaging scheme to account for the differences between the numerical
* and fixed elastic time step (eqn. 32). If one selects to use a fixed elastic time
* step throughout the model run, this can still be achieved by using CFL and
* maximum time step values that restrict the numerical time step to a specific time.
* step. If the latter case is selected, a stress averaging scheme is applied
* to account for the differences between the numerical
* and fixed elastic time step (eqn. 32). A fixed computational time
* step throughout the model run can be achieved by using a large CFL number and
* smaller maximum time step values that restrict the numerical time step to a specific time.
*
* The formulation above allows rewriting the total rate of deformation (eqn. 29) as
* $\tau^{t + \Delta t^{e}} = \eta_{eff} \left (
@@ -110,9 +114,11 @@ namespace aspect
* The magnitude of the shear modulus thus controls how much the effective
* viscosity is reduced relative to the initial viscosity.
*
* Elastic effects are introduced into the governing stokes equations through
* an elastic force term (eqn. 30) using stresses from the previous time step:
* $F^{e,t} = -\frac{\eta_{eff}}{\mu \Delta t^{e}} \tau^{t}$.
* Elastic effects are introduced into the governing Stokes equations through
* an elastic force term (eqn. 30 updated to the version in Farrington et al. 2014)
* using stresses from the previous time step rotated and advected into the current
* time step:
* $F^{e,t} = -\frac{\eta_{eff}}{\mu \Delta t^{e}} \tau^{0adv}$.
* This force term is added onto the right-hand side force vector in the
* system of equations.
*
@@ -128,9 +134,11 @@ namespace aspect
* user supplies a comma delimited list of length N+1, where N is the
* number of compositional fields. The additional field corresponds to
* the value for background material. They should be ordered
* ``background, composition1, composition2...''. However, the first 3 (2D)
* or 6 (3D) composition fields correspond to components of the elastic
* stress tensor and their material values will not contribute to the volume
* ``background, composition1, composition2...''. 3+3 (2D)
* or 6+6 (3D) consecutive composition fields should correspond to components
* of the elastic stress tensor of the previous timestep rotated and advected
* into the current timestep and the tensor of the previous timestep advected
* into the current timestep only. Their material values will not contribute to the volume
* fractions. If a single value is given, then all the compositional fields
* are given that value. Other lengths of lists are not allowed. For a given
* compositional field the material parameters are treated as constant,
Loading

0 comments on commit af20e85

Please sign in to comment.