ASPECT
reactive_fluid_transport.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) 2023-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_model_reactive_fluid_transport_h
16 #define _aspect_material_model_reactive_fluid_transport_h
17 
20 #include <aspect/melt.h>
21 #include <aspect/utilities.h>
23 
24 #include <aspect/melt.h>
27 
28 namespace aspect
29 {
30  namespace MaterialModel
31  {
39  template <int dim>
41  {
42  public:
46  bool is_compressible () const override;
47 
52  double reference_darcy_coefficient () const override;
65  double compute_bulk_density (const double porosity,
66  const double solid_density,
67  const double fluid_density) const;
68 
77  double compute_mass_fraction (const double volume_fraction,
78  const double material_density,
79  const double bulk_density) const;
80 
95  std::vector<double> &melt_fractions,
96  const MaterialModel::MaterialModelOutputs<dim> *out = nullptr) const override;
97 
102  void
103  initialize () override;
104 
108  void update() override;
109 
113  void
114  evaluate (const typename Interface<dim>::MaterialModelInputs &in,
115  typename Interface<dim>::MaterialModelOutputs &out) const override;
116 
120  static void
122 
126  void
127  parse_parameters (ParameterHandler &prm) override;
128 
133  void
135 
141  get_base_model() const;
142 
143  private:
144 
148  std::unique_ptr<MaterialModel::Interface<dim>> base_model;
149 
161  double eta_f;
166 
190  double alpha_phi;
194  double reference_T;
195 
202 
203  /*
204  * Object for computing Katz 2003 melt parameters
205  */
207 
208  /*
209  * Object for computing Tian 2019 parameterized solubility parameters
210  */
212 
256  {
261  };
266  };
267  }
268 }
269 
270 #endif
const MaterialModel::Interface< dim > & get_base_model() const
void parse_parameters(ParameterHandler &prm) override
double compute_mass_fraction(const double volume_fraction, const double material_density, const double bulk_density) const
void evaluate(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const override
static void declare_parameters(ParameterHandler &prm)
std::unique_ptr< MaterialModel::Interface< dim > > base_model
ReactionModel::Tian2019Solubility< dim > tian2019_model
double compute_bulk_density(const double porosity, const double solid_density, const double fluid_density) const
void melt_fractions(const MaterialModel::MaterialModelInputs< dim > &in, std::vector< double > &melt_fractions, const MaterialModel::MaterialModelOutputs< dim > *out=nullptr) const override
double reference_darcy_coefficient() const override
void create_additional_named_outputs(MaterialModel::MaterialModelOutputs< dim > &out) const override
ReactionModel::Katz2003MantleMelting< dim > katz2003_model