xc
NLForceBeamColumn3dBase.h
1 //----------------------------------------------------------------------------
2 // XC program; finite element analysis code
3 // for structural analysis and design.
4 //
5 // Copyright (C) Luis Claudio Pérez Tato
6 //
7 // This program derives from OpenSees <http://opensees.berkeley.edu>
8 // developed by the «Pacific earthquake engineering research center».
9 //
10 // Except for the restrictions that may arise from the copyright
11 // of the original program (see copyright_opensees.txt)
12 // XC is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This software is distributed in the hope that it will be useful, but
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program.
25 // If not, see <http://www.gnu.org/licenses/>.
26 //----------------------------------------------------------------------------
27 //NLForceBeamColumn3dBase.h
28 
29 #ifndef NLForceBeamColumn3dBase_h
30 #define NLForceBeamColumn3dBase_h
31 
32 #include <domain/mesh/element/truss_beam_column/BeamColumnWithSectionFDTrf3d.h>
33 #include <utility/matrix/Matrix.h>
34 #include <utility/matrix/Vector.h>
35 #include "domain/mesh/element/utils/fvectors/FVectorBeamColumn3d.h"
36 #include "domain/mesh/element/truss_beam_column/EsfBeamColumn3d.h"
37 #include "domain/mesh/element/utils/coordTransformation/CrdTransf3d.h"
38 
39 namespace XC {
40 
42 //
45  {
47  protected:
48  static const size_t NDM;
49  static const int NND;
50  static const size_t NEGD;
51  static const size_t NEBD;
52  static const double DefaultLoverGJ;
53 
54 
55  // internal data
56  double rho;
57  int maxIters;
58  double tol;
59 
61  bool isTorsion;
62 
65 
68 
69  std::vector<Matrix> fs;
70  std::vector<Vector> vs;
71  std::vector<Vector> Ssr;
72  std::vector<Vector> vscommit;
73 
76 
77  mutable Matrix Ki;
78 
79  static Matrix theMatrix;
80  static Vector theVector;
81  static double workArea[];
82 
83  void resizeMatrices(const size_t &nSections);
84  void initializeSectionHistoryVariables(void);
85 
86  int sendData(CommParameters &cp);
87  int recvData(const CommParameters &cp);
88 
89  public:
90  NLForceBeamColumn3dBase(int tag,int classTag,int numSec= 0);
91  NLForceBeamColumn3dBase(int tag,int classTag,int numSec,const Material *theSection,const CrdTransf *coordTransf);
93 
94  void setSection(const PrismaticBarCrossSection *sccModel);
95 
96  int getNumDOF(void) const;
97 
98  double getRho(void) const
99  { return rho; }
100  void setRho(const double &r)
101  { rho= r; }
102 
103  const Matrix &getTangentStiff(void) const;
104 
105  const Vector &getResistingForce(void) const;
106 
109  inline double getAN1(void)
110  {
111  return Secommit.AN1()+p0[0];
112  }
115  inline double getAN2(void)
116  {
117  return Secommit.AN2();
118  }
121  inline double getN1(void)
122  {
123  return -Secommit.AN1()-p0[0];
124  }
127  inline double getN2(void)
128  {
129  return Secommit.AN2();
130  }
133  inline double getN(void)
134  {
135  return (-Secommit.AN1()-p0[0]+Secommit.AN2())/2.0;
136  }
139  inline double getAMz1(void)
140  {
141  return Secommit.Mz1();
142  }
145  inline double getAMz2(void)
146  {
147  return Secommit.Mz2();
148  }
151  inline double getMz1(void)
152  {
153  return -Secommit.Mz1();
154  }
157  inline double getMz2(void)
158  {
159  return -Secommit.Mz2();
160  }
162  inline double getVy(void)
163  {
164  return Secommit.Vy(theCoordTransf->getInitialLength());
165  }
168  inline double getAVy1(void)
169  {
170  return Secommit.Vy(theCoordTransf->getInitialLength())+p0[1];
171  }
174  inline double getAVy2(void)
175  {
176  return -Secommit.Vy(theCoordTransf->getInitialLength())+p0[2];
177  }
180  inline double getVy1(void)
181  {
182  return -Secommit.Vy(theCoordTransf->getInitialLength())-p0[1];
183  }
186  inline double getVy2(void)
187  {
188  return Secommit.Vy(theCoordTransf->getInitialLength())-p0[2];
189  }
192  inline double getVz(void)
193  {
194  return Secommit.Vz(theCoordTransf->getInitialLength());
195  }
198  inline double getAVz1(void)
199  { //¡Warning! call "calc_resisting_force" before calling this method.
200  return Secommit.Vz(theCoordTransf->getInitialLength())+p0[3];
201  }
204  inline double getAVz2(void)
205  {
206  return -Secommit.Vz(theCoordTransf->getInitialLength())+p0[4];
207  }
210  inline double getVz1(void)
211  {
212  return -Secommit.Vz(theCoordTransf->getInitialLength())-p0[3];
213  }
216  inline double getVz2(void)
217  {
218  return Secommit.Vz(theCoordTransf->getInitialLength())-p0[4];
219  }
222  inline double getMy1(void)
223  {
224  return Secommit.My1();
225  }
228  inline double getMy2(void)
229  {
230  return Secommit.My2();
231  }
234  inline double getT(void)
235  {
236  return Secommit.T();
237  }
240  inline double getT1(void)
241  {
242  return Secommit.T1(); //+p0[0];
243  }
246  inline double getT2(void)
247  {
248  return Secommit.T2();
249  }
250 
251  };
252 } // end of XC namespace
253 
254 #endif
255 
double Vy(const double &L) const
Returns shear along y axis.
Definition: EsfBeamColumn3d.h:77
Matrix kvcommit
commited stiffness matrix in the basic system
Definition: NLForceBeamColumn3dBase.h:66
const double & T(void) const
Returns the torsor.
Definition: EsfBeamColumn3d.h:95
double getVy(void)
y shear.
Definition: NLForceBeamColumn3dBase.h:162
Float vector abstraction.
Definition: Vector.h:93
double getVy1(void)
y shear at its back end.
Definition: NLForceBeamColumn3dBase.h:180
const double & My1(void) const
Returns the moment about y in the back end.
Definition: EsfBeamColumn3d.h:80
const double & Mz2(void) const
Returns the moment about z in the front end.
Definition: EsfBeamColumn3d.h:71
EsfBeamColumn3d Secommit
commited element end forces in the basic system
Definition: NLForceBeamColumn3dBase.h:67
const Vector & getResistingForce(void) const
Returns the resisting force vector for the element.
Definition: NLForceBeamColumn3dBase.cc:111
FVectorBeamColumn3d p0
Reactions in the basic system due to element loads.
Definition: NLForceBeamColumn3dBase.h:75
double getT1(void)
Torsor at the back end.
Definition: NLForceBeamColumn3dBase.h:240
Base clas for 3D force beam column elements with PrismaticBarCrossSection type material.
Definition: NLForceBeamColumn3dBase.h:44
double getAVz2(void)
z shear drived over the bar at its front end.
Definition: NLForceBeamColumn3dBase.h:204
Internal forces for a beam column 3D element.
Definition: FVectorBeamColumn3d.h:40
CrdTransf provides the abstraction of a frame coordinate transformation.
Definition: CrdTransf.h:87
Matrix sp
Applied section forces due to element loads, 5 x nSections.
Definition: NLForceBeamColumn3dBase.h:74
Base class for beam-column cross sections.
Definition: PrismaticBarCrossSection.h:50
Base class for materials.
Definition: Material.h:91
double rho
mass density per unit length
Definition: NLForceBeamColumn3dBase.h:56
double getMz1(void)
Moment about z axis at its back end.
Definition: NLForceBeamColumn3dBase.h:151
double tol
tolerance for relative energy norm for local iterations
Definition: NLForceBeamColumn3dBase.h:58
std::vector< Vector > Ssr
array of section resisting force vectors
Definition: NLForceBeamColumn3dBase.h:71
double getAN1(void)
Axial force which acts over the element at its back end.
Definition: NLForceBeamColumn3dBase.h:109
double Vz(const double &L) const
Returns the shear along z.
Definition: EsfBeamColumn3d.h:92
int recvData(const CommParameters &cp)
Receives members through the channel being passed as parameter.
Definition: NLForceBeamColumn3dBase.cc:158
double getAMz2(void)
Moment about z axis drived over the bar at its front end.
Definition: NLForceBeamColumn3dBase.h:145
double getMy1(void)
Moment about y axis at the back end.
Definition: NLForceBeamColumn3dBase.h:222
static const size_t NEBD
number of element dof&#39;s in the basic system
Definition: NLForceBeamColumn3dBase.h:51
static const size_t NDM
dimension of the problem (3d)
Definition: NLForceBeamColumn3dBase.h:48
int sendData(CommParameters &cp)
Send members through the channel being passed as parameter.
Definition: NLForceBeamColumn3dBase.cc:138
EsfBeamColumn3d Se
element resisting forces in the basic system
Definition: NLForceBeamColumn3dBase.h:64
static const int NND
number of nodal dof&#39;s
Definition: NLForceBeamColumn3dBase.h:49
std::vector< Vector > vscommit
array of commited section deformation vectors
Definition: NLForceBeamColumn3dBase.h:72
static const size_t NEGD
number of element global dof&#39;s
Definition: NLForceBeamColumn3dBase.h:50
std::vector< Vector > vs
array of section deformation vectors
Definition: NLForceBeamColumn3dBase.h:70
3D beam column internal forces.
Definition: EsfBeamColumn3d.h:45
3D beam colun element with PrismaticBarCrossSection material type.
Definition: BeamColumnWithSectionFDTrf3d.h:65
double getVz(void)
z shear.
Definition: NLForceBeamColumn3dBase.h:192
double getVy2(void)
y shear at its front end.
Definition: NLForceBeamColumn3dBase.h:186
double getAMz1(void)
Moment about z axis drived over the bar at its back end.
Definition: NLForceBeamColumn3dBase.h:139
double getAN2(void)
Axial force which acts over the element at its front end.
Definition: NLForceBeamColumn3dBase.h:115
double getMy2(void)
Moment about y axis at the front end.
Definition: NLForceBeamColumn3dBase.h:228
double getN(void)
Mean axial force.
Definition: NLForceBeamColumn3dBase.h:133
int maxIters
maximum number of local iterations
Definition: NLForceBeamColumn3dBase.h:57
double getAVz1(void)
z shear drived over the bar at its back end.
Definition: NLForceBeamColumn3dBase.h:198
int initialFlag
indicates if the element has been initialized
Definition: NLForceBeamColumn3dBase.h:60
void resizeMatrices(const size_t &nSections)
alocate section flexibility matrices and section deformation vectors
Definition: NLForceBeamColumn3dBase.cc:44
double getN1(void)
Axial force at the front end.
Definition: NLForceBeamColumn3dBase.h:121
double AN1(void) const
Return the axial force in the back end.
Definition: EsfBeamColumn3d.h:59
double getT2(void)
Torsor at the front end.
Definition: NLForceBeamColumn3dBase.h:246
double getVz2(void)
z shear at its front end.
Definition: NLForceBeamColumn3dBase.h:216
double AN2(void) const
Return the axial force in the front end.
Definition: EsfBeamColumn3d.h:62
double getT(void)
Element&#39;s torque.
Definition: NLForceBeamColumn3dBase.h:234
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
double getAVy2(void)
y shear drived over the bar at its front end.
Definition: NLForceBeamColumn3dBase.h:174
int getNumDOF(void) const
return the number of DOF associated with the element.
Definition: NLForceBeamColumn3dBase.cc:95
Communication parameters between processes.
Definition: CommParameters.h:65
Matrix of floats.
Definition: Matrix.h:108
double getN2(void)
Axial force at the back end.
Definition: NLForceBeamColumn3dBase.h:127
double T2(void) const
Returns the torsor in the front end.
Definition: EsfBeamColumn3d.h:104
Matrix kv
stiffness matrix in the basic system
Definition: NLForceBeamColumn3dBase.h:63
const Matrix & getTangentStiff(void) const
Return the tangent stiffness matrix.
Definition: NLForceBeamColumn3dBase.cc:99
std::vector< Matrix > fs
array of section flexibility matrices
Definition: NLForceBeamColumn3dBase.h:69
const double & Mz1(void) const
Returns the moment about z in the back end.
Definition: EsfBeamColumn3d.h:65
double getAVy1(void)
y shear drived over the bar at its back end.
Definition: NLForceBeamColumn3dBase.h:168
const double & My2(void) const
Returns the moment about y in the front end.
Definition: EsfBeamColumn3d.h:86
double T1(void) const
Returns the torsor in the back end.
Definition: EsfBeamColumn3d.h:101
double getMz2(void)
Moment about z axis at its front end.
Definition: NLForceBeamColumn3dBase.h:157
double getVz1(void)
z shear at its back end.
Definition: NLForceBeamColumn3dBase.h:210