ASPECT
strain_dependent.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2019 - 2021 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 
97  std::array<double, 3>
98  compute_strain_weakening_factors(const unsigned int j,
99  const std::vector<double> &composition) const;
100 
104  double
105  calculate_strain_healing (const MaterialModel::MaterialModelInputs<dim> &in,
106  const unsigned int j) const;
107 
113  std::pair<double, double>
114  calculate_plastic_weakening (const double strain_ii,
115  const unsigned int j) const;
116 
122  double
123  calculate_viscous_weakening (const double strain_ii,
124  const unsigned int j) const;
125 
132  void compute_finite_strain_reaction_terms (const MaterialModel::MaterialModelInputs<dim> &in,
138  void fill_reaction_outputs (const MaterialModel::MaterialModelInputs<dim> &in,
139  const int i,
140  const double min_strain_rate,
141  const bool plastic_yielding,
143 
148  ComponentMask get_strain_composition_mask() const;
149 
154  get_weakening_mechanism () const;
155 
160  get_healing_mechanism () const;
161 
162  private:
163 
165 
167 
173 
179 
185 
192 
198 
204 
209  std::vector<double> viscous_strain_weakening_factors;
210 
215 
220 
227  mutable std::unique_ptr<FEPointEvaluation<dim, dim>> evaluator;
228  mutable std::vector<std::unique_ptr<FEPointEvaluation<1, dim>>> composition_evaluators;
229  };
230  }
231  }
232 }
233 #endif
std::unique_ptr< FEPointEvaluation< dim, dim > > evaluator
void declare_parameters(ParameterHandler &prm)
std::vector< std::unique_ptr< FEPointEvaluation< 1, dim > > > composition_evaluators
Definition: compat.h:42