15 #ifndef _aspect_material_model_rheology_composite_visco_plastic_h 16 #define _aspect_material_model_rheology_composite_visco_plastic_h 29 namespace MaterialModel
41 namespace ViscosityAveraging
55 parse (
const std::string ¶meter_name,
84 const std::unique_ptr<std::vector<unsigned int>> &expected_n_phases_per_composition =
nullptr);
94 compute_viscosity (
const double pressure,
96 const double grain_size,
97 const std::vector<double> &volume_fractions,
99 std::vector<double> &partial_strain_rates,
100 const std::vector<double> &phase_function_values = {},
101 const std::vector<unsigned int> &n_phase_transitions_per_composition = {})
const;
113 compute_isostress_viscosity (
const double pressure,
114 const double temperature,
115 const double grain_size,
116 const std::vector<double> &volume_fractions,
118 std::vector<double> &partial_strain_rates,
119 const std::vector<double> &phase_function_values = {},
120 const std::vector<unsigned int> &n_phase_transitions_per_composition = {})
const;
127 std::pair<double, double>
128 calculate_isostress_log_strain_rate_and_derivative(
const std::vector<std::array<std::pair<double, double>, 4>> &logarithmic_strain_rates_and_stress_derivatives,
129 const double viscoplastic_stress,
130 std::vector<double> &partial_strain_rates)
const;
141 compute_isostrain_viscosity (
const double pressure,
142 const double temperature,
143 const double grain_size,
144 const std::vector<double> &volume_fractions,
146 std::vector<double> &partial_strain_rates,
147 const std::vector<double> &phase_function_values = {},
148 const std::vector<unsigned int> &n_phase_transitions_per_composition = {})
const;
160 compute_composition_viscosity (
const double pressure,
161 const double temperature,
162 const double grain_size,
163 const unsigned int composition,
165 std::vector<double> &partial_strain_rates,
166 const std::vector<double> &phase_function_values = {},
167 const std::vector<unsigned int> &n_phase_transitions_per_composition = {})
const;
175 std::pair<double, double>
176 calculate_composition_log_strain_rate_and_derivative(
const std::array<std::pair<double, double>, 4> &logarithmic_strain_rates_and_stress_derivatives,
177 const double viscoplastic_stress,
178 std::vector<double> &partial_strain_rates)
const;
216 static constexpr
unsigned int n_decomposed_strain_rates = 5;
284 const double logmin =
std::log(std::numeric_limits<double>::min());
std::vector< unsigned int > active_flow_mechanisms
std::unique_ptr< Rheology::PeierlsCreep< dim > > peierls_creep
double log_strain_rate_residual_threshold
double strain_rate_scaling_factor
std::unique_ptr< Rheology::DruckerPragerPower< dim > > drucker_prager
bool use_dislocation_creep
void declare_parameters(ParameterHandler &prm)
std::unique_ptr< Rheology::DislocationCreep< dim > > dislocation_creep
unsigned int number_of_chemical_compositions
ViscosityAveraging::Kind parse(const std::string ¶meter_name, const ParameterHandler &prm)
double minimum_strain_rate
std::unique_ptr< Rheology::DiffusionCreep< dim > > diffusion_creep
::VectorizedArray< Number, width > log(const ::VectorizedArray< Number, width > &)
unsigned int stress_max_iteration_number
ViscosityAveraging::Kind viscosity_averaging_scheme