NuTo
Numerics Tool
ConstitutiveStaticData: Some design choices

Setup

virtual std::unique_ptr<NuTo::Constitutive::IPConstitutiveLawBase>
NuTo::ConstitutiveBase::CreateIPLaw() = 0;
typedef <specific static data type> StaticDataType
// e.g. NuTo::MoistureTransport:
typedef NuTo::Constitutive::StaticData::DataMoistureTransport StaticDatatType
// e.g. NuTo::GradientDamageEngineeringStress:
typedef double StaticDataType

Benefits:

Evaluate()

The element calls IPConstitutiveLawBase::Evaluate(inout, output). This calls is forwarded to the constitutive law providing an additional vector of StaticDataType, if needed.

Access

via

template <typename TLaw>
DataContainer<TLaw> NuTo::Contitutive::IPConstitutiveLawBase::GetData();

The class DataContainer<TLaw> contains accessors for the data.

E.g:

ElementBase* e;
unsigned ipIndex = 2;
e->GetIPData().GetIPConstitutiveLaw(ipIndex).GetData<NuTo::PhaseField>.SetData(42.);

Serialization

see NuToSerializeStream: How to use it.

Make sure that your StaticDataType is