ASPECT
thermodynamic_table_lookup.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) 2011-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_equation_of_state_thermodynamic_table_lookup_h
16 #define _aspect_material_model_equation_of_state_thermodynamic_table_lookup_h
17 
21 
22 
23 namespace aspect
24 {
25  namespace MaterialModel
26  {
27  namespace EquationOfState
28  {
34  template <int dim>
36  {
37  public:
42  void
43  initialize ();
44 
48  virtual unsigned int number_of_lookups() const;
49 
58  bool is_compressible () const;
59 
65  void
67  std::vector<MaterialModel::EquationOfStateOutputs<dim>> &eos_outputs) const;
68 
72  void
74  const std::vector<std::vector<double>> &volume_fractions,
76 
80  static
81  void
83 
87  void
89 
90  void
92 
94  get_material_lookup (unsigned int lookup_index) const;
95 
96 
97  private:
98  unsigned int n_material_lookups;
107 
113  std::string data_directory;
117  std::vector<std::string> material_file_names;
121  std::vector<std::string> derivatives_file_names;
122 
130 
135  enum formats
136  {
139  };
144 
149  std::vector<std::unique_ptr<MaterialModel::MaterialUtilities::Lookup::MaterialLookup>> material_lookup;
150 
154  std::vector<std::string> unique_phase_names;
155 
162  std::vector<std::vector<unsigned int>> unique_phase_indices;
163 
170  std::vector<std::string> list_of_dominant_phases;
171 
186  std::vector<std::vector<unsigned int>> global_index_of_lookup_phase;
187 
194  std::vector<MaterialModel::EquationOfStateOutputs<dim>> &eos_outputs) const;
195 
207  std::array<std::pair<double, unsigned int>,2>
209 
211  const std::vector<double> &composite_densities,
212  const std::vector<std::vector<double>> &volume_fractions,
213  SeismicAdditionalOutputs<dim> &seismic_out) const;
214 
227  const std::vector<std::vector<double>> &volume_fractions,
228  NamedAdditionalMaterialOutputs<dim> &phase_volume_fractions_out) const;
229 
241  const std::vector<std::vector<double>> &volume_fractions,
242  PhaseOutputs<dim> &dominant_phases_out) const;
243  };
244  }
245  }
246 }
247 
248 #endif
const MaterialModel::MaterialUtilities::Lookup::MaterialLookup & get_material_lookup(unsigned int lookup_index) const
void evaluate_thermal_enthalpy_derivatives(const MaterialModel::MaterialModelInputs< dim > &in, std::vector< MaterialModel::EquationOfStateOutputs< dim >> &eos_outputs) const
void create_additional_named_outputs(MaterialModel::MaterialModelOutputs< dim > &out) const
void fill_dominant_phases(const MaterialModel::MaterialModelInputs< dim > &in, const std::vector< std::vector< double >> &volume_fractions, PhaseOutputs< dim > &dominant_phases_out) const
void fill_additional_outputs(const MaterialModel::MaterialModelInputs< dim > &in, const std::vector< std::vector< double >> &volume_fractions, MaterialModel::MaterialModelOutputs< dim > &out) const
std::vector< std::unique_ptr< MaterialModel::MaterialUtilities::Lookup::MaterialLookup > > material_lookup
void fill_phase_volume_fractions(const MaterialModel::MaterialModelInputs< dim > &in, const std::vector< std::vector< double >> &volume_fractions, NamedAdditionalMaterialOutputs< dim > &phase_volume_fractions_out) const
void evaluate(const MaterialModel::MaterialModelInputs< dim > &in, std::vector< MaterialModel::EquationOfStateOutputs< dim >> &eos_outputs) const
std::array< std::pair< double, unsigned int >, 2 > enthalpy_derivatives(const typename Interface< dim >::MaterialModelInputs &in) const
void fill_seismic_velocities(const MaterialModel::MaterialModelInputs< dim > &in, const std::vector< double > &composite_densities, const std::vector< std::vector< double >> &volume_fractions, SeismicAdditionalOutputs< dim > &seismic_out) const