OOFEM 3.0
Loading...
Searching...
No Matches
tr_shell02.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 - 2025 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 tr_shell02_h
36#define tr_shell02_h
37
43#include "spatiallocalizer.h"
44
45#include <memory>
46
47#define _IFT_TR_SHELL02_Name "tr_shell02"
48
49namespace oofem {
57{
58protected:
60 std :: unique_ptr< DKTPlate3d > plate;
62 std :: unique_ptr< TrPlanestressRotAllman3d > membrane;
68 std :: unique_ptr< IntegrationRule > compositeIR;
69
72
73public:
75 TR_SHELL02(int n, Domain * d);
77 virtual ~TR_SHELL02() {}
78
79 FEInterpolation *giveInterpolation() const override { return plate->giveInterpolation(); }
80
81 int computeNumberOfDofs() override { return 18; }
82 void giveDofManDofIDMask(int inode, IntArray &answer) const override
83 { plate->giveDofManDofIDMask(inode, answer); }
84 // definition & identification
85 const char *giveInputRecordName() const override { return _IFT_TR_SHELL02_Name; }
86 const char *giveClassName() const override { return "TR_SHELL02"; }
87 void initializeFrom(InputRecord &ir, int priority) override;
88
89 void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep) override;
90 void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) override;
91 double computeVolumeAround(GaussPoint *gp) override;
92 bool giveRotationMatrix(FloatMatrix &answer) override;
93
94 void updateYourself(TimeStep *tStep) override;
95 void updateInternalState(TimeStep *tStep) override;
96 void printOutputAt(FILE *file, TimeStep *tStep) override;
97 void saveContext(DataStream &stream, ContextMode mode) override;
98 void restoreContext(DataStream &stream, ContextMode mode) override;
99 void postInitialize() override;
101 void setCrossSection(int csIndx) override;
102#ifdef __OOFEG
103 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
104 void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType type) override;
105 void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override;
106#endif
107 // the membrane and plate irules are same (chacked in initializeFrom)
108 int giveDefaultIntegrationRule() const override { return plate->giveDefaultIntegrationRule(); }
109 IntegrationRule *giveDefaultIntegrationRulePtr() override { return plate->giveDefaultIntegrationRulePtr(); }
110 IntegrationRule *giveIntegrationRule(int i) override { return plate->giveIntegrationRule(i); }
111 Element_Geometry_Type giveGeometryType() const override { return EGT_triangle_1; }
113 MaterialMode giveMaterialMode() override { return _Unknown; }
114
116 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
117
119 InternalStateType type, TimeStep *tStep) override;
120
123
124 // SpatialLocalizerI
125 void SpatialLocalizerI_giveBBox(FloatArray &bb0, FloatArray &bb1) override;
126
127 int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override {
128 return this->plate->computeGlobalCoordinates(answer, lcoords);
129 }
130
131 bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords) override {
132 return this->plate->computeLocalCoordinates(answer, gcoords);
133 }
134
135protected:
136 void computeBmatrixAt(GaussPoint *, FloatMatrix &, int = 1, int = ALL_STRAINS) override
137 { OOFEM_ERROR("calling of this function is not allowed"); }
138 void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &) override
139 { OOFEM_ERROR("calling of this function is not allowed"); }
140
142protected:
143 void computeGaussPoints() override
144 {
145 this->membrane->computeGaussPoints();
146 this->plate->computeGaussPoints();
147 }
148 void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
149 { OOFEM_ERROR("calling of this function is not allowed"); }
150 void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
151 { OOFEM_ERROR("calling of this funciton is not allowed"); }
152 void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode) override;
153
154public:
155 void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
156 { OOFEM_ERROR("calling of this function is not allowed"); }
157 void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep) override
158 { OOFEM_ERROR("calling of this function is not allowed"); }
159 void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord) override
160 { OOFEM_ERROR("calling of this function is not allowed"); }
161};
162} // end namespace oofem
163#endif
SpatialLocalizerInterface(Element *element)
StructuralElement(int n, Domain *d)
void postInitialize() override
Performs post initialization steps.
Definition tr_shell02.C:75
Interface * giveInterface(InterfaceType it) override
Definition tr_shell02.C:189
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
Definition tr_shell02.h:127
bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords) override
Definition tr_shell02.h:131
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
Definition tr_shell02.h:155
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) override
Definition tr_shell02.h:136
void initializeFrom(InputRecord &ir, int priority) override
Definition tr_shell02.C:66
virtual ~TR_SHELL02()
Destructor.
Definition tr_shell02.h:77
int computeNumberOfDofs() override
Definition tr_shell02.h:81
void updateInternalState(TimeStep *tStep) override
Definition tr_shell02.C:171
const char * giveClassName() const override
Definition tr_shell02.h:86
static IntArray loc_plate
Definition tr_shell02.h:70
double computeVolumeAround(GaussPoint *gp) override
Definition tr_shell02.C:206
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
Definition tr_shell02.h:148
FEInterpolation * giveInterpolation() const override
Definition tr_shell02.h:79
void ZZErrorEstimatorI_computeLocalStress(FloatArray &answer, FloatArray &sig) override
Definition tr_shell02.C:324
void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &) override
Definition tr_shell02.h:138
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord) override
Definition tr_shell02.h:159
void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode) override
Definition tr_shell02.C:212
void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep) override
Definition tr_shell02.h:157
void restoreContext(DataStream &stream, ContextMode mode) override
Definition tr_shell02.C:305
IntegrationRule * giveIntegrationRule(int i) override
Definition tr_shell02.h:110
void printOutputAt(FILE *file, TimeStep *tStep) override
Definition tr_shell02.C:250
void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep) override
Definition tr_shell02.C:102
static IntArray loc_membrane
Definition tr_shell02.h:71
const char * giveInputRecordName() const override
Definition tr_shell02.h:85
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
Definition tr_shell02.C:240
IntegrationRule * giveDefaultIntegrationRulePtr() override
Definition tr_shell02.h:109
Element_Geometry_Type giveGeometryType() const override
Definition tr_shell02.h:111
void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) override
Definition tr_shell02.C:120
std ::unique_ptr< DKTPlate3d > plate
Pointer to plate element.
Definition tr_shell02.h:60
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition tr_shell02.C:218
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition tr_shell02.h:150
int giveDefaultIntegrationRule() const override
Definition tr_shell02.h:108
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
Definition tr_shell02.C:420
void setCrossSection(int csIndx) override
Definition tr_shell02.C:92
MaterialMode giveMaterialMode() override
Definition tr_shell02.h:113
void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType type) override
Definition tr_shell02.C:454
TR_SHELL02(int n, Domain *d)
Constructor.
Definition tr_shell02.C:57
IntegrationRule * ZZErrorEstimatorI_giveIntegrationRule() override
Definition tr_shell02.C:314
std ::unique_ptr< IntegrationRule > compositeIR
Definition tr_shell02.h:68
std ::unique_ptr< TrPlanestressRotAllman3d > membrane
Pointer to membrane (plane stress) element.
Definition tr_shell02.h:62
bool giveRotationMatrix(FloatMatrix &answer) override
Definition tr_shell02.C:138
void SpatialLocalizerI_giveBBox(FloatArray &bb0, FloatArray &bb1) override
Definition tr_shell02.C:381
void giveDofManDofIDMask(int inode, IntArray &answer) const override
Definition tr_shell02.h:82
void updateLocalNumbering(EntityRenumberingFunctor &f) override
Definition tr_shell02.C:85
void saveContext(DataStream &stream, ContextMode mode) override
Definition tr_shell02.C:296
void computeGaussPoints() override
Definition tr_shell02.h:143
void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override
Definition tr_shell02.C:488
void updateYourself(TimeStep *tStep) override
Definition tr_shell02.C:179
integrationDomain giveIntegrationDomain() const override
Definition tr_shell02.h:112
ZZErrorEstimatorInterface(Element *element)
Constructor.
ZZNodalRecoveryModelInterface(Element *element)
Constructor.
#define OOFEM_ERROR(...)
Definition error.h:79
long ContextMode
Definition contextmode.h:43
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define ALL_STRAINS
#define _IFT_TR_SHELL02_Name
Definition tr_shell02.h:47

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011