xc
BeamMecLoad.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 //BeamMecLoad.h
29 
30 #ifndef BeamMecLoad_h
31 #define BeamMecLoad_h
32 
33 
34 #include <domain/load/beam_loads/BeamLoad.h>
35 #include "utility/geom/pos_vec/Pos3d.h"
37 
38 namespace XC {
39 class Matrix;
40 class FVector;
41 class CrossSectionProperties2d;
42 class CrossSectionProperties3d;
43 
45 //
47 class BeamMecLoad: public BeamLoad
48  {
49  protected:
50  double Trans;
51  double Axial;
52 
53  int sendData(Communicator &comm);
54  int recvData(const Communicator &comm);
55  public:
56  BeamMecLoad(int tag, int classTag,const double &Trans,const double &Axial,const ID &theElementTags);
57  BeamMecLoad(int tag, int classTag);
58 
59  inline double getTransComponent(void) const
60  { return Trans; }
61  inline double getAxialComponent(void) const
62  { return Axial; }
63  inline void setTransComponent(const double &t)
64  { Trans= t; }
65  inline void setAxialComponent(const double &a)
66  { Axial= a; }
67 
68  virtual const Matrix &getAppliedSectionForces(const double &L,const Matrix &xi,const double &loadFactor) const;
69  virtual void addReactionsInBasicSystem(const std::vector<double> &,const double &,FVector &) const;
70  virtual void addFixedEndForcesInBasicSystem(const std::vector<double> &,const double &, FVector &, int releasey= 0, int releasez= 0) const;
71  void addElasticDeformations(const double &L,const CrossSectionProperties3d &ctes_scc,const double &lpI,const double &lpJ,const double &loadFactor,FVector &v0);
72  void addElasticDeformations(const double &L,const CrossSectionProperties2d &ctes_scc,const double &lpI,const double &lpJ,const double &loadFactor,FVector &v0);
73 
74  virtual size_t getForceVectorDimension(void) const;
75  virtual size_t getMomentVectorDimension(void) const;
76  virtual Vector getLocalForce(void) const;
77  virtual Vector getLocalMoment(void) const;
78  virtual const Matrix &getLocalForces(void) const;
79  virtual const Matrix &getLocalMoments(void) const;
80  virtual const Matrix &getGlobalVectors(const Matrix &) const;
81  virtual const Matrix &getGlobalForces(void) const;
82  virtual const Matrix &getGlobalMoments(void) const;
83  Vector3d getVector3dLocalForce(void) const;
84  Vector3d getVector3dLocalMoment(void) const;
85 
86  virtual SlidingVectorsSystem3d getResultant(const Pos3d &p= Pos3d(), bool initialGeometry= true) const;
87 
88  void Print(std::ostream &s, int flag =0) const;
89 
90  };
91 } // end of XC namespace
92 
93 #endif
94 
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) in a three-dimensio...
Definition: CrossSectionProperties3d.h:42
Element internal forces.
Definition: FVector.h:45
Float vector abstraction.
Definition: Vector.h:94
Communication parameters between processes.
Definition: Communicator.h:66
Mechanical loads (forces) over beam elements.
Definition: BeamMecLoad.h:47
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: BeamMecLoad.cc:213
virtual Vector getLocalMoment(void) const
Returns moment expressed in local coordinates.
Definition: BeamMecLoad.cc:106
virtual const Matrix & getGlobalForces(void) const
Returns punctual/distributed force vectors (one for each element) expressed in global coordinates...
Definition: BeamMecLoad.cc:198
Vector of integers.
Definition: ID.h:95
virtual void addReactionsInBasicSystem(const std::vector< double > &, const double &, FVector &) const
Adds the load al consistent load vector (see page 108 libro Eugenio Oñate).
Definition: BeamMecLoad.cc:59
Vector3d getVector3dLocalMoment(void) const
Return the local components of the moment in a Vector3d.
Definition: BeamMecLoad.cc:128
virtual const Matrix & getLocalForces(void) const
Returns punctual/distributed force vectors (one for each element) expressed in local coordinates...
Definition: BeamMecLoad.cc:142
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) for a bi-dimensiona...
Definition: CrossSectionProperties2d.h:55
Load over beam elements.
Definition: BeamLoad.h:43
virtual const Matrix & getAppliedSectionForces(const double &L, const Matrix &xi, const double &loadFactor) const
Returns applied section forces due to this load (called in element&#39;s addLoad method).
Definition: BeamMecLoad.cc:47
virtual const Matrix & getGlobalMoments(void) const
Returns punctual/distributed moment vectors (one for each element) expressed in global coordinates...
Definition: BeamMecLoad.cc:202
virtual void addFixedEndForcesInBasicSystem(const std::vector< double > &, const double &, FVector &, int releasey=0, int releasez=0) const
Returns the consistent load vector (see page 108 Eugenio Oñate book).
Definition: BeamMecLoad.cc:70
virtual size_t getMomentVectorDimension(void) const
Return the dimension of the moment vector.
Definition: BeamMecLoad.cc:93
Vector3d getVector3dLocalForce(void) const
Return the local components of the force in a Vector3d.
Definition: BeamMecLoad.cc:115
double Trans
Transverse load.
Definition: BeamMecLoad.h:50
int sendData(Communicator &comm)
Send data through the communicator argument.
Definition: BeamMecLoad.cc:222
double Axial
Axial load.
Definition: BeamMecLoad.h:51
virtual const Matrix & getLocalMoments(void) const
Returns punctual/distributed force moments (one for each element) expressed in local coordinates...
Definition: BeamMecLoad.cc:156
Posición en tres dimensiones.
Definition: Pos3d.h:44
int recvData(const Communicator &comm)
Receive data through the communicator argument.
Definition: BeamMecLoad.cc:230
Sliding vectors system en un espacio tridimensional.
Definition: SlidingVectorsSystem3d.h:39
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
virtual SlidingVectorsSystem3d getResultant(const Pos3d &p=Pos3d(), bool initialGeometry=true) const
brief Returns load resultant (force and moment integration over the elements).
Definition: BeamMecLoad.cc:206
Vector en tres dimensiones.
Definition: Vector3d.h:39
virtual Vector getLocalForce(void) const
Returns force expressed in local coordinates.
Definition: BeamMecLoad.cc:97
virtual size_t getForceVectorDimension(void) const
Return the dimension of the force vector.
Definition: BeamMecLoad.cc:89