50 double J2, c11, c22, c33, c12, c13, c23, A, B;
73 A = (
K - 2. / 3. *
G ) * J2;
74 B = -(
K - 2. / 3. *
G ) * ( J2 - 1. ) + 2. *
G;
78 answer.
at(1, 1) = ( A + B ) * c11 * c11;
79 answer.
at(2, 2) = ( A + B ) * c22 * c22;
80 answer.
at(3, 3) = ( A + B ) * c33 * c33;
81 answer.
at(4, 4) = A * c23 * c23 + B / 2. * ( c22 * c33 + c23 * c23 );
82 answer.
at(5, 5) = A * c13 * c13 + B / 2. * ( c11 * c33 + c13 * c13 );
83 answer.
at(6, 6) = A * c12 * c12 + B / 2. * ( c11 * c22 + c12 * c12 );
84 answer.
at(1, 2) = answer.
at(2, 1) = A * c11 * c22 + B * c12 * c12;
85 answer.
at(1, 3) = answer.
at(3, 1) = A * c11 * c33 + B * c13 * c13;
86 answer.
at(1, 4) = answer.
at(4, 1) = A * c11 * c23 + B * c12 * c13;
87 answer.
at(1, 5) = answer.
at(5, 1) = A * c11 * c13 + B * c11 * c13;
88 answer.
at(1, 6) = answer.
at(6, 1) = A * c11 * c12 + B * c11 * c12;
89 answer.
at(2, 3) = answer.
at(3, 2) = A * c22 * c33 + B * c23 * c23;
90 answer.
at(2, 4) = answer.
at(4, 2) = A * c22 * c23 + B * c22 * c23;
91 answer.
at(2, 5) = answer.
at(5, 2) = A * c22 * c13 + B * c12 * c23;
92 answer.
at(2, 6) = answer.
at(6, 2) = A * c22 * c12 + B * c22 * c12;
93 answer.
at(3, 4) = answer.
at(4, 3) = A * c33 * c23 + B * c33 * c23;
94 answer.
at(3, 5) = answer.
at(5, 3) = A * c33 * c13 + B * c33 * c13;
95 answer.
at(3, 6) = answer.
at(6, 3) = A * c33 * c12 + B * c13 * c23;
96 answer.
at(4, 5) = answer.
at(5, 4) = A * c23 * c13 + B / 2. * ( c12 * c33 + c13 * c23 );
97 answer.
at(4, 6) = answer.
at(6, 4) = A * c23 * c12 + B / 2. * ( c12 * c23 + c22 * c13 );
98 answer.
at(5, 6) = answer.
at(6, 5) = A * c13 * c12 + B / 2. * ( c11 * c23 + c12 * c13 );
115 C.
at(1, 1) = 1. + 2. * strainVector.
at(1);
116 C.
at(2, 2) = 1. + 2. * strainVector.
at(2);
117 C.
at(3, 3) = 1. + 2. * strainVector.
at(3);
118 C.
at(1, 2) = C.
at(2, 1) = strainVector.
at(6);
119 C.
at(1, 3) = C.
at(3, 1) = strainVector.
at(5);
120 C.
at(2, 3) = C.
at(3, 2) = strainVector.
at(4);
125 double aux = (
K - 2. / 3. *
G ) * ( J2 - 1. ) / 2. -
G;
126 answer.
at(1) = aux * invC.
at(1, 1) +
G;
127 answer.
at(2) = aux * invC.
at(2, 2) +
G;
128 answer.
at(3) = aux * invC.
at(3, 3) +
G;
129 answer.
at(4) = aux * invC.
at(2, 3);
130 answer.
at(5) = aux * invC.
at(1, 3);
131 answer.
at(6) = aux * invC.
at(1, 2);
double giveDeterminant() const
Returns the trace (sum of diagonal components) of the receiver.
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
double & at(int i)
Coefficient access function.
This class implements a structural material status information.
#define _IFT_HyperElasticMaterial_k
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
HyperElasticMaterial(int n, Domain *d)
void giveStressDependentPartOfStrainVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrainVector, TimeStep *tStep, ValueModeType mode)
const FloatArray & giveTempStrainVector() const
Returns the const pointer to receiver's temporary strain vector.
double at(int i, int j) const
Coefficient access function.
Abstract base class representing a material status information.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
#define _IFT_HyperElasticMaterial_g
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Abstract base class for all "structural" constitutive models.
Domain * giveDomain() const
REGISTER_Material(DummyMaterial)
the oofem namespace is to define a context or scope in which all oofem names are defined.
void beInverseOf(const FloatMatrix &src)
Modifies receiver to become inverse of given parameter.
Class representing integration point in finite element program.
Class representing solution step.
void resize(int s)
Resizes receiver towards requested size.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.