xc
ElasticBeam3dBase.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 
29 #ifndef ElasticBeam3dBase_h
30 #define ElasticBeam3dBase_h
31 
32 #include "domain/mesh/element/truss_beam_column/ProtoBeam3d.h"
33 
34 namespace XC {
35 class Channel;
36 class Information;
37 class Response;
38 class SectionForceDeformation;
39 
43  {
44  protected:
46 
47  void set_transf(const CrdTransf *trf);
48 
49  int sendData(Communicator &comm);
50  int recvData(const Communicator &comm);
51  public:
52  ElasticBeam3dBase(int tag, int classTag);
53  ElasticBeam3dBase(int tag, int classTag,const Material *m,const CrdTransf *trf);
54  ElasticBeam3dBase(int tag, int classTag, double A, double E, double G, double Jx, double Iy, double Iz, int Nd1, int Nd2, CrdTransf3d &theTransf, double rho = 0.0);
55  ElasticBeam3dBase(int tag, int classTag, double A, double alpha_y, double alpha_z, double E, double G, double Jx, double Iy, double Iz, int Nd1, int Nd2, CrdTransf3d &theTransf, double rho = 0.0);
56 
57  ElasticBeam3dBase(int tag, int classTag, int Nd1, int Nd2, SectionForceDeformation *section, CrdTransf3d &theTransf, double rho = 0.0);
60  ~ElasticBeam3dBase(void);
61 
62  void setDomain(Domain *theDomain);
63 
64  virtual CrdTransf *getCoordTransf(void);
65  virtual const CrdTransf *getCoordTransf(void) const;
66 
67  const Vector &getVDirStrongAxisGlobalCoord(bool initialGeometry) const;
68  const Vector &getVDirWeakAxisGlobalCoord(bool initialGeometry) const;
69 
72  virtual double getN1(void) const= 0;
75  virtual double getN2(void) const= 0;
78  inline virtual double getN(void) const //Average axial force.
79  { return (getN1()+getN2())/2.0; }
80 
83  virtual double getMz1(void) const= 0;
86  virtual double getMz2(void) const= 0;
91  inline virtual double getMz(void) const
92  { return (this->getMz1()+this->getMz2())/2.0; }
93 
96  virtual double getVy1(void) const= 0;
99  virtual double getVy2(void) const= 0;
101  inline virtual double getVy(void) const
102  { return (getVy1()+getVy2())/2.0; }
103 
106  virtual double getVz1(void) const= 0;
109  virtual double getVz2(void) const= 0;
112  inline virtual double getVz(void) const
113  { return (getVz1()+getVz2())/2.0; }
114 
117  virtual double getMy1(void) const= 0;
120  virtual double getMy2(void) const= 0;
123  inline virtual double getMy(void) const
124  { return (this->getMy1()+this->getMy2())/2.0; }
125 
128  virtual double getT1(void) const= 0;
131  virtual double getT2(void) const= 0;
134  inline virtual double getT(void) const
135  { return (getT1()+getT2())/2.0; }
136 
137  boost::python::list getValuesAtNodes(const std::string &, bool silent= false) const;
138  };
139 } // end of XC namespace
140 
141 #endif
142 
143 
virtual CrdTransf * getCoordTransf(void)
Returns (if possible) a pointer to the coordinate transformation.
Definition: ElasticBeam3dBase.cc:177
Base class for force deformation section models.
Definition: SectionForceDeformation.h:88
Float vector abstraction.
Definition: Vector.h:94
virtual double getMy1(void) const =0
Internal bending moment about y axis at the back end.
Base class for 3D beams.
Definition: ProtoBeam3d.h:40
virtual double getVy1(void) const =0
Internal y shear force at the back end.
Communication parameters between processes.
Definition: Communicator.h:66
virtual double getMz(void) const
Internal shear force in the middle of the element.
Definition: ElasticBeam3dBase.h:91
ElasticBeam3dBase(int tag, int classTag)
Default constructor.
Definition: ElasticBeam3dBase.cc:63
CrdTransf provides the abstraction of a frame coordinate transformation.
Definition: CrdTransf.h:88
virtual double getT2(void) const =0
Internal torsional force at the front end.
virtual double getN(void) const
Internal axial force at the middle of the element.
Definition: ElasticBeam3dBase.h:78
Base class for materials.
Definition: Material.h:93
ElasticBeam3dBase & operator=(const ElasticBeam3dBase &)
Assignment operator.
Definition: ElasticBeam3dBase.cc:165
Base class for 3D elastic beam elements.
Definition: ElasticBeam3dBase.h:42
boost::python::list getValuesAtNodes(const std::string &, bool silent=false) const
Return a python list with the values of the argument property at element nodes.
Definition: ElasticBeam3dBase.cc:281
virtual double getMy(void) const
Mean bending moment.
Definition: ElasticBeam3dBase.h:123
virtual double getVz2(void) const =0
Internal z shear force at the front end.
int recvData(const Communicator &comm)
Receives members through the communicator argument.
Definition: ElasticBeam3dBase.cc:266
void setDomain(Domain *theDomain)
Sets the domain for the element.
Definition: ElasticBeam3dBase.cc:184
virtual double getVz1(void) const =0
Internal z shear force at the back end.
virtual double getMy2(void) const =0
Internal bending moment about y axis at the front end.
CrdTransf3d * theCoordTransf
Coordinate transformation.
Definition: ElasticBeam3dBase.h:45
virtual double getN2(void) const =0
Internal axial force at the front end.
const Vector & getVDirWeakAxisGlobalCoord(bool initialGeometry) const
Returns the direction vector of element weak axis expressed in the global coordinate system...
Definition: ElasticBeam3dBase.cc:237
virtual double getT1(void) const =0
Internal torsional force at the back end.
virtual double getVy2(void) const =0
Internal y shear force at the front end.
virtual double getN1(void) const =0
Internal axial force at the back end.
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
~ElasticBeam3dBase(void)
Constructor.
Definition: ElasticBeam3dBase.cc:173
const Vector & getVDirStrongAxisGlobalCoord(bool initialGeometry) const
Returns the direction vector of element strong axis expressed in the global coordinate system...
Definition: ElasticBeam3dBase.cc:215
virtual double getMz1(void) const =0
Internal bending moment about z axis at the back end.
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:117
virtual double getVz(void) const
Internal shear force in the middle of the element.
Definition: ElasticBeam3dBase.h:112
virtual double getMz2(void) const =0
Internal bending moment about z axis at the front end.
virtual double getT(void) const
Internal torsional force at midpoint.
Definition: ElasticBeam3dBase.h:134
int sendData(Communicator &comm)
Send members through the communicator argument.
Definition: ElasticBeam3dBase.cc:258
Base class for 3D coordinate transformation.
Definition: CrdTransf3d.h:81
virtual double getVy(void) const
Internal shear force in the middle of the element.
Definition: ElasticBeam3dBase.h:101