OOFEM 3.0
Loading...
Searching...
No Matches
fiberedcs.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 fiberedcs_h
36#define fiberedcs_h
37
40#include "element.h"
41#include "dictionary.h"
42#include "floatarray.h"
43#include "floatmatrix.h"
44#include "interface.h"
45
47
48#define _IFT_FiberedCrossSection_Name "fiberedcs"
49#define _IFT_FiberedCrossSection_nfibers "nfibers"
50#define _IFT_FiberedCrossSection_fibermaterials "fibermaterials"
51#define _IFT_FiberedCrossSection_thicks "thicks"
52#define _IFT_FiberedCrossSection_widths "widths"
53#define _IFT_FiberedCrossSection_fiberycentrecoords "fiberycentrecoords"
54#define _IFT_FiberedCrossSection_fiberzcentrecoords "fiberzcentrecoords"
55#define _IFT_FiberedCrossSection_thick "thick"
56#define _IFT_FiberedCrossSection_width "width"
58
59namespace oofem {
60class GaussPoint;
61class FiberedCrossSectionModelInterface;
62
90{
91protected:
96 double thick = 0.;
97 double width = 0.;
98 double area = 0.;
100
101public:
104
105 FloatArrayF< 6 >giveRealStress_3d(const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
106 FloatArrayF< 4 >giveRealStress_PlaneStrain(const FloatArrayF< 4 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
107 FloatArrayF< 3 >giveRealStress_PlaneStress(const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
108 FloatArrayF< 1 >giveRealStress_1d(const FloatArrayF< 1 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
109 FloatArrayF< 2 >giveRealStress_Warping(const FloatArrayF< 2 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
110
111
112 FloatMatrixF< 6, 6 >giveStiffnessMatrix_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
113 FloatMatrixF< 3, 3 >giveStiffnessMatrix_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
114 FloatMatrixF< 4, 4 >giveStiffnessMatrix_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
115 FloatMatrixF< 1, 1 >giveStiffnessMatrix_1d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
116
117 FloatArrayF< 3 >giveGeneralizedStress_Beam2d(const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
118 FloatArrayF< 6 >giveGeneralizedStress_Beam3d(const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
119 FloatArrayF< 5 >giveGeneralizedStress_Plate(const FloatArrayF< 5 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
120 FloatArrayF< 8 >giveGeneralizedStress_Shell(const FloatArrayF< 8 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
121 FloatArrayF< 9 >giveGeneralizedStress_ShellRot(const FloatArrayF< 9 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
122 FloatArrayF< 4 >giveGeneralizedStress_MembraneRot(const FloatArrayF< 4 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
123 FloatArrayF< 3 >giveGeneralizedStress_PlateSubSoil(const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override;
124
125 void giveCharMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
126
127 FloatMatrixF< 3, 3 >give2dBeamStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
128 FloatMatrixF< 6, 6 >give3dBeamStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
129 FloatMatrixF< 5, 5 >give2dPlateStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
130 FloatMatrixF< 8, 8 >give3dShellStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
131 FloatMatrixF< 9, 9 >give3dShellRotStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
132 FloatMatrixF< 4, 4 >giveMembraneRotStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
133 FloatMatrixF< 3, 3 >give2dPlateSubSoilStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
134
135 bool isCharacteristicMtrxSymmetric(MatResponseMode mode) const override;
136 double give(int aProperty, GaussPoint *gp) const override
137 {
138 OOFEM_ERROR("not implemented yet");
139 }
140 FloatArray *imposeStressConstrainsOnGradient(GaussPoint *gp, FloatArray *gradientStressVector3d) override;
141 FloatArray *imposeStrainConstrainsOnGradient(GaussPoint *gp, FloatArray *gradientStrainVector3d) override;
142
143 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
144
145 double give(CrossSectionProperty a, GaussPoint *gp) const override;
146
147 // identification and auxiliary functions
148 const char *giveInputRecordName() const override { return _IFT_FiberedCrossSection_Name; }
149 const char *giveClassName() const override { return "FiberedCrossSection"; }
150 void initializeFrom(InputRecord &ir) override;
151
152 void createMaterialStatus(GaussPoint &iGP) override; // ES
153
154 void printYourself() override;
156 static MaterialMode giveCorrespondingSlaveMaterialMode(MaterialMode);
158
159 void saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override;
160 void restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override;
161
162 int checkConsistency() override;
163
164 int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
165 {
166 OOFEM_ERROR("not implemented");
167 }
168
169 int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
170 {
171 OOFEM_ERROR("not implemented");
172 }
173
174 int estimatePackSize(DataStream &buff, GaussPoint *ip) override
175 {
176 OOFEM_ERROR("not implemented");
177 }
178
179
180 FloatArrayF< 9 >giveFirstPKStress_3d(const FloatArrayF< 9 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override;
181 FloatArrayF< 5 >giveFirstPKStress_PlaneStrain(const FloatArrayF< 5 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override;
182 FloatArrayF< 4 >giveFirstPKStress_PlaneStress(const FloatArrayF< 4 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override;
183 FloatArrayF< 1 >giveFirstPKStress_1d(const FloatArrayF< 1 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override;
184
185
186
187 void giveCharMaterialStiffnessMatrix_dPdF(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override;
188 FloatMatrixF< 9, 9 >giveStiffnessMatrix_dPdF_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
189 FloatMatrixF< 5, 5 >giveStiffnessMatrix_dPdF_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
190 FloatMatrixF< 4, 4 >giveStiffnessMatrix_dPdF_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
191 FloatMatrixF< 1, 1 >giveStiffnessMatrix_dPdF_1d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
192
193
194
195 void giveCauchyStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) override
196 { OOFEM_ERROR("not implemented"); }
197 void giveStiffnessMatrix_dCde(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
198 { OOFEM_ERROR("not implemented"); }
199
200 Material *giveMaterial(IntegrationPoint *ip) const override;
201};
202
207{
208public:
210
220 GaussPoint *slaveGp, TimeStep *tStep) = 0;
221};
222} // end namespace oofem
223#endif // fiberedcs_h
virtual void FiberedCrossSectionInterface_computeStrainVectorInFiber(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *slaveGp, TimeStep *tStep)=0
FloatMatrixF< 9, 9 > give3dShellRotStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:368
static MaterialMode giveCorrespondingSlaveMaterialMode(MaterialMode)
Definition fiberedcs.C:607
FloatMatrixF< 3, 3 > give2dBeamStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:300
FloatMatrixF< 4, 4 > giveStiffnessMatrix_dPdF_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:164
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition fiberedcs.C:458
double width
Total width.
Definition fiberedcs.h:97
FloatArray fiberWidths
Width for each fiber.
Definition fiberedcs.h:94
FloatArrayF< 2 > giveRealStress_Warping(const FloatArrayF< 2 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:78
FloatArrayF< 3 > giveRealStress_PlaneStress(const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:64
bool isCharacteristicMtrxSymmetric(MatResponseMode mode) const override
Definition fiberedcs.C:633
void restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override
Definition fiberedcs.C:593
FloatArray fiberThicks
Thickness for each fiber.
Definition fiberedcs.h:93
double area
Total area.
Definition fiberedcs.h:98
FloatArrayF< 9 > giveFirstPKStress_3d(const FloatArrayF< 9 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:87
int estimatePackSize(DataStream &buff, GaussPoint *ip) override
Definition fiberedcs.h:174
FloatArrayF< 3 > giveGeneralizedStress_PlateSubSoil(const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:273
FloatArray * imposeStrainConstrainsOnGradient(GaussPoint *gp, FloatArray *gradientStrainVector3d) override
Definition fiberedcs.C:426
FloatMatrixF< 5, 5 > give2dPlateStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:355
double give(int aProperty, GaussPoint *gp) const override
Definition fiberedcs.h:136
FloatMatrixF< 3, 3 > giveStiffnessMatrix_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:124
void giveCauchyStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) override
Definition fiberedcs.h:195
FloatArrayF< 6 > giveGeneralizedStress_Beam3d(const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:193
FloatMatrixF< 9, 9 > giveStiffnessMatrix_dPdF_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:157
const char * giveClassName() const override
Definition fiberedcs.h:149
double thick
Total thickness.
Definition fiberedcs.h:96
FloatMatrixF< 1, 1 > giveStiffnessMatrix_1d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:138
FloatArrayF< 4 > giveFirstPKStress_PlaneStress(const FloatArrayF< 4 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:101
void printYourself() override
Prints receiver state on stdout. Useful for debugging.
Definition fiberedcs.C:559
FloatArrayF< 5 > giveGeneralizedStress_Plate(const FloatArrayF< 5 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:247
int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition fiberedcs.h:164
int numberOfFibers
Number of fibers.
Definition fiberedcs.h:95
FloatMatrixF< 4, 4 > giveMembraneRotStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:374
FloatArrayF< 1 > giveFirstPKStress_1d(const FloatArrayF< 1 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:108
FloatMatrixF< 3, 3 > give2dPlateSubSoilStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:380
FloatArrayF< 1 > giveRealStress_1d(const FloatArrayF< 1 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:71
FloatMatrixF< 6, 6 > giveStiffnessMatrix_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:117
FloatMatrixF< 6, 6 > give3dBeamStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:307
FloatArrayF< 9 > giveGeneralizedStress_ShellRot(const FloatArrayF< 9 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:260
FloatMatrixF< 8, 8 > give3dShellStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:362
FloatArrayF< 5 > giveFirstPKStress_PlaneStrain(const FloatArrayF< 5 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:94
FloatMatrixF< 5, 5 > giveStiffnessMatrix_dPdF_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:171
GaussPoint * giveSlaveGaussPoint(GaussPoint *gp, int) const
Definition fiberedcs.C:523
IntArray fiberMaterials
Material of each fiber.
Definition fiberedcs.h:92
const char * giveInputRecordName() const override
Definition fiberedcs.h:148
int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition fiberedcs.h:169
FloatArrayF< 8 > giveGeneralizedStress_Shell(const FloatArrayF< 8 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:254
int checkConsistency() override
Definition fiberedcs.C:647
FloatArrayF< 4 > giveRealStress_PlaneStrain(const FloatArrayF< 4 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:57
FloatArrayF< 6 > giveRealStress_3d(const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:50
void createMaterialStatus(GaussPoint &iGP) override
Definition fiberedcs.C:512
Material * giveMaterial(IntegrationPoint *ip) const override
hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
Definition fiberedcs.C:662
void giveStiffnessMatrix_dCde(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition fiberedcs.h:197
FloatMatrixF< 1, 1 > giveStiffnessMatrix_dPdF_1d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:178
void giveCharMaterialStiffnessMatrix_dPdF(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition fiberedcs.C:147
void saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override
Definition fiberedcs.C:578
void giveCharMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
Definition fiberedcs.C:279
FloatArrayF< 4 > giveGeneralizedStress_MembraneRot(const FloatArrayF< 4 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:267
FloatArrayF< 3 > giveGeneralizedStress_Beam2d(const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:186
FloatArray * imposeStressConstrainsOnGradient(GaussPoint *gp, FloatArray *gradientStressVector3d) override
Definition fiberedcs.C:388
void initializeFrom(InputRecord &ir) override
Definition fiberedcs.C:478
FloatMatrixF< 4, 4 > giveStiffnessMatrix_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition fiberedcs.C:131
FiberedCrossSection(int n, Domain *d)
Definition fiberedcs.h:102
Interface()
Constructor.
Definition interface.h:86
#define OOFEM_ERROR(...)
Definition error.h:79
#define _IFT_FiberedCrossSection_Name
Definition fiberedcs.h:48
long ContextMode
Definition contextmode.h:43
CrossSectionProperty
List of properties possibly stored in a cross section.
GaussPoint IntegrationPoint
Definition gausspoint.h:272

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