ASPECT
tian2019_solubility.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) 2024-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 #ifndef _aspect_material_reaction_model_melt_tian2019_solubility_h
16 #define _aspect_material_reaction_model_melt_tian2019_solubility_h
17 
21 #include <aspect/melt.h>
22 #include <aspect/utilities.h>
23 
24 
25 namespace aspect
26 {
27  namespace MaterialModel
28  {
29  using namespace dealii;
30 
31  namespace ReactionModel
32  {
33 
48  template <int dim>
50  {
51  public:
52 
62  double
63  melt_fraction (const MaterialModel::MaterialModelInputs<dim> &in,
64  const double mass_frac_porosity,
65  unsigned int q) const;
66 
74  std::vector<double> tian_equilibrium_bound_water_content(const MaterialModel::MaterialModelInputs<dim> &in,
75  unsigned int q) const;
76 
80  static
81  void
83 
87  void
88  parse_parameters (ParameterHandler &prm);
89 
90  private:
91 
112 
122 
131  std::vector<double> LR_peridotite_poly_coeffs {-19.0609, 168.983, -630.032, 1281.84, -1543.14, 1111.88, -459.142, 95.4143, 1.97246};
132  std::vector<double> csat_peridotite_poly_coeffs {0.00115628, 2.42179};
133  std::vector<double> Td_peridotite_poly_coeffs {-15.4627, 94.9716, 636.603};
134 
135  std::vector<double> LR_gabbro_poly_coeffs {-1.81745, 7.67198, -10.8507, 5.09329, 8.14519};
136  std::vector<double> csat_gabbro_poly_coeffs {-0.0176673, 0.0893044, 1.52732};
137  std::vector<double> Td_gabbro_poly_coeffs {-1.72277, 20.5898, 637.517};
138 
139  std::vector<double> LR_MORB_poly_coeffs {-1.78177, 7.50871, -10.4840, 5.19725, 7.96365};
140  std::vector<double> csat_MORB_poly_coeffs {0.0102725, -0.115390, 0.324452, 1.41588};
141  std::vector<double> Td_MORB_poly_coeffs {-3.81280, 22.7809, 638.049};
142 
143  std::vector<double> LR_sediment_poly_coeffs {-2.03283, 10.8186, -21.2119, 18.3351, -6.48711, 8.32459};
144  std::vector<double> csat_sediment_poly_coeffs {-0.150662, 0.301807, 1.01867};
145  std::vector<double> Td_sediment_poly_coeffs {2.83277, -24.7593, 85.9090, 524.898};
146 
152  const std::array<double,4 > pressure_cutoffs {{10, 26, 16, 50}};
153 
154  std::vector<std::vector<double>> devolatilization_enthalpy_changes {LR_peridotite_poly_coeffs, LR_gabbro_poly_coeffs, \
155  LR_MORB_poly_coeffs, LR_sediment_poly_coeffs
156  };
157 
158  std::vector<std::vector<double>> water_mass_fractions {csat_peridotite_poly_coeffs, csat_gabbro_poly_coeffs, \
159  csat_MORB_poly_coeffs, csat_sediment_poly_coeffs
160  };
161 
162  std::vector<std::vector<double>> devolatilization_onset_temperatures {Td_peridotite_poly_coeffs, Td_gabbro_poly_coeffs, \
163  Td_MORB_poly_coeffs, Td_sediment_poly_coeffs
164  };
165  };
166  }
167 
168  }
169 }
170 
171 #endif
void declare_parameters(ParameterHandler &prm)