56LatticeLinearElastic :: LatticeLinearElastic(
int n,
Domain *d,
double e,
double a1,
double a2) :
65LatticeLinearElastic :: hasMaterialModeCapability(MaterialMode mode)
const
67 return ( mode == _3dLattice );
74 LatticeStructuralMaterial :: initializeFrom(ir);
75 RandomMaterialExtensionInterface :: initializeFrom(ir);
100std::unique_ptr<MaterialStatus>
103 return std::make_unique<LatticeMaterialStatus>(gp);
129 auto reducedStrain = strain;
135 auto stiffnessMatrix = LatticeLinearElastic :: give3dLatticeStiffnessMatrix(ElasticStiffness, gp, tStep);
136 auto stress =
dot(stiffnessMatrix, reducedStrain);
140 if ( !
domain->giveEngngModel()->giveMasterEngngModel() ) {
144 double waterPressure = 0.;
145 for (
int i = 0; i < pressures.
giveSize(); i++ ) {
146 waterPressure += 1. / pressures.
giveSize() * pressures [ i ];
149 stress.
at(1) += waterPressure;
152 status->letTempLatticeStrainBe(strain);
153 status->letTempLatticeStressBe(stress);
159void LatticeLinearElastic :: giveRandomParameters(
FloatArray ¶m)
168 OOFEM_ERROR(
"Error: Unknown local random type:\n randomtype 1 = Gaussian\n");
181LatticeLinearElastic :: give3dLatticeStiffnessMatrix(MatResponseMode rmode,
GaussPoint *gp,
TimeStep *atTime)
const
201LatticeLinearElastic :: give2dLatticeStiffnessMatrix(MatResponseMode rmode,
GaussPoint *gp,
TimeStep *atTime)
const
232 alpha, 0., 0., 0., 0., 0.
238LatticeLinearElastic :: give(
int aProperty,
GaussPoint *gp)
const
243 if ( RandomMaterialExtensionInterface :: give(aProperty, gp, answer) ) {
244 if ( answer < 0.1 ) {
246 }
else if ( answer > 10 ) {
252 }
else if ( aProperty ==
'E' ) {
255 return LatticeStructuralMaterial :: give(aProperty, gp);
double length(const Vector &a)
#define REGISTER_Material(class)
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Index giveSize() const
Returns the size of receiver.
void zero()
Zeroes all coefficients of receiver.
bool hasMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default) const
IntegrationPointStatus * setMaterialStatus(std::unique_ptr< IntegrationPointStatus > ptr, IntegrationPointStatusIDType key=IPSID_Default)
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
Element * giveElement()
Returns corresponding element to receiver.
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double alphaOne
Ratio of shear and normal modulus.
double alphaTwo
Ratio of torsion and normal modulus.
double cAlpha
parameter which allows to prescribed thermal displacement
double eNormalMean
Normal modulus.
double coefficientOfVariation
coefficient variation of the Gaussian distribution
double give(int aProperty, GaussPoint *gp) const override
double localRandomType
flag which chooses between no distribution (0) and Gaussian distribution (1)
MaterialStatus * giveStatus(GaussPoint *gp) const override
virtual void givePressures(FloatArray &pressures)
LatticeStructuralMaterial(int n, Domain *d)
virtual void initTempStatus(GaussPoint *gp) const
void _generateStatusVariables(GaussPoint *) const
virtual FloatArray computeStressIndependentStrainVector(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
#define _IFT_LatticeLinearElastic_e
#define _IFT_LatticeLinearElastic_calpha
#define _IFT_LatticeLinearElastic_a1
#define _IFT_LatticeLinearElastic_a2
#define _IFT_LatticeLinearElastic_cov
#define _IFT_LatticeLinearElastic_localrandomtype
FloatMatrixF< N, N > diag(const FloatArrayF< N > &v)
double dot(const FloatArray &x, const FloatArray &y)