OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
trplanstrss.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 
36 #include "fei2dtrlin.h"
37 #include "node.h"
38 #include "crosssection.h"
39 #include "gausspoint.h"
40 #include "gaussintegrationrule.h"
41 #include "floatmatrix.h"
42 #include "floatarray.h"
43 #include "intarray.h"
44 #include "mathfem.h"
45 #include "classfactory.h"
46 
47 #ifdef __OOFEG
48  #include "oofeggraphiccontext.h"
49  #include "oofegutils.h"
50  #include "Materials/rcm2.h"
51 #endif
52 
53 namespace oofem {
54 REGISTER_Element(TrPlaneStress2d);
55 
56 FEI2dTrLin TrPlaneStress2d :: interp(1, 2);
57 
63 {
64  numberOfDofMans = 3;
65  area = -1;
67 }
68 
70 
71 Interface *
73 {
74  if ( interface == ZZNodalRecoveryModelInterfaceType ) {
75  return static_cast< ZZNodalRecoveryModelInterface * >(this);
76  } else if ( interface == NodalAveragingRecoveryModelInterfaceType ) {
77  return static_cast< NodalAveragingRecoveryModelInterface * >(this);
78  } else if ( interface == SPRNodalRecoveryModelInterfaceType ) {
79  return static_cast< SPRNodalRecoveryModelInterface * >(this);
80  } else if ( interface == SpatialLocalizerInterfaceType ) {
81  return static_cast< SpatialLocalizerInterface * >(this);
82  } else if ( interface == ZZErrorEstimatorInterfaceType ) {
83  return static_cast< ZZErrorEstimatorInterface * >(this);
84  } else if ( interface == HuertaErrorEstimatorInterfaceType ) {
85  return static_cast< HuertaErrorEstimatorInterface * >(this);
86  }
87 
88  return NULL;
89 }
90 
91 double
93 // returns the area occupied by the receiver
94 {
95  if ( area > 0 ) {
96  return area; // check if previously computed
97  }
98 
99  return ( area = fabs( this->interp.giveArea( FEIElementGeometryWrapper(this) ) ) );
100 }
101 
102 
103 double
105 //
106 // returns receiver's characteristic size at gp (for some material models)
107 // for crack formed in plane with normal normalToCrackPlane
108 // using the selected method
109 //
110 {
111  if ( method == ECSM_SquareRootOfArea ) {
112  // square root of element area
113  return sqrt( this->giveArea() );
114  }
115 
116  if ( ( method == ECSM_Projection ) || ( method == ECSM_ProjectionCentered ) ) {
117  // projection method (standard or modified - no difference for constant-strain element)
118  return this->giveCharacteristicLength(normalToCrackPlane);
119  }
120 
121  if ( ( method == ECSM_Oliver1 ) || ( method == ECSM_Oliver1modified ) || ( method == ECSM_Oliver2 ) ) {
122  // method based on derivative of auxiliary function phi
123  // in the maximum principal strain direction
124  // (standard or modified - no difference for constant-strain element)
125 
126  // nodal coordinates and coordinates of the element center
127  FloatArray x(3), y(3);
128  double cx = 0., cy = 0.;
129  for ( int i = 1; i <= 3; i++ ) {
130  x.at(i) = giveNode(i)->giveCoordinate(1);
131  y.at(i) = giveNode(i)->giveCoordinate(2);
132  cx += x.at(i);
133  cy += y.at(i);
134  }
135 
136  cx /= 3.;
137  cy /= 3.;
138 
139  // nodal values of function phi (0 or 1)
140  FloatArray phi(3);
141  for ( int i = 1; i <= 3; i++ ) {
142  if ( ( ( x.at(i) - cx ) * normalToCrackPlane.at(1) + ( y.at(i) - cy ) * normalToCrackPlane.at(2) ) > 0. ) {
143  phi.at(i) = 1.;
144  } else {
145  phi.at(i) = 0.;
146  }
147  }
148 
149  // derivatives of shape functions wrt global coordinates
150  FloatMatrix dnx(3, 2);
151  dnx.at(1, 1) = y.at(2) - y.at(3);
152  dnx.at(2, 1) = y.at(3) - y.at(1);
153  dnx.at(3, 1) = y.at(1) - y.at(2);
154  dnx.at(1, 2) = x.at(3) - x.at(2);
155  dnx.at(2, 2) = x.at(1) - x.at(3);
156  dnx.at(3, 2) = x.at(2) - x.at(1);
157  dnx.times( 1. / ( 2. * giveArea() ) );
158 
159  // gradient of function phi
160  FloatArray gradPhi(2);
161  gradPhi.zero();
162  for ( int i = 1; i <= 3; i++ ) {
163  gradPhi.at(1) += phi.at(i) * dnx.at(i, 1);
164  gradPhi.at(2) += phi.at(i) * dnx.at(i, 2);
165  }
166 
167  // scalar product of the gradient with crack normal
168  double dPhidN = 0.;
169  for ( int i = 1; i <= 2; i++ ) {
170  dPhidN += gradPhi.at(i) * normalToCrackPlane.at(i);
171  }
172 
173  if ( dPhidN == 0. ) {
174  OOFEM_ERROR("Zero value of dPhidN");
175  }
176 
177  return 1. / fabs(dPhidN);
178  }
179 
180  OOFEM_ERROR("invalid method");
181  return 0.;
182 }
183 
184 
185 void
187  InternalStateType type, TimeStep *tStep)
188 {
189  GaussPoint *gp = integrationRulesArray [ 0 ]->getIntegrationPoint(0);
190  this->giveIPValue(answer, gp, type, tStep);
191 }
192 
193 
194 
195 void
197  IntArray &localNodeIdArray, IntArray &globalNodeIdArray,
199  int &localNodeId, int &localElemId, int &localBcId,
200  IntArray &controlNode, IntArray &controlDof,
202 {
203  int inode, nodes = 3, iside, sides = 3, nd1, nd2;
204  FloatArray *corner [ 3 ], midSide [ 3 ], midNode, cor [ 3 ];
205  double x = 0.0, y = 0.0;
206 
207  static int sideNode [ 3 ] [ 2 ] = { { 1, 2 }, { 2, 3 }, { 3, 1 } };
208 
211  for ( inode = 0; inode < nodes; inode++ ) {
212  corner [ inode ] = this->giveNode(inode + 1)->giveCoordinates();
213  if ( corner [ inode ]->giveSize() != 3 ) {
214  cor [ inode ].resize(3);
215  cor [ inode ].at(1) = corner [ inode ]->at(1);
216  cor [ inode ].at(2) = corner [ inode ]->at(2);
217  cor [ inode ].at(3) = 0.0;
218 
219  corner [ inode ] = & ( cor [ inode ] );
220  }
221 
222  x += corner [ inode ]->at(1);
223  y += corner [ inode ]->at(2);
224  }
225 
226  for ( iside = 0; iside < sides; iside++ ) {
227  midSide [ iside ].resize(3);
228 
229  nd1 = sideNode [ iside ] [ 0 ] - 1;
230  nd2 = sideNode [ iside ] [ 1 ] - 1;
231 
232  midSide [ iside ].at(1) = ( corner [ nd1 ]->at(1) + corner [ nd2 ]->at(1) ) / 2.0;
233  midSide [ iside ].at(2) = ( corner [ nd1 ]->at(2) + corner [ nd2 ]->at(2) ) / 2.0;
234  midSide [ iside ].at(3) = 0.0;
235  }
236 
237  midNode.resize(3);
238 
239  midNode.at(1) = x / nodes;
240  midNode.at(2) = y / nodes;
241  midNode.at(3) = 0.0;
242  }
243 
244  this->setupRefinedElementProblem2D(this, refinedElement, level, nodeId, localNodeIdArray, globalNodeIdArray,
245  sMode, tStep, nodes, corner, midSide, midNode,
246  localNodeId, localElemId, localBcId,
247  controlNode, controlDof, aMode, "PlaneStress2d");
248 }
249 
250 
252 {
254 }
255 
256 #ifdef __OOFEG
257  #define TR_LENGHT_REDUCT 0.3333
258 
260 {
261  WCRec p [ 3 ];
262  GraphicObj *go;
263 
264  if ( !gc.testElementGraphicActivity(this) ) {
265  return;
266  }
267 
268  EASValsSetLineWidth(OOFEG_RAW_GEOMETRY_WIDTH);
269  EASValsSetColor( gc.getElementColor() );
270  EASValsSetEdgeColor( gc.getElementEdgeColor() );
271  EASValsSetEdgeFlag(true);
272  EASValsSetLayer(OOFEG_RAW_GEOMETRY_LAYER);
273  p [ 0 ].x = ( FPNum ) this->giveNode(1)->giveCoordinate(1);
274  p [ 0 ].y = ( FPNum ) this->giveNode(1)->giveCoordinate(2);
275  p [ 0 ].z = 0.;
276  p [ 1 ].x = ( FPNum ) this->giveNode(2)->giveCoordinate(1);
277  p [ 1 ].y = ( FPNum ) this->giveNode(2)->giveCoordinate(2);
278  p [ 1 ].z = 0.;
279  p [ 2 ].x = ( FPNum ) this->giveNode(3)->giveCoordinate(1);
280  p [ 2 ].y = ( FPNum ) this->giveNode(3)->giveCoordinate(2);
281  p [ 2 ].z = 0.;
282 
283  go = CreateTriangle3D(p);
284  EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
285  EGAttachObject(go, ( EObjectP ) this);
286  EMAddGraphicsToModel(ESIModel(), go);
287 }
288 
289 
291 {
292  WCRec p [ 3 ];
293  GraphicObj *go;
294  double defScale = gc.getDefScale();
295 
296  if ( !gc.testElementGraphicActivity(this) ) {
297  return;
298  }
299 
300  EASValsSetLineWidth(OOFEG_DEFORMED_GEOMETRY_WIDTH);
301  EASValsSetColor( gc.getDeformedElementColor() );
302  EASValsSetEdgeColor( gc.getElementEdgeColor() );
303  EASValsSetEdgeFlag(true);
304  EASValsSetLayer(OOFEG_DEFORMED_GEOMETRY_LAYER);
305  p [ 0 ].x = ( FPNum ) this->giveNode(1)->giveUpdatedCoordinate(1, tStep, defScale);
306  p [ 0 ].y = ( FPNum ) this->giveNode(1)->giveUpdatedCoordinate(2, tStep, defScale);
307  p [ 0 ].z = 0.;
308  p [ 1 ].x = ( FPNum ) this->giveNode(2)->giveUpdatedCoordinate(1, tStep, defScale);
309  p [ 1 ].y = ( FPNum ) this->giveNode(2)->giveUpdatedCoordinate(2, tStep, defScale);
310  p [ 1 ].z = 0.;
311  p [ 2 ].x = ( FPNum ) this->giveNode(3)->giveUpdatedCoordinate(1, tStep, defScale);
312  p [ 2 ].y = ( FPNum ) this->giveNode(3)->giveUpdatedCoordinate(2, tStep, defScale);
313  p [ 2 ].z = 0.;
314 
315  go = CreateTriangle3D(p);
316  EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
317  EMAddGraphicsToModel(ESIModel(), go);
318 }
319 
321 {
322  int i, indx, result = 0;
323  WCRec p [ 3 ];
324  GraphicObj *tr;
325  FloatArray v1, v2, v3;
326  double s [ 3 ], defScale;
327 
328  if ( !gc.testElementGraphicActivity(this) ) {
329  return;
330  }
331 
332  if ( gc.giveIntVarMode() == ISM_recovered ) {
333  result += this->giveInternalStateAtNode(v1, gc.giveIntVarType(), gc.giveIntVarMode(), 1, tStep);
334  result += this->giveInternalStateAtNode(v2, gc.giveIntVarType(), gc.giveIntVarMode(), 2, tStep);
335  result += this->giveInternalStateAtNode(v3, gc.giveIntVarType(), gc.giveIntVarMode(), 3, tStep);
336  } else if ( gc.giveIntVarMode() == ISM_local ) {
337  GaussPoint *gp = integrationRulesArray [ 0 ]->getIntegrationPoint(0);
338  result += giveIPValue(v1, gp, gc.giveIntVarType(), tStep);
339  v2 = v1;
340  v3 = v1;
341  result *= 3;
342  }
343 
344  if ( result != 3 ) {
345  return;
346  }
347 
348  indx = gc.giveIntVarIndx();
349 
350  s [ 0 ] = v1.at(indx);
351  s [ 1 ] = v2.at(indx);
352  s [ 2 ] = v3.at(indx);
353 
354  EASValsSetLayer(OOFEG_VARPLOT_PATTERN_LAYER);
355 
356  if ( gc.getScalarAlgo() == SA_ISO_SURF ) {
357  for ( i = 0; i < 3; i++ ) {
358  if ( gc.getInternalVarsDefGeoFlag() ) {
359  // use deformed geometry
360  defScale = gc.getDefScale();
361  p [ i ].x = ( FPNum ) this->giveNode(i + 1)->giveUpdatedCoordinate(1, tStep, defScale);
362  p [ i ].y = ( FPNum ) this->giveNode(i + 1)->giveUpdatedCoordinate(2, tStep, defScale);
363  p [ i ].z = 0.;
364  } else {
365  p [ i ].x = ( FPNum ) this->giveNode(i + 1)->giveCoordinate(1);
366  p [ i ].y = ( FPNum ) this->giveNode(i + 1)->giveCoordinate(2);
367  p [ i ].z = 0.;
368  }
369  }
370 
371  //EASValsSetColor(gc.getYieldPlotColor(ratio));
372  gc.updateFringeTableMinMax(s, 3);
373  tr = CreateTriangleWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ]);
374  EGWithMaskChangeAttributes(LAYER_MASK, tr);
375  EMAddGraphicsToModel(ESIModel(), tr);
376  } else if ( ( gc.getScalarAlgo() == SA_ZPROFILE ) || ( gc.getScalarAlgo() == SA_COLORZPROFILE ) ) {
377  double landScale = gc.getLandScale();
378 
379  for ( i = 0; i < 3; i++ ) {
380  if ( gc.getInternalVarsDefGeoFlag() ) {
381  // use deformed geometry
382  defScale = gc.getDefScale();
383  p [ i ].x = ( FPNum ) this->giveNode(i + 1)->giveUpdatedCoordinate(1, tStep, defScale);
384  p [ i ].y = ( FPNum ) this->giveNode(i + 1)->giveUpdatedCoordinate(2, tStep, defScale);
385  p [ i ].z = s [ i ] * landScale;
386  } else {
387  p [ i ].x = ( FPNum ) this->giveNode(i + 1)->giveCoordinate(1);
388  p [ i ].y = ( FPNum ) this->giveNode(i + 1)->giveCoordinate(2);
389  p [ i ].z = s [ i ] * landScale;
390  }
391  }
392 
393  if ( gc.getScalarAlgo() == SA_ZPROFILE ) {
394  EASValsSetColor( gc.getDeformedElementColor() );
395  EASValsSetLineWidth(OOFEG_DEFORMED_GEOMETRY_WIDTH);
396  EASValsSetFillStyle(FILL_SOLID);
397  tr = CreateTriangle3D(p);
398  EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | FILL_MASK | LAYER_MASK, tr);
399  } else {
400  gc.updateFringeTableMinMax(s, 3);
401  EASValsSetFillStyle(FILL_SOLID);
402  tr = CreateTriangleWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ]);
403  EGWithMaskChangeAttributes(FILL_MASK | LAYER_MASK, tr);
404  }
405 
406  EMAddGraphicsToModel(ESIModel(), tr);
407  }
408 }
409 
410 void
412 {
413  WCRec l [ 2 ];
414  GraphicObj *tr;
415  double defScale = gc.getDefScale();
416  FloatArray crackStatuses, cf;
417 
418  if ( !gc.testElementGraphicActivity(this) ) {
419  return;
420  }
421 
422  if ( gc.giveIntVarType() == IST_CrackState ) {
423  // ask if any active crack exist
424  int crackStatus;
425  double ax, ay, bx, by, norm, xc, yc, length;
426  FloatArray crackDir;
427 
428  for ( GaussPoint *gp: *integrationRulesArray [ 0 ] ) {
429  if ( this->giveIPValue(cf, gp, IST_CrackedFlag, tStep) == 0 ) {
430  return;
431  }
432 
433  if ( ( int ) cf.at(1) == 0 ) {
434  return;
435  }
436 
437  if ( this->giveIPValue(crackDir, gp, IST_CrackDirs, tStep) ) {
438  this->giveIPValue(crackStatuses, gp, IST_CrackStatuses, tStep);
439  for ( int i = 1; i <= 3; i++ ) {
440  crackStatus = ( int ) crackStatuses.at(i);
441  if ( ( crackStatus != pscm_NONE ) && ( crackStatus != pscm_CLOSED ) ) {
442  // draw a crack
443  // this element is 2d element in x-y plane
444  //
445  // compute perpendicular line to normal in xy plane
446  ax = crackDir.at(i);
447  ay = crackDir.at(3 + i);
448  if ( fabs(ax) > 1.e-6 ) {
449  by = 1.;
450  bx = -ay * by / ax;
451  norm = sqrt(bx * bx + by * by);
452  bx = bx / norm; // normalize to obtain unit vector
453  by = by / norm;
454  } else {
455  by = 0.0;
456  bx = 1.0;
457  }
458 
459  // obtain gp global coordinates - here only one exists
460  // it is in centre of gravity.
461  xc = yc = 0.;
462  for ( int j = 1; j <= 3; j++ ) {
463  if ( gc.getInternalVarsDefGeoFlag() ) {
464  // use deformed geometry
465  xc += ( FPNum ) this->giveNode(j)->giveUpdatedCoordinate(1, tStep, defScale);
466  yc += ( FPNum ) this->giveNode(j)->giveUpdatedCoordinate(2, tStep, defScale);
467  } else {
468  xc += ( FPNum ) this->giveNode(j)->giveCoordinate(1);
469  yc += ( FPNum ) this->giveNode(j)->giveCoordinate(2);
470  }
471  }
472 
473  xc = xc / 3.;
474  yc = yc / 3.;
475  length = TR_LENGHT_REDUCT * sqrt( 2 * this->giveArea() ) / 2.0;
476  l [ 0 ].x = ( FPNum ) xc + bx * length;
477  l [ 0 ].y = ( FPNum ) yc + by * length;
478  l [ 0 ].z = 0.;
479  l [ 1 ].x = ( FPNum ) xc - bx * length;
480  l [ 1 ].y = ( FPNum ) yc - by * length;
481  l [ 1 ].z = 0.;
482  EASValsSetLayer(OOFEG_CRACK_PATTERN_LAYER);
483  EASValsSetLineWidth(OOFEG_CRACK_PATTERN_WIDTH);
484  if ( ( crackStatus == pscm_SOFTENING ) || ( crackStatus == pscm_OPEN ) ) {
485  EASValsSetColor( gc.getActiveCrackColor() );
486  } else {
487  EASValsSetColor( gc.getCrackPatternColor() );
488  }
489 
490  tr = CreateLine3D(l);
491  EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, tr);
492  EMAddGraphicsToModel(ESIModel(), tr);
493  }
494  }
495  }
496  }
497  }
498 }
499 
500 #endif
501 
502 void
504 {
505  pap.resize(3);
506  pap.at(1) = this->giveNode(1)->giveNumber();
507  pap.at(2) = this->giveNode(2)->giveNumber();
508  pap.at(3) = this->giveNode(3)->giveNumber();
509 }
510 
511 void
513 {
514  answer.resize(1);
515  if ( ( pap == this->giveNode(1)->giveNumber() ) ||
516  ( pap == this->giveNode(2)->giveNumber() ) ||
517  ( pap == this->giveNode(3)->giveNumber() ) ) {
518  answer.at(1) = pap;
519  } else {
520  OOFEM_ERROR("node unknown");
521  }
522 }
523 
524 int
526 {
527  return 1;
528 }
529 
530 
533 {
534  return SPRPatchType_2dxy;
535 }
536 
537 } // end namespace oofem
int testElementGraphicActivity(Element *)
Test if particular element passed fulfills various filtering criteria for its graphics output...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
The element interface required by NodalAvergagingRecoveryModel.
The element interface required by ZZNodalRecoveryModel.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual SPRPatchType SPRNodalRecoveryMI_givePatchType()
Definition: trplanstrss.C:532
Class and object Domain.
Definition: domain.h:115
ScalarAlgorithmType getScalarAlgo()
virtual FEInterpolation * giveInterpolation() const
Definition: trplanstrss.C:69
The element interface required by ZZNodalRecoveryModel.
const FloatArray & giveSubPatchCoordinates()
Returns local sub-patch coordinates of the receiver.
Definition: gausspoint.h:144
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep)
Returns internal state variable (like stress,strain) at node of element in Reduced form...
#define pscm_CLOSED
Definition: fcm.h:58
#define OOFEG_RAW_GEOMETRY_LAYER
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
Definition: trplanstrss.C:320
#define pscm_NONE
Definition: fcm.h:54
virtual void HuertaErrorEstimatorI_computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Definition: trplanstrss.C:251
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
Definition: trplanstrss.C:259
virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep)
Definition: trplanstrss.C:411
virtual double giveCoordinate(int i)
Definition: node.C:82
virtual void HuertaErrorEstimatorI_setupRefinedElementProblem(RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface::SetupMode sMode, TimeStep *tStep, int &localNodeId, int &localElemId, int &localBcId, IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator::AnalysisMode aMode)
Definition: trplanstrss.C:196
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
Class implementing an array of integers.
Definition: intarray.h:61
int & at(int i)
Coefficient access function.
Definition: intarray.h:103
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
#define OOFEG_DEFORMED_GEOMETRY_LAYER
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
TrPlaneStress2d(int n, Domain *d)
Definition: trplanstrss.C:58
virtual void SPRNodalRecoveryMI_giveDofMansDeterminedByPatch(IntArray &answer, int pap)
Definition: trplanstrss.C:512
InternalStateType giveIntVarType()
#define OOFEG_CRACK_PATTERN_LAYER
virtual double giveArea(const FEICellGeometry &cellgeo) const
Computes the exact area.
Definition: fei2dtrlin.C:267
virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method)
Returns characteristic element size for a given integration point and given direction.
Definition: trplanstrss.C:104
virtual double giveArea()
Definition: trplanstrss.C:92
The element interface corresponding to ZZErrorEstimator.
#define pscm_OPEN
Definition: rcm2.h:61
The element interface corresponding to HuertaErrorEstimator.
#define OOFEM_ERROR(...)
Definition: error.h:61
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition: trplanstrss.C:290
REGISTER_Element(LSpace)
virtual int SPRNodalRecoveryMI_giveNumberOfIP()
Definition: trplanstrss.C:525
#define OOFEG_RAW_GEOMETRY_WIDTH
UnknownType
Type representing particular unknown (its physical meaning).
Definition: unknowntype.h:55
void times(double f)
Multiplies receiver by factor f.
Definition: floatmatrix.C:1594
#define OOFEG_CRACK_PATTERN_WIDTH
#define TR_LENGHT_REDUCT
Definition: trplanstrss.C:257
Wrapper around element definition to provide FEICellGeometry interface.
Definition: feinterpol.h:95
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
Definition: node.C:245
virtual void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep)
Computes the element value in given node.
Definition: trplanstrss.C:186
double at(int i, int j) const
Coefficient access function.
Definition: floatmatrix.h:176
void resize(int n)
Checks size of receiver towards requested bounds.
Definition: intarray.C:124
int numberOfGaussPoints
Number of integration points as specified by nip.
Definition: element.h:188
InternalStateMode giveIntVarMode()
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
Definition: trplanstrss.C:72
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
void setupRefinedElementProblem2D(Element *element, RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface::SetupMode mode, TimeStep *tStep, int nodes, FloatArray **corner, FloatArray *midSide, FloatArray &midNode, int &localNodeId, int &localElemId, int &localBcId, IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator::AnalysisMode aMode, const char *quadtype)
double norm(const FloatArray &x)
Definition: floatarray.C:985
Class Interface.
Definition: interface.h:82
void zero()
Zeroes all coefficients of receiver.
Definition: floatarray.C:658
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
The spatial localizer element interface associated to spatial localizer.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
Definition: element.h:170
virtual FloatArray * giveCoordinates()
Definition: node.h:114
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
void updateFringeTableMinMax(double *s, int size)
virtual void SPRNodalRecoveryMI_giveSPRAssemblyPoints(IntArray &pap)
Definition: trplanstrss.C:503
the oofem namespace is to define a context or scope in which all oofem names are defined.
int giveNumber() const
Definition: femcmpnn.h:107
Node * giveNode(int i) const
Returns reference to the i-th node of element.
Definition: element.h:610
#define pscm_SOFTENING
Definition: fcm.h:56
#define OOFEG_VARPLOT_PATTERN_LAYER
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
int numberOfDofMans
Number of dofmanagers.
Definition: element.h:149
void resize(int s)
Resizes receiver towards requested size.
Definition: floatarray.C:631
static FEI2dTrLin interp
Definition: trplanstrss.h:67

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:32 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011