21 #ifndef _aspect_material_model_rheology_composite_visco_plastic_h 22 #define _aspect_material_model_rheology_composite_visco_plastic_h 35 namespace MaterialModel
49 namespace ViscosityAveraging
63 parse (
const std::string ¶meter_name,
64 const ParameterHandler &prm);
91 parse_parameters (ParameterHandler &prm,
92 const std::unique_ptr<std::vector<unsigned int>> &expected_n_phases_per_composition =
nullptr);
102 compute_viscosity (
const double pressure,
104 const double grain_size,
105 const std::vector<double> &volume_fractions,
107 std::vector<double> &partial_strain_rates,
108 const std::vector<double> &phase_function_values = std::vector<double>(),
109 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
121 compute_isostress_viscosity (
const double pressure,
122 const double temperature,
123 const double grain_size,
124 const std::vector<double> &volume_fractions,
125 const SymmetricTensor<2,dim> &strain_rate,
126 std::vector<double> &partial_strain_rates,
127 const std::vector<double> &phase_function_values = std::vector<double>(),
128 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
135 std::pair<double, double>
136 calculate_isostress_log_strain_rate_and_derivative(
const std::vector<std::array<std::pair<double, double>, 4>> &logarithmic_strain_rates_and_stress_derivatives,
137 const double viscoplastic_stress,
138 std::vector<double> &partial_strain_rates)
const;
149 compute_isostrain_viscosity (
const double pressure,
150 const double temperature,
151 const double grain_size,
152 const std::vector<double> &volume_fractions,
153 const SymmetricTensor<2,dim> &strain_rate,
154 std::vector<double> &partial_strain_rates,
155 const std::vector<double> &phase_function_values = std::vector<double>(),
156 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
168 compute_composition_viscosity (
const double pressure,
169 const double temperature,
170 const double grain_size,
171 const unsigned int composition,
172 const SymmetricTensor<2,dim> &strain_rate,
173 std::vector<double> &partial_strain_rates,
174 const std::vector<double> &phase_function_values = std::vector<double>(),
175 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
183 std::pair<double, double>
184 calculate_composition_log_strain_rate_and_derivative(
const std::array<std::pair<double, double>, 4> &logarithmic_strain_rates_and_stress_derivatives,
185 const double viscoplastic_stress,
186 std::vector<double> &partial_strain_rates)
const;
212 static constexpr
unsigned int n_decomposed_strain_rates = 5;
275 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
unsigned int stress_max_iteration_number
ViscosityAveraging::Kind viscosity_averaging_scheme