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:
51  // constructor
53 
57  static
58  void
59  declare_parameters (ParameterHandler &prm);
60 
64  void
65  parse_parameters (ParameterHandler &prm);
66 
67 
73  double
74  melt_fraction (const double temperature,
75  const double pressure) const;
76 
85  double
86  entropy_change (const double temperature,
87  const double pressure,
88  const double maximum_melt_fraction,
89  const NonlinearDependence::Dependence dependence) const;
90 
91 
99  typename Interface<dim>::MaterialModelOutputs &out) const;
100 
111  const double reference_T) const;
112 
113 
114  double reference_darcy_coefficient () const;
115 
116  private:
122  double xi_0;
125  double alpha_phi;
134 
135  // for the solidus temperature
136  double A1; // °C
137  double A2; // °C/Pa
138  double A3; // °C/(Pa^2)
139 
140  // for the lherzolite liquidus temperature
141  double B1; // °C
142  double B2; // °C/Pa
143  double B3; // °C/(Pa^2)
144 
145  // for the liquidus temperature
146  double C1; // °C
147  double C2; // °C/Pa
148  double C3; // °C/(Pa^2)
149 
150  // for the reaction coefficient of pyroxene
151  double r1; // cpx/melt
152  double r2; // cpx/melt/GPa
153  double M_cpx; // mass fraction of pyroxene
154 
155  // melt fraction exponent
156  double beta;
157 
158  // entropy change upon melting
160  };
161  }
162 
163  }
164 }
165 
166 #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
Definition: compat.h:59
void calculate_fluid_outputs(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out, const double reference_T) const