xc
CrossSectionProperties3d.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 //CrossSectionProperties3d.h
29 
30 #ifndef CrossSectionProperties3d_h
31 #define CrossSectionProperties3d_h
32 
33 #include "CrossSectionProperties2d.h"
34 
35 namespace XC {
36 
38 //
43  {
44  private:
45  double iy, iyz, j;
46  double alpha_z;
47  static Matrix ks4;
48  static Matrix ks6;
49  protected:
50  DbTagData &getDbTagData(void) const;
51  int sendData(Communicator &);
52  int recvData(const Communicator &);
53 
54  public:
55  CrossSectionProperties3d(double E, double A, double Iz, double Iy, double G, double J, double alpha_y= 0.0, double alpha_z= 0.0, double rho= 0.0);
56  CrossSectionProperties3d(double EA, double EIz, double EIy, double GJ);
59 
60  bool check_values(void);
61  inline int getDimension(void)
62  { return 3; }
63  inline double &AlphaY(void)
64  { return Alpha(); }
65  inline const double &AlphaY(void) const
66  { return Alpha(); }
67  inline void setAlphaY(const double &al)
68  { setAlpha(al); }
69  inline double &AlphaZ(void)
70  { return alpha_z; }
71  inline const double &AlphaZ(void) const
72  { return alpha_z; }
73  inline void setAlphaZ(const double &al)
74  { alpha_z= al; }
76  inline double getAvz(void) const
77  { return alpha_z*A(); }
79  void setAvz(const double &avz)
80  { alpha_z= avz/A(); }
81  inline double &Iz(void)
82  { return CrossSectionProperties2d::I(); }
83  inline const double &Iz(void) const
84  { return CrossSectionProperties2d::I(); }
85  inline void setIz(const double &i)
86  { CrossSectionProperties2d::setI(i); }
87  inline double &Iy(void)
88  { return iy; }
89  inline const double &Iy(void) const
90  { return iy; }
91  inline void setIy(const double &i)
92  { iy= i; }
93  inline double &Iyz(void)
94  { return iyz; }
95  inline const double &Iyz(void) const
96  { return iyz; }
97  inline void setIyz(const double &i)
98  { iyz= i; }
99  inline double &J(void)
100  { return j; }
101  inline const double &J(void) const
102  { return j; }
103  inline void setJ(const double &i)
104  { j= i; }
106  inline double EIz(void) const
107  { return CrossSectionProperties2d::EI(); }
109  inline double EIy(void) const
110  { return E()*iy; }
113  inline double EIyz(void) const
114  { return E()*iyz; }
116  inline double GJ(void) const
117  { return G()*j; }
119  inline double GAAlphaY(void) const
120  { return GAAlpha(); }
122  inline double GAAlphaZ(void) const
123  { return G()*getAvz(); }
124  double getRadiusOfGyrationZ(void) const;
125  double getRadiusOfGyrationY(void) const;
126 
127  double getTheta(void) const;
128  double getI1(void) const;
129  double getI2(void) const;
131  Vector2d getAxis1VDir(void) const;
132  Vector2d getVDirStrongAxis(void) const;
133  Vector2d getAxis2VDir(void) const;
134  Vector2d getVDirWeakAxis(void) const;
135 
136  const Matrix &getSectionTangent4x4(void) const;
137  const Matrix &getInitialTangent4x4(void) const;
138  const Matrix &getSectionFlexibility4x4(void) const;
139  const Matrix &getInitialFlexibility4x4(void) const;
140  const Matrix &getSectionTangent6x6(void) const;
141  const Matrix &getInitialTangent6x6(void) const;
142  const Matrix &getSectionFlexibility6x6(void) const;
143  const Matrix &getInitialFlexibility6x6(void) const;
144 
145  void rotate(const double &theta);
146 
147  int sendSelf(Communicator &);
148  int recvSelf(const Communicator &);
149  boost::python::dict getPyDict(void) const;
150  void setPyDict(const boost::python::dict &);
151 
152  int setParameter(const std::vector<std::string> &argv,Parameter &param,SectionForceDeformation *scc);
153  int updateParameter(int parameterID, Information &info);
154 
155 
156  void Print(std::ostream &s, int flag = 0) const;
157  };
158 
159 } // end of XC namespace
160 
161 #endif
double getI1(void) const
Returns the major principal axis of inertia.
Definition: CrossSectionProperties3d.cc:118
double EIyz(void) const
Returns the contribution to the bending stiffness matrix of the product of inertia.
Definition: CrossSectionProperties3d.h:113
Base class for force deformation section models.
Definition: SectionForceDeformation.h:88
int sendData(Communicator &)
Send members through the communicator argument.
Definition: CrossSectionProperties3d.cc:328
double GJ(void) const
Returns the torsional stiffness.
Definition: CrossSectionProperties3d.h:116
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) in a three-dimensio...
Definition: CrossSectionProperties3d.h:42
double EIy(void) const
Returns the y bending stiffness.
Definition: CrossSectionProperties3d.h:109
Information about an element.
Definition: Information.h:81
Communication parameters between processes.
Definition: Communicator.h:66
bool check_values(void)
Check values of inertia values.
Definition: CrossSectionProperties3d.cc:45
double EI(void) const
Return z bending stiffness.
Definition: CrossSectionProperties2d.h:101
void setAvz(const double &avz)
set shear area.
Definition: CrossSectionProperties3d.h:79
double getI2(void) const
Returns the minor principal axis of inertia.
Definition: CrossSectionProperties3d.cc:122
const Matrix & getSectionFlexibility6x6(void) const
Returns the flexibility matrix.
Definition: CrossSectionProperties3d.cc:218
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: CrossSectionProperties3d.cc:401
Vector that stores the dbTags of the class members.
Definition: DbTagData.h:44
const Matrix & getSectionTangent4x4(void) const
Returns the tangent stiffness matrix.
Definition: CrossSectionProperties3d.cc:153
const Matrix & getInitialTangent4x4(void) const
Returns the initial tangent stiffness matrix.
Definition: CrossSectionProperties3d.cc:164
void rotate(const double &theta)
Counterclockwise rotation of the section by the angle being passed as parameter.
Definition: CrossSectionProperties3d.cc:259
Vector en dos dimensiones.
Definition: Vector2d.h:40
boost::python::dict getPyDict(void) const
Return a Python dictionary with the object members values.
Definition: CrossSectionProperties3d.cc:344
double getTheta(void) const
Returns the angle between the principal axes and the local system.
Definition: CrossSectionProperties3d.cc:114
const Matrix & getSectionFlexibility4x4(void) const
Returns the flexibility matrix.
Definition: CrossSectionProperties3d.cc:168
int recvData(const Communicator &)
Receives members through the communicator argument.
Definition: CrossSectionProperties3d.cc:336
int updateParameter(int parameterID, Information &info)
Updates the parameter identified by parameterID with info.
Definition: CrossSectionProperties3d.cc:301
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) for a bi-dimensiona...
Definition: CrossSectionProperties2d.h:55
Vector2d getVDirWeakAxis(void) const
Returns principal axis II (weak).
Definition: CrossSectionProperties3d.cc:149
CrossSectionProperties3d(void)
Constructor.
Definition: CrossSectionProperties3d.cc:75
double getRadiusOfGyrationZ(void) const
Returns the section gyration radius around the z axis.
Definition: CrossSectionProperties3d.cc:126
double GAAlphaZ(void) const
Returns shear stiffness along z axis.
Definition: CrossSectionProperties3d.h:122
double getRadiusOfGyrationY(void) const
Returns the section gyration radius around the y axis.
Definition: CrossSectionProperties3d.cc:130
const Matrix & getInitialFlexibility4x4(void) const
Returns the initial flexibility matrix.
Definition: CrossSectionProperties3d.cc:194
Principals axes of inertia in planar geometry.
Definition: PrincipalAxesOfInertia2D.h:34
double GAAlpha(void) const
Returns shear stiffness.
Definition: CrossSectionProperties2d.h:104
Vector2d getAxis2VDir(void) const
Returns principal axis II (weak).
Definition: CrossSectionProperties3d.cc:146
int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: CrossSectionProperties3d.cc:365
const Matrix & getInitialFlexibility6x6(void) const
Returns the initial flexibility matrix.
Definition: CrossSectionProperties3d.cc:254
Vector2d getAxis1VDir(void) const
Returns principal axis I (strong).
Definition: CrossSectionProperties3d.cc:140
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: CrossSectionProperties3d.cc:380
const Matrix & getInitialTangent6x6(void) const
Returns the initial tangent stiffness matrix.
Definition: CrossSectionProperties3d.cc:214
Matrix of floats.
Definition: Matrix.h:111
void setPyDict(const boost::python::dict &)
Set the values of the object members from a Python dictionary.
Definition: CrossSectionProperties3d.cc:355
double EIz(void) const
Returns the z bending stiffness.
Definition: CrossSectionProperties3d.h:106
Parameter.
Definition: Parameter.h:68
const Matrix & getSectionTangent6x6(void) const
Returns the tangent stiffness matrix.
Definition: CrossSectionProperties3d.cc:198
DbTagData & getDbTagData(void) const
Returns a vector to store the dbTags of the class members.
Definition: CrossSectionProperties3d.cc:321
Vector2d getVDirStrongAxis(void) const
Returns principal axis I (strong).
Definition: CrossSectionProperties3d.cc:143
double getAvz(void) const
get shear area.
Definition: CrossSectionProperties3d.h:76
double GAAlphaY(void) const
Returns shear stiffness along y axis.
Definition: CrossSectionProperties3d.h:119
double EA(void) const
Return axial stiffness.
Definition: CrossSectionProperties1d.h:99
PrincipalAxesOfInertia2D getInertiaAxes(void) const
Returns the principal axis of inertia.
Definition: CrossSectionProperties3d.cc:134