OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
intmatbilinczfagerstrom.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 
36 #include "gausspoint.h"
37 #include "floatmatrix.h"
38 #include "floatarray.h"
39 #include "mathfem.h"
40 #include "datastream.h"
41 #include "contextioerr.h"
42 #include "classfactory.h"
44 #include "dynamicinputrecord.h"
45 
46 
47 namespace oofem {
48 
49 REGISTER_Material( IntMatBilinearCZFagerstrom );
50 
51 
53 
55 
56 
57 void
59  const FloatMatrix &F, TimeStep *tStep)
60 {
62  // returns vector in 3d stress space of receiver according to
63  // previous level of stress and current
64  // strain increment, the only way, how to correctly update gp records
65 
67 
68  FloatMatrix Finv;
69  Finv.beInverseOf(F);
70  status->letTempInverseDefGradBe(Finv);
71 
72  FloatArray dJ;
73  dJ.beProductOf(Finv,d);
74  status->letTempMaterialJumpBe(dJ);
75 
76 
77  double oldDamage = status->giveDamage();
78  double dAlpha = 0.0;
79  FloatArray Qold(3), Qtemp(3), Qtemp_comp(3);
80  Qtemp.zero();
81  Qtemp_comp.zero();
82 
83  if ( dJ.at(3) < 0 ) {
84  Qtemp_comp.at(3) = this->knc*dJ.at(3);
85  }
86 
87 
88  // SUBROUTINE stress_damage_XFEM_direct_Mandel(dJ,N,Qold,old_alpha,Fci,Q,Ea,new_alpha,adtim,dalpha_new,dalpha_old,diss,sig_f,fall);
89  if (oldDamage < 0.99) {
90 
91  FloatArray Qtrial = status->giveEffectiveMandelTraction();
92 
93  FloatMatrix Kstiff(3,3);
94  FloatArray help;
95 
96  Kstiff.zero();
97  Kstiff.at(1,1) = this->ks0;
98  Kstiff.at(2,2) = this->ks0;
99  Kstiff.at(3,3) = this->kn0;
100 
101  dJ.subtract(status->giveOldMaterialJump());
102  help.beProductOf(Kstiff,dJ);
103  Qtrial.add(help);
104 
105  double Qn = Qtrial.at(3);
106  FloatArray QN(3);
107  QN.zero();
108  QN.at(3) = Qn;
109 
110  FloatArray QtrialShear;
111 
112  QtrialShear = Qtrial;
113  QtrialShear.subtract(QN);
114 
115  double Qt = QtrialShear.computeNorm();
116  double sigf = this->sigf;
117  double gamma = this->gamma;
118  double mu = this->mu;
119 
120  double S = (this->GIc - pow(sigf,2)/(2*this->kn0))/sigf;
121  double gammaGf = gamma*(this->GIIc - pow(gamma*sigf,2)/(2*this->ks0))/(this->GIc - pow(sigf,2)/(2*this->kn0));
122 
123  double Qn_M = 0.5*(Qn + fabs(Qn));
124  double loadFun = sigf*pow(Qt/(gamma*sigf),2) + (sigf/gamma)*(gamma-mu)*pow((Qn_M/sigf),2) - 1/gamma*(gamma*sigf-mu*Qn); // Added support for parameter mu
125 
126  Qold = status->giveEffectiveMandelTraction();
127  Qtemp = Qtrial;
128 
129  if ( loadFun/sigf < 1e-7 ) {
130  dAlpha = 0.0; // new_alpha=old_alpha
131  status->letTempEffectiveMandelTractionBe(Qtemp);
132  Qtemp.times(1-oldDamage);
133  } else {
134  // dalpha = datr
135  double Qt1,Qt2;
136  Qt1 = Qtemp.at(1);
137  Qt2 = Qtemp.at(2);
138 
139  FloatArray M(3); // M = (/2*Q_t/(sig_f*gamma**2), 2*Q_n/sig_f, 0.d0/)
140  M.at(1) = 2*Qt1/(pow(gamma,2)*sigf); // Qt = sqrt(Qt1^2 + Qt2^2)
141  M.at(2) = 2*Qt2/(pow(gamma,2)*sigf);
142  M.at(3) = 2*Qn_M/sigf;
143 
144  FloatArray dJElastic;
145  dJElastic = dJ; // dJtn_e(1:2) = dJtn_v(1:2) - S*dalpha*M(1:2)
146  dJElastic.add(-S*dAlpha, M);
147 
148  FloatMatrix Smat(4,4), Smati(4,4);
149  FloatArray R(4), inc(4);
150 
151  const double errorTol = 0.0001;
152  for( int iter = 1; fabs(loadFun)/sigf > errorTol; iter++) {
153  //printf("loadfun = %e \n",loadFun);
154  if (iter>40) {
155  OOFEM_ERROR("BilinearCZMaterialFagerstrom :: giveRealStressVector - no convergence in constitutive driver");
156  }
157  status->letTempDamageDevBe(true);
158  Smat.zero(); // S_mat=0.d0
159 
160  R.at(1) = dJElastic.at(1) - (dJ.at(1) - gammaGf*S*dAlpha*M.at(1)); // R(1:2) = dJtn_e(1:2) - (dJtn_v(1:2) - S*dalpha*M(1:2))
161  R.at(2) = dJElastic.at(2) - (dJ.at(2) - gammaGf*S*dAlpha*M.at(2));
162  R.at(3) = dJElastic.at(3) - (dJ.at(3) - S*dAlpha*M.at(3));
163  R.at(4) = loadFun; // R(3) = F/sig_f
164 
165  Smat.at(1,1) = 1.0 + gammaGf*dAlpha*S*2*Kstiff.at(1,1)/(pow(gamma,2)*sigf); // S_mat(1:2,1:2) = eye3(1:2,1:2)+ dalpha*S*dMdJtn_e(1:2,1:2)
166  Smat.at(2,2) = 1.0 + gammaGf*dAlpha*S*2*Kstiff.at(2,2)/(pow(gamma,2)*sigf);
167  //dJElastic.printYourself();
168  if (Qn_M>0) {
169  Smat.at(3,3) = 1.0 + dAlpha*S*2*Kstiff.at(3,3)/(sigf);
170  } else {
171  Smat.at(3,3) = 1.0;
172  }
173 
174  Smat.at(1,4) = gammaGf*S*M.at(1); // S_mat(1:2,3) = S*M(1:2)
175  Smat.at(2,4) = gammaGf*S*M.at(2);
176  Smat.at(3,4) = S*M.at(3);
177 
178  Smat.at(4,1) = M.at(1)*Kstiff.at(1,1); // S_mat(3,1:2) = MATMUL(M(1:2),Keye3(1:2,1:2))
179  Smat.at(4,2) = M.at(2)*Kstiff.at(2,2);
180  //Smat.at(4,3) = M.at(3)*Kstiff.at(3,3);
181  Smat.at(4,3) = (2*(gamma-mu)/(gamma*sigf)*Qn_M + mu/gamma)*Kstiff.at(3,3); //Martin: included parameter mu
182 
183  //FloatArray inc;
184  //bool transpose = false;
185  //Smat.SolveforRhs(R, inc, transpose);
186 
187  Smati.beInverseOf(Smat);
188 
189  inc.beProductOf(Smati,R);
190 
191  dJElastic.at(1) -= inc.at(1);
192  dJElastic.at(2) -= inc.at(2);
193  dJElastic.at(3) -= inc.at(3);
194  dAlpha = dAlpha - inc.at(4);
195 
196  Qtemp.at(1) = Qold.at(1) + Kstiff.at(1,1)*dJElastic.at(1);
197  Qtemp.at(2) = Qold.at(2) + Kstiff.at(2,2)*dJElastic.at(2);
198  Qtemp.at(3) = Qold.at(3) + Kstiff.at(3,3)*dJElastic.at(3);
199 
200  Qt1 = Qtemp.at(1);
201  Qt2 = Qtemp.at(2);
202  Qt = sqrt(pow(Qt1,2) + pow(Qt2,2));
203  Qn = Qtemp.at(3); // Martin: included parameter mu
204  Qn_M = 0.5*(Qtemp.at(3)+fabs(Qtemp.at(3)));
205 
206  M.at(1) = 2*Qt1/(pow(gamma,2)*sigf); // Qt = sqrt(Qt1^2 + Qt2^2)
207  M.at(2) = 2*Qt2/(pow(gamma,2)*sigf);
208  M.at(3) = 2*Qn_M/sigf;
209 
210  //loadFun = sigf*pow(Qt/(gamma*sigf),2) + sigf*pow((Qn_M/sigf),2) - sigf;
211  loadFun = sigf*pow(Qt/(gamma*sigf),2) + (sigf/gamma)*(gamma-mu)*pow((Qn_M/sigf),2) - 1/gamma*(gamma*sigf-mu*Qn); //Martin: included parameter mu
212  }
213  //printf("converged, loadfun = %e, oldDamage = %e \n",loadFun, oldDamage);
214 
215  if (oldDamage + dAlpha > 1) {
216  dAlpha = 1. - oldDamage;
217  }
218 
219  FloatMatrix Iep(3,3);
220  IntArray Indx(3);
221  Indx.at(1) = 1;
222  Indx.at(2) = 2;
223  Indx.at(3) = 3;
224 
225  Iep.beSubMatrixOf(Smati,Indx,Indx);
226  status->letTempIepBe(Iep);
227 
228  FloatArray alpha_v(3);
229  alpha_v.at(1) = Smati.at(4,1); // alpha_v(1:2) = S_mati(3,1:2)
230  alpha_v.at(2) = Smati.at(4,2);
231  alpha_v.at(3) = Smati.at(4,3);
232 
233  status->letTempAlphavBe(alpha_v);
234  status->letTempEffectiveMandelTractionBe(Qtemp);
235  Qtemp.times(1-oldDamage-dAlpha);
236 
237  }
238 
239  //Qtemp.rotatedWith(Rot,'t'); // Q=Qe
240  //status->letTempRotationMatrix(Rot);
241  } else {
242  dAlpha = 1.0 - oldDamage;
243  dJ = status->giveTempJump();
244  status->letTempEffectiveMandelTractionBe(Qtemp); // SHOULD NEVER BE USED!!
245  //if (dJ.at(3)<0) {
246  // Qtemp.at(3) = kn0*dJ.at(3);
247  //}
248  }
249 
250  Qtemp.add(Qtemp_comp);
251 
252 
253  answer.beTProductOf(Finv, Qtemp); // t_1_hat = MATMUL(TRANSPOSE(Fci),Q)
254  //answer.times(1-oldDamage-dAlpha); // t1_s = (1-al)*t_1_hat
255 
256 
257  status->letTempDamageBe(oldDamage + dAlpha);
258  //status->letTempEffectiveMandelTractionBe(Qtemp); // NEW!
259 
260  status->letTempJumpBe(d);
261  status->letTempFirstPKTractionBe(answer);
262  status->letTempFBe(F);
263 }
264 
265 
266 void
267 
269 {
270  IntMatBilinearCZFagerstromStatus *status = static_cast< IntMatBilinearCZFagerstromStatus * >( this->giveStatus(gp) );
271 
272  if (status->giveOldDamageDev()) {
273  answer = status->giveOlddTdJ();
274  //answer.printYourself();
275  status->letOldDamageDevBe(false);
276  } else {
277 
278  double damage = status->giveTempDamage();
279  const FloatMatrix &Finv = status->giveTempInverseDefGrad();
280  const FloatArray &J = status->giveTempJump();
281  FloatMatrix help;
282  FloatMatrix Kstiff(3,3);
283 
284  //FloatMatrix Rot = status->giveTempRotationMatrix();
285  Kstiff.zero();
286  Kstiff.at(1,1) = this->ks0;
287  Kstiff.at(2,2) = this->ks0;
288  Kstiff.at(3,3) = this->kn0;
289  //Kstiff.rotatedWith(Rot);
290 
291  if ( damage >= 1.0 ) {
292  answer.resize(3,3);
293  answer.zero();
294  if ( J.at(3) < 0 ) {
295  Kstiff.at(1,1) = 0.0;
296  Kstiff.at(2,2) = 0.0;
297  Kstiff.at(3,3) = this->knc;
298  help.beProductOf(Kstiff, Finv);
299  answer.beTProductOf(Finv, help);
300  //printf("fully damaged");
301  //answer.printYourself();
302  }
303  } else {
304 
305  if ( status->giveTempDamage() - status->giveDamage()==0.0 ) {
306 
307  if ( J.at(3) < 0 ) {
308  Kstiff.at(3,3) = Kstiff.at(3,3) + (this->knc)/(1-damage);
309  }
310 
311  help.beProductOf(Kstiff, Finv);
312  answer.beTProductOf(Finv, help);
313  answer.times(1-damage); // Ea=(1-new_alpha)*MATMUL(TRANSPOSE(Fci),MATMUL(Keye3,Fci))
314 
315  //printf("elastic step");
316  } else {
317 
318  FloatMatrix Iep = status->giveTempIep();
319  //Iep.ourselfourself();
320 
321  //if (J.at(3)<0) {
322  //Kstiff.at(1,1) = (1-damage)*Kstiff.at(1,1);
323  //Kstiff.at(2,2) = (1-damage)*Kstiff.at(2,2);
324  //Kstiff.at(3,3) = Kstiff.at(3,3);
325  //} else {
326  //Kstiff.times((1-damage));
327  //}
328 
329  Kstiff.times((1-damage));
330  answer.beProductOf(Kstiff, Iep);
331  //answer.rotatedWith(Rot);
332  // Ea_h = MATMUL(TRANSPOSE(Rot),MATMUL(Keye3,Iep))
333  // Ea_h = MATMUL(Ea_h,Rot)
334 
335  FloatArray alpha_v = status->giveTempAlphav();
336  //alpha_v.rotatedWith(Rot, 't'); // alpha_v = MATMUL(TRANSPOSE(Rot),alpha_v)
337 
338  FloatMatrix t1hatFinvOpen;
339  FloatArray temp1, temp2, Qtemp;
340  Qtemp = status->giveTempEffectiveMandelTraction();
341 
342  temp1.beTProductOf(Finv,Qtemp); // CALL gmopen33(MATMUL(TRANSPOSE(Fci),Q),MATMUL(alpha_v,Fci),t1halFci_o)
343  temp2.beTProductOf(Finv,alpha_v);
344 
345  t1hatFinvOpen.beDyadicProductOf(temp1,temp2);
346 
347  if ( J.at(3) < 0 ) {
348  answer.at(3,3) = answer.at(3,3) + this->knc;
349  }
350 
351  //printf("plastic step");
352  help.beProductOf(answer, Finv); // Ea = (1-new_alpha)*MATMUL(TRANSPOSE(Fci),MATMUL(Ea_h,Fci)) -&
353  answer.beTProductOf(Finv, help); // t1halFci_o
354  answer.subtract(t1hatFinvOpen);
355  }
356  }
357  }
358  status->letTempdTdJBe(answer);
359 
360 }
361 
362 int
364 {
365  IntMatBilinearCZFagerstromStatus *status = static_cast< IntMatBilinearCZFagerstromStatus * >( this->giveStatus(gp) );
366  if ( type == IST_DamageScalar ) {
367  answer.resize(1);
368  answer.at(1) = status->giveDamage();
369  return 1;
370  } else {
371  return StructuralInterfaceMaterial :: giveIPValue(answer, gp, type, tStep);
372  }
373 
374 }
375 
376 //const double tolerance = 1.0e-12; // small number
379 {
380  IRResultType result; // Required by IR_GIVE_FIELD macro
381 
383  this->knc = kn0; // Defaults to the same stiffness in compression and tension
385 
386  this->ks0 = kn0; // Defaults to kn0
388 
390 
391  this->GIIc = GIc; //Defaults to GIc
393 
395 
397 
399 
401  if ( result != IRRT_OK ) return result;
402 
403  // check validity of the material paramters
404  if ( this->kn0 < 0.0 ) {
405  OOFEM_WARNING("Stiffness kn0 is negative (%.2e)", this->kn0);
406  return IRRT_BAD_FORMAT;
407  } else if ( this->ks0 < 0.0 ) {
408  OOFEM_WARNING("Stiffness ks0 is negative (%.2e)", this->ks0);
409  return IRRT_BAD_FORMAT;
410  } else if ( this->GIc < 0.0 ) {
411  OOFEM_WARNING("GIc is negative (%.2e)", this->GIc);
412  return IRRT_BAD_FORMAT;
413  } else if ( this->GIIc < 0.0 ) {
414  OOFEM_WARNING("GIIc is negative (%.2e)", this->GIIc);
415  return IRRT_BAD_FORMAT;
416  } else if ( this->gamma < 0.0 ) {
417  OOFEM_WARNING("gamma (%.2e) is below zero which is unphysical",
418  this->gamma);
419  return IRRT_BAD_FORMAT;
420  }
421  return IRRT_OK;
422 }
423 
425 {
427 
431 
434 
438 
439 }
440 
441 int
443 {
444  return 1;
445 }
446 
447 void
449 {
450  printf("Parameters for BilinearCZMaterial: \n");
451 
452  printf("-Strength paramters \n");
453  printf(" sigf = %e \n", this->sigf);
454  printf(" GIc = %e \n", this->GIc);
455  printf(" GIIc = %e \n", this->GIIc);
456  printf(" gamma = sigfs/sigfn = %e \n", this->gamma);
457  printf(" mu = %e \n", this->mu);
458 
459  printf("-Stiffness parameters \n");
460  printf(" kn0 = %e \n", this->kn0);
461  printf(" ks0 = %e \n", this->ks0);
462  printf(" knc = %e \n", this->knc);
463 
464 }
465 
466 
468 {
472 
473  damage = tempDamage = 0.0;
474 
477 
478  tempFInv.resize(3,3);
480 
481  old_dTdJ.resize(3,3);
482 
483  oldDamageDev = false;
484 
485  Iep = tempFInv;
487 }
488 
489 
491 { }
492 
493 
494 void
496 {
499  /*
500  fprintf(file, "status { ");
501  if ( this->damage > 0.0 ) {
502  fprintf(file, "kappa %f, damage %f ", this->kappa, this->damage);
503  }
504 
505  fprintf(file, "}\n");
506  */
507 }
508 
509 
510 void
512 {
514 
516  tempDamage = damage;
518 
519  tempFInv.resize(3,3);
521 
522  Iep = tempFInv;
524 
525  tempDamageDev = false;
526 }
527 
528 void
530 {
532  damage = tempDamage;
537 }
538 
539 
540 } // end namespace oofem
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
void setField(int item, InputFieldType id)
void subtract(const FloatArray &src)
Subtracts array src to receiver.
Definition: floatarray.C:258
void letTempFBe(FloatMatrix v)
Assigns tempFVector to given vector v.
virtual void give3dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
Definition: material.C:244
Class and object Domain.
Definition: domain.h:115
#define _IFT_IntMatBilinearCZFagerstrom_mu
virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
void beSubMatrixOf(const FloatMatrix &src, int topRow, int bottomRow, int topCol, int bottomCol)
Assigns to the receiver the sub-matrix of another matrix.
Definition: floatmatrix.C:962
#define _IFT_IntMatBilinearCZFagerstrom_g1c
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
#define _IFT_IntMatBilinearCZFagerstrom_sigf
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
void printYourself()
Prints receiver state on stdout. Useful for debugging.
#define S(p)
Definition: mdm.C:481
Class implementing an array of integers.
Definition: intarray.h:61
int & at(int i)
Coefficient access function.
Definition: intarray.h:103
MatResponseMode
Describes the character of characteristic material matrix.
#define _IFT_IntMatBilinearCZFagerstrom_kn
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual ~IntMatBilinearCZFagerstrom()
Destructor.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
#define _IFT_IntMatBilinearCZFagerstrom_ks
#define OOFEM_ERROR(...)
Definition: error.h:61
#define _IFT_IntMatBilinearCZFagerstrom_g2c
#define _IFT_IntMatBilinearCZFagerstrom_knc
void letTempJumpBe(FloatArray v)
Assigns tempJump to given vector v.
void times(double f)
Multiplies receiver by factor f.
Definition: floatmatrix.C:1594
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
Definition: floatarray.C:676
This class implements a structural interface material status information.
#define _IFT_IntMatBilinearCZFagerstrom_gamma
void beTProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix^T and anArray.
Definition: floatarray.C:708
double at(int i, int j) const
Coefficient access function.
Definition: floatmatrix.h:176
IntMatBilinearCZFagerstromStatus(int n, Domain *d, GaussPoint *g)
Constructor.
void letTempFirstPKTractionBe(FloatArray v)
Assigns tempFirstPKTraction to given vector v.
void subtract(const FloatMatrix &a)
Subtracts matrix from the receiver.
Definition: floatmatrix.C:1084
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
IntMatBilinearCZFagerstrom(int n, Domain *d)
Constructor.
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.
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
double computeNorm() const
Computes the norm (or length) of the vector.
Definition: floatarray.C:840
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
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 beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
Definition: floatmatrix.C:367
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing the a dynamic Input Record.
void zero()
Zeroes all coefficient of receiver.
Definition: floatmatrix.C:1326
void beUnitMatrix()
Sets receiver to unity matrix.
Definition: floatmatrix.C:1332
REGISTER_Material(DummyMaterial)
#define IR_GIVE_OPTIONAL_FIELD(__ir, __value, __id)
Macro facilitating the use of input record reading methods.
Definition: inputrecord.h:78
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
Definition: floatmatrix.C:337
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Abstract base class for all "structural" interface models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
This class implements associated Material Status for IntMatBilinearCZFagerstrom.
#define IR_GIVE_FIELD(__ir, __value, __id)
Macro facilitating the use of input record reading methods.
Definition: inputrecord.h:69
const FloatArray & giveTempJump() const
Returns the const pointer to receiver&#39;s temporary jump.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
void beInverseOf(const FloatMatrix &src)
Modifies receiver to become inverse of given parameter.
Definition: floatmatrix.C:835
Class representing integration point in finite element program.
Definition: gausspoint.h:93
#define OOFEM_WARNING(...)
Definition: error.h:62
Class representing solution step.
Definition: timestep.h:80
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
void add(const FloatArray &src)
Adds array src to receiver.
Definition: floatarray.C:156
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:29 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011