ASPECT
thermodynamic_table_lookup.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2022 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_equation_of_state_thermodynamic_table_lookup_h
22 #define _aspect_material_model_equation_of_state_thermodynamic_table_lookup_h
23 
27 
28 
29 namespace aspect
30 {
31  namespace MaterialModel
32  {
33  namespace EquationOfState
34  {
40  template <int dim>
42  {
43  public:
48  void
49  initialize ();
50 
54  virtual unsigned int number_of_lookups() const;
55 
64  bool is_compressible () const;
65 
71  void
73  std::vector<MaterialModel::EquationOfStateOutputs<dim>> &eos_outputs) const;
74 
78  void
80  const std::vector<std::vector<double>> &volume_fractions,
82 
86  static
87  void
88  declare_parameters (ParameterHandler &prm);
89 
93  void
94  parse_parameters (ParameterHandler &prm);
95 
96  void
98 
100  get_material_lookup (unsigned int lookup_index) const;
101 
102 
103  private:
104  unsigned int n_material_lookups;
107 
111  std::string data_directory;
112  std::vector<std::string> material_file_names;
113  std::vector<std::string> derivatives_file_names;
114 
120 
125  enum formats
126  {
130 
135  std::vector<std::unique_ptr<MaterialModel::MaterialUtilities::Lookup::MaterialLookup>> material_lookup;
136 
140  std::vector<std::string> unique_phase_names;
141 
148  std::vector<std::vector<unsigned int>> unique_phase_indices;
149 
156  std::vector<std::string> list_of_dominant_phases;
157 
172  std::vector<std::vector<unsigned int>> global_index_of_lookup_phase;
173 
180  std::vector<MaterialModel::EquationOfStateOutputs<dim>> &eos_outputs) const;
181 
193  std::array<std::pair<double, unsigned int>,2>
195 
197  const std::vector<double> &composite_densities,
198  const std::vector<std::vector<double>> &volume_fractions,
199  SeismicAdditionalOutputs<dim> *seismic_out) const;
200 
213  const std::vector<std::vector<double>> &volume_fractions,
214  NamedAdditionalMaterialOutputs<dim> *phase_volume_fractions_out) const;
215 
227  const std::vector<std::vector<double>> &volume_fractions,
228  PhaseOutputs<dim> &dominant_phases_out) const;
229  };
230  }
231  }
232 }
233 
234 #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 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 create_additional_named_outputs(MaterialModel::MaterialModelOutputs< dim > &out) const
enum aspect::MaterialModel::EquationOfState::ThermodynamicTableLookup::formats material_file_format
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_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
void fill_additional_outputs(const MaterialModel::MaterialModelInputs< dim > &in, const std::vector< std::vector< double >> &volume_fractions, MaterialModel::MaterialModelOutputs< dim > &out) const
Definition: compat.h:59
std::vector< std::unique_ptr< MaterialModel::MaterialUtilities::Lookup::MaterialLookup > > material_lookup
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