|
ASPECT
|

Private Attributes | |
| double | reference_T |
| double | thermal_conductivities |
| EquationOfState::LinearizedIncompressible< dim > | equation_of_state |
| Rheology::DruckerPrager< dim > | drucker_prager_plasticity |
| double | angle_of_internal_friction |
| double | cohesion |
| double | minimum_viscosity |
| double | maximum_viscosity |
| double | reference_strain_rate |
Functions used in dealing with run-time parameters | |
| void | parse_parameters (ParameterHandler &prm) override |
| static void | declare_parameters (ParameterHandler &prm) |
Additional Inherited Members | |
Public Types inherited from aspect::MaterialModel::Interface< dim > | |
| using | MaterialModelInputs = MaterialModel::MaterialModelInputs< dim > |
| using | MaterialModelOutputs = MaterialModel::MaterialModelOutputs< dim > |
Static Public Member Functions inherited from aspect::Plugins::InterfaceBase | |
| static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::SimulatorAccess< dim > | |
| static void | get_composition_values_at_q_point (const std::vector< std::vector< double >> &composition_values, const unsigned int q, std::vector< double > &composition_values_at_q_point) |
Protected Attributes inherited from aspect::MaterialModel::Interface< dim > | |
| NonlinearDependence::ModelDependence | model_dependence |
A material model that consists of globally constant values for all material parameters except density and viscosity.
The model is considered incompressible, following the definition described in Interface::is_compressible.
The viscosity is computed according to the Drucker Prager frictional plasticity criterion based on a user-defined internal angle of friction \(\phi\) and cohesion \(C\). In 3D: \(\sigma_y = \frac{6 C \cos(\phi)}{\sqrt{3} (3+\sin(\phi))} + \frac{6 P \sin(\phi)}{\sqrt{3} (3+\sin(\phi))}\), where \(P\) is the pressure. See for example Zienkiewicz, O. C., Humpheson, C. and Lewis, R. W. (1975), Géotechnique 25, No. 4, 671-689. With this formulation we circumscribe instead of inscribe the Mohr Coulomb yield surface. In 2D the Drucker Prager yield surface is the same as the Mohr Coulomb surface: \(\sigma_y = P \sin(\phi) + C \cos(\phi)\). Note that in 2D for \(\phi=0\), these criteria revert to the von Mises criterion (no pressure dependence). See for example Thieulot, C. (2011), PEPI 188, 47-68.
Note that we enforce the pressure to be positive in the computation of the yield strength by replacing it with a zero value whenever it is negative to prevent negative yield strengths and viscosities. We then use the computed yield strength to scale back the viscosity on to the yield surface using the Viscosity Rescaling Method described in Kachanov, L. M. (2004), Fundamentals of the Theory of Plasticity, Dover Publications, Inc.
To avoid numerically unfavourably large (or even negative) viscosity ranges, we cut off the viscosity with a user-defined minimum and maximum viscosity: \(\eta_eff = \frac{1}{\frac{1}{\eta_min + \eta}+\\ \frac{1}{\eta_max}}\).
Note that this model uses the formulation that assumes an incompressible medium despite the fact that the density follows the law \(\rho(T)=\rho_0(1-\beta(T-T_{\text{ref}}))\).
Definition at line 79 of file drucker_prager.h.
|
overridevirtual |
Function to compute the material properties in out given the inputs in in.
Implements aspect::MaterialModel::Interface< dim >.
|
overridevirtual |
Return whether the model is compressible or not. Incompressibility does not necessarily imply that the density is constant; rather, it may still depend on temperature or pressure. In the current context, compressibility means whether we should solve the continuity equation as \(\nabla \cdot (\rho \mathbf u)=0\) (compressible Stokes) or as \(\nabla \cdot \mathbf{u}=0\) (incompressible Stokes).
Implements aspect::MaterialModel::Interface< dim >.
|
static |
Declare the parameters this class takes through input files.
|
overridevirtual |
Read the parameters this class declares from the parameter file.
Reimplemented from aspect::Plugins::InterfaceBase.
|
private |
This variable is read from the parameter file through a parameter called 'Reference temperature'.
Definition at line 136 of file drucker_prager.h.
|
private |
This variable is read from the parameter file through a parameter called 'Thermal conductivity'.
Definition at line 140 of file drucker_prager.h.
|
private |
Definition at line 142 of file drucker_prager.h.
|
private |
Definition at line 147 of file drucker_prager.h.
|
private |
The angle of internal friction
This variable is read from the parameter file through a parameter called 'Angle of internal friction'.
Definition at line 154 of file drucker_prager.h.
|
private |
The cohesion This variable is read from the parameter file through a parameter called 'Cohesion'.
Definition at line 160 of file drucker_prager.h.
|
private |
The applied viscosity bounds This variable is read from the parameter file through a parameter called 'Minimum viscosity'.
Definition at line 166 of file drucker_prager.h.
|
private |
This variable is read from the parameter file through a parameter called 'Maximum viscosity'.
Definition at line 170 of file drucker_prager.h.
|
private |
The reference strain rate used as a first estimate
This variable is read from the parameter file through a parameter called 'Reference strain rate'.
Definition at line 177 of file drucker_prager.h.