21 #ifndef _aspect_material_model_utilities_h
22 #define _aspect_material_model_utilities_h
36 template <
int dim>
class SimulatorAccess;
56 class StructuredDataLookup;
58 namespace MaterialModel
60 template <
int dim>
class MaterialModelOutputs;
61 template <
int dim>
struct EquationOfStateOutputs;
68 namespace MaterialUtilities
136 std::array<std::pair<double, unsigned int>,2>
138 const std::vector<double> &pressures,
139 const unsigned int n_substeps = 1)
const;
164 std::vector<std::string>
190 const std::vector<std::string> &
205 const bool interpol)
const;
267 const std::string &derivatives_filename,
269 const MPI_Comm comm);
281 const MPI_Comm comm);
297 const std::string &data_directory,
298 const std::string &material_file_name);
374 const std::vector<unsigned int> &indices_to_use);
407 const std::vector<double> &densities,
408 const bool return_as_fraction);
459 const std::vector<double> ¶meter_values,
481 const std::vector<double> &mass_fractions,
482 const std::vector<double> &volume_fractions,
483 const unsigned int i,
491 namespace PhaseUtilities
522 const std::vector<unsigned int> &n_phase_transitions_per_composition,
523 const std::vector<double> ¶meter_values,
524 const unsigned int composition_index,
618 const std::vector<unsigned int> &
624 const std::vector<unsigned int> &
633 const std::vector<unsigned int> &
642 const std::vector<unsigned int> &
808 const std::vector<unsigned int> &
814 const std::vector<unsigned int> &
823 const std::vector<unsigned int> &
832 const std::vector<unsigned int> &
Tensor< 1, 2 > density_gradient(const double entropy, const double pressure) const
std::unique_ptr< Utilities::StructuredDataLookup< 2 > > material_lookup
double density(const double entropy, const double pressure) const
double temperature(const double entropy, const double pressure) const
double seismic_vp(const double entropy, const double pressure) const
double thermal_expansivity(const double entropy, const double pressure) const
double specific_heat(const double entropy, const double pressure) const
double seismic_vs(const double entropy, const double pressure) const
void initialize(const MPI_Comm comm, const std::string &data_directory, const std::string &material_file_name)
HeFESToReader(const std::string &material_filename, const std::string &derivatives_filename, const bool interpol, const MPI_Comm comm)
::Table< 2, double > specific_heat_values
std::array< std::pair< double, unsigned int >, 2 > enthalpy_derivatives(const std::vector< double > &temperatures, const std::vector< double > &pressures, const unsigned int n_substeps=1) const
::Table< 2, double > thermal_expansivity_values
double density(const double temperature, const double pressure) const
double value(const double temperature, const double pressure, const Table< 2, double > &values, const bool interpol) const
double seismic_Vs(const double temperature, const double pressure) const
double seismic_Vp(const double temperature, const double pressure) const
std::array< double, 2 > get_pT_steps() const
std::vector< std::string > phase_column_names
double phase_volume_fraction(const int phase_id, const double temperature, const double pressure) const
double specific_heat(const double temperature, const double pressure) const
double enthalpy(const double temperature, const double pressure) const
unsigned int value(const double temperature, const double pressure, const Table< 2, unsigned int > &values) const
bool has_dominant_phase_column
unsigned int n_temperature
double dHdT(const double temperature, const double pressure) const
::Table< 2, double > vp_values
::Table< 2, double > vs_values
bool has_dominant_phase() const
::Table< 2, double > density_values
const std::vector< std::string > & get_dominant_phase_names() const
std::vector< std::string > dominant_phase_names
unsigned int dominant_phase(const double temperature, const double pressure) const
double dHdp(const double temperature, const double pressure) const
double thermal_expansivity(const double temperature, const double pressure) const
::Table< 2, unsigned int > dominant_phase_indices
::Table< 2, double > enthalpy_values
double dRhodp(const double temperature, const double pressure) const
double get_np(const double pressure) const
std::vector<::Table< 2, double > > phase_volume_fractions
double get_nT(const double temperature) const
std::vector< std::string > phase_volume_column_names() const
PerplexReader(const std::string &filename, const bool interpol, const MPI_Comm comm)
double compute_derivative() const
const std::vector< unsigned int > & n_phase_transitions_for_each_chemical_composition() const
const std::vector< unsigned int > & n_phases_for_each_composition() const
const std::vector< unsigned int > & n_phases_for_each_chemical_composition() const
std::vector< double > interval_pressure
std::vector< std::string > material_file_names
std::string data_directory
unsigned int n_phases() const
unsigned int n_phases_total_chemical_compositions
std::vector< unsigned int > n_phases_per_chemical_composition
const std::vector< unsigned int > & n_phase_transitions_for_each_composition() const
std::vector< unsigned int > transition_indicators
std::vector< double > minimum_temperature
std::vector< double > minimum_pressure
void parse_parameters(ParameterHandler &prm)
unsigned int n_phases_over_all_chemical_compositions() const
std::unique_ptr< std::vector< unsigned int > > n_phase_transitions_per_composition
std::vector< std::unique_ptr< Utilities::StructuredDataLookup< 2 > > > material_lookup
std::vector< double > interval_temperature
unsigned int n_phase_transitions() const
unsigned int n_phases_total
std::vector< double > maximum_temperature
std::vector< unsigned int > n_phase_transitions_per_chemical_composition
double compute_value(const PhaseFunctionInputs< dim > &in) const
std::vector< double > maximum_pressure
std::vector< unsigned int > n_phases_per_composition
static void declare_parameters(ParameterHandler &prm)
std::vector< double > transition_temperature_upper_limits
std::vector< double > transition_slopes
unsigned int n_phases_total
unsigned int n_phases_total_chemical_compositions
std::vector< unsigned int > n_phases_per_chemical_composition
std::vector< double > transition_temperature_lower_limits
double compute_value(const PhaseFunctionInputs< dim > &in) const
std::vector< double > transition_widths
unsigned int n_phase_transitions() const
bool use_depth_instead_of_pressure
unsigned int n_phases() const
unsigned int n_phases_over_all_chemical_compositions() const
std::vector< double > transition_temperatures
double compute_derivative(const PhaseFunctionInputs< dim > &in) const
std::vector< double > transition_pressure_widths
void parse_parameters(ParameterHandler &prm)
double get_transition_depth(const unsigned int phase_transition_index) const
std::unique_ptr< std::vector< unsigned int > > n_phase_transitions_per_composition
const std::vector< unsigned int > & n_phases_for_each_composition() const
const std::vector< unsigned int > & n_phases_for_each_chemical_composition() const
double get_transition_slope(const unsigned int phase_transition_index) const
const std::vector< unsigned int > & n_phase_transitions_for_each_chemical_composition() const
std::vector< unsigned int > n_phase_transitions_per_chemical_composition
const std::vector< unsigned int > & n_phase_transitions_for_each_composition() const
std::vector< unsigned int > n_phases_per_composition
std::vector< double > transition_pressures
static void declare_parameters(ParameterHandler &prm)
std::vector< double > transition_depths
std::vector< double > compute_composition_fractions(const std::vector< double > &compositional_fields, const ComponentMask &field_mask=ComponentMask())
double average_value(const std::vector< double > &volume_fractions, const std::vector< double > ¶meter_values, const CompositionalAveragingOperation &average_type)
std::vector< double > compute_volumes_from_masses(const std::vector< double > &masses, const std::vector< double > &densities, const bool return_as_fraction)
CompositionalAveragingOperation
double phase_average_value(const std::vector< double > &phase_function_values, const std::vector< unsigned int > &n_phase_transitions_per_composition, const std::vector< double > ¶meter_values, const unsigned int composition_index, const PhaseUtilities::PhaseAveragingOperation operation=PhaseUtilities::arithmetic)
void fill_averaged_equation_of_state_outputs(const EquationOfStateOutputs< dim > &eos_outputs, const std::vector< double > &mass_fractions, const std::vector< double > &volume_fractions, const unsigned int i, MaterialModelOutputs< dim > &out)
CompositionalAveragingOperation parse_compositional_averaging_operation(const std::string ¶meter_name, const ParameterHandler &prm)
std::vector< double > compute_only_composition_fractions(const std::vector< double > &compositional_fields, const std::vector< unsigned int > &indices_to_use)