OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
qtrplanstrssxfem.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 "qtrplanstrssxfem.h"
36 
37 #include "../sm/Materials/structuralmaterial.h"
38 #include "../sm/CrossSections/structuralcrosssection.h"
39 #include "vtkxmlexportmodule.h"
42 #include "xfem/enrichmentitem.h"
43 #include "xfem/delaunay.h"
44 #include "xfem/XFEMDebugTools.h"
45 #include "feinterpol.h"
46 #include "node.h"
47 #include "crosssection.h"
48 #include "gausspoint.h"
49 #include "gaussintegrationrule.h"
50 #include "floatmatrix.h"
51 #include "floatarray.h"
52 #include "intarray.h"
53 #include "mathfem.h"
54 #include "classfactory.h"
55 #include "domain.h"
56 #include "dynamicinputrecord.h"
57 
58 #ifdef __OOFEG
59  #include "oofeggraphiccontext.h"
60  #include "oofegutils.h"
62 #endif
63 
64 
65 
66 #include <string>
67 #include <sstream>
68 
69 namespace oofem {
70 REGISTER_Element(QTrPlaneStress2dXFEM);
71 
73  // TODO Auto-generated destructor stub
74 }
75 
76 Interface *
78 {
79  if ( it == XfemElementInterfaceType ) {
80  return static_cast< XfemElementInterface * >(this);
81  } else if ( it == VTKXMLExportModuleElementInterfaceType ) {
82  return static_cast< VTKXMLExportModuleElementInterface * >(this);
83  } else {
85  }
86 }
87 
89 {
92 }
93 
95 {
98 }
99 
101 {
102  int ndofs = 0;
103 
104  for ( int i = 1; i <= this->giveNumberOfDofManagers(); i++ ) {
105  ndofs += this->giveDofManager(i)->giveNumberOfDofs();
106  }
107 
108  return ndofs;
109 }
110 
112 {
113  if ( giveDomain()->hasXfemManager() ) {
115 
116  if ( xMan->isElementEnriched(this) ) {
119  }
120  } else {
122  }
123  } else {
125  }
126 }
127 
129 {
130  XfemElementInterface_createEnrNmatrixAt(answer, iLocCoord, * this, false);
131 }
132 
134 {
135  XfemElementInterface_createEnrBmatrixAt(answer, * gp, * this);
136 }
137 
139 {
140  XfemElementInterface_createEnrBHmatrixAt(answer, * gp, * this);
141 }
142 
143 void
145 {
146  // Continuous part
148 
149  // Discontinuous part
150  if( this->giveDomain()->hasXfemManager() ) {
151  DofManager *dMan = giveDofManager(inode);
153 
154  int placeInArray = domain->giveDofManPlaceInArray(dMan->giveGlobalNumber());
155  const std::vector<int> &nodeEiIndices = xMan->giveNodeEnrichmentItemIndices( placeInArray );
156  for ( size_t i = 0; i < nodeEiIndices.size(); i++ ) {
157  EnrichmentItem *ei = xMan->giveEnrichmentItem(nodeEiIndices[i]);
158  if ( ei->isDofManEnriched(* dMan) ) {
159  IntArray eiDofIdArray;
160  ei->computeEnrichedDofManDofIdArray(eiDofIdArray, *dMan);
161  answer.followedBy(eiDofIdArray);
162  }
163  }
164  }
165 }
166 
167 void
169 {
171 }
172 
173 void
175 {
177 }
178 
180 {
181  QTrPlaneStress2d :: computeStiffnessMatrix(answer, rMode, tStep);
183 
184  const double tol = mRegCoeffTol;
185  const double regularizationCoeff = mRegCoeff;
186  int numRows = answer.giveNumberOfRows();
187  for(int i = 0; i < numRows; i++) {
188  if( fabs(answer(i,i)) < tol ) {
189  answer(i,i) += regularizationCoeff;
190 // printf("Found zero on diagonal.\n");
191  }
192  }
193 }
194 
196 {
198 }
199 
200 void
202 {
203  QTrPlaneStress2d :: giveInternalForcesVector(answer, tStep, useUpdatedGpRecord);
205 }
206 
209 {
210  if ( this->giveDomain()->hasXfemManager() ) {
211  XfemManager *xMan = this->giveDomain()->giveXfemManager();
212  if ( xMan->isElementEnriched(this) ) {
213  return EGT_Composite;
214  } else {
215  return EGT_Composite;
216  }
217  } else {
218  return EGT_triangle_2;
219  }
220 }
221 
224 {
225  IRResultType result; // Required by IR_GIVE_FIELD macro
227  if ( result != IRRT_OK ) {
228  return result;
229  }
230 
232  if ( result != IRRT_OK ) {
233  return result;
234  }
235 
238  }
239 
242  }
243 
244  return result;
245 }
246 
248 {
250 }
251 
253 {
256 
259 
260 }
261 
262 void
264 {
265  // TODO: Validate implementation.
266 
267  FloatArray u;
268  FloatMatrix n;
269 
270  XfemElementInterface_createEnrNmatrixAt(n, lcoords, * this, false);
271 
272  this->computeVectorOf(mode, tStep, u);
273  answer.beProductOf(n, u);
274 }
275 
276 void
277 QTrPlaneStress2dXFEM :: giveCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
278 {
279  vtkPieces.resize(1);
280 
281  const int numCells = mSubTri.size();
282  if(numCells == 0) {
283  // Enriched but uncut element
284  // Visualize as a triangle
285  vtkPieces[0].setNumberOfCells(1);
286 
287  int numTotalNodes = 6;
288  vtkPieces[0].setNumberOfNodes(numTotalNodes);
289 
290  // Node coordinates
291  std :: vector< FloatArray >nodeCoords;
292  for(int i = 1; i <= 6; i++) {
294  nodeCoords.push_back(x);
295 
296  vtkPieces[0].setNodeCoords(i, x);
297  }
298 
299  // Connectivity
300  IntArray nodes1 = {1, 2, 3, 4, 5, 6};
301  vtkPieces[0].setConnectivity(1, nodes1);
302 
303  // Offset
304  int offset = 6;
305  vtkPieces[0].setOffset(1, offset);
306 
307  // Cell types
308  vtkPieces[0].setCellType(1, 22); // Quadratic triangle
309 
310 
311 
312 
313  // Export nodal variables from primary fields
314  vtkPieces[0].setNumberOfPrimaryVarsToExport(primaryVarsToExport.giveSize(), numTotalNodes);
315 
316  for ( int fieldNum = 1; fieldNum <= primaryVarsToExport.giveSize(); fieldNum++ ) {
317  UnknownType type = ( UnknownType ) primaryVarsToExport.at(fieldNum);
318 
319  for ( int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
320 
321  if ( type == DisplacementVector ) { // compute displacement
322 
323  FloatArray u = {0.0, 0.0, 0.0};
324 
325  // Fetch global coordinates (in undeformed configuration)
326  const FloatArray &x = nodeCoords[nodeInd-1];
327 
328  // Compute local coordinates
329  FloatArray locCoord;
330  computeLocalCoordinates(locCoord, x);
331 
332  // Compute displacement in point
333  FloatMatrix NMatrix;
334  computeNmatrixAt(locCoord, NMatrix);
335  FloatArray solVec;
336  computeVectorOf(VM_Total, tStep, solVec);
337  FloatArray uTemp;
338  uTemp.beProductOf(NMatrix, solVec);
339 
340  if(uTemp.giveSize() == 3) {
341  u = uTemp;
342  }
343  else {
344  u = {uTemp[0], uTemp[1], 0.0};
345  }
346 
347  vtkPieces[0].setPrimaryVarInNode(fieldNum, nodeInd, u);
348  } else {
349  printf("fieldNum: %d\n", fieldNum);
350  // TODO: Implement
351 // ZZNodalRecoveryMI_recoverValues(values, layer, ( InternalStateType ) 1, tStep); // does not work well - fix
352 // for ( int j = 1; j <= numCellNodes; j++ ) {
353 // vtkPiece.setPrimaryVarInNode(fieldNum, nodeNum, values [ j - 1 ]);
354 // nodeNum += 1;
355 // }
356  }
357  }
358  }
359 
360 
361  // Export nodal variables from internal fields
362  vtkPieces[0].setNumberOfInternalVarsToExport(0, numTotalNodes);
363 
364 
365  // Export cell variables
366  vtkPieces[0].setNumberOfCellVarsToExport(cellVarsToExport.giveSize(), 1);
367  for ( int i = 1; i <= cellVarsToExport.giveSize(); i++ ) {
368  InternalStateType type = ( InternalStateType ) cellVarsToExport.at(i);
369  FloatArray average;
370  std :: unique_ptr< IntegrationRule > &iRule = integrationRulesArray [ 0 ];
371  VTKXMLExportModule :: computeIPAverage(average, iRule.get(), this, type, tStep);
372  if(average.giveSize() == 0) {
373  average = {0., 0., 0., 0., 0., 0.};
374  }
375 
376  if(average.giveSize() == 1) {
377  vtkPieces[0].setCellVar( i, 1, average );
378  }
379 
380  if(average.giveSize() == 6) {
381  FloatArray averageV9(9);
382  averageV9.at(1) = average.at(1);
383  averageV9.at(5) = average.at(2);
384  averageV9.at(9) = average.at(3);
385  averageV9.at(6) = averageV9.at(8) = average.at(4);
386  averageV9.at(3) = averageV9.at(7) = average.at(5);
387  averageV9.at(2) = averageV9.at(4) = average.at(6);
388 
389  vtkPieces[0].setCellVar( i, 1, averageV9 );
390  }
391  }
392 
393 
394  // Export of XFEM related quantities
395  if ( domain->hasXfemManager() ) {
397 
398  int nEnrIt = xMan->giveNumberOfEnrichmentItems();
399  vtkPieces[0].setNumberOfInternalXFEMVarsToExport(xMan->vtkExportFields.giveSize(), nEnrIt, numTotalNodes);
400 
401  const int nDofMan = giveNumberOfDofManagers();
402 
403 
404  for ( int field = 1; field <= xMan->vtkExportFields.giveSize(); field++ ) {
405  XFEMStateType xfemstype = ( XFEMStateType ) xMan->vtkExportFields [ field - 1 ];
406 
407  for ( int enrItIndex = 1; enrItIndex <= nEnrIt; enrItIndex++ ) {
408  EnrichmentItem *ei = xMan->giveEnrichmentItem(enrItIndex);
409  for ( int nodeInd = 1; nodeInd <= numTotalNodes; nodeInd++ ) {
410 
411  const FloatArray &x = nodeCoords[nodeInd-1];
412  FloatArray locCoord;
413  computeLocalCoordinates(locCoord, x);
414 
415  FloatArray N;
417  interp->evalN( N, locCoord, FEIElementGeometryWrapper(this) );
418 
419 
420  if ( xfemstype == XFEMST_LevelSetPhi ) {
421  double levelSet = 0.0, levelSetInNode = 0.0;
422 
423  for(int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
424  DofManager *dMan = giveDofManager(elNodeInd);
425  ei->evalLevelSetNormalInNode(levelSetInNode, dMan->giveGlobalNumber(), *(dMan->giveCoordinates()) );
426 
427  levelSet += N.at(elNodeInd)*levelSetInNode;
428  }
429 
430 
431  FloatArray valueArray = {levelSet};
432  vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
433 
434  } else if ( xfemstype == XFEMST_LevelSetGamma ) {
435  double levelSet = 0.0, levelSetInNode = 0.0;
436 
437  for(int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
438  DofManager *dMan = giveDofManager(elNodeInd);
439  ei->evalLevelSetTangInNode(levelSetInNode, dMan->giveGlobalNumber(), *(dMan->giveCoordinates()) );
440 
441  levelSet += N.at(elNodeInd)*levelSetInNode;
442  }
443 
444 
445  FloatArray valueArray = {levelSet};
446  vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
447 
448  } else if ( xfemstype == XFEMST_NodeEnrMarker ) {
449  double nodeEnrMarker = 0.0, nodeEnrMarkerInNode = 0.0;
450 
451  for(int elNodeInd = 1; elNodeInd <= nDofMan; elNodeInd++) {
452  DofManager *dMan = giveDofManager(elNodeInd);
453  ei->evalNodeEnrMarkerInNode(nodeEnrMarkerInNode, dMan->giveGlobalNumber() );
454 
455  nodeEnrMarker += N.at(elNodeInd)*nodeEnrMarkerInNode;
456  }
457 
458 
459  FloatArray valueArray = {nodeEnrMarker};
460  vtkPieces[0].setInternalXFEMVarInNode(field, enrItIndex, nodeInd, valueArray);
461  }
462 
463  }
464  }
465  }
466  }
467 
468  }
469  else {
470  // Enriched and cut element
471 
472  XfemStructuralElementInterface::giveSubtriangulationCompositeExportData(vtkPieces, primaryVarsToExport, internalVarsToExport, cellVarsToExport, tStep);
473 
474 
475  }
476 
477 }
478 
479 
480 } /* namespace OOFEM */
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Computes the unknown vector interpolated at the specified local coordinates.
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual Element_Geometry_Type giveGeometryType() const
Returns the element geometry type.
void setField(int item, InputFieldType id)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: qtrplstr.C:91
Abstract class representing entity, which is included in the FE model using one (or more) global func...
virtual void XfemElementInterface_computeDeformationGradientVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
bool evalNodeEnrMarkerInNode(double &oNodeEnrMarker, int iNodeInd) const
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
void giveSubtriangulationCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
VTK Interface.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
Definition: element.C:86
bool isDofManEnriched(const DofManager &iDMan) const
virtual void computeEnrichedDofManDofIdArray(IntArray &oDofIdArray, DofManager &iDMan)
Compute Id&#39;s of enriched dofs for a given DofManager.
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
int giveGlobalNumber() const
Definition: dofmanager.h:501
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
Provides Xfem interface for an element.
const std::vector< int > & giveNodeEnrichmentItemIndices(int iNodeIndex) const
Definition: xfemmanager.h:248
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
void XfemElementInterface_createEnrBHmatrixAt(FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
Creates enriched BH-matrix.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
virtual void postInitialize()
Performs post initialization steps.
Elements with geometry defined as EGT_Composite are exported using individual pieces.
virtual FloatArray * giveCoordinates()
Definition: dofmanager.h:382
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.
virtual bool hasField(InputFieldType id)=0
Returns true if record contains field identified by idString keyword.
virtual FEInterpolation * giveInterpolation() const
Definition: qtrplstr.C:66
Base class for dof managers.
Definition: dofmanager.h:113
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
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.
void XfemElementInterface_createEnrBmatrixAt(FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
Creates enriched B-matrix.
virtual void giveCZInputRecord(DynamicInputRecord &input)
XfemManager * giveXfemManager()
Definition: domain.C:375
virtual int giveNumberOfDofManagers() const
Definition: element.h:656
virtual IRResultType initializeCZFrom(InputRecord *ir)
virtual void computeCohesiveTangent(FloatMatrix &answer, TimeStep *tStep)
virtual void giveCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
VTK Interface.
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
int giveNumberOfEnrichmentItems() const
Definition: xfemmanager.h:185
void updateYourselfCZ(TimeStep *tStep)
int giveNumberOfDofs() const
Definition: dofmanager.C:279
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
REGISTER_Element(LSpace)
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes a matrix which, multiplied by the column matrix of nodal displacements, gives the displaceme...
UnknownType
Type representing particular unknown (its physical meaning).
Definition: unknowntype.h:55
bool evalLevelSetNormalInNode(double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
void XfemElementInterface_createEnrNmatrixAt(FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, bool iSetDiscontContribToZero)
Creates enriched N-matrix.
Wrapper around element definition to provide FEICellGeometry interface.
Definition: feinterpol.h:95
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
Definition: floatarray.C:676
#define N(p, q)
Definition: mdm.C:367
int giveDofManPlaceInArray(int iGlobalDofManNum) const
Returns the array index of the dofman with global number iGlobalDofManNum, so that it can be fetched ...
Definition: domain.C:196
virtual void computeDeformationGradientVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Computes the deformation gradient in Voigt form at integration point ip and at time step tStep...
#define _IFT_QTrPlaneStress2dXFEM_RegCoeffTol
bool hasXfemManager()
Definition: domain.C:386
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
bool evalLevelSetTangInNode(double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
This class manages the xfem part.
Definition: xfemmanager.h:109
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
static void computeIPAverage(FloatArray &answer, IntegrationRule *iRule, Element *elem, InternalStateType isType, TimeStep *tStep)
Computes a cell average of an InternalStateType varible based on the weights in the integrationpoints...
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
IntArray vtkExportFields
List with the fields that should be exported to VTK.
Definition: xfemmanager.h:167
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
virtual void postInitialize()
Performs post initialization steps.
Class representing the general Input Record.
Definition: inputrecord.h:101
bool isElementEnriched(const Element *elem)
Definition: xfemmanager.C:104
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
Class Interface.
Definition: interface.h:82
XFEMStateType
Definition: xfemmanager.h:92
void followedBy(const IntArray &b, int allocChunk=0)
Appends array b at the end of receiver.
Definition: intarray.C:145
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Class representing the a dynamic Input Record.
EnrichmentItem * giveEnrichmentItem(int n)
Definition: xfemmanager.h:184
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
virtual bool XfemElementInterface_updateIntegrationRule()
Updates integration rule based on the triangulation.
Domain * giveDomain() const
Definition: femcmpnn.h:100
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
void push_back(const double &iVal)
Add one element.
Definition: floatarray.h:118
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Evaluates nodal representation of real internal forces.
int giveSize() const
Definition: intarray.h:203
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.
DofManager * giveDofManager(int i) const
Definition: element.C:514
virtual void computeCohesiveForces(FloatArray &answer, TimeStep *tStep)
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
Evaluates nodal representation of real internal forces.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
int giveNumberOfRows() const
Returns number of rows of receiver.
Definition: floatmatrix.h:156
Class representing integration point in finite element program.
Definition: gausspoint.h:93
IRResultType giveOptionalField(int &answer, InputFieldType id)
Reads the integer field value.
Definition: inputrecord.C:64
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
Definition: qtrplstr.C:70
#define _IFT_QTrPlaneStress2dXFEM_RegCoeff
Class representing solution step.
Definition: timestep.h:80
virtual void XfemElementInterface_computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *, TimeStep *tStep)
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual void XfemElementInterface_computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)

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