ASPECT
melt_fraction.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2013-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 
16 #ifndef _aspect_postprocess_visualization_melt_fraction_h
17 #define _aspect_postprocess_visualization_melt_fraction_h
18 
21 
23 
24 
25 namespace aspect
26 {
27  namespace Postprocess
28  {
29  namespace VisualizationPostprocessors
30  {
39  template <int dim>
41  : public DataPostprocessorScalar<dim>,
42  public SimulatorAccess<dim>,
43  public Interface<dim>
44  {
45  public:
46  MeltFraction ();
47 
52  double
53  melt_fraction (const double temperature,
54  const double pressure,
55  const std::string &melting_model) const;
56 
60  void
62  std::vector<Vector<double>> &computed_quantities) const override;
63 
67  static
68  void
70 
74  void
75  parse_parameters (ParameterHandler &prm) override;
76 
77  private:
82  // for the solidus temperature
86  double A1; // °C
90  double A2; // °C/Pa
94  double A3; // °C/(Pa^2)
95 
96  // for the lherzolite liquidus temperature
100  double B1; // °C
104  double B2; // °C/Pa
108  double B3; // °C/(Pa^2)
109 
110  // for the liquidus temperature
114  double C1; // °C
118  double C2; // °C/Pa
122  double C3; // °C/(Pa^2)
123 
124  // for the reaction coefficient of pyroxene
128  double r1; // cpx/melt
132  double r2; // cpx/melt/GPa
136  double M_cpx; // mass fraction of pyroxenite
137 
138  // melt fraction exponent
142  double beta;
143 
148  // for the melting temperature
152  double D1; // °C
156  double D2; // °C/Pa
160  double D3; // °C/(Pa^2)
161 
162  // for the melt-fraction dependence of productivity
166  double E1;
170  double E2;
171 
175  std::vector<std::string> melting_model;
176  };
177  }
178  }
179 }
180 
181 #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