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_reaction_melt_katz2003_mantle_melting_h
22 #define _aspect_material_reaction_melt_katz2003_mantle_melting_h
23 
27 #include <aspect/melt.h>
28 
29 namespace aspect
30 {
31  namespace MaterialModel
32  {
33  using namespace dealii;
34 
35  namespace ReactionModel
36  {
37 
49  template <int dim>
51  {
52  public:
53  // constructor
55 
59  static
60  void
61  declare_parameters (ParameterHandler &prm);
62 
66  void
67  parse_parameters (ParameterHandler &prm);
68 
69 
75  double
76  melt_fraction (const double temperature,
77  const double pressure) const;
78 
87  double
88  entropy_change (const double temperature,
89  const double pressure,
90  const double maximum_melt_fraction,
91  const NonlinearDependence::Dependence dependence) const;
92 
93 
100  void calculate_reaction_rate_outputs(const typename Interface<dim>::MaterialModelInputs &in,
101  typename Interface<dim>::MaterialModelOutputs &out) const;
102 
111  void calculate_fluid_outputs(const typename Interface<dim>::MaterialModelInputs &in,
113  const double reference_T) const;
114 
115 
116  double reference_darcy_coefficient () const;
117 
118  private:
124  double xi_0;
127  double alpha_phi;
136 
137  // for the solidus temperature
138  double A1; // °C
139  double A2; // °C/Pa
140  double A3; // °C/(Pa^2)
141 
142  // for the lherzolite liquidus temperature
143  double B1; // °C
144  double B2; // °C/Pa
145  double B3; // °C/(Pa^2)
146 
147  // for the liquidus temperature
148  double C1; // °C
149  double C2; // °C/Pa
150  double C3; // °C/(Pa^2)
151 
152  // for the reaction coefficient of pyroxene
153  double r1; // cpx/melt
154  double r2; // cpx/melt/GPa
155  double M_cpx; // mass fraction of pyroxene
156 
157  // melt fraction exponent
158  double beta;
159 
160  // entropy change upon melting
162  };
163  }
164 
165  }
166 }
167 
168 #endif
void declare_parameters(ParameterHandler &prm)
Definition: compat.h:59
Definition: compat.h:42