ASPECT
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
57 
61  void
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 
110 
111  private:
122  double xi_0;
134  double alpha_phi;
167 
168  // for the solidus temperature
172  double A1; // °C
176  double A2; // °C/Pa
180  double A3; // °C/(Pa^2)
181 
182  // for the lherzolite liquidus temperature
186  double B1; // °C
190  double B2; // °C/Pa
194  double B3; // °C/(Pa^2)
195 
196  // for the liquidus temperature
200  double C1; // °C
204  double C2; // °C/Pa
208  double C3; // °C/(Pa^2)
209 
210  // for the reaction coefficient of pyroxene
214  double r1; // cpx/melt
218  double r2; // cpx/melt/GPa
222  double M_cpx; // mass fraction of pyroxene
223 
224  // melt fraction exponent
228  double beta;
229 
230  // entropy change upon melting
235  };
236  }
237 
238  }
239 }
240 
241 #endif
static void declare_parameters(ParameterHandler &prm)
double entropy_change(const double temperature, const double pressure, const double maximum_melt_fraction, const NonlinearDependence::Dependence dependence) const
double melt_fraction(const double temperature, const double pressure) const
void calculate_reaction_rate_outputs(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const
void calculate_fluid_outputs(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out, const double reference_T) const