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  using namespace dealii;
36 
37  namespace Rheology
38  {
49  {
57  };
58 
68  {
71  };
72 
73  template <int dim>
75  {
76  public:
80  static
81  void
82  declare_parameters (ParameterHandler &prm);
83 
87  void
88  parse_parameters (ParameterHandler &prm);
89 
99  std::array<double, 3>
100  compute_strain_weakening_factors(const std::vector<double> &composition,
101  const unsigned int j) const;
102 
107  DEAL_II_DEPRECATED
108  std::array<double, 3>
109  compute_strain_weakening_factors(const unsigned int j,
110  const std::vector<double> &composition) const;
111 
116  std::array<double, 3>
117  apply_temperature_dependence_to_strain_weakening_factors(const std::array<double, 3> &weakening_factors,
118  const double temperature,
119  const unsigned int j) const;
120 
124  double
125  calculate_strain_healing (const MaterialModel::MaterialModelInputs<dim> &in,
126  const unsigned int j) const;
127 
133  std::pair<double, double>
134  calculate_plastic_weakening (const double strain_ii,
135  const unsigned int j) const;
136 
142  double
143  calculate_viscous_weakening (const double strain_ii,
144  const unsigned int j) const;
145 
150 
157  void compute_finite_strain_reaction_terms (const MaterialModel::MaterialModelInputs<dim> &in,
163  void fill_reaction_outputs (const MaterialModel::MaterialModelInputs<dim> &in,
164  const int i,
165  const double min_strain_rate,
166  const bool plastic_yielding,
168 
173  ComponentMask get_strain_composition_mask() const;
174 
179  get_weakening_mechanism () const;
180 
185  get_healing_mechanism () const;
186 
187  private:
188 
190 
192 
198 
204 
210 
217 
223 
229 
234  std::vector<double> viscous_strain_weakening_factors;
235 
247  std::vector<double> viscous_strain_weakening_T0;
248  std::vector<double> viscous_strain_weakening_T1;
249  std::vector<double> viscous_strain_weakening_T2;
250  std::vector<double> viscous_strain_weakening_T3;
251 
256 
261 
268  mutable std::unique_ptr<FEPointEvaluation<dim, dim>> evaluator;
269  mutable std::vector<std::unique_ptr<FEPointEvaluation<1, dim>>> composition_evaluators;
270  };
271  }
272  }
273 }
274 #endif
std::unique_ptr< FEPointEvaluation< dim, dim > > evaluator
void declare_parameters(ParameterHandler &prm)
Definition: compat.h:59
std::vector< std::unique_ptr< FEPointEvaluation< 1, dim > > > composition_evaluators
Definition: compat.h:42