OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
misesmatgrad.C
Go to the documentation of this file.
1 /*
2  *
3  * ##### ##### ###### ###### ### ###
4  * ## ## ## ## ## ## ## ### ##
5  * ## ## ## ## #### #### ## # ##
6  * ## ## ## ## ## ## ## ##
7  * ## ## ## ## ## ## ## ##
8  * ##### ##### ## ###### ## ##
9  *
10  *
11  * OOFEM : Object Oriented Finite Element Code
12  *
13  * Copyright (C) 1993 - 2013 Borek Patzak
14  *
15  *
16  *
17  * Czech Technical University, Faculty of Civil Engineering,
18  * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19  *
20  * This library is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU Lesser General Public
22  * License as published by the Free Software Foundation; either
23  * version 2.1 of the License, or (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28  * Lesser General Public License for more details.
29  *
30  * You should have received a copy of the GNU Lesser General Public
31  * License along with this library; if not, write to the Free Software
32  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33  */
34 
35 #include "misesmatgrad.h"
36 #include "stressvector.h"
37 #include "gausspoint.h"
38 #include "floatmatrix.h"
39 #include "floatarray.h"
40 #include "mathfem.h"
41 #include "error.h"
42 #include "classfactory.h"
43 
44 
45 namespace oofem {
46 REGISTER_Material(MisesMatGrad);
47 
49 //gradient regularization of Mises plasticity coupled with isotropic damage
51 
53 {
54  L = 0.;
55 }
56 
58 { }
59 
60 
61 int
63 {
64  return mode == _1dMat || mode == _PlaneStrain || mode == _3dMat;
65 }
66 
67 
68 void
70 //
71 // Returns characteristic material stiffness matrix of the receiver
72 //
73 {
74  OOFEM_ERROR("Shouldn't be called.");
75 }
76 
77 
78 
79 void
81 {
82  MaterialMode mMode = gp->giveMaterialMode();
83  switch ( mMode ) {
84  case _1dMat:
85  give1dStressStiffMtrx(answer, mode, gp, tStep);
86  break;
87  case _PlaneStrain:
88  givePlaneStrainStiffMtrx(answer, mode, gp, tStep);
89  break;
90  case _3dMat:
91  give3dMaterialStiffnessMatrix(answer, mode, gp, tStep);
92  break;
93  default:
94  OOFEM_ERROR("unknown mode (%s)", __MaterialModeToString(mMode) );
95  }
96 }
97 
98 void
100 {
101  MaterialMode mMode = gp->giveMaterialMode();
102  switch ( mMode ) {
103  case _1dMat:
104  give1dKappaMatrix(answer, mode, gp, tStep);
105  break;
106  case _PlaneStrain:
107  givePlaneStrainKappaMatrix(answer, mode, gp, tStep);
108  break;
109  case _3dMat:
110  give3dKappaMatrix(answer, mode, gp, tStep);
111  break;
112  default:
113  OOFEM_ERROR("unknown mode (%s)", __MaterialModeToString(mMode) );
114  }
115 }
116 
117 void
119 {
120  MaterialMode mMode = gp->giveMaterialMode();
121  switch ( mMode ) {
122  case _1dMat:
123  give1dGprime(answer, mode, gp, tStep);
124  break;
125  case _PlaneStrain:
126  givePlaneStrainGprime(answer, mode, gp, tStep);
127  break;
128  case _3dMat:
129  give3dGprime(answer, mode, gp, tStep);
130  break;
131  default:
132  OOFEM_ERROR("unknown mode (%s)", __MaterialModeToString(mMode) );
133  }
134 }
135 
136 void
138 {
139  MaterialMode mMode = gp->giveMaterialMode();
140  switch ( mMode ) {
141  case _1dMat:
142  giveInternalLength(answer, mode, gp, tStep);
143  break;
144  case _PlaneStrain:
145  giveInternalLength(answer, mode, gp, tStep);
146  break;
147  case _3dMat:
148  giveInternalLength(answer, mode, gp, tStep);
149  break;
150  default:
151  OOFEM_ERROR("unknown mode (%s)", __MaterialModeToString(mMode) );
152  }
153 }
154 
155 void
157 {
158  MaterialMode mMode = gp->giveMaterialMode();
159  OOFEM_ERROR("unknown mode (%s)", __MaterialModeToString(mMode) );
160 }
161 
162 
163 void
165 {
166  answer.resize(1, 1);
168  double E = lmat->give('E', gp);
169  answer.at(1, 1) = E;
170  if ( mode != TangentStiffness ) {
171  return;
172  }
173 
174  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
175  double tempKappa = status->giveTempCumulativePlasticStrain();
176  // increment of cumulative plastic strain as an indicator of plastic loading
177  double dKappa = ( tempKappa - status->giveCumulativePlasticStrain() );
178  /********************************************************************/
179  double tempDamage = status->giveTempDamage();
180  double damage = status->giveDamage();
181  /*********************************************************************/
182  double nlKappa = status->giveNonlocalCumulatedStrain();
183  double kappa = mParam * nlKappa + ( 1. - mParam ) * tempKappa;
184  if ( dKappa <= 0.0 ) {
185  answer.at(1, 1) = ( 1. - tempDamage ) * E;
186  return;
187  }
188 
189 
190  // === plastic loading ===
191  const FloatArray &stressVector = status->giveTempEffectiveStress();
192  double stress = stressVector.at(1);
193 
194  answer.at(1, 1) = ( 1. - tempDamage ) * E * H / ( E + H );
195  if ( ( tempDamage - damage ) > 0 ) {
196  answer.at(1, 1) = answer.at(1, 1) - ( 1. - mParam ) * computeDamageParamPrime(kappa) * E / ( E + H ) * signum(stress) * stress;
197  }
198 }
199 
200 
201 void
203 {
204  this->giveLinearElasticMaterial()->giveStiffnessMatrix(answer, mode, gp, tStep);
205  if ( mode != TangentStiffness ) {
206  return;
207  }
208 
209  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
210  double tempKappa = status->giveTempCumulativePlasticStrain();
211  double kappa = status->giveCumulativePlasticStrain();
212  double dKappa = tempKappa - kappa;
213  double tempDamage = status->giveTempDamage();
214  double damage = status->giveDamage();
215 
216  if ( dKappa <= 0.0 ) { // elastic loading - elastic stiffness plays the role of tangent stiffness
217  return;
218  }
219 
220  // === plastic loading ===
221  // yield stress at the beginning of the step
222  double sigmaY = this->give('s', gp, tStep) + H * kappa;
223  // trial deviatoric stress and its norm
224  StressVector trialStressDev(status->giveTrialStressDev(), _PlaneStrain);
225  double trialS = trialStressDev.computeStressNorm();
226  // volumetric stress
227  //double trialStressVol = status->giveTrialStressVol();
228  // one correction term
229  FloatMatrix stiffnessCorrection(4, 4);
230  stiffnessCorrection.beDyadicProductOf(trialStressDev, trialStressDev);
231  double factor = -2. * sqrt(6.) * G * G / trialS;
232  double factor1 = factor * sigmaY / ( ( H + 3. * G ) * trialS * trialS );
233  stiffnessCorrection.times(factor1);
234  answer.add(stiffnessCorrection);
235  // another correction term
236  stiffnessCorrection.zero();
237  stiffnessCorrection.at(1, 1) = stiffnessCorrection.at(2, 2) = stiffnessCorrection.at(3, 3) = 2. / 3.;
238  stiffnessCorrection.at(1, 2) = stiffnessCorrection.at(1, 3) = stiffnessCorrection.at(2, 1) = -1. / 3.;
239  stiffnessCorrection.at(2, 3) = stiffnessCorrection.at(3, 1) = stiffnessCorrection.at(3, 2) = -1. / 3.;
240  stiffnessCorrection.at(4, 4) = 0.5;
241  double factor2 = factor * dKappa;
242  stiffnessCorrection.times(factor2);
243  answer.add(stiffnessCorrection);
244  //influence of damage
245  answer.times(1 - tempDamage);
246  if ( tempDamage > damage ) {
247  const FloatArray &effStress = status->giveTempEffectiveStress();
248  double nlKappa = status->giveNonlocalCumulatedStrain();
249  kappa = mParam * nlKappa + ( 1. - mParam ) * tempKappa;
250  double omegaPrime = computeDamageParamPrime(kappa);
251  double scalar = -omegaPrime *sqrt(6.) * G / ( 3. * G + H ) / trialS;
252  stiffnessCorrection.beDyadicProductOf(effStress, trialStressDev);
253  stiffnessCorrection.times( scalar * ( 1. - mParam ) );
254  answer.add(stiffnessCorrection);
255  }
256 }
257 
258 
259 void
261 {
262  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
263  this->giveLinearElasticMaterial()->give3dMaterialStiffnessMatrix(answer, mode, gp, tStep);
264  // start from the elastic stiffness
265  if ( mode != TangentStiffness ) {
266  return;
267  }
268 
269  double tempKappa = status->giveTempCumulativePlasticStrain();
270  double kappa = status->giveCumulativePlasticStrain();
271  double dKappa = tempKappa - kappa;
272 
273  if ( dKappa > 0.0 ) {
274  double tempDamage = status->giveTempDamage();
275  double damage = status->giveDamage();
276  double sigmaY = this->give('s', gp, tStep) + H * kappa;
277  // trial deviatoric stress and its norm
278  const FloatArray &trialStressDev = status->giveTrialStressDev();
279  /*****************************************************/
280  //double trialStressVol = status->giveTrialStressVol();
281  /****************************************************/
282  double trialS = computeStressNorm(trialStressDev);
283  // one correction term
284  FloatMatrix stiffnessCorrection(6, 6);
285  stiffnessCorrection.beDyadicProductOf(trialStressDev, trialStressDev);
286  double factor = -2. * sqrt(6.) * G * G / trialS;
287  double factor1 = factor * sigmaY / ( ( H + 3. * G ) * trialS * trialS );
288  stiffnessCorrection.times(factor1);
289  answer.add(stiffnessCorrection);
290  // another correction term
291  stiffnessCorrection.bePinvID();
292  double factor2 = factor * dKappa;
293  stiffnessCorrection.times(factor2);
294  answer.add(stiffnessCorrection);
295  //influence of damage
296  answer.times(1. - tempDamage);
297  if ( tempDamage > damage ) {
298  const FloatArray &effStress = status->giveTempEffectiveStress();
299  double nlKappa = status->giveNonlocalCumulatedStrain();
300  kappa = mParam * nlKappa + ( 1. - mParam ) * tempKappa;
301  double omegaPrime = computeDamageParamPrime(kappa);
302  double scalar = -omegaPrime *sqrt(6.) * G / ( 3. * G + H ) / trialS;
303  stiffnessCorrection.beDyadicProductOf(effStress, trialStressDev);
304  stiffnessCorrection.times( scalar * ( 1. - mParam ) );
305  answer.add(stiffnessCorrection);
306  }
307  }
308 }
309 
310 
311 void
313 {
314  answer.resize(1, 1);
315  answer.zero();
317  double E = lmat->give('E', gp);
318  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
319  double tempKappa = status->giveTempCumulativePlasticStrain();
320  double dKappa = tempKappa - status->giveCumulativePlasticStrain();
321  const FloatArray &effStress = status->giveTempEffectiveStress();
322  double stress = effStress.at(1);
323  if ( dKappa > 0 ) {
324  double trialS = signum(stress);
325  double factor = trialS * E / ( E + H );
326  answer.at(1, 1) = factor;
327  }
328 }
329 
330 
331 void
333 {
334  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
335  StressVector trialStressDev(status->giveTrialStressDev(), _PlaneStrain);
336  double tempKappa = status->giveTempCumulativePlasticStrain();
337  double dKappa = tempKappa - status->giveCumulativePlasticStrain();
338  answer.resize(1, 4);
339  answer.zero();
340  if ( dKappa > 0 ) {
341  double trialS = trialStressDev.computeStressNorm();
342  answer.at(1, 1) = trialStressDev.at(1);
343  answer.at(1, 2) = trialStressDev.at(2);
344  answer.at(1, 3) = trialStressDev.at(3);
345  answer.at(1, 4) = trialStressDev.at(4);
346  double factor = sqrt(6.) * G / ( 3. * G + H ) / trialS;
347  answer.times(factor);
348  }
349 }
350 
351 
352 void
354 {
355  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
356  const FloatArray &trialStressDev = status->giveTrialStressDev();
357  double tempKappa = status->giveTempCumulativePlasticStrain();
358  double dKappa = tempKappa - status->giveCumulativePlasticStrain();
359  answer.resize(1, 6);
360  answer.zero();
361  if ( dKappa > 0 ) {
362  double trialS = computeStressNorm(trialStressDev);
363  for ( int i = 1; i <= 6; i++ ) {
364  answer.at(1, i) = trialStressDev.at(i);
365  }
366 
367  double factor = sqrt(6.) * G / ( 3. * G + H ) / trialS;
368  answer.times(factor);
369  }
370 }
371 
372 
373 void
375 {
376  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
377  double damage, tempDamage;
378  double nlKappa, kappa;
379  double tempKappa = status->giveTempCumulativePlasticStrain();
380  double gPrime;
381  answer.resize(1, 1);
382  damage = status->giveDamage();
383  tempDamage = status->giveTempDamage();
384  nlKappa = status->giveNonlocalCumulatedStrain();
385  kappa = mParam * nlKappa + ( 1 - mParam ) * tempKappa;
386  if ( ( tempDamage - damage ) > 0 ) {
387  const FloatArray &tempEffStress = status->giveTempEffectiveStress();
388  answer.at(1, 1) = tempEffStress.at(1);
389  gPrime = computeDamageParamPrime(kappa);
390  answer.times(gPrime * mParam);
391  } else {
392  answer.zero();
393  }
394 }
395 
396 void
398 {
399  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
400  double damage, tempDamage;
401  double nlKappa, kappa;
402  answer.resize(4, 1);
403  answer.zero();
404  double tempKappa = status->giveTempCumulativePlasticStrain();
405  double gPrime;
406  damage = status->giveDamage();
407  tempDamage = status->giveTempDamage();
408  nlKappa = status->giveNonlocalCumulatedStrain();
409  kappa = mParam * nlKappa + ( 1. - mParam ) * tempKappa;
410  if ( ( tempDamage - damage ) > 0 ) {
411  const FloatArray &tempEffStress = status->giveTempEffectiveStress();
412  answer.at(1, 1) = tempEffStress.at(1);
413  answer.at(2, 1) = tempEffStress.at(2);
414  answer.at(3, 1) = tempEffStress.at(3);
415  answer.at(4, 1) = tempEffStress.at(4);
416  gPrime = computeDamageParamPrime(kappa);
417  answer.times(gPrime * mParam);
418  } else {
419  answer.zero();
420  }
421 }
422 
423 void
425 {
426  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
427  answer.resize(6, 1);
428  answer.zero();
429  double damage, tempDamage;
430  double nlKappa, kappa;
431  double gPrime;
432  double tempKappa = status->giveTempCumulativePlasticStrain();
433  damage = status->giveDamage();
434  tempDamage = status->giveTempDamage();
435  nlKappa = status->giveNonlocalCumulatedStrain();
436  kappa = mParam * nlKappa + ( 1. - mParam ) * tempKappa;
437  if ( ( tempDamage - damage ) > 0 ) {
438  const FloatArray &tempEffStress = status->giveTempEffectiveStress();
439  for ( int i = 1; i <= 6; i++ ) {
440  answer.at(i, 1) = tempEffStress.at(i);
441  }
442 
443  gPrime = computeDamageParamPrime(kappa);
444  answer.times(gPrime * mParam);
445  } else {
446  answer.zero();
447  }
448 }
449 
450 void
452 {
453  answer.resize(1, 1);
454  answer.at(1, 1) = L;
455 }
456 
457 
458 void
459 MisesMatGrad :: giveRealStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep)
460 {
461  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
462 
463  this->initTempStatus(gp);
464 
465  double tempDamage;
466 
467  MisesMat :: performPlasticityReturn(gp, totalStrain, tStep);
468  status->letTempStrainVectorBe(totalStrain);
469  tempDamage = computeDamage(gp, tStep);
470  const FloatArray &tempEffStress = status->giveTempEffectiveStress();
471  answer1.beScaled(1.0 - tempDamage, tempEffStress);
472  answer2 = status->giveTempCumulativePlasticStrain();
473 
474  status->setNonlocalCumulatedStrain(nonlocalCumulatedStrain);
475  status->setTempDamage(tempDamage);
476  status->letTempEffectiveStressBe(tempEffStress);
477  status->letTempStressVectorBe(answer1);
478 }
479 
480 
481 void
483 {
484  MisesMatGradStatus *status = static_cast< MisesMatGradStatus * >( this->giveStatus(gp) );
485  double localCumPlastStrain = status->giveTempCumulativePlasticStrain();
486  double nlCumPlastStrain = status->giveNonlocalCumulatedStrain();
487 
488  kappa = mParam * nlCumPlastStrain + ( 1 - mParam ) * localCumPlastStrain;
489 }
490 
491 
494 {
495  IRResultType result; // Required by IR_GIVE_FIELD macro
496 
498  if ( L < 0.0 ) {
499  L = 0.0;
500  }
501 
502  mParam = 2.;
504 
505  return MisesMat :: initializeFrom(ir);
506 }
507 
508 
510  MisesMatStatus(n, d, g)
511 {
513 }
514 
515 
517 { }
518 
519 
520 void
522 {
524  fprintf(file, "status {");
525  fprintf(file, "kappa %f, damage %f ", this->kappa, this->damage);
526  fprintf(file, "}\n");
527 }
528 
529 
530 void
532 {
533  // MisesMatStatus::initTempStatus();
535 
536  if ( plasticStrain.giveSize() == 0 ) {
537  if ( gp->giveMaterialMode() == _1dMat ) {
539  } else if ( gp->giveMaterialMode() == _PlaneStrain ) {
541  } else if ( gp->giveMaterialMode() == _PlaneStress ) {
543  } else if ( gp->giveMaterialMode() == _3dMat ) {
545  }
546 
548  }
549 
550  tempDamage = damage;
552  tempKappa = kappa;
555 }
556 
557 
558 void
560 {
562 }
563 } // end namespace oofem
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
Gradient Mises maaterial status.
Definition: misesmatgrad.h:52
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
Definition: gausspoint.h:191
virtual IRResultType initializeFrom(InputRecord *ir)
Definition: misesmatgrad.C:493
FloatArray plasticStrain
Plastic strain (initial).
Definition: misesmat.h:153
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
Definition: structuralms.h:137
void bePinvID()
Sets receiver to the inverse of scaling matrix P multiplied by the deviatoric projector ID...
Definition: floatmatrix.C:1347
This class implements an isotropic elastoplastic material with Mises yield condition, associated flow rule and linear isotropic hardening.
Definition: misesmat.h:72
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
Definition: material.C:244
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
FloatArray tempPlasticStrain
Plastic strain (final).
Definition: misesmat.h:156
double H
Hardening modulus.
Definition: misesmat.h:85
Specialization of a floating point array for representing a stress state.
Definition: stressvector.h:48
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
virtual void givePDGradMatrix_ku(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left lower block.
Definition: misesmatgrad.C:99
void clear()
Clears receiver (zero size).
Definition: floatarray.h:206
void letTempEffectiveStressBe(const FloatArray &values)
Definition: misesmat.h:213
double giveCumulativePlasticStrain()
Definition: misesmat.h:197
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
Definition: misesmatgrad.C:62
virtual void givePlaneStrainStiffMtrx(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane strain stiffness matrix of receiver.
Definition: misesmatgrad.C:202
double computeDamage(GaussPoint *gp, TimeStep *tStep)
Definition: misesmat.C:391
double giveTempCumulativePlasticStrain()
Definition: misesmat.h:198
double giveTempDamage()
Definition: misesmat.h:195
virtual void computeCumPlastStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:482
virtual void givePDGradMatrix_kk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right lower block.
Definition: misesmatgrad.C:137
virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain)
Definition: misesmatgrad.h:70
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
void give1dKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:312
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Definition: structuralms.C:73
MatResponseMode
Describes the character of characteristic material matrix.
This class is a abstract base class for all linear elastic material models in a finite element proble...
void givePlaneStrainKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:332
virtual void give1dStressStiffMtrx(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep)
Method for computing 1d stiffness matrix of receiver.
Definition: misesmatgrad.C:164
FloatArray trialStressD
Deviatoric trial stress - needed for tangent stiffness.
Definition: misesmat.h:159
virtual void givePDGradMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left upper block.
Definition: misesmatgrad.C:80
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: misesmatgrad.C:559
double computeStressNorm() const
Computes the norm of the stress tensor using engineering notation.
Definition: stressvector.C:500
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: misesmat.C:815
MisesMatGrad(int n, Domain *d)
Definition: misesmatgrad.C:52
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain, TimeStep *tStep)
Definition: misesmat.C:294
void beScaled(double s, const FloatArray &b)
Sets receiver to be .
Definition: floatarray.C:146
FloatMatrix tempLeftCauchyGreen
Left Cauchy-Green deformation gradient (final).
Definition: misesmat.h:181
const char * __MaterialModeToString(MaterialMode _value)
Definition: cltypes.C:314
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property &#39;aProperty&#39;.
Definition: material.C:52
void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:451
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
const FloatArray & giveTrialStressDev()
Definition: misesmat.h:189
#define E(p)
Definition: mdm.C:368
#define OOFEM_ERROR(...)
Definition: error.h:61
void give1dGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:374
void givePlaneStrainGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:397
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
Definition: misesmatgrad.C:69
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 ...
#define _IFT_MisesMatGrad_l
Definition: misesmatgrad.h:44
void times(double f)
Multiplies receiver by factor f.
Definition: floatmatrix.C:1594
Material interface for gradient material models.
void give3dKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:353
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Definition: misesmatgrad.C:521
static double computeStressNorm(const FloatArray &stress)
double at(int i, int j) const
Coefficient access function.
Definition: floatmatrix.h:176
double computeDamageParamPrime(double tempKappa)
Definition: misesmat.C:379
virtual double giveNonlocalCumulatedStrain()
Definition: misesmatgrad.h:69
void setTempDamage(double value)
Definition: misesmat.h:220
Class representing vector of real numbers.
Definition: floatarray.h:82
double kappa
Cumulative plastic strain (initial).
Definition: misesmat.h:169
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
virtual double give(int aProperty, GaussPoint *gp, TimeStep *tStep)
Definition: misesmat.C:828
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
LinearElasticMaterial * giveLinearElasticMaterial()
Definition: misesmatgrad.h:129
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
Definition: structuralms.h:135
virtual void givePDGradMatrix_uk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right upper block.
Definition: misesmatgrad.C:118
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
Definition: floatmatrix.C:1358
Class representing the general Input Record.
Definition: inputrecord.h:101
const FloatArray & giveTempEffectiveStress()
Definition: misesmat.h:203
void add(const FloatMatrix &a)
Adds matrix to the receiver.
Definition: floatmatrix.C:1023
virtual ~MisesMatGrad()
Definition: misesmatgrad.C:57
virtual void givePDGradMatrix_LD(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Stress-based averaging.
Definition: misesmatgrad.C:156
void zero()
Zeroes all coefficients of receiver.
Definition: floatarray.C:658
void beDyadicProductOf(const FloatArray &vec1, const FloatArray &vec2)
Assigns to the receiver the dyadic product .
Definition: floatmatrix.C:492
void zero()
Zeroes all coefficient of receiver.
Definition: floatmatrix.C:1326
virtual void giveRealStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep)
gradient - based giveRealStressVector
Definition: misesmatgrad.C:459
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: structuralms.C:108
double signum(double i)
Returns the signum of given value (i = 0 returns 0, i < 0 returns -1, i > 0 returns 1) ...
Definition: mathfem.C:326
REGISTER_Material(DummyMaterial)
#define IR_GIVE_OPTIONAL_FIELD(__ir, __value, __id)
Macro facilitating the use of input record reading methods.
Definition: inputrecord.h:78
int giveSize() const
Returns the size of receiver.
Definition: floatarray.h:218
the oofem namespace is to define a context or scope in which all oofem names are defined.
double G
Elastic shear modulus.
Definition: misesmat.h:79
double tempKappa
Cumulative plastic strain (final).
Definition: misesmat.h:172
void give3dGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Definition: misesmatgrad.C:424
#define IR_GIVE_FIELD(__ir, __value, __id)
Macro facilitating the use of input record reading methods.
Definition: inputrecord.h:69
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
Definition: misesmatgrad.C:260
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
Definition: material.C:267
Class representing integration point in finite element program.
Definition: gausspoint.h:93
#define _IFT_MisesMatGrad_m
Definition: misesmatgrad.h:45
Class representing solution step.
Definition: timestep.h:80
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: misesmat.C:71
FloatMatrix leftCauchyGreen
Left Cauchy-Green deformation gradient (initial).
Definition: misesmat.h:179
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: misesmatgrad.C:531
MisesMatGradStatus(int n, Domain *d, GaussPoint *g)
Definition: misesmatgrad.C:509
void resize(int s)
Resizes receiver towards requested size.
Definition: floatarray.C:631

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:30 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011