ASPECT
strain_dependent.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2019-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 #ifndef _aspect_material_model_rheology_strain_dependent_h
16 #define _aspect_material_model_rheology_strain_dependent_h
17 
18 #include <aspect/global.h>
21 
24 
25 namespace aspect
26 {
27  namespace MaterialModel
28  {
29  namespace Rheology
30  {
41  {
49  };
50 
60  {
63  };
64 
65  template <int dim>
67  {
68  public:
72  static
73  void
75 
79  void
81 
91  std::array<double, 3>
92  compute_strain_weakening_factors(const std::vector<double> &composition,
93  const unsigned int j) const;
94 
100  std::array<double, 3>
101  compute_strain_weakening_factors(const unsigned int j,
102  const std::vector<double> &composition) const;
103 
108  std::array<double, 3>
109  apply_temperature_dependence_to_strain_weakening_factors(const std::array<double, 3> &weakening_factors,
110  const double temperature,
111  const unsigned int j) const;
112 
116  double
118  const unsigned int j) const;
119 
125  std::pair<double, double>
126  calculate_plastic_weakening (const double strain_ii,
127  const unsigned int j) const;
128 
134  double
135  calculate_viscous_weakening (const double strain_ii,
136  const unsigned int j) const;
137 
144 
158  const int i,
159  const double min_strain_rate,
160  const bool plastic_yielding,
162 
168 
173  get_weakening_mechanism () const;
174 
179  get_healing_mechanism () const;
180 
181  private:
182 
187 
192 
199 
206 
213 
221 
228 
235 
241  std::vector<double> viscous_strain_weakening_factors;
242 
255  std::vector<double> viscous_strain_weakening_T0;
259  std::vector<double> viscous_strain_weakening_T1;
263  std::vector<double> viscous_strain_weakening_T2;
267  std::vector<double> viscous_strain_weakening_T3;
268 
274 
281 
288  mutable std::unique_ptr<FEPointEvaluation<dim, dim>> evaluator;
289  mutable std::vector<std::unique_ptr<FEPointEvaluation<1, dim>>> composition_evaluators;
290  };
291  }
292  }
293 }
294 #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
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
#define DEAL_II_DEPRECATED
std::pair< double, double > calculate_plastic_weakening(const double strain_ii, const unsigned int j) const