ASPECT
melt_fraction.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2013 - 2021 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 
22 #ifndef _aspect_postprocess_visualization_melt_fraction_h
23 #define _aspect_postprocess_visualization_melt_fraction_h
24 
27 
29 
30 
31 namespace aspect
32 {
33  namespace Postprocess
34  {
35  namespace VisualizationPostprocessors
36  {
45  template <int dim>
47  : public DataPostprocessorScalar<dim>,
48  public SimulatorAccess<dim>,
49  public Interface<dim>
50  {
51  public:
52  MeltFraction ();
53 
58  double
59  melt_fraction (const double temperature,
60  const double pressure,
61  const std::string &melting_model) const;
62 
66  void
68  std::vector<Vector<double>> &computed_quantities) const override;
69 
73  static
74  void
76 
80  void
81  parse_parameters (ParameterHandler &prm) override;
82 
83  private:
88  // for the solidus temperature
92  double A1; // °C
96  double A2; // °C/Pa
100  double A3; // °C/(Pa^2)
101 
102  // for the lherzolite liquidus temperature
106  double B1; // °C
110  double B2; // °C/Pa
114  double B3; // °C/(Pa^2)
115 
116  // for the liquidus temperature
120  double C1; // °C
124  double C2; // °C/Pa
128  double C3; // °C/(Pa^2)
129 
130  // for the reaction coefficient of pyroxene
134  double r1; // cpx/melt
138  double r2; // cpx/melt/GPa
142  double M_cpx; // mass fraction of pyroxenite
143 
144  // melt fraction exponent
148  double beta;
149 
154  // for the melting temperature
158  double D1; // °C
162  double D2; // °C/Pa
166  double D3; // °C/(Pa^2)
167 
168  // for the melt-fraction dependence of productivity
172  double E1;
176  double E2;
177 
181  std::vector<std::string> melting_model;
182  };
183  }
184  }
185 }
186 
187 #endif
double melt_fraction(const double temperature, const double pressure, const std::string &melting_model) const
void evaluate_vector_field(const DataPostprocessorInputs::Vector< dim > &input_data, std::vector< Vector< double >> &computed_quantities) const override