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)
 
 MaterialModelOutputs (const MaterialModelOutputs &source)
 
 MaterialModelOutputs (MaterialModelOutputs &&) noexcept=default
 
MaterialModelOutputsoperator= (const MaterialModelOutputs &source)=delete
 
MaterialModelOutputsoperator= (MaterialModelOutputs &&) noexcept=default
 
unsigned int n_evaluation_points () const
 
template<class AdditionalOutputType >
AdditionalOutputType * get_additional_output ()
 
template<class AdditionalOutputType >
const AdditionalOutputType * get_additional_output () 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
 
std::vector< std::unique_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 470 of file interface.h.

Constructor & Destructor Documentation

§ 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_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.

§ 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 > &&  )
defaultnoexcept

Move constructor. This constructor simply moves all members.

Member Function Documentation

§ 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 > &&  )
defaultnoexcept

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.

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

References aspect::MaterialModel::MaterialProperties::additional_outputs.

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

References aspect::MaterialModel::MaterialProperties::additional_outputs.

§ move_additional_outputs_from()

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

References aspect::MaterialModel::MaterialProperties::additional_outputs, and aspect::MaterialModel::MaterialModelOutputs< dim >::additional_outputs.

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 525 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 530 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 536 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 541 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 546 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 552 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 559 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 567 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 605 of file interface.h.

§ additional_outputs

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

Referenced by aspect::MaterialModel::MaterialModelOutputs< dim >::move_additional_outputs_from().


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