ASPECT
entropy_model.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2016 - 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_model_entropy_model_h
22 #define _aspect_material_model_entropy_model_h
23 
25 
26 #include <aspect/utilities.h>
33 
34 namespace aspect
35 {
36  namespace MaterialModel
37  {
50  template <int dim>
52  {
53  public:
58  void
59  initialize () override;
60 
69  bool is_compressible () const override;
78  void
80  MaterialModel::MaterialModelOutputs<dim> &out) const override;
81 
89  static
90  void
91  declare_parameters (ParameterHandler &prm);
92 
96  void
97  parse_parameters (ParameterHandler &prm) override;
111  void
113 
120  mutable boost::signals2::signal<void (const SimulatorAccess<dim> &,
121  const unsigned int iteration_count)> post_multicomponent_equilibrium;
122 
123  private:
124 
126  double cohesion;
127 
137 
141  double min_eta;
142  double max_eta;
144 
150  std::unique_ptr<ThermalConductivity::Interface<dim>> thermal_conductivity;
151 
157  double equilibrate_temperature (const std::vector<double> &temperature,
158  const std::vector<double> &chemical_composition,
159  const std::vector<double> &entropy,
160  const std::vector<double> &specific_heat,
161  const double pressure,
162  std::vector<double> &composition_equilibrated_S) const;
166  std::string data_directory;
167  std::vector<std::string> material_file_names;
169 
174  std::vector<std::unique_ptr<MaterialUtilities::Lookup::EntropyReader>> entropy_reader;
175 
180  std::unique_ptr<internal::LateralViscosityLookup> lateral_viscosity_prefactor_lookup;
181 
186 
191  std::unique_ptr<Rheology::AsciiDepthProfile<dim>> depth_dependent_rheology;
192  };
193  }
194 }
195 
196 #endif
void evaluate(const MaterialModel::MaterialModelInputs< dim > &in, MaterialModel::MaterialModelOutputs< dim > &out) const override
boost::signals2::signal< void(const SimulatorAccess< dim > &, const unsigned int iteration_count)> post_multicomponent_equilibrium
void parse_parameters(ParameterHandler &prm) override
bool is_compressible() const override
static void declare_parameters(ParameterHandler &prm)
std::vector< std::unique_ptr< MaterialUtilities::Lookup::EntropyReader > > entropy_reader
Rheology::DruckerPrager< dim > drucker_prager_plasticity
double equilibrate_temperature(const std::vector< double > &temperature, const std::vector< double > &chemical_composition, const std::vector< double > &entropy, const std::vector< double > &specific_heat, const double pressure, std::vector< double > &composition_equilibrated_S) const
void create_additional_named_outputs(MaterialModel::MaterialModelOutputs< dim > &out) const override
std::vector< std::string > material_file_names
std::unique_ptr< ThermalConductivity::Interface< dim > > thermal_conductivity
std::unique_ptr< Rheology::AsciiDepthProfile< dim > > depth_dependent_rheology
std::unique_ptr< internal::LateralViscosityLookup > lateral_viscosity_prefactor_lookup