OOFEM 3.0
Loading...
Searching...
No Matches
crosssection.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 crosssection_h
36#define crosssection_h
37
38#include "femcmpnn.h"
39#include "materialmode.h"
40#include "matresponsemode.h"
41#include "material.h"
42#include "internalstatetype.h"
44#include "dictionary.h"
45#include "crosssectextension.h"
46#include "gausspoint.h"
47
49
50#define _IFT_CrossSection_SetNumber "set"
52
53namespace oofem {
54class IntegrationRule;
55class Material;
56
78
108{
109protected:
116
117 int setNumber; // el set number the cross section is applied to
118
119public:
125 CrossSection(int n, Domain *d);
127 virtual ~CrossSection();
128
129 int giveSetNumber() const { return this->setNumber; }
130
135 virtual bool hasProperty(CrossSectionProperty a);
143 virtual double give(CrossSectionProperty a, GaussPoint *gp) const;
155 virtual double give(CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local = true) const;
156
163 virtual double give(int aProperty, GaussPoint *gp) const { return 0.0; }
164
172 virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const { return false; }
173
174 void printYourself() override;
175
184 virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element);
193 virtual int setupIntegrationPoints(IntegrationRule &irule, int npointsXY, int npointsZ, Element *element);
199 virtual int testCrossSectionExtension(CrossSectExtension ext) { return 0; }
200
209 virtual int giveIPValue(FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep);
210
223 virtual int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) = 0;
233 virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) = 0;
242 virtual int estimatePackSize(DataStream &buff, GaussPoint *ip) = 0;
261 virtual double giveRelativeSelfComputationalCost() { return 1.0; }
265 virtual double predictRelativeRedistributionCost(GaussPoint *gp) { return 1.0; }
266
267 void initializeFrom(InputRecord &ir) override;
268 void giveInputRecord(DynamicInputRecord &input) override;
269
270 #pragma GCC diagnostic push
272 #pragma GCC diagnostic ignored "-Woverloaded-virtual"
277 virtual Material *giveMaterial(IntegrationPoint *ip) const = 0;
278 #pragma GCC diagnostic pop
279
287 virtual void saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp);
295 virtual void restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp);
296
297 void saveContext(DataStream &stream, ContextMode mode) override;
298 void restoreContext(DataStream &stream, ContextMode mode) override;
299};
300} // end namespace oofem
301#endif // crosssection_h
virtual double predictRelativeComputationalCost(GaussPoint *ip)
virtual Material * giveMaterial(IntegrationPoint *ip) const =0
hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
virtual int testCrossSectionExtension(CrossSectExtension ext)
virtual double predictRelativeRedistributionCost(GaussPoint *gp)
virtual int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip)=0
virtual double giveRelativeSelfComputationalCost()
Dictionary propertyDictionary
virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip)=0
CrossSection(int n, Domain *d)
virtual void saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
int giveSetNumber() const
void restoreContext(DataStream &stream, ContextMode mode) override
virtual int estimatePackSize(DataStream &buff, GaussPoint *ip)=0
void saveContext(DataStream &stream, ContextMode mode) override
virtual double give(int aProperty, GaussPoint *gp) const
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const
virtual void restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
FEMComponent(int n, Domain *d)
Definition femcmpnn.h:88
long ContextMode
Definition contextmode.h:43
CrossSectionProperty
List of properties possibly stored in a cross section.
@ CS_ShearAreaY
Shear area in y direction.
@ CS_DrillingType
Type of artificially added drilling stiffness for drilling DOFs.
@ CS_InertiaMomentZ
Moment of inertia around z-axis.
@ CS_DirectorVectorY
Director vector component in y-axis.
@ CS_DrillingStiffness
Penalty stiffness for drilling DOFs.
@ CS_BottomZCoord
Bottom z coordinate.
@ CS_TorsionConstantX
Saint-Venant torsional constant (J).
@ CS_RelDrillingStiffness
Relative penalty stiffness for drilling DOFs.
@ CS_BeamShearCoeff
Shear coefficient of beam.
@ CS_DirectorVectorX
Director vector component in x-axis.
@ CS_InertiaMomentY
Moment of inertia around y-axis.
@ CS_Area
Area.
@ CS_Thickness
Thickness.
@ CS_Width
Width.
@ CS_ShearAreaZ
Shear area in z direction.
@ CS_DirectorVectorZ
Director vector component in z-axis.
@ CS_NumLayers
Number of layers that makes up the cross section.
@ CS_TopZCoord
Top z coordinate.
CrossSectExtension
Type representing cross section extension for run time testing.
GaussPoint IntegrationPoint
Definition gausspoint.h:272
#define OOFEM_EXPORT
Definition oofemcfg.h:7

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