65 return mode == _3dMat;
151 if ( graddpmat == NULL ) {
166 if ( graddpmat == NULL ) {
172 gPrime.
at(4, 1) = 2. * gPrime.
at(4, 1);
173 gPrime.
at(5, 1) = 2. * gPrime.
at(5, 1);
174 gPrime.
at(6, 1) = 2. * gPrime.
at(6, 1);
186 if ( graddpmat == NULL ) {
192 kappaMatrix.
at(1, 4) = 2. * kappaMatrix.
at(1, 4);
193 kappaMatrix.
at(1, 5) = 2. * kappaMatrix.
at(1, 5);
194 kappaMatrix.
at(1, 6) = 2. * kappaMatrix.
at(1, 6);
206 if ( mode == _3dMat ) {
211 if ( sMat == NULL ) {
218 OOFEM_ERROR(
"Material doesn't implement the required DpGrad interface!");
222 double lambda1, lambda2, lambda3, E1, E2, E3;
223 FloatArray eVals, SethHillStrainVector, stressVector, stressM;
231 C.
jaco_(eVals, eVecs, 40);
233 lambda1 = eVals.
at(1);
234 lambda2 = eVals.
at(2);
235 lambda3 = eVals.
at(3);
237 E1 = 1. / 2. * log(lambda1);
238 E2 = 1. / 2. * log(lambda2);
239 E3 = 1. / 2. * log(lambda3);
241 E1 = 1. / ( 2. *
m ) * ( pow(lambda1,
m) - 1. );
242 E2 = 1. / ( 2. *
m ) * ( pow(lambda2,
m) - 1. );
243 E3 = 1. / ( 2. *
m ) * ( pow(lambda3,
m) - 1. );
246 SethHillStrain.
resize(3, 3);
247 for (
int i = 1; i < 4; i++ ) {
248 for (
int j = 1; j < 4; j++ ) {
249 SethHillStrain.
at(i, j) = E1 * eVecs.
at(i, 1) * eVecs.
at(j, 1) + E2 *eVecs.
at(i, 2) * eVecs.
at(j, 2) + E3 *eVecs.
at(i, 3) * eVecs.
at(j, 3);
259 stressVector.
at(4) = 2 * stressVector.
at(4);
260 stressVector.
at(5) = 2 * stressVector.
at(5);
261 stressVector.
at(6) = 2 * stressVector.
at(6);
265 stressM.
at(4) = 1. / 2. * stressM.
at(4);
266 stressM.
at(5) = 1. / 2. * stressM.
at(5);
267 stressM.
at(6) = 1. / 2. * stressM.
at(6);
276 stressVector.
at(4) = 0.5 * stressVector.
at(4);
277 stressVector.
at(5) = 0.5 * stressVector.
at(5);
278 stressVector.
at(6) = 0.5 * stressVector.
at(6);
virtual void givePDGradMatrix_ku(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Left lower block.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
virtual void giveFirstPKStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalDamageDrivningVariable, TimeStep *tStep)
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
virtual ~LargeStrainMasterMaterialGrad()
LargeStrainMasterMaterialGrad(int n, Domain *d)
Domain * domain
Link to domain object, useful for communicating with other FEM components.
virtual void givePDGradMatrix_LD(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Stress-based averaging.
double m
Specifies the strain tensor.
double & at(int i)
Coefficient access function.
void give3dGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void givePDGradMatrix_ku(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left lower block.
void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
MaterialMode
Type representing material mode of integration point.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void givePDGradMatrix_uk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Right upper block.
void beMatrixForm(const FloatArray &aArray)
bool jaco_(FloatArray &eval, FloatMatrix &v, int nf)
Computes eigenvalues and eigenvectors of receiver (must be symmetric) The receiver is preserved...
const char * __MaterialModeToString(MaterialMode _value)
void setTLmatrix(const FloatMatrix &values)
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
Material * giveMaterial(int n)
Service for accessing particular domain material model.
virtual void givePDGradMatrix_uk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right upper block.
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 ...
Material interface for gradient material models.
virtual void givePDGradMatrix_kk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Right lower block.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
Abstract base class for all material models.
double at(int i, int j) const
Coefficient access function.
virtual void giveRealStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalDamageDrivningVariable, TimeStep *tStep)
gradient - based giveRealStressVector
Abstract base class representing a material status information.
void setPmatrix(const FloatMatrix &values)
virtual void givePDGradMatrix_kk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right lower block.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
Abstract base class for all "structural" constitutive models.
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
void beProductTOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
void give3dKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
REGISTER_Material(DummyMaterial)
void beSymVectorFormOfStrain(const FloatMatrix &aMatrix)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
the oofem namespace is to define a context or scope in which all oofem names are defined.
void constructTransformationMatrix(FloatMatrix &answer, const FloatMatrix &eigenVectors)
transformation matrices
void constructL1L2TransformationMatrices(FloatMatrix &answer1, FloatMatrix &answer2, const FloatArray &eigenValues, FloatArray &stress, double E1, double E2, double E3)
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
virtual void givePDGradMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left upper block.
virtual IRResultType initializeFrom(InputRecord *ir)
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
int slaveMat
'slave' material model number.
const FloatMatrix & givePmatrix()
Class representing solution step.
Large strain master material.