forked from idaholab/moose
-
Notifications
You must be signed in to change notification settings - Fork 0
/
InterpolatedStatefulMaterial.h
55 lines (43 loc) · 1.65 KB
/
InterpolatedStatefulMaterial.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "Material.h"
#include "RankTwoTensorForward.h"
#include "RankFourTensorForward.h"
/**
* Reconstitute a materal property from the old and older states of projected AuxVariables. Use
* though the ProjectedStatefulMaterialStorageAction.
*/
template <typename T>
class InterpolatedStatefulMaterialTempl : public Material
{
public:
static InputParameters validParams();
InterpolatedStatefulMaterialTempl(const InputParameters & parameters);
virtual void computeQpProperties() override;
protected:
/// Old projected state
const std::vector<const VariableValue *> _old_state;
/// Older projected state
const std::vector<const VariableValue *> _older_state;
/// total number of components
const std::size_t _size;
/// emitted property name
const MaterialPropertyName _prop_name;
/// Old interpolated property
MaterialProperty<T> & _prop_old;
/// Older interpolated properties
MaterialProperty<T> & _prop_older;
};
typedef InterpolatedStatefulMaterialTempl<Real> InterpolatedStatefulMaterialReal;
typedef InterpolatedStatefulMaterialTempl<RealVectorValue>
InterpolatedStatefulMaterialRealVectorValue;
typedef InterpolatedStatefulMaterialTempl<RankTwoTensor> InterpolatedStatefulMaterialRankTwoTensor;
typedef InterpolatedStatefulMaterialTempl<RankFourTensor>
InterpolatedStatefulMaterialRankFourTensor;