OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
shell7base.h
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 #ifndef Shell7Base_h
36 #define Shell7Base_h
37 
42 #include "vtkxmlexportmodule.h"
43 #include "zznodalrecoverymodel.h"
44 #include "fei3dwedgequad.h"
45 #include "fei3dtrquad.h"
46 #include "fracturemanager.h"
47 #include "cltypes.h"
48 #include <vector>
50 
52 
53 #define _IFT_Shell7base_recoverStress "recoverstress"
54 
55 
56 namespace oofem {
57 class BoundaryLoad;
58 
59 #define _ExportCZ
60 
70 {
71 public:
72  Shell7Base(int n, Domain *d); // constructor
73  virtual ~Shell7Base() {}
74  virtual void giveDofManDofIDMask(int inode, IntArray &) const;
75  virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords);
76  virtual int computeGlobalCoordinatesOnEdge(FloatArray &answer, const FloatArray &lcoords, const int iEdge);
77  virtual int computeNumberOfDofs() { return this->giveNumberOfDofs(); }
78  virtual int checkConsistency();
79  virtual void postInitialize();
80  virtual void printOutputAt(FILE *file, TimeStep *tStep);
81 
82  // Definition & identification
83  virtual const char *giveClassName() const { return "Shell7Base"; }
84  virtual MaterialMode giveMaterialMode() { return _3dMat; }
85 
86 
87  // Element specific
88  virtual int giveNumberOfInPlaneIP() { return numInPlaneIP; };
89  virtual int giveNumberOfDofs();
90  virtual int giveNumberOfEdgeDofs() = 0;
91  virtual int giveNumberOfEdgeDofManagers() = 0;
92  virtual Element *ZZNodalRecoveryMI_giveElement() { return this; }
93  void evalInitialCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcov);
94 
95  static void giveGeneralizedStrainComponents(FloatArray genEps, FloatArray &dphidxi1, FloatArray &dphidxi2, FloatArray &dmdxi1,
96  FloatArray &dmdxi2, FloatArray &m, double &dgamdxi1, double &dgamdxi2, double &gam);
97  static void giveDualBase(FloatMatrix &base1, FloatMatrix &base2);
99 
100  // Overloaded, as the element is using enhanced approximation
101  void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global);
102 protected:
103  // Recover transverse stresses using momentum balance, cf. Främby, Fagerström & Bouzoulis, 'Adaptive modelling of delamination initiation and propagation using an equivalent single-layer shell approach', IJNME, 2016
105 
108 
111 
113 
114  virtual const IntArray &giveOrderingDofTypes() const = 0;
115  virtual const IntArray &giveOrderingNodes() const = 0;
116  virtual const IntArray &giveOrderingEdgeNodes() const = 0;
117 
118  std :: vector< FloatArray >initialNodeDirectors;
120  return this->initialNodeDirectors [ i - 1 ];
121  }
122 
125  return this->initialSolutionVector;
126  }
127 
128  std :: vector< FloatArray >initialEdgeSolutionVectors;
130  return this->initialEdgeSolutionVectors [ i - 1 ];
131  }
132 
133  // Element specific methods
135  virtual void computeGaussPoints() = 0;
136  virtual double computeVolumeAroundLayer(GaussPoint *mastergp, int layer) = 0;
137  virtual double computeAreaAround(GaussPoint *gp, double xi) = 0;
138  virtual void giveSurfaceDofMapping(IntArray &answer, int iSurf) const = 0;
139  virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const = 0;
140 
141 
143 
144 
145 
146  // Integration
147  virtual double edgeComputeLengthAround(GaussPoint *gp, const int iedge);
148 
149 
150  // Base vectors and directors
151  virtual void setupInitialNodeDirectors();
152  void evalInitialDirectorAt(const FloatArray &lCoords, FloatArray &answer);
153 
154 
155 
156  void evalInitialContravarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcon);
157 
158 
159 
160  virtual void evalCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &gcov, FloatArray &genEps, TimeStep *tStep);
161 
162  virtual void evalCovarNormalAt(FloatArray &nCov, const FloatArray &lCoords, FloatArray &genEpsC, TimeStep *tStep);
163  virtual void evalInitialCovarNormalAt(FloatArray &nCov, const FloatArray &lCoords);
164 
165  void edgeEvalInitialDirectorAt(const FloatArray &lCoords, FloatArray &answer, const int iEdge);
166 
167  void edgeEvalInitialCovarBaseVectorsAt(const FloatArray &lCoords, const int iedge, FloatArray &G1, FloatArray &G3);
168 
169  void edgeEvalCovarBaseVectorsAt(const FloatArray &lCoords, const int iedge, FloatMatrix &gcov, TimeStep *tStep);
170 
171  virtual double giveGlobalZcoord(const FloatArray &lCoords);
172  virtual double giveGlobalZcoordInLayer(double xi, int layer);
173 
175 
176  // Stress and strain
177  void computeFAt(const FloatArray &lCoords, FloatMatrix &answer, FloatArray &genEps, TimeStep *tStep);
178  void computeStressMatrix(FloatMatrix &answer, FloatArray &genEps, GaussPoint *gp, Material *mat, TimeStep *tStep);
179 
180  virtual void computeCauchyStressVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
181 
182  // Mass matrices
183  virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep);
184  virtual void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep); // analytically integrated through the thickness
185  virtual void computeMassMatrixNum(FloatMatrix &answer, TimeStep *tStep); // numerical integration in B_X
186  virtual void giveMassFactorsAt(GaussPoint *gp, FloatArray &answer, double &gam);
187  void computeConvectiveMassForce(FloatArray &answer, TimeStep *tStep);
188  void computeThicknessMappingCoeff(GaussPoint *gp, FloatArray &answer); // for analytically integrated mass matrix
189 
190 
191  // Tangent matrices
192  virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep);
193  virtual void computeBulkTangentMatrix(FloatMatrix &answer, FloatArray &solVec, TimeStep *tStep);
194  void computeLinearizedStiffness(GaussPoint * gp, StructuralMaterial * mat, TimeStep * tStep, FloatMatrix A [ 3 ] [ 3 ]);
195  void computePressureTangentMatrix(FloatMatrix &answer, Load *load, const int iSurf, TimeStep *tStep);
196  void computeLambdaGMatrices(FloatMatrix lambda [ 3 ], FloatArray &genEps, double zeta);
197  void computeLambdaNMatrix(FloatMatrix &lambda, FloatArray &genEps, double zeta);
198 
199  // Internal forces
200  virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0);
201  void computeSectionalForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, int useUpdatedGpRecord = 0);
202  void computeSectionalForcesAt(FloatArray &sectionalForces, IntegrationPoint *ip, Material *mat, TimeStep *tStep, FloatArray &genEpsC, double zeta);
203 
204  // External forces
205  virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode);
206  void computePressureForce(FloatArray &answer, FloatArray solVec, const int iSurf, BoundaryLoad *surfLoad, TimeStep *tStep, ValueModeType mode);
207  void computePressureForceAt(GaussPoint *gp, FloatArray &answer, const int iSurf, FloatArray genEps, BoundaryLoad *surfLoad, TimeStep *tStep, ValueModeType mode);
208  virtual void computeTractionForce(FloatArray &answer, const int iedge, BoundaryLoad *edgeLoad, TimeStep *tStep, ValueModeType mode, bool map2elementDOFs=false);
209 
210 
211 
212  // Solution vectors
213  void computeVectorOfDofIDs(const IntArray &dofIdArray, ValueModeType u, TimeStep *tStep, FloatArray &answer);
214  void temp_computeBoundaryVectorOf(IntArray &dofIdArray, int boundary, ValueModeType u, TimeStep *tStep, FloatArray &answer);
215 
216  virtual void edgeGiveUpdatedSolutionVector(FloatArray &answer, const int iedge, TimeStep *tStep);
217 
220 
221  //void giveInitialSolutionVector(FloatArray &answer);
222  void giveUpdatedSolutionVector(FloatArray &answer, TimeStep *tStep);
223  void giveUnknownsAt(const FloatArray &lcoords, FloatArray &solVec, FloatArray &x, FloatArray &m, double &gam, TimeStep *tStep);
224 
225  // Nodal averaging interface:
227  virtual void NodalAveragingRecoveryMI_computeSideValue(FloatArray &answer, int side, InternalStateType type, TimeStep *tStep);
228 
229  // ZZ recovery
231  void NodalRecoveryMI_computeNValProduct(FloatMatrix &answer, int layer, InternalStateType type, TimeStep *tStep);
232  void NodalRecoveryMI_computeNNMatrix(FloatArray &answer, int layer, InternalStateType type);
233  void NodalRecoveryMI_recoverValues(std::vector<FloatArray> &recoveredValues, int layer, InternalStateType type, TimeStep *tStep);
234 
235  // VTK interface
236  virtual void vtkEvalInitialGlobalCoordinateAt(const FloatArray &localCoords, int layer, FloatArray &globalCoords);
237  virtual void vtkEvalUpdatedGlobalCoordinateAt(const FloatArray &localCoords, int layer, FloatArray &globalCoords, TimeStep *tStep);
238 
239  virtual void vtkEvalInitialGlobalCZCoordinateAt(const FloatArray &localCoords, int interface, FloatArray &globalCoords);
240 
241  virtual void giveCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep );
242  virtual void giveShellExportData(VTKPiece &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep );
243 
244  void giveFictiousNodeCoordsForExport(std::vector<FloatArray> &nodes, int layer);
245  void giveFictiousCZNodeCoordsForExport(std::vector<FloatArray> &nodes, int interface);
246  void giveFictiousUpdatedNodeCoordsForExport(std::vector<FloatArray> &nodes, int layer, TimeStep *tStep);
247  //void giveLocalNodeCoordsForExport(FloatArray &nodeLocalXi1Coords, FloatArray &nodeLocalXi2Coords, FloatArray &nodeLocalXi3Coords);
248 
249  // Recovery of through thickness stresses by momentum balance
251  virtual void giveRecoveredTransverseInterfaceStress(std::vector<FloatMatrix> &transverseStress, TimeStep *tStep);
252  void giveTractionBC(FloatMatrix &tractionTop, FloatMatrix &tractionBtm, TimeStep *tStep);
253  void recoverValuesFromIP(std::vector<FloatArray> &nodes, int layer, InternalStateType type, TimeStep *tStep, stressRecoveryType SRtype = copyIPvalue);
254  void CopyIPvaluesToNodes(std::vector<FloatArray> &recoveredValues, int layer, InternalStateType type, TimeStep *tStep);
255  void nodalLeastSquareFitFromIP(std::vector<FloatArray> &recoveredValues, int layer, InternalStateType type, TimeStep *tStep);
256  virtual void recoverShearStress(TimeStep *tStep);
257  void giveLayerContributionToSR(FloatMatrix &dSmat, FloatMatrix &dSmatLayerIP, int layer, double zeroThicknessLevel, TimeStep *tStep);
258  void fitRecoveredStress2BC(std::vector<FloatMatrix> &answer1, std::vector<FloatMatrix> &answer2, std::vector<FloatMatrix> &dSmat, std::vector<FloatMatrix> &dSmatIP, FloatMatrix &SmatOld, FloatMatrix &tractionBtm, FloatMatrix &tractionTop, double zeroThicknessLevel, FloatArray fulfillBC, int startLayer, int endLayer);
259  void updateLayerTransvStressesSR(FloatMatrix &dSmatLayerIP, int layer);
260  void updateLayerTransvShearStressesSR(FloatMatrix &dSmatLayerIP, FloatMatrix &SmatOld, int layer);
261  void updateLayerTransvNormalStressSR(FloatMatrix &dSzzMatLayerIP, FloatArray &SzzMatOld, int layer);
262 // void computeBmatrixForStressRecAt(FloatArray &lcoords, FloatMatrix &answer, int layer, bool intSzz = false);
263 // void givePolynomial2GradientForStressRecAt(FloatArray &answer, FloatArray &coords);
265 // void giveZintegratedPolynomial2GradientForStressRecAt(FloatArray &answer, FloatArray &coords);
267  void giveL2contribution(FloatMatrix &ipValues, FloatMatrix &Nbar, int layer, InternalStateType type, TimeStep *tStep);
268  void giveSPRcontribution(FloatMatrix &eltIPvalues, FloatMatrix &eltPolynomialValues, int layer, InternalStateType type, TimeStep *tStep);
269 
270 
271  // N and B matrices
272  virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int li = 1, int ui = ALL_STRAINS) { answer.clear(); }
273 
274  virtual void computeBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, int li = 1, int ui = ALL_STRAINS);
275  virtual void computeNmatrixAt(const FloatArray &iLocCoords, FloatMatrix &answer);
276  virtual void edgeComputeNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer);
277 
278  virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
279  {
280  OOFEM_ERROR("ComputeStrainVectorInLayer - Should not be called! Not meaningful for this element.");
281  }
282  virtual void edgeComputeBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, int li = 1, int ui = ALL_STRAINS);
283 
285 
286  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
287  void computeInterLaminarStressesAt(int interfaceNum, TimeStep *tStep, std::vector < FloatArray > &interLamStresses);
289  int giveSymVoigtIndex(int ind1, int ind2);
290  int giveVoigtIndex(int ind1, int ind2);
291  std::vector< std::vector<int> > voigtIndices;
292 
293 };
294 } // end namespace oofem
295 #endif
void CopyIPvaluesToNodes(std::vector< FloatArray > &recoveredValues, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:2012
void temp_computeBoundaryVectorOf(IntArray &dofIdArray, int boundary, ValueModeType u, TimeStep *tStep, FloatArray &answer)
Definition: shell7base.C:1497
void evalInitialContravarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcon)
Definition: shell7base.C:274
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
The element interface required by NodalAvergagingRecoveryModel.
FloatArray initialSolutionVector
Definition: shell7base.h:123
virtual int giveNumberOfInPlaneIP()
Definition: shell7base.h:88
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: shell7base.C:63
virtual const IntArray & giveOrderingEdgeNodes() const =0
virtual void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep)
Computes the element value in given node.
Definition: shell7base.C:1368
virtual ~Shell7Base()
Definition: shell7base.h:73
FloatArray convV6ToV9Stress(const FloatArray &V6)
Definition: shell7base.C:3187
std::vector< std::vector< int > > voigtIndices
Definition: shell7base.h:291
Class and object Domain.
Definition: domain.h:115
static void giveGeneralizedStrainComponents(FloatArray genEps, FloatArray &dphidxi1, FloatArray &dphidxi2, FloatArray &dmdxi1, FloatArray &dmdxi2, FloatArray &m, double &dgamdxi1, double &dgamdxi2, double &gam)
Definition: shell7base.C:1604
void nodalLeastSquareFitFromIP(std::vector< FloatArray > &recoveredValues, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:2060
virtual Element * ZZNodalRecoveryMI_giveElement()
Definition: shell7base.h:92
void giveZintegratedPolynomialGradientForStressRecAt(FloatArray &answer, FloatArray &coords)
Definition: shell7base.C:3002
void NodalRecoveryMI_computeNNMatrix(FloatArray &answer, int layer, InternalStateType type)
Definition: shell7base.C:1412
virtual void evaluateFailureCriteriaQuantities(FailureCriteriaStatus *fc, TimeStep *tStep)
Definition: shell7base.C:3234
void giveUnknownsAt(const FloatArray &lcoords, FloatArray &solVec, FloatArray &x, FloatArray &m, double &gam, TimeStep *tStep)
Definition: shell7base.C:1620
virtual void vtkEvalUpdatedGlobalCoordinateAt(const FloatArray &localCoords, int layer, FloatArray &globalCoords, TimeStep *tStep)
Definition: shell7base.C:1844
The element interface required by ZZNodalRecoveryModel.
Abstract base class for "structural" finite elements with geometrical nonlinearities.
virtual void vtkEvalInitialGlobalCZCoordinateAt(const FloatArray &localCoords, int interface, FloatArray &globalCoords)
Definition: shell7base.C:1828
void computeStressMatrix(FloatMatrix &answer, FloatArray &genEps, GaussPoint *gp, Material *mat, TimeStep *tStep)
Definition: shell7base.C:725
virtual int giveNumberOfEdgeDofManagers()=0
virtual void giveSurfaceDofMapping(IntArray &answer, int iSurf) const =0
Assembles surface dof mapping mask, which provides mapping between surface local DOFs and "global" el...
Class representing implementation of quadratic wedge interpolation class.
virtual void giveRecoveredTransverseInterfaceStress(std::vector< FloatMatrix > &transverseStress, TimeStep *tStep)
Definition: shell7base.C:2372
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Evaluates nodal representation of real internal forces.
Definition: shell7base.C:787
std::vector< FloatArray > initialEdgeSolutionVectors
Definition: shell7base.h:128
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
void giveFictiousCZNodeCoordsForExport(std::vector< FloatArray > &nodes, int interface)
Definition: shell7base.C:3142
Elements with geometry defined as EGT_Composite are exported using individual pieces.
LayeredCrossSection * layeredCS
Definition: shell7base.h:107
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
Definition: shell7base.C:120
virtual double giveGlobalZcoordInLayer(double xi, int layer)
Definition: shell7base.C:209
void computeVectorOfDofIDs(const IntArray &dofIdArray, ValueModeType u, TimeStep *tStep, FloatArray &answer)
virtual void giveDofManDofIDMask(int inode, IntArray &) const
Returns dofmanager dof mask for node.
Definition: shell7base.C:145
virtual int checkConsistency()
Performs consistency check.
Definition: shell7base.C:75
void giveSPRcontribution(FloatMatrix &eltIPvalues, FloatMatrix &eltPolynomialValues, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:2171
Abstract base class for all finite elements.
Definition: element.h:145
virtual int giveNumberOfDofs()
Definition: shell7base.C:152
virtual void edgeComputeBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, int li=1, int ui=ALL_STRAINS)
Definition: shell7base.C:1672
void computeLinearizedStiffness(GaussPoint *gp, StructuralMaterial *mat, TimeStep *tStep, FloatMatrix A[3][3])
Definition: shell7base.C:585
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
int giveSymVoigtIndex(int ind1, int ind2)
Definition: shell7base.C:3262
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
Definition: shell7base.C:1330
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element&#39;s local coordinates.
Definition: shell7base.C:158
FEInterpolation3d * fei
Definition: shell7base.h:112
virtual void edgeGiveUpdatedSolutionVector(FloatArray &answer, const int iedge, TimeStep *tStep)
Definition: shell7base.C:1563
virtual void recoverShearStress(TimeStep *tStep)
Definition: shell7base.C:2250
void setupInitialSolutionVector()
Definition: shell7base.C:1540
This class implements a layered cross section in a finite element problem.
virtual double computeVolumeAroundLayer(GaussPoint *mastergp, int layer)=0
void NodalRecoveryMI_recoverValues(std::vector< FloatArray > &recoveredValues, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:1464
LayeredCrossSection * giveLayeredCS()
Definition: shell7base.h:98
virtual const IntArray & giveOrderingNodes() const =0
void giveL2contribution(FloatMatrix &ipValues, FloatMatrix &Nbar, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:2133
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
Definition: shell7base.C:764
virtual const char * giveClassName() const
Definition: shell7base.h:83
void edgeEvalCovarBaseVectorsAt(const FloatArray &lCoords, const int iedge, FloatMatrix &gcov, TimeStep *tStep)
Definition: shell7base.C:382
void computeSectionalForcesAt(FloatArray &sectionalForces, IntegrationPoint *ip, Material *mat, TimeStep *tStep, FloatArray &genEpsC, double zeta)
Definition: shell7base.C:833
virtual void giveCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
Definition: shell7base.C:1856
Second order triangular interpolation in 3D space (6 nodes).
Definition: fei3dtrquad.h:47
void computeSectionalForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, int useUpdatedGpRecord=0)
Definition: shell7base.C:800
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const =0
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
void evalInitialCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcov)
Definition: shell7base.C:222
virtual void giveShellExportData(VTKPiece &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
Definition: shell7base.C:1864
void NodalRecoveryMI_computeNValProduct(FloatMatrix &answer, int layer, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:1384
virtual void evalCovarNormalAt(FloatArray &nCov, const FloatArray &lCoords, FloatArray &genEpsC, TimeStep *tStep)
Definition: shell7base.C:1243
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
Definition: boundaryload.h:110
void giveUpdatedSolutionVector(FloatArray &answer, TimeStep *tStep)
Definition: shell7base.C:1525
std::vector< FloatArray > initialNodeDirectors
Definition: shell7base.h:118
void edgeEvalInitialDirectorAt(const FloatArray &lCoords, FloatArray &answer, const int iEdge)
Definition: shell7base.C:307
virtual int computeGlobalCoordinatesOnEdge(FloatArray &answer, const FloatArray &lcoords, const int iEdge)
Definition: shell7base.C:183
virtual const IntArray & giveOrderingDofTypes() const =0
virtual void giveMassFactorsAt(GaussPoint *gp, FloatArray &answer, double &gam)
Definition: shell7base.C:976
#define OOFEM_ERROR(...)
Definition: error.h:61
virtual void edgeComputeNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer)
Definition: shell7base.C:1642
void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global)
Computes the contribution of the given load at the given boundary edge.
Definition: shell7base.C:1120
int giveVoigtIndex(int ind1, int ind2)
Definition: shell7base.C:3282
virtual void NodalAveragingRecoveryMI_computeSideValue(FloatArray &answer, int side, InternalStateType type, TimeStep *tStep)
Definition: shell7base.C:1361
static FEI3dTrQuad interpolationForCZExport
Definition: shell7base.h:109
FloatArray & giveInitialNodeDirector(int i)
Definition: shell7base.h:119
virtual void ZZNodalRecoveryMI_ComputeEstimatedInterpolationMtrx(FloatArray &answer, GaussPoint *gp, InternalStateType type)
Definition: shell7base.C:1441
void updateLayerTransvShearStressesSR(FloatMatrix &dSmatLayerIP, FloatMatrix &SmatOld, int layer)
Definition: shell7base.C:2912
void computeInterLaminarStressesAt(int interfaceNum, TimeStep *tStep, std::vector< FloatArray > &interLamStresses)
Definition: shell7base.C:3201
void setupInitialEdgeSolutionVector()
Definition: shell7base.C:1577
virtual void evalCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &gcov, FloatArray &genEps, TimeStep *tStep)
Definition: shell7base.C:357
void giveLayerContributionToSR(FloatMatrix &dSmat, FloatMatrix &dSmatLayerIP, int layer, double zeroThicknessLevel, TimeStep *tStep)
Definition: shell7base.C:2455
static FEI3dWedgeQuad interpolationForExport
Definition: shell7base.h:110
Abstract base class for all material models.
Definition: material.h:95
FloatArray & giveInitialSolutionVector()
Definition: shell7base.h:124
void giveFictiousNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer)
Definition: shell7base.C:3122
virtual void computeTractionForce(FloatArray &answer, const int iedge, BoundaryLoad *edgeLoad, TimeStep *tStep, ValueModeType mode, bool map2elementDOFs=false)
Definition: shell7base.C:1267
#define ALL_STRAINS
void computeThicknessMappingCoeff(GaussPoint *gp, FloatArray &answer)
Definition: shell7base.C:865
virtual void evalInitialCovarNormalAt(FloatArray &nCov, const FloatArray &lCoords)
Definition: shell7base.C:1255
void edgeEvalInitialCovarBaseVectorsAt(const FloatArray &lCoords, const int iedge, FloatArray &G1, FloatArray &G3)
Definition: shell7base.C:250
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: shell7base.h:77
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Prints output of receiver to stream, for given time step.
Definition: shell7base.C:109
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
virtual void vtkEvalInitialGlobalCoordinateAt(const FloatArray &localCoords, int layer, FloatArray &globalCoords)
Definition: shell7base.C:1812
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual double giveGlobalZcoord(const FloatArray &lCoords)
Definition: shell7base.C:202
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
Definition: shell7base.h:84
This class represent a 7 parameter shell element.
Definition: shell7base.h:68
virtual double computeAreaAround(GaussPoint *gp, double xi)=0
CharType
Definition: chartype.h:87
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
Definition: shell7base.C:902
virtual void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes mass matrix of receiver.
Definition: shell7base.C:910
Class representing the general Input Record.
Definition: inputrecord.h:101
Class representing a general abstraction for surface finite element interpolation class...
Definition: feinterpol3d.h:44
void fitRecoveredStress2BC(std::vector< FloatMatrix > &answer1, std::vector< FloatMatrix > &answer2, std::vector< FloatMatrix > &dSmat, std::vector< FloatMatrix > &dSmatIP, FloatMatrix &SmatOld, FloatMatrix &tractionBtm, FloatMatrix &tractionTop, double zeroThicknessLevel, FloatArray fulfillBC, int startLayer, int endLayer)
Definition: shell7base.C:2793
void updateLayerTransvNormalStressSR(FloatMatrix &dSzzMatLayerIP, FloatArray &SzzMatOld, int layer)
Definition: shell7base.C:2952
virtual void setupInitialNodeDirectors()
Definition: shell7base.C:325
Class Interface.
Definition: interface.h:82
virtual void computeMassMatrixNum(FloatMatrix &answer, TimeStep *tStep)
Definition: shell7base.C:1000
void computeFAt(const FloatArray &lCoords, FloatMatrix &answer, FloatArray &genEps, TimeStep *tStep)
Definition: shell7base.C:715
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int li=1, int ui=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
Definition: shell7base.h:272
void computePressureTangentMatrix(FloatMatrix &answer, Load *load, const int iSurf, TimeStep *tStep)
Definition: shell7base.C:629
virtual void computeBulkTangentMatrix(FloatMatrix &answer, FloatArray &solVec, TimeStep *tStep)
Definition: shell7base.C:533
void recoverValuesFromIP(std::vector< FloatArray > &nodes, int layer, InternalStateType type, TimeStep *tStep, stressRecoveryType SRtype=copyIPvalue)
Definition: shell7base.C:1980
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
Definition: shell7base.C:433
Abstract base class for all "structural" constitutive models.
virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3D strain vector in element layer.
Definition: shell7base.h:278
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
void computeConvectiveMassForce(FloatArray &answer, TimeStep *tStep)
Definition: shell7base.C:1052
static void giveDualBase(FloatMatrix &base1, FloatMatrix &base2)
Definition: shell7base.C:283
virtual double edgeComputeLengthAround(GaussPoint *gp, const int iedge)
Definition: shell7base.C:1344
Load is base abstract class for all loads.
Definition: load.h:61
The element interface required by LayeredCrossSection.
void updateLayerTransvStressesSR(FloatMatrix &dSmatLayerIP, int layer)
Definition: shell7base.C:2877
virtual void computeCauchyStressVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Definition: shell7base.C:737
void giveTractionBC(FloatMatrix &tractionTop, FloatMatrix &tractionBtm, TimeStep *tStep)
Definition: shell7base.C:2206
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int giveNumberOfEdgeDofs()=0
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Definition: floatmatrix.h:516
Shell7Base(int n, Domain *d)
Definition: shell7base.C:58
void computePressureForce(FloatArray &answer, FloatArray solVec, const int iSurf, BoundaryLoad *surfLoad, TimeStep *tStep, ValueModeType mode)
Definition: shell7base.C:1152
FloatArray & giveInitialEdgeSolutionVector(int i)
Definition: shell7base.h:129
void giveFictiousUpdatedNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer, TimeStep *tStep)
Definition: shell7base.C:3162
Class representing integration point in finite element program.
Definition: gausspoint.h:93
void computeLambdaNMatrix(FloatMatrix &lambda, FloatArray &genEps, double zeta)
Definition: shell7base.C:509
void computeLambdaGMatrices(FloatMatrix lambda[3], FloatArray &genEps, double zeta)
Definition: shell7base.C:460
Class representing solution step.
Definition: timestep.h:80
FloatMatrix giveAxialMatrix(const FloatArray &vec)
Definition: shell7base.C:687
void giveZ2integratedPolynomial2GradientForStressRecAt(FloatArray &answer, FloatArray &coords)
Definition: shell7base.C:3043
void evalInitialDirectorAt(const FloatArray &lCoords, FloatArray &answer)
Definition: shell7base.C:294
virtual void postInitialize()
Performs post initialization steps.
Definition: shell7base.C:87
virtual void computeNmatrixAt(const FloatArray &iLocCoords, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
Definition: shell7base.C:1777
void computePressureForceAt(GaussPoint *gp, FloatArray &answer, const int iSurf, FloatArray genEps, BoundaryLoad *surfLoad, TimeStep *tStep, ValueModeType mode)
Definition: shell7base.C:1202
virtual void computeGaussPoints()=0
Initializes the array of integration rules member variable.

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