OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
rershell.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 rershell_h
36 #define rershell_h
37 
38 #include "../sm/Elements/Shells/cct3d.h"
39 #include "../sm/CrossSections/layeredcrosssection.h"
40 
41 #define _IFT_RerShell_Name "rershell"
42 
43 namespace oofem {
44 #ifndef __CHARTENSOR // termitovo
45  #define __CHARTENSOR
46 enum CharTensor {
51 
56 };
57 #endif
58 
63 class RerShell : public CCTPlate3d
64 {
65 protected:
66  double Rx, Ry, Rxy;
67 
68 public:
69  RerShell(int n, Domain * d);
70  virtual ~RerShell() {
71  }
72 
73  virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep);
74  virtual void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep)
75  { computeLumpedMassMatrix(answer, tStep); }
76 
77  virtual int giveLocalCoordinateSystem(FloatMatrix &answer);
78 
79  void giveLocalCoordinates(FloatArray &answer, const FloatArray &global);
80 
81  virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords);
82  //
83  void giveCharacteristicTensor(FloatMatrix &answer, CharTensor type, GaussPoint *gp, TimeStep *tStep);
84  virtual void printOutputAt(FILE *file, TimeStep *tStep);
85 
87  virtual bool computeGtoLRotationMatrix(FloatMatrix &answer);
88 
89 
90 
91  // layered cross section support functions
92  virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain,
93  GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep);
94 
96 
97  virtual int computeNumberOfDofs() { return 18; }
98  virtual void giveDofManDofIDMask(int inode, IntArray &) const;
99 
100  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
101 
103  InternalStateType type, TimeStep *tStep);
104 
105 
106  // io routines
107 #ifdef __OOFEG
108  //void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep);
109  //void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep);
110  //virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep);
111 #endif
112 
113  // definition & identification
114  virtual const char *giveInputRecordName() const { return _IFT_RerShell_Name; }
115  virtual const char *giveClassName() const { return "RerShell"; }
116 
118 
120  virtual MaterialMode giveMaterialMode() { return _3dShell; }
121 
122 protected:
123  virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode);
124  virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int = 1, int = ALL_STRAINS);
125  virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer);
126  virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep);
127  virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
128  virtual void computeGaussPoints();
129  virtual double giveArea();
130 };
131 } // end namespace oofem
132 #endif // rershell_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual const char * giveInputRecordName() const
Definition: rershell.h:114
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
Definition: rershell.C:394
Class and object Domain.
Definition: domain.h:115
virtual ~RerShell()
Definition: rershell.h:70
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
Definition: rershell.h:97
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
Definition: rershell.C:292
double Rxy
Definition: rershell.h:66
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Prints output of receiver to stream, for given time step.
Definition: rershell.C:608
virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3D strain vector in element layer.
Definition: rershell.C:583
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
Definition: rershell.C:72
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
Definition: rershell.C:667
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
virtual void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes mass matrix of receiver.
Definition: rershell.h:74
virtual void giveDofManDofIDMask(int inode, IntArray &) const
Returns dofmanager dof mask for node.
Definition: rershell.C:652
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int=1, int=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
Definition: rershell.C:87
void giveLocalCoordinates(FloatArray &answer, const FloatArray &global)
Definition: rershell.C:500
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
Definition: rershell.C:175
This class represent CCT plate element that can be arbitrary oriented in space, in contrast to base C...
Definition: cct3d.h:72
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: rershell.C:298
virtual const char * giveClassName() const
Definition: rershell.h:115
virtual int giveLocalCoordinateSystem(FloatMatrix &answer)
Returns local coordinate system of receiver Required by material models with ortho- and anisotrophy...
Definition: rershell.C:378
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
Definition: rershell.C:304
#define ALL_STRAINS
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
Definition: rershell.h:120
Class representing vector of real numbers.
Definition: floatarray.h:82
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
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
Definition: rershell.C:332
virtual double giveArea()
Definition: rershell.C:248
Class representing the general Input Record.
Definition: inputrecord.h:101
Class Interface.
Definition: interface.h:82
virtual const FloatMatrix * computeGtoLRotationMatrix()
Definition: cct3d.C:153
void giveCharacteristicTensor(FloatMatrix &answer, CharTensor type, GaussPoint *gp, TimeStep *tStep)
Definition: rershell.C:522
virtual void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep)
Computes the element value in given node.
Definition: rershell.C:659
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: rershell.C:275
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
Load is base abstract class for all loads.
Definition: load.h:61
RerShell(int n, Domain *d)
Definition: rershell.C:60
virtual integrationDomain giveIntegrationDomain() const
Returns integration domain for receiver, used to initialize integration point over receiver volume...
Definition: rershell.h:119
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
This class implements an triangular three-node shell (CCT+linear plan stress) curved finite element...
Definition: rershell.h:63
Class representing solution step.
Definition: timestep.h:80
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
Definition: rershell.C:163
#define _IFT_RerShell_Name
Definition: rershell.h:41
virtual const FloatMatrix * computeGtoLRotationMatrix()
Definition: rershell.h:86

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