21 #ifndef _aspect_material_model_rheology_composite_visco_plastic_h
22 #define _aspect_material_model_rheology_composite_visco_plastic_h
35 namespace MaterialModel
47 namespace ViscosityAveraging
61 parse (
const std::string ¶meter_name,
90 const std::unique_ptr<std::vector<unsigned int>> &expected_n_phases_per_composition =
nullptr);
102 const double grain_size,
103 const std::vector<double> &volume_fractions,
105 std::vector<double> &partial_strain_rates,
106 const std::vector<double> &phase_function_values = std::vector<double>(),
107 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
121 const double grain_size,
122 const std::vector<double> &volume_fractions,
124 std::vector<double> &partial_strain_rates,
125 const std::vector<double> &phase_function_values = std::vector<double>(),
126 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
133 std::pair<double, double>
135 const double viscoplastic_stress,
136 std::vector<double> &partial_strain_rates)
const;
149 const double grain_size,
150 const std::vector<double> &volume_fractions,
152 std::vector<double> &partial_strain_rates,
153 const std::vector<double> &phase_function_values = std::vector<double>(),
154 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
168 const double grain_size,
169 const unsigned int composition,
171 std::vector<double> &partial_strain_rates,
172 const std::vector<double> &phase_function_values = std::vector<double>(),
173 const std::vector<unsigned int> &n_phase_transitions_per_composition = std::vector<unsigned int>())
const;
181 std::pair<double, double>
183 const double viscoplastic_stress,
184 std::vector<double> &partial_strain_rates)
const;
std::unique_ptr< Rheology::DruckerPragerPower< dim > > drucker_prager
double compute_isostrain_viscosity(const double pressure, const double temperature, const double grain_size, const std::vector< double > &volume_fractions, const SymmetricTensor< 2, dim > &strain_rate, std::vector< double > &partial_strain_rates, 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
unsigned int stress_max_iteration_number
void parse_parameters(ParameterHandler &prm, const std::unique_ptr< std::vector< unsigned int >> &expected_n_phases_per_composition=nullptr)
double compute_viscosity(const double pressure, const double temperature, const double grain_size, const std::vector< double > &volume_fractions, const SymmetricTensor< 2, dim > &strain_rate, std::vector< double > &partial_strain_rates, 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
double strain_rate_scaling_factor
std::unique_ptr< Rheology::PeierlsCreep< dim > > peierls_creep
double compute_isostress_viscosity(const double pressure, const double temperature, const double grain_size, const std::vector< double > &volume_fractions, const SymmetricTensor< 2, dim > &strain_rate, std::vector< double > &partial_strain_rates, 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
ViscosityAveraging::Kind viscosity_averaging_scheme
static void declare_parameters(ParameterHandler &prm)
unsigned int number_of_chemical_compositions
std::pair< double, double > calculate_composition_log_strain_rate_and_derivative(const std::array< std::pair< double, double >, 4 > &logarithmic_strain_rates_and_stress_derivatives, const double viscoplastic_stress, std::vector< double > &partial_strain_rates) const
std::pair< double, double > calculate_isostress_log_strain_rate_and_derivative(const std::vector< std::array< std::pair< double, double >, 4 >> &logarithmic_strain_rates_and_stress_derivatives, const double viscoplastic_stress, std::vector< double > &partial_strain_rates) const
bool use_dislocation_creep
double minimum_strain_rate
std::vector< unsigned int > active_flow_mechanisms
double compute_composition_viscosity(const double pressure, const double temperature, const double grain_size, const unsigned int composition, const SymmetricTensor< 2, dim > &strain_rate, std::vector< double > &partial_strain_rates, 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
std::unique_ptr< Rheology::DislocationCreep< dim > > dislocation_creep
std::unique_ptr< Rheology::DiffusionCreep< dim > > diffusion_creep
static constexpr unsigned int n_decomposed_strain_rates
double log_strain_rate_residual_threshold
ViscosityAveraging::Kind parse(const std::string ¶meter_name, const ParameterHandler &prm)
::VectorizedArray< Number, width > log(const ::VectorizedArray< Number, width > &)