XC Open source finite element analysis program
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 SeccionBarraPrismatica *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 
107  inline double getAN1(void) //Axial force which acts over the element in his back end.
108  { //¡Warning! call "calc_resisting_force" before calling this method.
109  return Secommit.AN1()+p0[0];
110  }
111  inline double getAN2(void) //Axial force which acts over the element in his front end.
112  { //¡Warning! call "calc_resisting_force" before calling this method.
113  return Secommit.AN2();
114  }
115  inline double getN1(void) //Axial force in the front end.
116  { //¡Warning! call "calc_resisting_force" before calling this method.
117  return -Secommit.AN1()-p0[0];
118  }
119  inline double getN2(void) //Axial force in the back end.
120  { //¡Warning! call "calc_resisting_force" before calling this method.
121  return Secommit.AN2();
122  }
123  inline double getN(void) //Mean axial force.
124  { //¡Warning! call "calc_resisting_force" before calling this method.
125  return (-Secommit.AN1()-p0[0]+Secommit.AN2())/2.0;
126  }
127  inline double getAMz1(void)
128  { //¡Warning! call "calc_resisting_force" before calling this method.
129  return Secommit.Mz1(); //Momento z que se ejerce sobre la barra en su extremo dorsal.
130  }
131  inline double getAMz2(void)
132  { //¡Warning! call "calc_resisting_force" before calling this method.
133  return Secommit.Mz2(); //Momento z que se ejerce sobre la barra en su extremo frontal.
134  }
135  inline double getMz1(void)
136  { //¡Warning! call "calc_resisting_force" before calling this method.
137  return -Secommit.Mz1(); //Momento z en su extremo dorsal.
138  }
139  inline double getMz2(void)
140  { //¡Warning! call "calc_resisting_force" before calling this method.
141  return -Secommit.Mz2(); //Momento z en su extremo frontal.
142  }
143  inline double getVy(void)
144  { //¡Warning! call "calc_resisting_force" before calling this method.
145  return Secommit.Vy(theCoordTransf->getInitialLength()); //Cortante y.
146  }
147  inline double getAVy1(void)
148  { //¡Warning! call "calc_resisting_force" before calling this method.
149  return Secommit.Vy(theCoordTransf->getInitialLength())+p0[1]; //Cortante y que se ejerce sobre la barra en su extremo dorsal.
150  }
151  inline double getAVy2(void)
152  { //¡Warning! call "calc_resisting_force" before calling this method.
153  return -Secommit.Vy(theCoordTransf->getInitialLength())+p0[2]; //Cortante y que se ejerce sobre la barra en su extremo frontal.
154  }
155  inline double getVy1(void)
156  { //¡Warning! call "calc_resisting_force" before calling this method.
157  return -Secommit.Vy(theCoordTransf->getInitialLength())-p0[1]; //Cortante y en su extremo dorsal.
158  }
159  inline double getVy2(void)
160  { //¡Warning! call "calc_resisting_force" before calling this method.
161  return Secommit.Vy(theCoordTransf->getInitialLength())-p0[2]; //Cortante y en su extremo frontal.
162  }
163  inline double getVz(void)
164  { //¡Warning! call "calc_resisting_force" before calling this method.
165  return Secommit.Vz(theCoordTransf->getInitialLength()); //Cortante z.
166  }
167  inline double getAVz1(void)
168  { //¡Warning! call "calc_resisting_force" before calling this method.
169  return Secommit.Vz(theCoordTransf->getInitialLength())+p0[3]; //Cortante z que se ejerce sobre la barra en su extremo dorsal.
170  }
171  inline double getAVz2(void)
172  { //¡Warning! call "calc_resisting_force" before calling this method.
173  return -Secommit.Vz(theCoordTransf->getInitialLength())+p0[4]; //Cortante z que se ejerce sobre la barra en su extremo frontal.
174  }
175  inline double getVz1(void)
176  { //¡Warning! call "calc_resisting_force" before calling this method.
177  return -Secommit.Vz(theCoordTransf->getInitialLength())-p0[3]; //Cortante z en su extremo dorsal.
178  }
179  inline double getVz2(void)
180  { //¡Warning! call "calc_resisting_force" before calling this method.
181  return Secommit.Vz(theCoordTransf->getInitialLength())-p0[4]; //Cortante z en su extremo frontal.
182  }
183  inline double getMy1(void)
184  { //¡Warning! call "calc_resisting_force" before calling this method.
185  return Secommit.My1(); //Momento y en el extremo dorsal.
186  }
187  inline double getMy2(void)
188  { //¡Warning! call "calc_resisting_force" before calling this method.
189  return Secommit.My2(); //Momento y en el extremo frontal.
190  }
191  inline double getT(void) //Element's torque.
192  { //¡Warning! call "calc_resisting_force" before calling this method.
193  return Secommit.T();
194  }
195  inline double getT1(void)
196  { //¡Warning! call "calc_resisting_force" before calling this method.
197  return Secommit.T1(); //+p0[0]; //Torsor en el extremo dorsal.
198  }
199  inline double getT2(void)
200  { //¡Warning! call "calc_resisting_force" before calling this method.
201  return Secommit.T2(); //Torsor en el extremo frontal.
202  }
203 
204  };
205 } // end of XC namespace
206 
207 #endif
208 
Matrix kvcommit
commited stiffness matrix in the basic system
Definition: NLForceBeamColumn3dBase.h:66
CrdTransf provides the abstraction of a frame coordinate transformation. It is an abstract base class...
Definition: CrdTransf.h:87
FVectorBeamColumn3d p0
Reactions in the basic system due to element loads.
Definition: NLForceBeamColumn3dBase.h:75
double Vy(const double &L) const
Returns the cortante Vy.
Definition: EsfBeamColumn3d.h:77
Base class for materials.
Definition: Material.h:85
Internal forces for a beam column 3D element.
Definition: FVectorBeamColumn3d.h:40
Definition: Vector.h:82
3D beam column internal forces.
Definition: EsfBeamColumn3d.h:45
int maxIters
maximum number of local iterations
Definition: NLForceBeamColumn3dBase.h:57
int sendData(CommParameters &cp)
Send members through the channel being passed as parameter.
Definition: NLForceBeamColumn3dBase.cc:137
int recvData(const CommParameters &cp)
Receives members through the channel being passed as parameter.
Definition: NLForceBeamColumn3dBase.cc:157
std::vector< Matrix > fs
array of section flexibility matrices
Definition: NLForceBeamColumn3dBase.h:69
void resizeMatrices(const size_t &nSections)
alocate section flexibility matrices and section deformation vectors
Definition: NLForceBeamColumn3dBase.cc:44
double AN2(void) const
Return the fuerza axil que se ejerce sobre la barra en el extremo frontal.
Definition: EsfBeamColumn3d.h:62
Base clas for 3D force beam column elements with SeccionBarraPrismatica type material.
Definition: NLForceBeamColumn3dBase.h:44
const double & Mz1(void) const
Returns the momento z en el extremo dorsal.
Definition: EsfBeamColumn3d.h:65
double T2(void) const
Returns the torsor en el extremo frontal.
Definition: EsfBeamColumn3d.h:104
EsfBeamColumn3d Se
element resisting forces in the basic system
Definition: NLForceBeamColumn3dBase.h:64
const double & T(void) const
Returns the torsor.
Definition: EsfBeamColumn3d.h:95
Base class for beam-column cross sections. Constitutive equations of the section. ...
Definition: SeccionBarraPrismatica.h:50
static const size_t NEGD
number of element global dof&#39;s
Definition: NLForceBeamColumn3dBase.h:50
static const int NND
number of nodal dof&#39;s
Definition: NLForceBeamColumn3dBase.h:49
const double & My2(void) const
Returns the momento y en el extremo frontal.
Definition: EsfBeamColumn3d.h:86
3D beam colun element with SeccionBarraPrismatica material type.
Definition: BeamColumnWithSectionFDTrf3d.h:65
double Vz(const double &L) const
Returns the cortante Vy.
Definition: EsfBeamColumn3d.h:92
const double & My1(void) const
Returns the momento y en el extremo dorsal.
Definition: EsfBeamColumn3d.h:80
double AN1(void) const
Return the fuerza axil que se ejerce sobre la barra en el extremo dorsal.
Definition: EsfBeamColumn3d.h:59
std::vector< Vector > Ssr
array of section resisting force vectors
Definition: NLForceBeamColumn3dBase.h:71
Definition: Matrix.h:82
double T1(void) const
Returns the torsor en el extremo dorsal.
Definition: EsfBeamColumn3d.h:101
std::vector< Vector > vs
array of section deformation vectors
Definition: NLForceBeamColumn3dBase.h:70
static const size_t NEBD
number of element dof&#39;s in the basic system
Definition: NLForceBeamColumn3dBase.h:51
Matrix kv
stiffness matrix in the basic system
Definition: NLForceBeamColumn3dBase.h:63
const double & Mz2(void) const
Returns the momento z en el extremo frontal.
Definition: EsfBeamColumn3d.h:71
double rho
mass density per unit length
Definition: NLForceBeamColumn3dBase.h:56
int initialFlag
indicates if the element has been initialized
Definition: NLForceBeamColumn3dBase.h:60
Matrix sp
Applied section forces due to element loads, 5 x nSections.
Definition: NLForceBeamColumn3dBase.h:74
double tol
tolerance for relative energy norm for local iterations
Definition: NLForceBeamColumn3dBase.h:58
Communication parameters between processes.
Definition: CommParameters.h:65
EsfBeamColumn3d Secommit
commited element end forces in the basic system
Definition: NLForceBeamColumn3dBase.h:67
================================================================================
Definition: ContinuaReprComponent.h:34
static const size_t NDM
dimension of the problem (3d)
Definition: NLForceBeamColumn3dBase.h:48
std::vector< Vector > vscommit
array of commited section deformation vectors
Definition: NLForceBeamColumn3dBase.h:72