OOFEM
3.0
Loading...
Searching...
No Matches
src
sm
CrossSections
simplecrosssection.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 simplecrosssection_h
36
#define simplecrosssection_h
37
38
#include "
sm/CrossSections/structuralcrosssection.h
"
39
#include "
sm/Materials/structuralmaterial.h
"
40
#include "
floatarray.h
"
41
#include "
floatmatrix.h
"
42
44
45
#define _IFT_SimpleCrossSection_Name "simplecs"
46
#define _IFT_SimpleCrossSection_thick "thick"
47
#define _IFT_SimpleCrossSection_width "width"
48
#define _IFT_SimpleCrossSection_area "area"
49
#define _IFT_SimpleCrossSection_iy "iy"
50
#define _IFT_SimpleCrossSection_iz "iz"
51
#define _IFT_SimpleCrossSection_ik "ik"
52
#define _IFT_SimpleCrossSection_shearcoeff "beamshearcoeff"
53
#define _IFT_SimpleCrossSection_shearareay "shearareay"
54
#define _IFT_SimpleCrossSection_shearareaz "shearareaz"
55
#define _IFT_SimpleCrossSection_drillStiffness "drillstiffness"
56
#define _IFT_SimpleCrossSection_relDrillStiffness "reldrillstiffness"
57
#define _IFT_SimpleCrossSection_drillType "drilltype"
58
#define _IFT_SimpleCrossSection_MaterialNumber "material"
59
#define _IFT_SimpleCrossSection_directorx "directorx"
60
#define _IFT_SimpleCrossSection_directory "directory"
61
#define _IFT_SimpleCrossSection_directorz "directorz"
63
64
namespace
oofem
{
86
class
OOFEM_EXPORT
SimpleCrossSection
:
public
StructuralCrossSection
87
{
88
protected
:
89
int
materialNumber
= 0;
90
int
czMaterialNumber
= 0;
91
92
public
:
98
SimpleCrossSection
(
int
n,
Domain
*d) :
StructuralCrossSection
(n, d) { }
99
100
FloatArrayF< 6 >
giveRealStress_3d(
const
FloatArrayF< 6 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
101
FloatArrayF< 6 >
giveRealStress_3dDegeneratedShell(
const
FloatArrayF< 6 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
102
FloatArrayF< 4 >
giveRealStress_PlaneStrain(
const
FloatArrayF< 4 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
103
FloatArrayF< 3 >
giveRealStress_PlaneStress(
const
FloatArrayF< 3 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
104
FloatArrayF< 1 >
giveRealStress_1d(
const
FloatArrayF< 1 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
105
FloatArrayF< 2 >
giveRealStress_Warping(
const
FloatArrayF< 2 >
&reducedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
106
107
FloatMatrixF< 6, 6 >
giveStiffnessMatrix_3d(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
108
FloatMatrixF< 3, 3 >
giveStiffnessMatrix_PlaneStress(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
109
FloatMatrixF< 4, 4 >
giveStiffnessMatrix_PlaneStrain(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
110
FloatMatrixF< 1, 1 >
giveStiffnessMatrix_1d(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
111
112
FloatArrayF< 3 >
giveGeneralizedStress_Beam2d(
const
FloatArrayF< 3 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
113
FloatArrayF< 6 >
giveGeneralizedStress_Beam3d(
const
FloatArrayF< 6 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
114
FloatArrayF< 5 >
giveGeneralizedStress_Plate(
const
FloatArrayF< 5 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
115
FloatArrayF< 8 >
giveGeneralizedStress_Shell(
const
FloatArrayF< 8 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
116
FloatArrayF< 9 >
giveGeneralizedStress_ShellRot(
const
FloatArrayF< 9 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
117
FloatArrayF< 4 >
giveGeneralizedStress_MembraneRot(
const
FloatArrayF< 4 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
118
FloatArrayF< 3 >
giveGeneralizedStress_PlateSubSoil(
const
FloatArrayF< 3 >
&generalizedStrain,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
119
120
void
giveCharMaterialStiffnessMatrix(
FloatMatrix
&answer, MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
override
;
121
bool
isCharacteristicMtrxSymmetric(MatResponseMode mode)
const override
;
122
123
FloatMatrixF< 6, 6 >
give3dDegeneratedShellStiffMtrx(MatResponseMode rMode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
124
FloatMatrixF< 3, 3 >
give2dBeamStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
125
FloatMatrixF< 6, 6 >
give3dBeamStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
126
FloatMatrixF< 5, 5 >
give2dPlateStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
127
FloatMatrixF< 8, 8 >
give3dShellStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
128
FloatMatrixF< 9, 9 >
give3dShellRotStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
129
FloatMatrixF< 4, 4 >
giveMembraneRotStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
130
FloatMatrixF< 3, 3 >
give2dPlateSubSoilStiffMtrx(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
131
132
134
virtual
FloatArrayF< 9 >
giveFirstPKStress_3d(
const
FloatArrayF< 9 >
&reducedF,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
135
virtual
FloatArrayF< 5 >
giveFirstPKStress_PlaneStrain(
const
FloatArrayF< 5 >
&reducedF,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
136
virtual
FloatArrayF< 4 >
giveFirstPKStress_PlaneStress(
const
FloatArrayF< 4 >
&reducedF,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
137
virtual
FloatArrayF< 1 >
giveFirstPKStress_1d(
const
FloatArrayF< 1 >
&reducedF,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
138
139
void
giveCharMaterialStiffnessMatrix_dPdF(
FloatMatrix
&answer, MatResponseMode rMode,
GaussPoint
*gp,
TimeStep
*tStep)
override
;
140
FloatMatrixF< 9, 9 >
giveStiffnessMatrix_dPdF_3d(MatResponseMode rMode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
141
FloatMatrixF< 5, 5 >
giveStiffnessMatrix_dPdF_PlaneStrain(MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
142
FloatMatrixF< 4, 4 >
giveStiffnessMatrix_dPdF_PlaneStress(MatResponseMode rMode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
143
FloatMatrixF< 1, 1 >
giveStiffnessMatrix_dPdF_1d(MatResponseMode rMode,
GaussPoint
*gp,
TimeStep
*tStep)
const override
;
144
145
146
159
void
initializeFrom(
InputRecord
&ir)
override
;
160
void
giveInputRecord(
DynamicInputRecord
&input)
override
;
161
162
void
createMaterialStatus(
GaussPoint
&iGP)
override
;
163
164
165
const
char
*
giveClassName
()
const override
{
return
"SimpleCrossSection"
; }
166
const
char
*
giveInputRecordName
()
const override
{
return
_IFT_SimpleCrossSection_Name
; }
167
168
double
give(
int
aProperty,
GaussPoint
*gp)
const override
;
169
double
give
(
CrossSectionProperty
a,
GaussPoint
*gp)
const override
{
return
CrossSection::give
(a, gp); }
170
double
give
(
CrossSectionProperty
a,
const
FloatArray
&coords,
Element
*elem,
bool
local)
const override
{
return
CrossSection::give
(a, coords, elem, local); }
171
int
giveIPValue(
FloatArray
&answer,
GaussPoint
*ip,
InternalStateType
type,
TimeStep
*tStep)
override
;
172
Material
*giveMaterial(
IntegrationPoint
*ip)
const override
;
173
174
int
giveMaterialNumber
()
const
{
return
this->materialNumber; }
175
void
setMaterialNumber
(
int
matNum) { this->materialNumber = matNum; }
176
int
checkConsistency()
override
;
177
Interface
*giveMaterialInterface(
InterfaceType
t,
IntegrationPoint
*ip)
override
;
178
179
180
void
giveCauchyStresses(
FloatArray
&answer,
GaussPoint
*gp,
const
FloatArray
&reducedFIncrement,
TimeStep
*tStep)
override
;
181
void
giveEshelbyStresses(
FloatArray
&answer,
GaussPoint
*gp,
const
FloatArray
&reducedvF,
TimeStep
*tStep)
override
;
182
void
giveStiffnessMatrix_dCde(
FloatMatrix
&answer, MatResponseMode mode,
GaussPoint
*gp,
TimeStep
*tStep)
override
;
183
184
void
giveTemperatureVector(
FloatArray
&answer,
GaussPoint
*gp,
TimeStep
*tStep)
const
;
185
186
int
packUnknowns(
DataStream
&buff,
TimeStep
*tStep,
GaussPoint
*gp)
override
;
187
int
unpackAndUpdateUnknowns(
DataStream
&buff,
TimeStep
*tStep,
GaussPoint
*gp)
override
;
188
int
estimatePackSize(
DataStream
&buff,
GaussPoint
*gp)
override
;
189
190
void
saveContext(
DataStream
&stream,
ContextMode
mode)
override
;
191
void
restoreContext(
DataStream
&stream,
ContextMode
mode)
override
;
192
};
193
}
// end namespace oofem
194
#endif
// simplecrosssection_h
oofem::CrossSection::give
virtual double give(CrossSectionProperty a, GaussPoint *gp) const
Definition
crosssection.C:125
oofem::DataStream
Definition
datastream.h:55
oofem::Domain
Definition
domain.h:121
oofem::DynamicInputRecord
Definition
dynamicinputrecord.h:60
oofem::Element
Definition
element.h:133
oofem::FloatArrayF< 6 >
oofem::FloatArray
Definition
floatarray.h:92
oofem::FloatMatrixF< 6, 6 >
oofem::FloatMatrix
Definition
floatmatrix.h:87
oofem::GaussPoint
Definition
gausspoint.h:95
oofem::InputRecord
Definition
inputrecord.h:98
oofem::Interface
Definition
interface.h:83
oofem::Material
Definition
material.h:98
oofem::SimpleCrossSection::give
double give(CrossSectionProperty a, GaussPoint *gp) const override
Definition
simplecrosssection.h:169
oofem::SimpleCrossSection::SimpleCrossSection
SimpleCrossSection(int n, Domain *d)
Definition
simplecrosssection.h:98
oofem::SimpleCrossSection::materialNumber
int materialNumber
Material number.
Definition
simplecrosssection.h:89
oofem::SimpleCrossSection::czMaterialNumber
int czMaterialNumber
Cohesive zone material number.
Definition
simplecrosssection.h:90
oofem::SimpleCrossSection::give
double give(CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local) const override
Definition
simplecrosssection.h:170
oofem::SimpleCrossSection::setMaterialNumber
void setMaterialNumber(int matNum)
Definition
simplecrosssection.h:175
oofem::SimpleCrossSection::giveMaterialNumber
int giveMaterialNumber() const
Definition
simplecrosssection.h:174
oofem::SimpleCrossSection::giveInputRecordName
const char * giveInputRecordName() const override
Definition
simplecrosssection.h:166
oofem::SimpleCrossSection::giveClassName
const char * giveClassName() const override
Definition
simplecrosssection.h:165
oofem::StructuralCrossSection::StructuralCrossSection
StructuralCrossSection(int n, Domain *d)
Definition
structuralcrosssection.h:83
oofem::TimeStep
Definition
timestep.h:82
floatarray.h
floatmatrix.h
oofem
Definition
additivemanufacturingproblem.C:83
oofem::ContextMode
long ContextMode
Definition
contextmode.h:43
oofem::CrossSectionProperty
CrossSectionProperty
List of properties possibly stored in a cross section.
Definition
crosssection.h:58
oofem::IntegrationPoint
GaussPoint IntegrationPoint
Definition
gausspoint.h:272
oofem::InternalStateType
InternalStateType
Definition
internalstatetype.h:206
oofem::InterfaceType
InterfaceType
Definition
interfacetype.h:43
OOFEM_EXPORT
#define OOFEM_EXPORT
Definition
oofemcfg.h:7
_IFT_SimpleCrossSection_Name
#define _IFT_SimpleCrossSection_Name
Definition
simplecrosssection.h:45
structuralcrosssection.h
structuralmaterial.h
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