OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
rankinematnl.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 "rankinematnl.h"
36 #include "../sm/Elements/structuralelement.h"
37 #include "gausspoint.h"
38 #include "floatmatrix.h"
39 #include "floatarray.h"
40 #include "sparsemtrx.h"
41 #include "error.h"
42 #include "nonlocalmaterialext.h"
43 #include "contextioerr.h"
44 #include "classfactory.h"
45 #include "datastream.h"
46 
47 namespace oofem {
48 REGISTER_Material(RankineMatNl);
49 
51  //
52  // constructor
53  //
54 { }
55 
56 void
58  const FloatArray &totalStrain, TimeStep *tStep)
59 {
60  RankineMatNlStatus *nlStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
61 
62  double tempDam;
63  //mj performPlasticityReturn(gp, totalStrain, mode);
64  // nonlocal method "computeDamage" performs the plastic return
65  // for all Gauss points when it is called for the first time
66  // in the iteration
67  tempDam = this->computeDamage(gp, tStep);
68  answer.beScaled(1.0 - tempDam, nlStatus->giveTempEffectiveStress());
69  nlStatus->setTempDamage(tempDam);
70  nlStatus->letTempStrainVectorBe(totalStrain);
71  nlStatus->letTempStressVectorBe(answer);
72 #ifdef keep_track_of_dissipated_energy
73  double gf = sig0 * sig0 / E; // only estimated, but OK for this purpose
74  nlStatus->computeWork_PlaneStress(gp, gf);
75 #endif
76 }
77 
78 void
80  const FloatArray &totalStrain, TimeStep *tStep)
81 {
82  RankineMatNlStatus *nlStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
83 
84  double tempDam;
85  //mj performPlasticityReturn(gp, totalStrain, mode);
86  // nonlocal method "computeDamage" performs the plastic return
87  // for all Gauss points when it is called for the first time
88  // in the iteration
89  tempDam = this->computeDamage(gp, tStep);
90  answer.beScaled(1.0 - tempDam, nlStatus->giveTempEffectiveStress());
91  nlStatus->setTempDamage(tempDam);
92  nlStatus->letTempStrainVectorBe(totalStrain);
93  nlStatus->letTempStressVectorBe(answer);
94 #ifdef keep_track_of_dissipated_energy
95  double gf = sig0 * sig0 / E; // only estimated, but OK for this purpose
96  nlStatus->computeWork_1d(gp, gf);
97 #endif
98 }
99 
100 
101 void
103 {
104  if ( mode == ElasticStiffness ) {
105  this->giveLinearElasticMaterial()->giveStiffnessMatrix(answer, mode, gp, tStep);
106  return;
107  }
108 
109  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
110 
111  if ( mode == SecantStiffness ) {
112  this->giveLinearElasticMaterial()->giveStiffnessMatrix(answer, mode, gp, tStep);
113  double damage = status->giveTempDamage();
114  answer.times(1. - damage);
115  return;
116  }
117 
118  if ( mode == TangentStiffness ) {
119  double tempDamage = status->giveTempDamage();
120  double damage = status->giveDamage();
121  double gprime;
122  if ( tempDamage <= damage ) { // unloading
123  gprime = 0.;
124  } else { // loading
125  double kappa;
126  computeCumPlasticStrain(kappa, gp, tStep);
127  gprime = computeDamageParamPrime(kappa);
128  gprime *= ( 1. - mm );
129  }
130 
131  evaluatePlaneStressStiffMtrx(answer, mode, gp, tStep, gprime);
132  return;
133  }
134 
135  OOFEM_ERROR("unknown type of stiffness");
136 }
137 
138 void
140 {
141  /* Implements the service updating local variables in given integration points,
142  * which take part in nonlocal average process. Actually, no update is necessary,
143  * because the value used for nonlocal averaging is strain vector used for nonlocal secant stiffness
144  * computation. It is therefore necessary only to store local strain in corresponding status.
145  * This service is declared at StructuralNonlocalMaterial level.
146  */
147 
148  double cumPlasticStrain;
149  RankineMatNlStatus *nlstatus = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
150 
151  this->initTempStatus(gp);
152  this->performPlasticityReturn(gp, strainVector);
153  this->computeLocalCumPlasticStrain(cumPlasticStrain, gp, tStep);
154  // standard formulation based on averaging of equivalent strain
155  nlstatus->setLocalCumPlasticStrainForAverage(cumPlasticStrain);
156 }
157 
158 // returns in "kappa" the value of kappa_hat = m*kappa_nonlocal + (1-m)*kappa_local
159 void
161 {
162  double nonlocalContribution, nonlocalCumPlasticStrain = 0.0;
163  RankineMatNlStatus *nonlocStatus, *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
164 
165  this->buildNonlocalPointTable(gp);
166  this->updateDomainBeforeNonlocAverage(tStep);
167  double localCumPlasticStrain = status->giveLocalCumPlasticStrainForAverage();
168  // compute nonlocal cumulative plastic strain
169  auto list = this->giveIPIntegrationList(gp);
170 
171  for ( auto &lir: *list ) {
172  nonlocStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(lir.nearGp) );
173  nonlocalContribution = nonlocStatus->giveLocalCumPlasticStrainForAverage();
174  if ( nonlocalContribution > 0 ) {
175  nonlocalContribution *= lir.weight;
176  }
177 
178  nonlocalCumPlasticStrain += nonlocalContribution;
179  }
180 
181  double scale = status->giveIntegrationScale();
182  if ( scaling == ST_Standard ) { // standard rescaling
183  nonlocalCumPlasticStrain *= 1. / scale;
184  } else if ( scaling == ST_Borino ) { // Borino modification
185  if ( scale > 1. ) {
186  nonlocalCumPlasticStrain *= 1. / scale;
187  } else {
188  nonlocalCumPlasticStrain += ( 1. - scale ) * status->giveLocalCumPlasticStrainForAverage();
189  }
190  }
191 
192  kappa = mm * nonlocalCumPlasticStrain + ( 1. - mm ) * localCumPlasticStrain;
193  status->setKappa_nl(nonlocalCumPlasticStrain);
194  status->setKappa_hat(kappa);
195 }
196 
197 Interface *
199 {
201  return static_cast< StructuralNonlocalMaterialExtensionInterface * >(this);
202  } else if ( type == NonlocalMaterialStiffnessInterfaceType ) {
203  return static_cast< NonlocalMaterialStiffnessInterface * >(this);
204  } else {
205  return NULL;
206  }
207 }
208 
209 
212 {
213  IRResultType result; // Required by IR_GIVE_FIELD macro
214 
216  if ( result != IRRT_OK ) return result;
217 
218  return RankineMat :: initializeFrom(ir);
219 }
220 
221 
222 void
224 {
227 }
228 
229 
230 
231 double
233 {
234  RankineMatNlStatus *nlStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
235  double nlKappa;
236  this->computeCumPlasticStrain(nlKappa, gp, tStep);
237  double dam, tempDam;
238  dam = nlStatus->giveDamage();
239  tempDam = this->computeDamageParam(nlKappa);
240  if ( tempDam < dam ) {
241  tempDam = dam;
242  }
243 
244  return tempDam;
245 }
246 
247 // this method is running over all neighboring Gauss points
248 // and computes the contribution of the nonlocal interaction to tangent stiffness
249 // it uses methods
250 // giveLocalNonlocalStiffnessContribution
251 // giveRemoteNonlocalStiffnessContribution
252 // the first one computes m*gprime*Btransposed*sigmaeff for the present point
253 // the second one computes Btransposed*eta for the neighboring point
254 // (where eta is the derivative of cum. plastic strain wrt final strain)
255 // THIS METHOD CAN BE USED IN THE SAME FORM FOR ALL NONLOCAL DAMAGE-PLASTIC MODELS
256 void
258  GaussPoint *gp, TimeStep *tStep)
259 {
260  double coeff;
261  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
262  auto list = status->giveIntegrationDomainList();
263  RankineMatNl *rmat;
264  FloatArray rcontrib, lcontrib;
265  IntArray loc, rloc;
266 
267  FloatMatrix contrib;
268 
269  if ( this->giveLocalNonlocalStiffnessContribution(gp, loc, s, lcontrib, tStep) == 0 ) {
270  return;
271  }
272 
273  for ( auto &lir: *list ) {
274  rmat = dynamic_cast< RankineMatNl * >( lir.nearGp->giveMaterial() );
275  if ( rmat ) {
276  rmat->giveRemoteNonlocalStiffnessContribution(lir.nearGp, rloc, s, rcontrib, tStep);
277  coeff = gp->giveElement()->computeVolumeAround(gp) * lir.weight / status->giveIntegrationScale();
278 
279  contrib.clear();
280  contrib.plusDyadUnsym(lcontrib, rcontrib, - 1.0 * coeff);
281  dest.assemble(loc, rloc, contrib);
282  }
283  }
284 }
285 
286 std :: vector< localIntegrationRecord > *
288 {
289  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
290  this->buildNonlocalPointTable(gp);
291  return status->giveIntegrationDomainList();
292 }
293 
294 
295 // computes m*gprime*Btransposed*sigmaeff for the given Gauss point
296 // and returns 0 of damage is not growing, 1 if it is growing
297 // (if damage is not growing, the contribution is not considered at all)
298 int
300  FloatArray &lcontrib, TimeStep *tStep)
301 {
302  int nrows, nsize;
303  double sum, nlKappa, damage, tempDamage;
304  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
305  StructuralElement *elem = static_cast< StructuralElement * >( gp->giveElement() );
306  FloatMatrix b;
307 
308  damage = status->giveDamage();
309  tempDamage = status->giveTempDamage();
310  if ( tempDamage <= damage ) {
311  return 0; // no contribution if damage is not growing
312  }
313 
314  elem->giveLocationArray(loc, s);
315  const FloatArray &stress = status->giveTempEffectiveStress();
316  elem->computeBmatrixAt(gp, b);
317  this->computeCumPlasticStrain(nlKappa, gp, tStep);
318  double factor = computeDamageParamPrime(nlKappa);
319  factor *= mm; // this factor is m*gprime
320  nrows = b.giveNumberOfColumns();
321  nsize = stress.giveSize();
322  lcontrib.resize(nrows);
323  // compute the product Btransposed*stress and multiply by factor
324  for ( int i = 1; i <= nrows; i++ ) {
325  sum = 0.0;
326  for ( int j = 1; j <= nsize; j++ ) {
327  sum += b.at(j, i) * stress.at(j);
328  }
329 
330  lcontrib.at(i) = sum * factor;
331  }
332 
333  return 1; // contribution will be considered
334 }
335 
336 // computes Btransposed*eta for the given Gauss point
337 // (where eta is the derivative of cum. plastic strain wrt final strain)
338 void
340  FloatArray &rcontrib, TimeStep *tStep)
341 {
342  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
343  StructuralElement *elem = static_cast< StructuralElement * >( gp->giveElement() );
344  elem->giveLocationArray(rloc, s);
345  FloatMatrix b;
346  elem->computeBmatrixAt(gp, b);
347  int ncols = b.giveNumberOfColumns();
348  rcontrib.resize(ncols);
349 
350  double kappa = status->giveCumulativePlasticStrain();
351  double tempKappa = status->giveTempCumulativePlasticStrain();
352  if ( tempKappa <= kappa ) {
353  rcontrib.zero();
354  return;
355  }
356 
357  double sum;
358  int nsize = 3;
359  FloatArray eta(3);
360  computeEta(eta, status);
361  for ( int i = 1; i <= ncols; i++ ) {
362  sum = 0.;
363  for ( int j = 1; j <= nsize; j++ ) {
364  sum += eta.at(j) * b.at(j, i);
365  }
366 
367  rcontrib.at(i) = sum;
368  }
369 }
370 
371 
372 int
374 {
375  if ( type == IST_CumPlasticStrain_2 ) {
376  answer.resize(1);
377  double dummy;
378  // this method also stores the nonlocal kappa in status ... kappa_nl
379  computeCumPlasticStrain(dummy, gp, tStep);
380  RankineMatNlStatus *status = static_cast< RankineMatNlStatus * >( this->giveStatus(gp) );
381  answer.at(1) = status->giveKappa_nl();
382  return 1;
383  } else if ( type == IST_MaxEquivalentStrainLevel ) {
384  answer.resize(1);
385  computeCumPlasticStrain(answer.at(1), gp, tStep);
386  return 1;
387  } else {
388  return RankineMat :: giveIPValue(answer, gp, type, tStep);
389  }
390 }
391 
392 
393 //*******************************
394 //*************status************
395 //*******************************
396 
399 {
401 }
402 
403 
405 { }
406 
407 
408 void
410 {
412  fprintf(file, "status { ");
413  fprintf(file, "damage %g, kappa %g, kappa_nl %g, kappa_hat %g", damage, kappa, kappa_nl, kappa_hat);
414 #ifdef keep_track_of_dissipated_energy
415  fprintf(file, ", dissW %g, freeE %g, stressW %g", this->dissWork, ( this->stressWork ) - ( this->dissWork ), this->stressWork);
416 #endif
417  fprintf(file, " }\n");
418 }
419 
420 void
422 //
423 // initializes temp variables according to variables form previous equlibrium state.
424 // builds new crackMap
425 //
426 {
428 }
429 
430 
431 void
433 //
434 // updates variables (nonTemp variables describing situation at previous equilibrium state)
435 // after a new equilibrium state has been reached
436 // temporary variables are having values corresponding to newly reched equilibrium.
437 //
438 {
440 }
441 
442 
445 //
446 // saves full information stored in this Status
447 // no temp variables stored
448 //
449 {
450  contextIOResultType iores;
451  // save parent class status
452  if ( ( iores = RankineMatStatus :: saveContext(stream, mode, obj) ) != CIO_OK ) {
453  THROW_CIOERR(iores);
454  }
455 
456  //if (!stream.write(&localEquivalentStrainForAverage,1)) THROW_CIOERR(CIO_IOERR);
457  return CIO_OK;
458 }
459 
462 //
463 // restores full information stored in stream to this Status
464 //
465 {
466  contextIOResultType iores;
467  // read parent class status
468  if ( ( iores = RankineMatStatus :: restoreContext(stream, mode, obj) ) != CIO_OK ) {
469  THROW_CIOERR(iores);
470  }
471 
472  // read raw data
473  //if (!stream.read (&localEquivalentStrainForAverage,1)) THROW_CIOERR(CIO_IOERR);
474 
475  return CIO_OK;
476 }
477 
478 Interface *
480 {
482  return static_cast< StructuralNonlocalMaterialStatusExtensionInterface * >(this);
483  } else {
485  }
486 }
487 
488 
489 int
491 {
492  RankineMatNlStatus *nlStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(ip) );
493 
494  this->buildNonlocalPointTable(ip);
495  this->updateDomainBeforeNonlocAverage(tStep);
496 
497  return buff.write( nlStatus->giveLocalCumPlasticStrainForAverage() );
498 }
499 
500 int
502 {
503  int result;
504  RankineMatNlStatus *nlStatus = static_cast< RankineMatNlStatus * >( this->giveStatus(ip) );
506 
507  result = buff.read(localCumPlasticStrainForAverage);
508  nlStatus->setLocalCumPlasticStrainForAverage(localCumPlasticStrainForAverage);
509  return result;
510 }
511 
512 int
514 {
515  // Note: nlStatus localStrainVectorForAverage memeber must be properly sized!
516  // IDNLMaterialStatus *nlStatus = (IDNLMaterialStatus*) this -> giveStatus (ip);
517  return buff.givePackSizeOfDouble(1);
518 }
519 
520 } // end namespace oofem
void computeWork_1d(GaussPoint *gp, double gf)
Definition: rankinemat.C:907
double computeDamage(GaussPoint *gp, TimeStep *tStep)
Definition: rankinematnl.C:232
int giveLocalNonlocalStiffnessContribution(GaussPoint *gp, IntArray &loc, const UnknownNumberingScheme &s, FloatArray &lcontrib, TimeStep *tStep)
Computes the "local" part of nonlocal stiffness contribution assembled for given integration point...
Definition: rankinematnl.C:299
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
Abstract base class for all nonlocal structural materials.
int giveNumberOfColumns() const
Returns number of columns of receiver.
Definition: floatmatrix.h:158
This class implements an isotropic elastoplastic material with Rankine yield condition, associated flow rule and linear isotropic softening, and with isotropic damage that leads to softening.
Definition: rankinemat.h:85
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
Definition: structuralms.h:137
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: rankinemat.C:776
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
Definition: material.C:244
void updateDomainBeforeNonlocAverage(TimeStep *tStep)
Updates data in all integration points before nonlocal average takes place.
Class and object Domain.
Definition: domain.h:115
virtual int assemble(const IntArray &loc, const FloatMatrix &mat)=0
Assembles sparse matrix from contribution of local elements.
void setLocalCumPlasticStrainForAverage(double ls)
Definition: rankinematnl.h:67
Base class for all matrices stored in sparse format.
Definition: sparsemtrx.h:60
double giveTempCumulativePlasticStrain()
Definition: rankinemat.h:254
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double damage
Damage (initial).
Definition: rankinemat.h:225
void evaluatePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep, double gprime)
Executive method used by local and gradient version.
Definition: rankinemat.C:521
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: rankinematnl.C:211
double sig0
Initial (uniaxial) yield stress.
Definition: rankinemat.h:107
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
const FloatArray & giveTempEffectiveStress() const
Definition: rankinemat.h:269
virtual int estimatePackSize(DataStream &buff, GaussPoint *ip)
Estimates the necessary pack size to hold all packed data of receiver.
Definition: rankinematnl.C:513
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
Definition: rankinemat.C:650
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Definition: rankinemat.C:835
RankineMatNlStatus(int n, Domain *d, GaussPoint *g)
Definition: rankinematnl.C:397
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: rankinematnl.C:421
void buildNonlocalPointTable(GaussPoint *gp)
Builds list of integration points which take part in nonlocal average in given integration point...
Element * giveElement()
Returns corresponding element to receiver.
Definition: gausspoint.h:188
ScalingType scaling
Parameter specifying the type of scaling of nonlocal weight function.
LinearElasticMaterial * giveLinearElasticMaterial()
Returns a reference to the basic elastic material.
Definition: rankinemat.h:163
std::vector< localIntegrationRecord > * giveIntegrationDomainList()
Returns integration list of receiver.
void setKappa_nl(double kap)
Definition: rankinematnl.h:75
double stressWork
Density of total work done by stresses on strain increments.
Definition: rankinemat.h:235
void plusDyadUnsym(const FloatArray &a, const FloatArray &b, double dV)
Adds to the receiver the product .
Definition: floatmatrix.C:811
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Definition: structuralms.C:73
Class implementing an array of integers.
Definition: intarray.h:61
virtual int read(int *data, int count)=0
Reads count integer values into array pointed by data.
MatResponseMode
Describes the character of characteristic material matrix.
#define THROW_CIOERR(e)
Definition: contextioerr.h:61
double kappa_nl
For printing only.
Definition: rankinematnl.h:56
IRResultType initializeFrom(InputRecord *ir)
void computeWork_PlaneStress(GaussPoint *gp, double gf)
Computes the increment of total stress work and of dissipated work (gf is the dissipation density per...
Definition: rankinemat.C:879
virtual std::vector< localIntegrationRecord > * NonlocalMaterialStiffnessInterface_giveIntegrationDomainList(GaussPoint *gp)
Returns integration list of receiver.
Definition: rankinematnl.C:287
virtual int write(const int *data, int count)=0
Writes count integer values from array pointed by data.
void beScaled(double s, const FloatArray &b)
Sets receiver to be .
Definition: floatarray.C:146
virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane stress stiffness matrix of receiver.
Definition: rankinematnl.C:102
Abstract base class for all "structural" finite elements.
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
Definition: element.h:518
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: rankinemat.C:755
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Definition: rankinematnl.C:461
#define OOFEM_ERROR(...)
Definition: error.h:61
virtual void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep)
Declares the service updating local variables in given integration points, which take part in nonloca...
Definition: rankinematnl.C:139
Class Nonlocal Material Stiffness Interface.
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Returns the location array (array of code numbers) of receiver for given numbering scheme...
Definition: element.C:390
void times(double f)
Multiplies receiver by factor f.
Definition: floatmatrix.C:1594
std::vector< localIntegrationRecord > * giveIPIntegrationList(GaussPoint *gp)
Returns integration list corresponding to given integration point.
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
virtual void computeCumPlasticStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
Computes the nonlocal cumulated plastic strain from its local form.
Definition: rankinematnl.C:160
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: rankinematnl.C:432
double at(int i, int j) const
Coefficient access function.
Definition: floatmatrix.h:176
RankineMatNl(int n, Domain *d)
Definition: rankinematnl.C:50
double giveCumulativePlasticStrain()
Definition: rankinemat.h:253
double giveLocalCumPlasticStrainForAverage()
Definition: rankinematnl.h:65
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
Definition: rankinematnl.C:373
Rankine nonlocal material.
Definition: rankinematnl.h:90
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: rankinematnl.C:223
void setTempDamage(double value)
Definition: rankinemat.h:284
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain)
Definition: rankinemat.C:283
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual int givePackSizeOfDouble(int count)=0
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
Definition: structuralms.h:135
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Definition: rankinemat.C:793
double mm
For "undernonlocal" or "overnonlocal" formulation.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Definition: rankinematnl.C:409
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
Definition: rankinematnl.C:198
Rankine nonlocal material status.
Definition: rankinematnl.h:49
Class representing the general Input Record.
Definition: inputrecord.h:101
Base class for all nonlocal structural material statuses.
virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip)
Unpack and updates all necessary data of given integration point (according to element parallel_mode)...
Definition: rankinematnl.C:501
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Definition: rankinematnl.C:444
Class Interface.
Definition: interface.h:82
virtual void NonlocalMaterialStiffnessInterface_addIPContribution(SparseMtrx &dest, const UnknownNumberingScheme &s, GaussPoint *gp, TimeStep *tStep)
Computes and adds IP contributions to destination matrix.
Definition: rankinematnl.C:257
void zero()
Zeroes all coefficients of receiver.
Definition: floatarray.C:658
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
Definition: rankinematnl.C:479
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: rankinemat.C:81
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
Definition: femcmpnn.h:179
Class representing the a dynamic Input Record.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)=0
Computes the geometrical matrix of receiver in given integration point.
double computeDamageParamPrime(double tempKappa)
Definition: rankinemat.C:453
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
double E
Young&#39;s modulus.
Definition: rankinemat.h:92
double kappa
Cumulative plastic strain (initial).
Definition: rankinemat.h:212
double localCumPlasticStrainForAverage
Equivalent strain for averaging.
Definition: rankinematnl.h:53
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
double giveIntegrationScale()
Returns associated integration scale.
double computeDamageParam(double tempKappa)
Definition: rankinemat.C:436
double dissWork
Density of dissipated work.
Definition: rankinemat.h:239
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
REGISTER_Material(DummyMaterial)
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.
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Definition: floatmatrix.h:516
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
Definition: material.C:267
void computeEta(FloatArray &answer, RankineMatStatus *status)
Computes derivatives of final kappa with respect to final strain.
Definition: rankinemat.C:612
void computeLocalCumPlasticStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
Definition: rankinematnl.h:117
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
Definition: rankinematnl.C:57
Class representing integration point in finite element program.
Definition: gausspoint.h:93
virtual int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip)
Pack all necessary data of integration point (according to element parallel_mode) into given communic...
Definition: rankinematnl.C:490
Class representing solution step.
Definition: timestep.h:80
void giveRemoteNonlocalStiffnessContribution(GaussPoint *gp, IntArray &rloc, const UnknownNumberingScheme &s, FloatArray &rcontrib, TimeStep *tStep)
Computes the "remote" part of nonlocal stiffness contribution assembled for given integration point...
Definition: rankinematnl.C:339
void setKappa_hat(double kap)
Definition: rankinematnl.h:76
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
Definition: rankinematnl.C:79
void giveInputRecord(DynamicInputRecord &input)
Stores receiver in an input record.
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:31 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011