ASPECT
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
tian2019_solubility.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_model_melt_tian2019_solubility_h
22 #define _aspect_material_reaction_model_melt_tian2019_solubility_h
23 
27 #include <aspect/melt.h>
28 #include <aspect/utilities.h>
29 
30 
31 namespace aspect
32 {
33  namespace MaterialModel
34  {
35  using namespace dealii;
36 
37  namespace ReactionModel
38  {
39 
54  template <int dim>
56  {
57  public:
58 
68  double
69  melt_fraction (const MaterialModel::MaterialModelInputs<dim> &in,
70  const double mass_frac_porosity,
71  unsigned int q) const;
72 
80  std::vector<double> tian_equilibrium_bound_water_content(const MaterialModel::MaterialModelInputs<dim> &in,
81  unsigned int q) const;
82 
86  static
87  void
88  declare_parameters (ParameterHandler &prm);
89 
93  void
94  parse_parameters (ParameterHandler &prm);
95 
96  private:
97 
107 
115 
124  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};
125  std::vector<double> csat_peridotite_poly_coeffs {0.00115628, 2.42179};
126  std::vector<double> Td_peridotite_poly_coeffs {-15.4627, 94.9716, 636.603};
127 
128  std::vector<double> LR_gabbro_poly_coeffs {-1.81745, 7.67198, -10.8507, 5.09329, 8.14519};
129  std::vector<double> csat_gabbro_poly_coeffs {-0.0176673, 0.0893044, 1.52732};
130  std::vector<double> Td_gabbro_poly_coeffs {-1.72277, 20.5898, 637.517};
131 
132  std::vector<double> LR_MORB_poly_coeffs {-1.78177, 7.50871, -10.4840, 5.19725, 7.96365};
133  std::vector<double> csat_MORB_poly_coeffs {0.0102725, -0.115390, 0.324452, 1.41588};
134  std::vector<double> Td_MORB_poly_coeffs {-3.81280, 22.7809, 638.049};
135 
136  std::vector<double> LR_sediment_poly_coeffs {-2.03283, 10.8186, -21.2119, 18.3351, -6.48711, 8.32459};
137  std::vector<double> csat_sediment_poly_coeffs {-0.150662, 0.301807, 1.01867};
138  std::vector<double> Td_sediment_poly_coeffs {2.83277, -24.7593, 85.9090, 524.898};
139 
145  const std::array<double,4 > pressure_cutoffs {{10, 26, 16, 50}};
146 
147  std::vector<std::vector<double>> devolatilization_enthalpy_changes {LR_peridotite_poly_coeffs, LR_gabbro_poly_coeffs, \
148  LR_MORB_poly_coeffs, LR_sediment_poly_coeffs
149  };
150 
151  std::vector<std::vector<double>> water_mass_fractions {csat_peridotite_poly_coeffs, csat_gabbro_poly_coeffs, \
152  csat_MORB_poly_coeffs, csat_sediment_poly_coeffs
153  };
154 
155  std::vector<std::vector<double>> devolatilization_onset_temperatures {Td_peridotite_poly_coeffs, Td_gabbro_poly_coeffs, \
156  Td_MORB_poly_coeffs, Td_sediment_poly_coeffs
157  };
158  };
159  }
160 
161  }
162 }
163 
164 #endif
void declare_parameters(ParameterHandler &prm)