![]() |
ASPECT
|
Static Public Member Functions | |
static void | declare_parameters (ParameterHandler &prm) |
![]() | |
static void | declare_parameters (ParameterHandler &prm) |
![]() | |
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) |
Private Member Functions | |
std::vector< double > | calculate_isostrain_viscosities (const std::vector< double > &volume_fractions, const double &pressure, const double &temperature, const SymmetricTensor< 2, dim > &strain_rate) const |
Private Attributes | |
Rheology::DiffusionCreep< dim > | diffusion_creep |
Rheology::DislocationCreep< dim > | dislocation_creep |
double | reference_T |
double | min_strain_rate |
double | minimum_viscosity |
double | maximum_viscosity |
double | veff_coefficient |
double | strain_rate_residual_threshold |
unsigned int | stress_max_iteration_number |
double | thermal_diffusivity |
double | heat_capacity |
double | grain_size |
std::vector< double > | densities |
std::vector< double > | thermal_expansivities |
MaterialUtilities::CompositionalAveragingOperation | viscosity_averaging |
Additional Inherited Members | |
![]() | |
using | MaterialModelInputs = MaterialModel::MaterialModelInputs< dim > |
using | MaterialModelOutputs = MaterialModel::MaterialModelOutputs< dim > |
![]() | |
NonlinearDependence::ModelDependence | model_dependence |
A material model based on a viscous rheology including diffusion and dislocation creep.
The effective viscosity is defined as the harmonic mean of the two effective viscosity functions describing diffusion and dislocation creep:
\[ v_\text{eff} = \left( \frac{1}{v_\text{eff}^\text{diff}} + \frac{1}{v_\text{eff}^\text{dis}} \right)^{-1} \]
where
\[ v_\text{eff}^\text{diff} = A_\text{diff}^{-1} \exp\left(\frac{E_\text{diff} + PV_\text{diff}}{RT}\right), \]
and
\[ v_\text{eff}^\text{dis} = A_\text{dis}^{\frac{-1}{n_\text{dis}}} \dot{\varepsilon}^{\frac{1-n}{n}} \exp\left(\frac{E_\text{diff} + PV_\text{diff}}{n_\text{dis}RT}\right) \]
where \(\dot{\varepsilon}\) is the second invariant of the strain rate tensor, \(A_i\) are prefactors where \(i\) corresponds to diffusion or dislocation creep, \(E_i\) are the activation energies, \(V_i\) are the activation volumes, \(\rho_m\) is the mantle density, \(R\) is the gas constant, \(T\) is temperature, and \(P\) is pressure.
Several model parameters (reference densities, thermal expansivities and rheology parameters) can be defined per-compositional field. For each material parameter the 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 mantle. They should be ordered ``background, composition1, composition2...''
If a list of values is given for the density and thermal expansivity, the volume weighted sum of the values of each of the compositional fields is used in their place, for example \(\rho = \sum \left( \rho_i V_i \right)\)
The individual output viscosities for each compositional field are also averaged. The user can choose from a range of options for this viscosity averaging. If only one value is given for any of these parameters, all compositions are assigned the same value. The first value in the list is the value assigned to "background mantle" (regions where the sum of the compositional fields is < 1.0).
Definition at line 81 of file diffusion_dislocation.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).
This material model is incompressible.
Implements aspect::MaterialModel::Interface< dim >.
|
static |
|
overridevirtual |
Read the parameters this class declares from the parameter file. The default implementation of this function does not read any parameters. Consequently, derived classes do not have to overload this function if they do not take any runtime parameters.
Reimplemented from aspect::MaterialModel::Interface< dim >.
|
private |
|
private |
Objects for computing viscous creep viscosities.
Definition at line 112 of file diffusion_dislocation.h.
|
private |
Definition at line 113 of file diffusion_dislocation.h.
|
private |
Definition at line 115 of file diffusion_dislocation.h.
|
private |
Defining a minimum strain rate stabilizes the viscosity calculation, which involves a division by the strain rate. Units: 1/s.
Definition at line 121 of file diffusion_dislocation.h.
|
private |
Definition at line 122 of file diffusion_dislocation.h.
|
private |
Definition at line 123 of file diffusion_dislocation.h.
|
private |
Definition at line 124 of file diffusion_dislocation.h.
|
private |
Definition at line 126 of file diffusion_dislocation.h.
|
private |
Definition at line 127 of file diffusion_dislocation.h.
|
private |
Definition at line 129 of file diffusion_dislocation.h.
|
private |
Definition at line 130 of file diffusion_dislocation.h.
|
private |
Definition at line 131 of file diffusion_dislocation.h.
|
private |
Definition at line 133 of file diffusion_dislocation.h.
|
private |
Definition at line 134 of file diffusion_dislocation.h.
|
private |
Definition at line 136 of file diffusion_dislocation.h.