OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
trwarp.C
Go to the documentation of this file.
1 /*
2  *
3  * ##### ##### ###### ###### ### ###
4  * ## ## ## ## ## ## ## ### ##
5  * ## ## ## ## #### #### ## # ##
6  * ## ## ## ## ## ## ## ##
7  * ## ## ## ## ## ## ## ##
8  * ##### ##### ## ###### ## ##
9  *
10  * OOFEM : Object Oriented Finite Element Code
11  *
12  * Copyright (C) 1993 - 2013 Borek Patzak
13  *
14  *
15  *
16  * Czech Technical University, Faculty of Civil Engineering,
17  * Department of Structural Mechanics, 166 29 Prague, Czech Republic
18  *
19  * This library is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU Lesser General Public
21  * License as published by the Free Software Foundation; either
22  * version 2.1 of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27  * Lesser General Public License for more details.
28  *
29  * You should have received a copy of the GNU Lesser General Public
30  * License along with this library; if not, write to the Free Software
31  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
32  */
33 
34 #include "trwarp.h"
35 #include "node.h"
37 #include "gausspoint.h"
38 #include "gaussintegrationrule.h"
39 #include "floatmatrix.h"
40 #include "floatarray.h"
41 #include "intarray.h"
42 #include "mathfem.h"
44 #include "classfactory.h"
45 #include "load.h"
47 #include "engngm.h"
48 #include "dof.h"
50 
51 
52 
53 namespace oofem {
54 REGISTER_Element(Tr_Warp);
55 
56 FEI2dTrLin Tr_Warp :: interp(1, 2);
57 
58 Tr_Warp :: Tr_Warp(int n, Domain *aDomain) :
60 {
61  numberOfDofMans = 3;
63 }
64 
66 { }
67 
68 void
70  TimeStep *tStep)
71 //
72 // returns characteristics vector of receiver according to mtrx
73 //
74 {
75  if ( mtrx == ExternalForcesVector ) {
76  // include implicit edge contribution
77  this->computeEdgeLoadVectorAt(answer, NULL, tStep, mode);
78  } else {
79  StructuralElement::giveCharacteristicVector(answer, mtrx, mode, tStep);
80  }
81 }
82 
83 
84 
85 void
87 // Sets up the array containing the Gauss point of the receiver.
88 {
89  if ( integrationRulesArray.size() == 0 ) {
90  integrationRulesArray.resize(1);
91  integrationRulesArray [ 0 ].reset( new GaussIntegrationRule(1, this, 1, 4) );
93  }
94 }
95 
96 
99 {
102 }
103 
104 
105 void
107 {
108  this->giveStructuralCrossSection()->giveRealStress_Warping(answer, gp, strain, tStep);
109 }
110 
111 
112 void
114 {
115  this->giveStructuralCrossSection()->giveCharMaterialStiffnessMatrix(answer, rMode, gp, tStep);
116 }
117 
118 
119 void
121 {
122  int numNodes = this->giveNumberOfDofManagers();
123  FloatArray N(numNodes);
124 
125  // int dim = this->giveSpatialDimension();
126 
127  answer.resize(1, numNodes);
128  answer.zero();
129  giveInterpolation()->evalN( N, iLocCoord, FEIElementGeometryWrapper(this) );
130 
131  answer.beNMatrixOf(N, 1);
132 }
133 
134 void
136  int li, int ui)
137 // Returns the [2x4] strain-displacement matrix {B} of the receiver, eva-
138 // luated at gp.
139 {
140  FloatMatrix dN;
141  FloatArray tc(2);
143  // gausspoint coordinates
144  FloatArray gcoords;
145  Element *elem = gp->giveElement();
146  elem->computeGlobalCoordinates( gcoords, gp->giveNaturalCoordinates() );
147 
148  this->transformCoordinates( tc, gcoords, this->giveCrossSection()->giveNumber() );
149 
150  answer.resize(2, 4);
151 
152  answer.at(1, 1) = dN.at(1, 1);
153  answer.at(1, 2) = dN.at(2, 1);
154  answer.at(1, 3) = dN.at(3, 1);
155  answer.at(1, 4) = -tc.at(2);
156 
157  answer.at(2, 1) = dN.at(1, 2);
158  answer.at(2, 2) = dN.at(2, 2);
159  answer.at(2, 3) = dN.at(3, 2);
160  answer.at(2, 4) = tc.at(1);
161 }
162 
163 
164 void
165 Tr_Warp :: transformCoordinates(FloatArray &answer, FloatArray &c, const int CGnumber)
166 {
167  answer.resize(2);
168  FreeWarping *em = dynamic_cast< FreeWarping * >( this->giveDomain()->giveEngngModel() );
169  if ( em ) {
170  FloatMatrix CG;
171  em->getCenterOfGravity(CG);
172  answer.at(1) = c.at(1) - CG.at(CGnumber, 1);
173  answer.at(2) = c.at(2) - CG.at(CGnumber, 2);
174  } else {
175  OOFEM_ERROR("Error during transformCoordinates");
176  }
177 }
178 
179 void
181 // Returns the portion of the receiver which is attached to gp.
182 {
183  answer.resize(2);
184 
185  FloatArray gcoords;
187  double A = this->computeVolumeAround(gp);
188  Element *elem = gp->giveElement();
189  elem->computeGlobalCoordinates( answer, gp->giveNaturalCoordinates() );
190  answer.times(A);
191 }
192 
193 double
195 // Returns the portion of the receiver which is attached to gp.
196 {
197  double determinant, weight, volume;
198  determinant = fabs( this->interp.giveTransformationJacobian( gp->giveNaturalCoordinates(), FEIElementGeometryWrapper(this) ) );
199  weight = gp->giveWeight();
200  volume = determinant * weight;
201  return volume;
202 }
203 
204 void
205 Tr_Warp :: giveEdgeDofMapping(IntArray &answer, int iEdge) const
206 {
207  /*
208  * provides dof mapping of local edge dofs (only nonzero are taken into account)
209  * to global element dofs
210  */
211 
212  answer.resize(2);
213  if ( iEdge == 1 ) { // edge between nodes 1,2
214  answer.at(1) = 1;
215  answer.at(2) = 2;
216  } else if ( iEdge == 2 ) { // edge between nodes 2 3
217  answer.at(1) = 2;
218  answer.at(2) = 3;
219  } else if ( iEdge == 3 ) { // edge between nodes 3 1
220  answer.at(1) = 3;
221  answer.at(2) = 1;
222  } else {
223  OOFEM_ERROR("wrong edge number");
224  }
225 }
226 
227 
228 void
230 {
231  // computes the edge load vector of the receiver corresponding to the inhomogeneous Neumann condition
232  // the given load is a dummy variable because the boundary condition for the warping equation
233  // is determined by the geometry and thus the load intensity is not needed
234  // (what is needed is just the indication that the given element edge is a part of the domain boundary)
235  answer.resize(4);
236  answer.zero();
237  for ( int iEdge = 1; iEdge < 4; iEdge++ ) {
238  IntArray mask;
239  this->giveEdgeDofMapping(mask, iEdge);
240 
241  // coordinates of the initial and final node of the edge
242  FloatArray *coord1 = giveNode( mask.at(1) )->giveCoordinates();
243  FloatArray *coord2 = giveNode( mask.at(2) )->giveCoordinates();
244  // components of the edge vector (from the initial to the final node)
245  double dx = coord2->at(1) - coord1->at(1);
246  double dy = coord2->at(2) - coord1->at(2);
247  // coordinates of the initial node
248  double x1 = coord1->at(1);
249  double y1 = coord1->at(2);
250  // coordinates of the final node
251  double x2 = coord2->at(1);
252  double y2 = coord2->at(2);
253 
254  // transform to coordinates w.r. center of gravity
255  FloatArray tc1(2), c1(2), tc2(2), c2(2);
256  c1.at(1) = x1;
257  c1.at(2) = y1;
258  this->transformCoordinates( tc1, c1, this->giveCrossSection()->giveNumber() );
259  x1 = tc1.at(1);
260  y1 = tc1.at(2);
261  c2.at(1) = x2;
262  c2.at(2) = y2;
263  this->transformCoordinates( tc2, c2, this->giveCrossSection()->giveNumber() );
264  x2 = tc2.at(1);
265  y2 = tc2.at(2);
266 
267  // equivalent nodal "loads" (obtained by exact integration)
268  double f1 = ( dx * x2 + dy * y2 ) / 3.0 + ( dx * x1 + dy * y1 ) / 6.0;
269  double f2 = ( dx * x1 + dy * y1 ) / 3.0 + ( dx * x2 + dy * y2 ) / 6.0;
270 
271  // the load value has the meaning of relative twist
272  double theta = this->giveDofManager(4)->giveDofWithID(24)->giveUnknown(VM_Total, tStep);
273  FloatArray reducedAnswer, b;
274  b.resize(4);
275  b.zero();
276  reducedAnswer.resize(2);
277  reducedAnswer.at(1) = f1 * theta;
278  reducedAnswer.at(2) = f2 * theta;
279  b.assemble(reducedAnswer, mask);
280  answer.add(b);
281  }
282 }
283 
284 
285 double
287 {
288  return 1.;
289 }
290 
291 
292 double
294 {
295  double determinant = fabs( this->interp.edgeGiveTransformationJacobian( iEdge, gp->giveNaturalCoordinates(), FEIElementGeometryWrapper(this) ) );
296  return determinant * gp->giveWeight();
297 }
298 
299 
300 void
301 Tr_Warp :: giveDofManDofIDMask(int inode, IntArray &answer) const
302 {
303  // define new dof names (types) in dofiditem.h
304  if ( inode > 0 && inode < 4 ) {
305  answer = {
306  Warp_PsiTheta
307  };
308  } else {
309  OOFEM_ERROR("Wrong numer of node");
310  }
311 }
312 
313 
314 void
316 {
317  answer = {
318  Warp_Theta
319  };
320 }
321 
322 DofManager *
324 {
325  return this->giveDofManager(4);
326 }
327 
328 
329 Interface *
331 {
332  if ( interface == SpatialLocalizerInterfaceType ) {
333  return static_cast< SpatialLocalizerInterface * >(this);
334  // } else if ( interface == EIPrimaryFieldInterfaceType ) {
335  // return static_cast< EIPrimaryFieldInterface * >(this);
336  } else if ( interface == ZZNodalRecoveryModelInterfaceType ) {
337  return static_cast< ZZNodalRecoveryModelInterface * >(this);
338  }
339 
340  return NULL;
341 }
342 
343 int
345 {
346  FloatArray lcoords;
347  return this->computeLocalCoordinates(lcoords, coords);
348 }
349 
350 
351 void
353 {
354  //
355  // Returns NTN matrix (lumped) for Zienkiewicz-Zhu
356  // The size of N mtrx is (nstresses, nnodes*nstreses)
357  // Definition : sigmaVector = N * nodalSigmaVector
358  //
359  double volume = 0.0;
360  FloatMatrix fullAnswer;
361  FloatArray n;
362  Element *elem = this->ZZNodalRecoveryMI_giveElement();
363  FEInterpolation *interpol = elem->giveInterpolation();
365 
366  if ( !interpol ) {
367  OOFEM_ERROR( "ZZNodalRecoveryMI_computeNNMatrix: Element %d not providing interpolation", elem->giveNumber() );
368  }
369 
370  int size = 3; //elem->giveNumberOfDofManagers();
371  fullAnswer.resize(size, size);
372  fullAnswer.zero();
373  double pok = 0.0;
374 
375  for ( int i = 0; i < iRule->giveNumberOfIntegrationPoints(); i++ ) {
376  GaussPoint *gp = iRule->getIntegrationPoint(i);
377  double dV = elem->computeVolumeAround(gp);
378  interpol->evalN( n, gp->giveNaturalCoordinates(), FEIElementGeometryWrapper(elem) );
379  fullAnswer.plusDyadSymmUpper(n, dV);
380  pok += ( n.at(1) * dV );
381  volume += dV;
382  }
383 
384 
385  fullAnswer.symmetrized();
386  answer.resize(4);
387  for ( int i = 1; i <= 3; i++ ) {
388  double sum = 0.0;
389  for ( int j = 1; j <= size; j++ ) {
390  sum += fullAnswer.at(i, j);
391  }
392 
393  answer.at(i) = sum;
394  }
395  answer.at(4) = 1.0;
396 }
397 
398 bool
400  TimeStep *tStep)
401 { // evaluates N^T sigma over element volume
402  // N(nsigma, nsigma*nnodes)
403  // Definition : sigmaVector = N * nodalSigmaVector
404  FloatArray stressVector, n;
405  Element *elem = this->ZZNodalRecoveryMI_giveElement();
406  FEInterpolation *interpol = elem->giveInterpolation();
408 
409  answer.clear();
410  for ( int i = 0; i < iRule->giveNumberOfIntegrationPoints(); i++ ) {
411  GaussPoint *gp = iRule->getIntegrationPoint(i);
412  double dV = elem->computeVolumeAround(gp);
413  //this-> computeStressVector(stressVector, gp, tStep);
414  if ( !elem->giveIPValue(stressVector, gp, type, tStep) ) {
415  continue;
416  }
417 
418  interpol->evalN( n, gp->giveNaturalCoordinates(), FEIElementGeometryWrapper(elem) );
419  answer.plusDyadUnsym(n, stressVector, dV);
420 
421  // help.beTProductOf(n,stressVector);
422  // answer.add(help.times(dV));
423  }
424  answer.resizeWithData( 4, answer.giveNumberOfColumns() );
425  for ( int i = 1; i <= answer.giveNumberOfColumns(); i++ ) {
426  answer.at(4, i) = 0.0;
427  }
428  return true;
429 }
430 
431 void
433 {
436  WarpingCrossSection *wcs = dynamic_cast< WarpingCrossSection * >( this->giveCrossSection() );
438 }
439 } // end namespace oofem
CrossSection * giveCrossSection()
Definition: element.C:495
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void postInitialize()
Performs post initialization steps.
Definition: trwarp.C:432
int giveNumberOfColumns() const
Returns number of columns of receiver.
Definition: floatmatrix.h:158
virtual void postInitialize()
Performs post initialization steps.
Definition: element.C:752
IntArray dofManArray
Array containing dofmanager numbers.
Definition: element.h:151
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
Definition: element.C:1257
virtual DofManager * giveInternalDofManager(int i) const
Returns i-th internal element dof manager of the receiver.
Definition: trwarp.C:323
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
Definition: fei2dtrlin.C:53
Class and object Domain.
Definition: domain.h:115
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
Definition: element.h:822
static FEI2dTrLin interp
Definition: trwarp.h:53
virtual void computeFirstMomentOfArea(FloatArray &answer)
Definition: trwarp.C:180
virtual bool ZZNodalRecoveryMI_computeNValProduct(FloatMatrix &answer, InternalStateType type, TimeStep *tStep)
Computes the element contribution to , where is quantity to be recovered (for example stress or stra...
Definition: trwarp.C:399
virtual Element * ZZNodalRecoveryMI_giveElement()
Definition: trwarp.h:85
void getCenterOfGravity(FloatMatrix &answer)
Definition: freewarping.h:103
virtual int SpatialLocalizerI_containsPoint(const FloatArray &coords)
Checks if element contains specified coordinate.
Definition: trwarp.C:344
The element interface required by ZZNodalRecoveryModel.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: trwarp.C:98
This class implements the free warping engineering problem (evaluation of the warping function and to...
Definition: freewarping.h:64
description of warping cross section...
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
virtual void ZZNodalRecoveryMI_computeNNMatrix(FloatArray &answer, InternalStateType type)
Computes the element contribution to term.
Definition: trwarp.C:352
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
virtual FEInterpolation * giveInterpolation() const
Definition: trwarp.h:91
virtual double giveUnknown(ValueModeType mode, TimeStep *tStep)=0
The key method of class Dof.
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
Definition: domain.C:433
virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge Jacobian of transformation between local and global coordinates.
Definition: feinterpol2d.C:175
Abstract base class for all finite elements.
Definition: element.h:145
Base class for dof managers.
Definition: dofmanager.h:113
Element * giveElement()
Returns corresponding element to receiver.
Definition: gausspoint.h:188
virtual ~Tr_Warp()
Definition: trwarp.C:65
void plusDyadUnsym(const FloatArray &a, const FloatArray &b, double dV)
Adds to the receiver the product .
Definition: floatmatrix.C:811
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
Definition: trwarp.C:205
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.
virtual void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
Definition: trwarp.C:69
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
Definition: trwarp.C:86
virtual int giveNumberOfDofManagers() const
Definition: element.h:656
virtual void giveCharMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the stiffness matrix of receiver in given integration point, respecting its history...
virtual FEInterpolation * giveInterpolation() const
Definition: element.h:629
Abstract base class representing integration rule.
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
Abstract base class for all "structural" finite elements.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
Definition: element.h:518
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
Definition: trwarp.C:113
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: trwarp.C:301
virtual void giveRealStress_Warping(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
Tr_Warp(int n, Domain *d)
Definition: trwarp.C:58
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
Definition: trwarp.C:120
#define OOFEM_ERROR(...)
Definition: error.h:61
REGISTER_Element(LSpace)
virtual double giveWeight()
Returns integration weight of receiver.
Definition: gausspoint.h:181
void resizeWithData(int, int)
Checks size of receiver towards requested bounds.
Definition: floatmatrix.C:1369
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
void transformCoordinates(FloatArray &answer, FloatArray &c, const int CGnumber)
Definition: trwarp.C:165
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
Definition: trwarp.C:106
Wrapper around element definition to provide FEICellGeometry interface.
Definition: feinterpol.h:95
void resizeWithValues(int n, int allocChunk=0)
Checks size of receiver towards requested bounds.
Definition: intarray.C:115
#define N(p, q)
Definition: mdm.C:367
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
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
Definition: trwarp.C:293
virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
Returns internal dofmanager dof mask for node.
Definition: trwarp.C:315
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
Definition: crosssection.C:54
int numberOfGaussPoints
Number of integration points as specified by nip.
Definition: element.h:188
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
Definition: floatmatrix.C:505
Class representing vector of real numbers.
Definition: floatarray.h:82
void plusDyadSymmUpper(const FloatArray &a, double dV)
Adds to the receiver the dyadic product .
Definition: floatmatrix.C:756
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
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
GaussPoint * getIntegrationPoint(int n)
Access particular integration point of receiver.
virtual void computeEdgeLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
Definition: trwarp.C:229
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
Definition: fei2dtrlin.C:147
void assemble(const FloatArray &fe, const IntArray &loc)
Assembles the array fe (typically, the load vector of a finite element) into the receiver, using loc as location array.
Definition: floatarray.C:551
CharType
Definition: chartype.h:87
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
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int li, int ui)
Computes the geometrical matrix of receiver in given integration point.
Definition: trwarp.C:135
Class Interface.
Definition: interface.h:82
Dof * giveDofWithID(int dofID) const
Returns DOF with given dofID; issues error if not present.
Definition: dofmanager.C:119
int giveNumberOfIntegrationPoints() const
Returns number of integration points of receiver.
void zero()
Zeroes all coefficients of receiver.
Definition: floatarray.C:658
void times(double s)
Multiplies receiver with scalar.
Definition: floatarray.C:818
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
Definition: trwarp.C:194
The spatial localizer element interface associated to spatial localizer.
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
Definition: element.C:1222
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
void zero()
Zeroes all coefficient of receiver.
Definition: floatmatrix.C:1326
Domain * giveDomain() const
Definition: femcmpnn.h:100
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
virtual double giveThicknessAt(const FloatArray &gcoords)
Definition: trwarp.C:286
Load is base abstract class for all loads.
Definition: load.h:61
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
Definition: trwarp.C:330
the oofem namespace is to define a context or scope in which all oofem names are defined.
DofManager * giveDofManager(int i) const
Definition: element.C:514
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Definition: floatmatrix.h:516
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
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
Definition: floatmatrix.C:1576
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element&#39;s local coordinates.
Definition: element.C:1207
int numberOfDofMans
Number of dofmanagers.
Definition: element.h:149
void add(const FloatArray &src)
Adds array src to receiver.
Definition: floatarray.C:156
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Definition: gausspoint.h:138
Class representing Gaussian-quadrature integration rule.
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:32 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011