OOFEM 3.0
Loading...
Searching...
No Matches
libeam3dnl.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 libeam3dnl_h
36#define libeam3dnl_h
37
40
41
43
44#define _IFT_LIBeam3dNL_Name "libeam3dnl"
45#define _IFT_LIBeam3dNL_refnode "refnode"
47
48namespace oofem {
49class ParamKey;
58{
59private:
61 double l0;
64 // curvature at the centre
65 // FloatArray kappa;
72
74public:
75 LIBeam3dNL(int n, Domain *d);
76 virtual ~LIBeam3dNL() { }
77
78 void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep) override;
79 void computeConsistentMassMatrix(FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity = NULL) override
80 { computeLumpedMassMatrix(answer, tStep); }
81 void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) override;
82 //int computeGtoLRotationMatrix(FloatMatrix &answer);
83 //void computeInitialStressMatrix(FloatMatrix& answer, TimeStep* tStep);
84
85 int computeNumberOfDofs() override { return 12; }
86 void giveDofManDofIDMask(int inode, IntArray &) const override;
87 double computeVolumeAround(GaussPoint *gp) override;
88 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
89 int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override;
90
91 void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override;
92 void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override;
93 void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override;
94
95 // definition & identification
96 const char *giveInputRecordName() const override { return _IFT_LIBeam3dNL_Name; }
97 const char *giveClassName() const override { return "LIBeam3dNL"; }
98 void initializeFrom(InputRecord &ir, int priority) override;
99 void postInitialize() override;
100 Element_Geometry_Type giveGeometryType() const override { return EGT_line_1; }
101
102 void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override;
104
105#ifdef __OOFEG
106 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
108#endif
109
110 void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override;
111 void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0) override;
112
113 integrationDomain giveIntegrationDomain() const override { return _Line; }
114 MaterialMode giveMaterialMode() override { return _3dBeam; }
115
116protected:
117 // edge load support
118 void giveEdgeDofMapping(IntArray &answer, int iEdge) const override;
119 double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override;
120 int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp) override;
121 int computeLoadGToLRotationMtrx(FloatMatrix &answer) override;
122 void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode) override;
123
124 void updateYourself(TimeStep *tStep) override;
125 void initForNewStep() override;
126 void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx, int upperIndx) override
127 { OOFEM_ERROR("not implemented"); }
128 //int computeGtoLRotationMatrix(FloatMatrix& answer);
129
130 void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer) override;
131 void computeGaussPoints() override;
132 double computeLength() override;
133 //double givePitch();
134 int giveLocalCoordinateSystem(FloatMatrix &answer) override;
141 void updateTempTriad(TimeStep *tStep);
147 void computeTempCurv(FloatArray &answer, TimeStep *tStep);
148
154 void computeSMtrx(FloatMatrix &answer, FloatArray &vec);
161 void computeRotMtrx(FloatMatrix &answer, FloatArray &psi);
167 void computeXMtrx(FloatMatrix &answer, TimeStep *tStep);
173 void computeXdVector(FloatArray &answer, TimeStep *tStep);
174};
175} // end namespace oofem
176#endif // libeam3dnl_h
void computeConsistentMassMatrix(FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity=NULL) override
Definition libeam3dnl.h:79
void computeSMtrx(FloatMatrix &answer, FloatArray &vec)
Definition libeam3dnl.C:71
int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp) override
Definition libeam3dnl.C:652
void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode) override
Definition libeam3dnl.C:667
Element_Geometry_Type giveGeometryType() const override
Definition libeam3dnl.h:100
FloatMatrix tempTc
Temporary triad at the centre.
Definition libeam3dnl.h:67
void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep) override
Definition libeam3dnl.C:398
void computeXdVector(FloatArray &answer, TimeStep *tStep)
Definition libeam3dnl.C:236
const char * giveClassName() const override
Definition libeam3dnl.h:97
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx, int upperIndx) override
Definition libeam3dnl.h:126
void initForNewStep() override
Definition libeam3dnl.C:692
int computeNumberOfDofs() override
Definition libeam3dnl.h:85
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
Definition libeam3dnl.C:767
void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer) override
Definition libeam3dnl.C:423
void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) override
Definition libeam3dnl.C:793
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition libeam3dnl.C:468
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
Definition libeam3dnl.C:523
void postInitialize() override
Performs post initialization steps.
Definition libeam3dnl.C:361
void computeXMtrx(FloatMatrix &answer, TimeStep *tStep)
Definition libeam3dnl.C:177
StateCounterType tempTcCounter
Time stamp of temporary centre triad.
Definition libeam3dnl.h:69
void giveDofManDofIDMask(int inode, IntArray &) const override
Definition libeam3dnl.C:485
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition libeam3dnl.C:516
void initializeFrom(InputRecord &ir, int priority) override
Definition libeam3dnl.C:352
void updateYourself(TimeStep *tStep) override
Definition libeam3dnl.C:676
FloatMatrix tc
Last equilibrium triad at the centre.
Definition libeam3dnl.h:63
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
Definition libeam3dnl.C:492
int referenceNode
Reference node.
Definition libeam3dnl.h:71
const char * giveInputRecordName() const override
Definition libeam3dnl.h:96
double l0
Initial length.
Definition libeam3dnl.h:61
void giveEdgeDofMapping(IntArray &answer, int iEdge) const override
Definition libeam3dnl.C:530
LIBeam3dNL(int n, Domain *d)
Definition libeam3dnl.C:59
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
Definition libeam3dnl.C:548
MaterialMode giveMaterialMode() override
Definition libeam3dnl.h:114
void updateTempTriad(TimeStep *tStep)
Definition libeam3dnl.C:120
static ParamKey IPK_LIBeam3dNL_refnode
Definition libeam3dnl.h:73
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
Definition libeam3dnl.C:254
void computeRotMtrx(FloatMatrix &answer, FloatArray &psi)
Definition libeam3dnl.C:90
Interface * giveInterface(InterfaceType it) override
Definition libeam3dnl.C:755
void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) override
Definition libeam3dnl.C:149
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Definition libeam3dnl.C:510
int giveLocalCoordinateSystem(FloatMatrix &answer) override
Definition libeam3dnl.C:560
double computeLength() override
Definition libeam3dnl.C:378
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0) override
Definition libeam3dnl.C:202
void computeTempCurv(FloatArray &answer, TimeStep *tStep)
Definition libeam3dnl.C:702
void computeGaussPoints() override
Definition libeam3dnl.C:340
double computeVolumeAround(GaussPoint *gp) override
Definition libeam3dnl.C:458
integrationDomain giveIntegrationDomain() const override
Definition libeam3dnl.h:113
virtual ~LIBeam3dNL()
Definition libeam3dnl.h:76
int computeLoadGToLRotationMtrx(FloatMatrix &answer) override
Definition libeam3dnl.C:623
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
Definition libeam3dnl.C:747
NLStructuralElement(int n, Domain *d)
#define OOFEM_ERROR(...)
Definition error.h:79
#define _IFT_LIBeam3dNL_Name
Definition libeam3dnl.h:44
long StateCounterType
StateCounterType type used to indicate solution state.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]

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