ASPECT
entropy_model.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) 2016-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_entropy_model_h
16 #define _aspect_material_model_entropy_model_h
17 
19 
20 #include <aspect/utilities.h>
27 
28 namespace aspect
29 {
30  namespace MaterialModel
31  {
44  template <int dim>
46  {
47  public:
52  void
53  initialize () override;
54 
63  bool is_compressible () const override;
72  void
74  MaterialModel::MaterialModelOutputs<dim> &out) const override;
75 
83  static
84  void
86 
90  void
91  parse_parameters (ParameterHandler &prm) override;
105  void
107 
114  mutable boost::signals2::signal<void (const SimulatorAccess<dim> &,
115  const unsigned int iteration_count)> post_multicomponent_equilibrium;
116 
117  private:
118 
126  double cohesion;
127 
140 
155 
160  double min_eta;
164  double max_eta;
169 
175  std::unique_ptr<ThermalConductivity::Interface<dim>> thermal_conductivity;
176 
182  double equilibrate_temperature (const std::vector<double> &temperature,
183  const std::vector<double> &chemical_composition,
184  const std::vector<double> &entropy,
185  const std::vector<double> &specific_heat,
186  const double pressure,
187  std::vector<double> &composition_equilibrated_S) const;
193  std::string data_directory;
197  std::vector<std::string> material_file_names;
202 
207  std::vector<std::unique_ptr<MaterialUtilities::Lookup::EntropyReader>> entropy_reader;
208 
213  std::unique_ptr<internal::LateralViscosityLookup> lateral_viscosity_prefactor_lookup;
214 
219 
224  std::unique_ptr<Rheology::AsciiDepthProfile<dim>> depth_dependent_rheology;
225  };
226  }
227 }
228 
229 #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