ASPECT
strain_dependent.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2019 - 2024 by the authors of the ASPECT code.
3 
4  This file is part of ASPECT.
5 
6  ASPECT is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)
9  any later version.
10 
11  ASPECT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with ASPECT; see the file LICENSE. If not see
18  <http://www.gnu.org/licenses/>.
19 */
20 
21 #ifndef _aspect_material_model_rheology_strain_dependent_h
22 #define _aspect_material_model_rheology_strain_dependent_h
23 
24 #include <aspect/global.h>
27 
28 #include<deal.II/fe/component_mask.h>
29 #include <deal.II/matrix_free/fe_point_evaluation.h>
30 
31 namespace aspect
32 {
33  namespace MaterialModel
34  {
35  namespace Rheology
36  {
47  {
55  };
56 
66  {
69  };
70 
71  template <int dim>
73  {
74  public:
78  static
79  void
80  declare_parameters (ParameterHandler &prm);
81 
85  void
86  parse_parameters (ParameterHandler &prm);
87 
97  std::array<double, 3>
98  compute_strain_weakening_factors(const std::vector<double> &composition,
99  const unsigned int j) const;
100 
105  DEAL_II_DEPRECATED
106  std::array<double, 3>
107  compute_strain_weakening_factors(const unsigned int j,
108  const std::vector<double> &composition) const;
109 
114  std::array<double, 3>
115  apply_temperature_dependence_to_strain_weakening_factors(const std::array<double, 3> &weakening_factors,
116  const double temperature,
117  const unsigned int j) const;
118 
122  double
124  const unsigned int j) const;
125 
131  std::pair<double, double>
132  calculate_plastic_weakening (const double strain_ii,
133  const unsigned int j) const;
134 
140  double
141  calculate_viscous_weakening (const double strain_ii,
142  const unsigned int j) const;
143 
148 
162  const int i,
163  const double min_strain_rate,
164  const bool plastic_yielding,
166 
171  ComponentMask get_strain_composition_mask() const;
172 
177  get_weakening_mechanism () const;
178 
183  get_healing_mechanism () const;
184 
185  private:
186 
188 
190 
196 
202 
208 
215 
221 
227 
232  std::vector<double> viscous_strain_weakening_factors;
233 
245  std::vector<double> viscous_strain_weakening_T0;
246  std::vector<double> viscous_strain_weakening_T1;
247  std::vector<double> viscous_strain_weakening_T2;
248  std::vector<double> viscous_strain_weakening_T3;
249 
254 
259 
266  mutable std::unique_ptr<FEPointEvaluation<dim, dim>> evaluator;
267  mutable std::vector<std::unique_ptr<FEPointEvaluation<1, dim>>> composition_evaluators;
268  };
269  }
270  }
271 }
272 #endif
std::array< double, 3 > compute_strain_weakening_factors(const std::vector< double > &composition, const unsigned int j) const
double calculate_strain_healing(const MaterialModel::MaterialModelInputs< dim > &in, const unsigned int j) const
std::unique_ptr< FEPointEvaluation< dim, dim > > evaluator
static void declare_parameters(ParameterHandler &prm)
std::array< double, 3 > apply_temperature_dependence_to_strain_weakening_factors(const std::array< double, 3 > &weakening_factors, const double temperature, const unsigned int j) const
void fill_reaction_outputs(const MaterialModel::MaterialModelInputs< dim > &in, const int i, const double min_strain_rate, const bool plastic_yielding, MaterialModel::MaterialModelOutputs< dim > &out) const
void compute_finite_strain_reaction_terms(const MaterialModel::MaterialModelInputs< dim > &in, MaterialModel::MaterialModelOutputs< dim > &out) const
Definition: compat.h:59
double calculate_viscous_weakening(const double strain_ii, const unsigned int j) const
void parse_parameters(ParameterHandler &prm)
std::vector< std::unique_ptr< FEPointEvaluation< 1, dim > > > composition_evaluators
WeakeningMechanism get_weakening_mechanism() const
std::pair< double, double > calculate_plastic_weakening(const double strain_ii, const unsigned int j) const