ASPECT
aspect::MaterialModel::MaterialModelOutputs< dim > Struct Template Reference

## Public Member Functions

MaterialModelOutputs (const unsigned int n_points, const unsigned int n_comp)

MaterialModelOutputs (const MaterialModelOutputs &source)

MaterialModelOutputs (MaterialModelOutputs &&)=default

MaterialModelOutputsoperator= (const MaterialModelOutputs &source)=delete

MaterialModelOutputsoperator= (MaterialModelOutputs &&)=default

unsigned int n_evaluation_points () const

void move_additional_outputs_from (MaterialModelOutputs< dim > &other)

## 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

## 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 460 of file interface.h.

## § MaterialModelOutputs() [1/3]

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_points The number of quadrature points for which input quantities will be provided. n_comp The number of vector quantities (in the order in which the Introspection class reports them) for which input will be provided.

## § MaterialModelOutputs() [2/3]

template<int dim>
 aspect::MaterialModel::MaterialModelOutputs< dim >::MaterialModelOutputs ( const MaterialModelOutputs< dim > & source )

Copy constructor. This constructor copies all data members of the source object except for the additional output data (of type AdditionalMaterialOutputs) pointers, stored in the source.additional_outputs member variable.

This is because these pointers can not be copied (they are unique to the source object). Since they can also not be recreated without the original code that created these objects in the first place, this constructor throws an exception if the source object had any additional output data objects associated with it.

## § MaterialModelOutputs() [3/3]

template<int dim>
 aspect::MaterialModel::MaterialModelOutputs< dim >::MaterialModelOutputs ( MaterialModelOutputs< dim > && )
default

Move constructor. This constructor simply moves all members.

## § operator=() [1/2]

template<int dim>
 MaterialModelOutputs& aspect::MaterialModel::MaterialModelOutputs< dim >::operator= ( const MaterialModelOutputs< dim > & source )
delete

Copy operator. Copying these objects is expensive, and consequently prohibited.

## § operator=() [2/2]

template<int dim>
 MaterialModelOutputs& aspect::MaterialModel::MaterialModelOutputs< dim >::operator= ( MaterialModelOutputs< dim > && )
default

Move operator.

## § n_evaluation_points()

template<int dim>
 unsigned int aspect::MaterialModel::MaterialModelOutputs< dim >::n_evaluation_points ( ) const

Function that returns the number of points at which the material model is to be evaluated.

template<int dim>

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 1463 of file interface.h.

template<int dim>

Constant version of get_additional_output() returning a const pointer.

Definition at line 1477 of file interface.h.

template<int dim>
 void aspect::MaterialModel::MaterialModelOutputs< dim >::move_additional_outputs_from ( MaterialModelOutputs< dim > & other )

Steal the additional outputs from other. The destination (this), is expected to currently have no additional outputs.

Definition at line 1490 of file interface.h.

## § viscosities

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

Viscosity $$\eta$$ values at the given positions.

Definition at line 515 of file interface.h.

## § densities

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

Density values at the given positions.

Definition at line 520 of file interface.h.

## § thermal_expansion_coefficients

template<int dim>
 std::vector 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 526 of file interface.h.

## § specific_heat

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

Specific heat at the given positions.

Definition at line 531 of file interface.h.

## § thermal_conductivities

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

Thermal conductivity at the given positions.

Definition at line 536 of file interface.h.

## § compressibilities

template<int dim>
 std::vector 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 542 of file interface.h.

## § entropy_derivative_pressure

template<int dim>
 std::vector 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 549 of file interface.h.

## § entropy_derivative_temperature

template<int dim>
 std::vector 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 557 of file interface.h.

## § reaction_terms

template<int dim>
 std::vector > 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 595 of file interface.h.