ASPECT
|
Public Member Functions | |
ViscoPlastic () | |
IsostrainViscosities | calculate_isostrain_viscosities (const MaterialModel::MaterialModelInputs< dim > &in, const unsigned int i, const std::vector< double > &volume_fractions, const std::vector< double > &phase_function_values=std::vector< double >(), const std::vector< unsigned int > &n_phase_transitions_per_composition=std::vector< unsigned int >()) const |
void | compute_viscosity_derivatives (const unsigned int point_index, const std::vector< double > &volume_fractions, const std::vector< double > &composition_viscosities, const MaterialModel::MaterialModelInputs< dim > &in, MaterialModel::MaterialModelOutputs< dim > &out, const std::vector< double > &phase_function_values=std::vector< double >(), const std::vector< unsigned int > &n_phase_transitions_per_composition=std::vector< unsigned int >()) const |
ComponentMask | get_volumetric_composition_mask () const |
void | parse_parameters (ParameterHandler &prm, const std::unique_ptr< std::vector< unsigned int >> &expected_n_phases_per_composition=nullptr) |
void | create_plastic_outputs (MaterialModel::MaterialModelOutputs< dim > &out) const |
void | fill_plastic_outputs (const unsigned int point_index, const std::vector< double > &volume_fractions, const bool plastic_yielding, const MaterialModel::MaterialModelInputs< dim > &in, MaterialModel::MaterialModelOutputs< dim > &out, const IsostrainViscosities &isostrain_viscosities) const |
Public Member Functions inherited from aspect::SimulatorAccess< dim > | |
SimulatorAccess () | |
SimulatorAccess (const Simulator< dim > &simulator_object) | |
virtual | ~SimulatorAccess ()=default |
virtual void | initialize_simulator (const Simulator< dim > &simulator_object) |
const Introspection< dim > & | introspection () const |
const Simulator< dim > & | get_simulator () const |
const Parameters< dim > & | get_parameters () const |
SimulatorSignals< dim > & | get_signals () const |
MPI_Comm | get_mpi_communicator () const |
TimerOutput & | get_computing_timer () const |
const ConditionalOStream & | get_pcout () const |
double | get_time () const |
double | get_timestep () const |
double | get_old_timestep () const |
unsigned int | get_timestep_number () const |
const TimeStepping::Manager< dim > & | get_timestepping_manager () const |
unsigned int | get_nonlinear_iteration () const |
const parallel::distributed::Triangulation< dim > & | get_triangulation () const |
double | get_volume () const |
const Mapping< dim > & | get_mapping () const |
std::string | get_output_directory () const |
bool | include_adiabatic_heating () const |
bool | include_latent_heat () const |
bool | include_melt_transport () const |
int | get_stokes_velocity_degree () const |
double | get_adiabatic_surface_temperature () const |
double | get_surface_pressure () const |
bool | convert_output_to_years () const |
unsigned int | get_pre_refinement_step () const |
unsigned int | n_compositional_fields () const |
double | get_end_time () const |
void | get_refinement_criteria (Vector< float > &estimated_error_per_cell) const |
void | get_artificial_viscosity (Vector< float > &viscosity_per_cell, const bool skip_interior_cells=false) const |
void | get_artificial_viscosity_composition (Vector< float > &viscosity_per_cell, const unsigned int compositional_variable) const |
const LinearAlgebra::BlockVector & | get_current_linearization_point () const |
const LinearAlgebra::BlockVector & | get_solution () const |
const LinearAlgebra::BlockVector & | get_old_solution () const |
const LinearAlgebra::BlockVector & | get_old_old_solution () const |
const LinearAlgebra::BlockVector & | get_reaction_vector () const |
const LinearAlgebra::BlockVector & | get_mesh_velocity () const |
const DoFHandler< dim > & | get_dof_handler () const |
const FiniteElement< dim > & | get_fe () const |
const LinearAlgebra::BlockSparseMatrix & | get_system_matrix () const |
const LinearAlgebra::BlockSparseMatrix & | get_system_preconditioner_matrix () const |
const MaterialModel::Interface< dim > & | get_material_model () const |
const GravityModel::Interface< dim > & | get_gravity_model () const |
const InitialTopographyModel::Interface< dim > & | get_initial_topography_model () const |
const GeometryModel::Interface< dim > & | get_geometry_model () const |
const AdiabaticConditions::Interface< dim > & | get_adiabatic_conditions () const |
bool | has_boundary_temperature () const |
const BoundaryTemperature::Manager< dim > & | get_boundary_temperature_manager () const |
const BoundaryHeatFlux::Interface< dim > & | get_boundary_heat_flux () const |
bool | has_boundary_composition () const |
const BoundaryComposition::Manager< dim > & | get_boundary_composition_manager () const |
const BoundaryTraction::Manager< dim > & | get_boundary_traction_manager () const |
std::shared_ptr< const InitialTemperature::Manager< dim > > | get_initial_temperature_manager_pointer () const |
const InitialTemperature::Manager< dim > & | get_initial_temperature_manager () const |
std::shared_ptr< const InitialComposition::Manager< dim > > | get_initial_composition_manager_pointer () const |
const InitialComposition::Manager< dim > & | get_initial_composition_manager () const |
const std::set< types::boundary_id > & | get_fixed_temperature_boundary_indicators () const |
const std::set< types::boundary_id > & | get_fixed_heat_flux_boundary_indicators () const |
const std::set< types::boundary_id > & | get_fixed_composition_boundary_indicators () const |
const std::set< types::boundary_id > & | get_mesh_deformation_boundary_indicators () const |
const BoundaryVelocity::Manager< dim > & | get_boundary_velocity_manager () const |
const HeatingModel::Manager< dim > & | get_heating_model_manager () const |
const MeshRefinement::Manager< dim > & | get_mesh_refinement_manager () const |
const MeltHandler< dim > & | get_melt_handler () const |
const VolumeOfFluidHandler< dim > & | get_volume_of_fluid_handler () const |
const NewtonHandler< dim > & | get_newton_handler () const |
const MeshDeformation::MeshDeformationHandler< dim > & | get_mesh_deformation_handler () const |
const LateralAveraging< dim > & | get_lateral_averaging () const |
const AffineConstraints< double > & | get_current_constraints () const |
bool | simulator_is_past_initialization () const |
double | get_pressure_scaling () const |
bool | pressure_rhs_needs_compatibility_modification () const |
bool | model_has_prescribed_stokes_solution () const |
TableHandler & | get_statistics_object () const |
const Postprocess::Manager< dim > & | get_postprocess_manager () const |
unsigned int | n_particle_managers () const |
const Particle::Manager< dim > & | get_particle_manager (const unsigned int particle_manager_index) const |
Particle::Manager< dim > & | get_particle_manager (const unsigned int particle_manager_index) |
bool | is_stokes_matrix_free () |
const StokesMatrixFreeHandler< dim > & | get_stokes_matrix_free () const |
RotationProperties< dim > | compute_net_angular_momentum (const bool use_constant_density, const LinearAlgebra::BlockVector &solution, const bool limit_to_top_faces=false) const |
Static Public Member Functions | |
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) |
Public Attributes | |
double | min_strain_rate |
MaterialUtilities::CompositionalAveragingOperation | viscosity_averaging |
Rheology::StrainDependent< dim > | strain_rheology |
Rheology::FrictionModels< dim > | friction_models |
Rheology::Elasticity< dim > | elastic_rheology |
Private Types | |
enum | ViscosityScheme { diffusion, dislocation, frank_kamenetskii, composite } |
enum | YieldScheme { stress_limiter, drucker_prager } |
Definition at line 117 of file visco_plastic.h.
|
private |
Enumeration for selecting which type of viscous flow law to use. Select between diffusion, dislocation, frank_kamenetskii or composite.
Enumerator | |
---|---|
diffusion | |
dislocation | |
frank_kamenetskii | |
composite |
Definition at line 250 of file visco_plastic.h.
|
private |
Enumeration for selecting which type of yield mechanism to use. Select between Drucker Prager and stress limiter.
Enumerator | |
---|---|
stress_limiter | |
drucker_prager |
Definition at line 262 of file visco_plastic.h.
aspect::MaterialModel::Rheology::ViscoPlastic< dim >::ViscoPlastic | ( | ) |
Constructor.
IsostrainViscosities aspect::MaterialModel::Rheology::ViscoPlastic< dim >::calculate_isostrain_viscosities | ( | const MaterialModel::MaterialModelInputs< dim > & | in, |
const unsigned int | i, | ||
const std::vector< double > & | volume_fractions, | ||
const std::vector< double > & | phase_function_values = std::vector< double >() , |
||
const std::vector< unsigned int > & | n_phase_transitions_per_composition = std::vector< unsigned int >() |
||
) | const |
This function calculates viscosities assuming that all the compositional fields experience the same strain rate (isostrain). If n_phase_transitions_per_composition
points to a vector of unsigned integers this is considered the number of phase transitions for each compositional field and viscosity will be first computed on each phase and then averaged for each compositional field.
void aspect::MaterialModel::Rheology::ViscoPlastic< dim >::compute_viscosity_derivatives | ( | const unsigned int | point_index, |
const std::vector< double > & | volume_fractions, | ||
const std::vector< double > & | composition_viscosities, | ||
const MaterialModel::MaterialModelInputs< dim > & | in, | ||
MaterialModel::MaterialModelOutputs< dim > & | out, | ||
const std::vector< double > & | phase_function_values = std::vector< double >() , |
||
const std::vector< unsigned int > & | n_phase_transitions_per_composition = std::vector< unsigned int >() |
||
) | const |
A function that fills the viscosity derivatives in the MaterialModelOutputs object that is handed over, if they exist. Does nothing otherwise. If n_phase_transitions_per_composition
points to a vector of unsigned integers this is considered the number of phase transitions for each compositional field and viscosity will be first computed on each phase and then averaged for each compositional field.
ComponentMask aspect::MaterialModel::Rheology::ViscoPlastic< dim >::get_volumetric_composition_mask | ( | ) | const |
A function that returns a ComponentMask that represents all compositional fields that should be considered 'volumetric', that is representing a physical proportion of the material, e.g. volume fraction of peridotite (as opposed to non-volumetric quantities like the amount of finite-strain).
|
static |
Declare the parameters this function takes through input files.
void aspect::MaterialModel::Rheology::ViscoPlastic< dim >::parse_parameters | ( | ParameterHandler & | prm, |
const std::unique_ptr< std::vector< unsigned int >> & | expected_n_phases_per_composition = nullptr |
||
) |
Read the parameters this class declares from the parameter file. If expected_n_phases_per_composition
points to a vector of unsigned integers this is considered the number of phases for each compositional field and will be checked against the parsed parameters.
void aspect::MaterialModel::Rheology::ViscoPlastic< dim >::create_plastic_outputs | ( | MaterialModel::MaterialModelOutputs< dim > & | out | ) | const |
Create the additional material model outputs object that contains the plastic outputs.
void aspect::MaterialModel::Rheology::ViscoPlastic< dim >::fill_plastic_outputs | ( | const unsigned int | point_index, |
const std::vector< double > & | volume_fractions, | ||
const bool | plastic_yielding, | ||
const MaterialModel::MaterialModelInputs< dim > & | in, | ||
MaterialModel::MaterialModelOutputs< dim > & | out, | ||
const IsostrainViscosities & | isostrain_viscosities | ||
) | const |
A function that fills the plastic additional output in the MaterialModelOutputs object that is handed over, if it exists. Does nothing otherwise.
double aspect::MaterialModel::Rheology::ViscoPlastic< dim >::min_strain_rate |
Minimum strain rate used to stabilize the strain rate dependent rheology.
Definition at line 207 of file visco_plastic.h.
MaterialUtilities::CompositionalAveragingOperation aspect::MaterialModel::Rheology::ViscoPlastic< dim >::viscosity_averaging |
Enumeration for selecting which viscosity averaging scheme to use.
Definition at line 212 of file visco_plastic.h.
Rheology::StrainDependent<dim> aspect::MaterialModel::Rheology::ViscoPlastic< dim >::strain_rheology |
Object for computing the strain dependence of the rheology model.
Definition at line 217 of file visco_plastic.h.
Rheology::FrictionModels<dim> aspect::MaterialModel::Rheology::ViscoPlastic< dim >::friction_models |
Object for computing the friction dependence of the rheology model.
Definition at line 222 of file visco_plastic.h.
Rheology::Elasticity<dim> aspect::MaterialModel::Rheology::ViscoPlastic< dim >::elastic_rheology |
Object for computing viscoelastic viscosities and stresses.
Definition at line 227 of file visco_plastic.h.
|
private |
Reference strain rate for the first non-linear iteration in the first time step.
Definition at line 236 of file visco_plastic.h.
|
private |
Minimum and maximum viscosities used to improve the stability of the rheology model. These parameters contain one value per composition and phase (potentially the same value).
Definition at line 243 of file visco_plastic.h.
|
private |
Definition at line 244 of file visco_plastic.h.
|
private |
|
private |
|
private |
Whether to allow negative pressures to be used in the computation of plastic yield stresses and viscosities. If false, the minimum pressure in the plasticity formulation will be set to zero.
Definition at line 273 of file visco_plastic.h.
|
private |
Whether to use the adiabatic pressure instead of the full pressure (default) when calculating creep (diffusion, dislocation, and peierls) viscosity. This may be helpful in models where the full pressure has an unusually large negative value arising from large negative dynamic pressure, resulting in solver convergence issue and in some cases a viscosity of zero.
Definition at line 283 of file visco_plastic.h.
|
private |
Whether to use the adiabatic pressure instead of the full pressure when calculating the plastic yield stress. This may be helpful in models where the full pressure has large variations resulting in solver convergence issues. Be aware that this setting will change the plastic shear band angle.
Definition at line 292 of file visco_plastic.h.
|
private |
List of exponents controlling the behavior of the stress limiter yielding mechanism.
Definition at line 298 of file visco_plastic.h.
|
private |
Temperature gradient added to temperature used in the flow law.
Definition at line 303 of file visco_plastic.h.
|
private |
Objects for computing viscous creep viscosities.
Definition at line 308 of file visco_plastic.h.
|
private |
Definition at line 309 of file visco_plastic.h.
|
private |
Definition at line 310 of file visco_plastic.h.
|
private |
Whether to include Peierls creep in the constitutive formulation.
Definition at line 315 of file visco_plastic.h.
|
private |
Object for computing Peierls creep viscosities.
Definition at line 320 of file visco_plastic.h.
|
private |
Object for computing the viscosity multiplied by a constant prefactor. This multiplication step is done just prior to calculating the effective viscoelastic viscosity or plastic viscosity.
Definition at line 327 of file visco_plastic.h.
|
private |
Object for computing the viscosity multiplied by a given prefactor term.
Definition at line 332 of file visco_plastic.h.
|
private |
Definition at line 337 of file visco_plastic.h.
|
private |
Definition at line 342 of file visco_plastic.h.