ASPECT
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
katz2003_mantle_melting.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 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_reaction_model_katz2003_mantle_melting_h
22 #define _aspect_material_model_reaction_model_katz2003_mantle_melting_h
23 
27 #include <aspect/melt.h>
28 
29 namespace aspect
30 {
31  namespace MaterialModel
32  {
33  namespace ReactionModel
34  {
35 
47  template <int dim>
49  {
50  public:
54  static
55  void
56  declare_parameters (ParameterHandler &prm);
57 
61  void
62  parse_parameters (ParameterHandler &prm);
63 
69  double
70  melt_fraction (const double temperature,
71  const double pressure) const;
72 
81  double
82  entropy_change (const double temperature,
83  const double pressure,
84  const double maximum_melt_fraction,
85  const NonlinearDependence::Dependence dependence) const;
86 
94  typename Interface<dim>::MaterialModelOutputs &out) const;
95 
106  const double reference_T) const;
107 
108 
109  double reference_darcy_coefficient () const;
110 
111  private:
117  double xi_0;
120  double alpha_phi;
129 
130  // for the solidus temperature
131  double A1; // °C
132  double A2; // °C/Pa
133  double A3; // °C/(Pa^2)
134 
135  // for the lherzolite liquidus temperature
136  double B1; // °C
137  double B2; // °C/Pa
138  double B3; // °C/(Pa^2)
139 
140  // for the liquidus temperature
141  double C1; // °C
142  double C2; // °C/Pa
143  double C3; // °C/(Pa^2)
144 
145  // for the reaction coefficient of pyroxene
146  double r1; // cpx/melt
147  double r2; // cpx/melt/GPa
148  double M_cpx; // mass fraction of pyroxene
149 
150  // melt fraction exponent
151  double beta;
152 
153  // entropy change upon melting
155  };
156  }
157 
158  }
159 }
160 
161 #endif
double entropy_change(const double temperature, const double pressure, const double maximum_melt_fraction, const NonlinearDependence::Dependence dependence) const
static void declare_parameters(ParameterHandler &prm)
void calculate_reaction_rate_outputs(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const
double melt_fraction(const double temperature, const double pressure) const
void calculate_fluid_outputs(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out, const double reference_T) const