ASPECT
compositional_viscosity_prefactors.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) 2024-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_compositional_viscosity_prefactors_h
16 #define _aspect_material_model_rheology_compositional_viscosity_prefactors_h
17 
18 #include <aspect/global.h>
21 
22 namespace aspect
23 {
24  namespace MaterialModel
25  {
26  namespace Rheology
27  {
33  template <int dim>
35  {
36  public:
41 
45  static
46  void
48 
52  void
54 
55  // The flow laws that can be
56  // currently modified.
58  {
62 
66  double
68  const double base_viscosity,
69  const unsigned int composition_index,
70  const unsigned int q,
71  const ModifiedFlowLaws &modified_flow_laws) const;
72 
73  private:
92  {
96  };
101 
102  // Initialize variables for the water fugacity calculation, from HK04
115 
116  // Variables for the interface weakening scheme
117  std::vector<std::string> weakening_field_names;
118  std::vector<double> interface_weakening_factors;
120 
121  // From Hirth & Kohlstedt 2004, equation 6
122  const double A_H2O = 2.6e-5; // 1/Pa
123  const double activation_energy_H2O = 40e3; // J/mol/K
124  const double activation_volume_H2O = 10e-6; // m^3/mol
125 
126  // We calculate the molar mass of olivine using the molar mass of fayalite (0.20379 kg/mol)
127  // and the molar mass of forsterite (0.140693 kg/mol), and a mole fraction of 90% forsterite
128  // in olivine.
129  const double molar_mass_olivine = 0.1470027; // kg/mol
130  const double molar_mass_H2O = 0.01801528; // kg/mol
131  };
132  }
133  }
134 }
135 #endif
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
enum aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::ModifiedFlowLaws modified_flow_laws
double compute_viscosity(const MaterialModel::MaterialModelInputs< dim > &in, const double base_viscosity, const unsigned int composition_index, const unsigned int q, const ModifiedFlowLaws &modified_flow_laws) const