ASPECT
Public Member Functions | Public Attributes | List of all members
aspect::MaterialModel::MaterialModelOutputs< dim > Struct Template Reference

Public Member Functions

 MaterialModelOutputs (const unsigned int n_points, const unsigned int n_comp)
 
template<class AdditionalOutputType >
AdditionalOutputType * get_additional_output ()
 
template<class AdditionalOutputType >
const AdditionalOutputType * get_additional_output () const
 

Public Attributes

std::vector< double > viscosities
 
std::vector< double > densities
 
std::vector< double > thermal_expansion_coefficients
 
std::vector< double > specific_heat
 
std::vector< double > thermal_conductivities
 
std::vector< double > compressibilities
 
std::vector< double > entropy_derivative_pressure
 
std::vector< double > entropy_derivative_temperature
 
std::vector< std::vector< double > > reaction_terms
 
std::vector< std::shared_ptr< AdditionalMaterialOutputs< dim > > > additional_outputs
 

Detailed Description

template<int dim>
struct aspect::MaterialModel::MaterialModelOutputs< dim >

A data structure with the output field of the MaterialModel::Interface::evaluate() function. The vectors are the values at the different positions given by MaterialModelInputs::position.

Definition at line 369 of file interface.h.

Constructor & Destructor Documentation

§ MaterialModelOutputs()

template<int dim>
aspect::MaterialModel::MaterialModelOutputs< dim >::MaterialModelOutputs ( const unsigned int  n_points,
const unsigned int  n_comp 
)

Constructor. Initialize the various arrays of this structure with the given number of quadrature points and (finite element) components.

Parameters
n_pointsThe number of quadrature points for which input quantities will be provided.
n_compThe number of vector quantities (in the order in which the Introspection class reports them) for which input will be provided.

Member Function Documentation

§ get_additional_output() [1/2]

template<int dim>
template<class AdditionalOutputType >
AdditionalOutputType * aspect::MaterialModel::MaterialModelOutputs< dim >::get_additional_output ( )

Given an additional material model output class as explicitly specified template argument, returns a pointer to this additional material model output object if it is used in the current simulation. The output can then be filled in the MaterialModels::Interface::evaluate() function. If the output does not exist, a null pointer is returned.

Definition at line 1229 of file interface.h.

§ get_additional_output() [2/2]

template<int dim>
template<class AdditionalOutputType >
const AdditionalOutputType * aspect::MaterialModel::MaterialModelOutputs< dim >::get_additional_output ( ) const

Constant version of get_additional_output() returning a const pointer.

Definition at line 1243 of file interface.h.

Member Data Documentation

§ viscosities

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::viscosities

Viscosity $\eta$ values at the given positions.

Definition at line 387 of file interface.h.

§ densities

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::densities

Density values at the given positions.

Definition at line 392 of file interface.h.

§ thermal_expansion_coefficients

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::thermal_expansion_coefficients

Thermal expansion coefficients at the given positions. It is defined as $\alpha = - \frac{1}{\rho} \frac{\partial\rho}{\partial T}$

Definition at line 398 of file interface.h.

§ specific_heat

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::specific_heat

Specific heat at the given positions.

Definition at line 403 of file interface.h.

§ thermal_conductivities

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::thermal_conductivities

Thermal conductivity at the given positions.

Definition at line 408 of file interface.h.

§ compressibilities

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::compressibilities

Compressibility at the given positions. The compressibility is defined as $\kappa = \frac{1}{\rho} \frac{\partial\rho}{\partial p}$.

Definition at line 414 of file interface.h.

§ entropy_derivative_pressure

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::entropy_derivative_pressure

The product of the change of entropy $\Delta S$ at a phase transition and the derivative of the phase function $X=X(p,T,\mathfrak c,\mathbf x)$ with regard to pressure at the given positions.

Definition at line 421 of file interface.h.

§ entropy_derivative_temperature

template<int dim>
std::vector<double> aspect::MaterialModel::MaterialModelOutputs< dim >::entropy_derivative_temperature

The product of (minus) the change of entropy $-\Delta S$ at a phase transition and the derivative of the phase function $X=X(p,T,\mathfrak c,\mathbf x)$ with regard to temperature at the given positions.

Definition at line 429 of file interface.h.

§ reaction_terms

template<int dim>
std::vector<std::vector<double> > aspect::MaterialModel::MaterialModelOutputs< dim >::reaction_terms

Change in composition due to chemical reactions at the given positions. The term reaction_terms[i][c] is the change in compositional field c at point i.

The mental model behind prescribing actual changes in composition rather than reaction rates is that we assume that there is always an equilibrium between the compositional fields (because the time scale of reactions is normally much shorter than that of convection), so the quantity returned by this function is an actual change in the amount of material, which is added to or subtracted from the current value of the compositional field, and NOT a reaction rate. The idea is, that in dependence of temperature, pressure, position and the compositional fields themselves an equilibrium can be calculated, and the difference between the current value and the equilibrium can be added to the respective compositional field.

For mass conservation it should ALWAYS be checked that what is subtracted from one field is added to another field (and the other way round) and that one never subtracts more than the actual value of a field (so it does not get negative).

This function has a default implementation that sets the reaction term to zero (assuming no reactions).

Note
In cases where one has slow chemical reactions (or cases where compositional fields are used to track quantities different than actual compositions, for example accumulated strains in damage models), models are formulated as differential equations with right hand sides, not as instantaneous equations. In such cases, the reaction terms (i.e., the incremental additions to the previous state) are usually of the form reaction rate times time step size. To implement something like this, derive your material model from SimulatorAccess so you can query the time step used by the simulator in order to compute the reaction increment.

Definition at line 467 of file interface.h.

§ additional_outputs

template<int dim>
std::vector<std::shared_ptr<AdditionalMaterialOutputs<dim> > > aspect::MaterialModel::MaterialModelOutputs< dim >::additional_outputs

Vector of shared pointers to additional material model output objects that can then be added to MaterialModelOutputs. By default, no outputs are added.

Definition at line 474 of file interface.h.


The documentation for this struct was generated from the following file: