OOFEM 3.0
Loading...
Searching...
No Matches
tr_shell01.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_shell01_h
36#define tr_shell01_h
37
43#include "spatiallocalizer.h"
44
45#include <memory>
46
47#define _IFT_TR_SHELL01_Name "tr_shell01"
48
49namespace oofem {
58{
59protected:
61 std :: unique_ptr< CCTPlate3d > plate;
63 std :: unique_ptr< TrPlaneStrRot3d > membrane;
69 std :: unique_ptr< IntegrationRule > compositeIR;
70
73
74public:
76 TR_SHELL01(int n, Domain * d);
78 virtual ~TR_SHELL01() {}
79
80 FEInterpolation *giveInterpolation() const override { return plate->giveInterpolation(); }
81
82 int computeNumberOfDofs() override { return 18; }
83 void giveDofManDofIDMask(int inode, IntArray &answer) const override
84 { plate->giveDofManDofIDMask(inode, answer); }
85 // definition & identification
86 const char *giveInputRecordName() const override { return _IFT_TR_SHELL01_Name; }
87 const char *giveClassName() const override { return "TR_SHELL01"; }
88 void initializeFrom(InputRecord &ir, int priority) override;
89
90 void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep) override;
91 void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) override;
92 double computeVolumeAround(GaussPoint *gp) override;
93 bool giveRotationMatrix(FloatMatrix &answer) override;
94
95 void updateYourself(TimeStep *tStep) override;
96 void updateInternalState(TimeStep *tStep) override;
97 void printOutputAt(FILE *file, TimeStep *tStep) override;
98 void saveContext(DataStream &stream, ContextMode mode) override;
99 void restoreContext(DataStream &stream, ContextMode mode) override;
100 void postInitialize() override;
102 void setCrossSection(int csIndx) override;
103#ifdef __OOFEG
104 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
105 void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType type) override;
106 void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override;
107#endif
108 // the membrane and plate irules are same (chacked in initializeFrom)
109 int giveDefaultIntegrationRule() const override { return plate->giveDefaultIntegrationRule(); }
110 IntegrationRule *giveDefaultIntegrationRulePtr() override { return plate->giveDefaultIntegrationRulePtr(); }
111 IntegrationRule *giveIntegrationRule(int i) override { return plate->giveIntegrationRule(i); }
112 Element_Geometry_Type giveGeometryType() const override { return EGT_triangle_1; }
114 MaterialMode giveMaterialMode() override { return _Unknown; }
115
117 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
118
120 InternalStateType type, TimeStep *tStep) override;
121
124
125 // SpatialLocalizerI
126 void SpatialLocalizerI_giveBBox(FloatArray &bb0, FloatArray &bb1) override;
127
128 int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override {
129 return this->plate->computeGlobalCoordinates(answer, lcoords);
130 }
131
132 bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords) override {
133 return this->plate->computeLocalCoordinates(answer, gcoords);
134 }
135
136protected:
137 void computeBmatrixAt(GaussPoint *, FloatMatrix &, int = 1, int = ALL_STRAINS) override
138 { OOFEM_ERROR("calling of this function is not allowed"); }
139 void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &) override
140 { OOFEM_ERROR("calling of this function is not allowed"); }
141
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 function 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 saveContext(DataStream &stream, ContextMode mode) override
Definition tr_shell01.C:323
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition tr_shell01.h:150
const char * giveInputRecordName() const override
Definition tr_shell01.h:86
static IntArray loc_membrane
Definition tr_shell01.h:72
bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords) override
Definition tr_shell01.h:132
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
Definition tr_shell01.C:445
std ::unique_ptr< CCTPlate3d > plate
Pointer to plate element.
Definition tr_shell01.h:61
MaterialMode giveMaterialMode() override
Definition tr_shell01.h:114
void giveDofManDofIDMask(int inode, IntArray &answer) const override
Definition tr_shell01.h:83
void updateYourself(TimeStep *tStep) override
Definition tr_shell01.C:209
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
Definition tr_shell01.C:260
IntegrationRule * ZZErrorEstimatorI_giveIntegrationRule() override
Definition tr_shell01.C:339
void computeGaussPoints() override
Definition tr_shell01.h:143
int computeNumberOfDofs() override
Definition tr_shell01.h:82
IntegrationRule * giveDefaultIntegrationRulePtr() override
Definition tr_shell01.h:110
std ::unique_ptr< IntegrationRule > compositeIR
Definition tr_shell01.h:69
FEInterpolation * giveInterpolation() const override
Definition tr_shell01.h:80
void setCrossSection(int csIndx) override
Definition tr_shell01.C:106
TR_SHELL01(int n, Domain *d)
Constructor.
Definition tr_shell01.C:56
const char * giveClassName() const override
Definition tr_shell01.h:87
void restoreContext(DataStream &stream, ContextMode mode) override
Definition tr_shell01.C:331
void initializeFrom(InputRecord &ir, int priority) override
Definition tr_shell01.C:65
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition tr_shell01.C:241
void printOutputAt(FILE *file, TimeStep *tStep) override
Definition tr_shell01.C:268
int giveDefaultIntegrationRule() const override
Definition tr_shell01.h:109
static IntArray loc_plate
Definition tr_shell01.h:71
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
Definition tr_shell01.h:155
integrationDomain giveIntegrationDomain() const override
Definition tr_shell01.h:113
double computeVolumeAround(GaussPoint *gp) override
Definition tr_shell01.C:235
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
Definition tr_shell01.h:128
void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep) override
Definition tr_shell01.C:115
Interface * giveInterface(InterfaceType it) override
Definition tr_shell01.C:219
void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override
Definition tr_shell01.C:513
Element_Geometry_Type giveGeometryType() const override
Definition tr_shell01.h:112
std ::unique_ptr< TrPlaneStrRot3d > membrane
Pointer to membrane (plane stress) element.
Definition tr_shell01.h:63
void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep) override
Definition tr_shell01.h:157
IntegrationRule * giveIntegrationRule(int i) override
Definition tr_shell01.h:111
void SpatialLocalizerI_giveBBox(FloatArray &bb0, FloatArray &bb1) override
Definition tr_shell01.C:406
void updateInternalState(TimeStep *tStep) override
Definition tr_shell01.C:201
void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType type) override
Definition tr_shell01.C:479
bool giveRotationMatrix(FloatMatrix &answer) override
Definition tr_shell01.C:168
void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode) override
Definition tr_shell01.C:150
void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &) override
Definition tr_shell01.h:139
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) override
Definition tr_shell01.h:137
virtual ~TR_SHELL01()
Destructor.
Definition tr_shell01.h:78
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
Definition tr_shell01.h:148
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord) override
Definition tr_shell01.h:159
void postInitialize() override
Performs post initialization steps.
Definition tr_shell01.C:87
void updateLocalNumbering(EntityRenumberingFunctor &f) override
Definition tr_shell01.C:99
void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) override
Definition tr_shell01.C:133
void ZZErrorEstimatorI_computeLocalStress(FloatArray &answer, FloatArray &sig) override
Definition tr_shell01.C:349
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_SHELL01_Name
Definition tr_shell01.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