xc
SectionMassProperties.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 //SectionMassProperties.h
28 
29 #ifndef SectionMassProperties_h
30 #define SectionMassProperties_h
31 
32 #include "xc_utils/src/kernel/CommandEntity.h"
33 
34 class Pos2d;
35 class Line2d;
36 class PrincipalAxesOfInertia2D;
37 class Vector2d;
38 
39 namespace XC {
40 class CrossSectionProperties3d;
41 class CrossSectionProperties2d;
42 class Vector;
43 class Matrix;
44 
46 //
49 class SectionMassProperties: public CommandEntity
50  {
51  public:
52  SectionMassProperties(CommandEntity *owr= nullptr);
53 
54  virtual double getAreaGrossSection(void) const= 0;
55  virtual Vector getCenterOfMassGrossSection(void) const= 0;
56  virtual double getIyGrossSection(void) const= 0;
57  virtual double getIzGrossSection(void) const= 0;
58  virtual double getPyzGrossSection(void) const= 0;
59 
60  double getIxGrossSection(void) const;
61  double getTheta_pGrossSection(void) const;
64  double getI1GrossSection(void) const;
65  double getI2GrossSection(void) const;
66  PrincipalAxesOfInertia2D getInertiaAxesGrossSection(void) const;
67  Vector2d getAxis1VDirGrossSection(void) const;
68  Vector2d getVDirStrongAxisGrossSection(void) const;
69  Vector2d getAxis2VDirGrossSection(void) const;
70  Vector2d getVDirWeakAxisGrossSection(void) const;
71  double getIGrossSection(const unsigned short int &,const unsigned short int &) const;
72  double getIGrossSection(const unsigned short int &,const unsigned short int &,const Pos2d &) const;
73  double getIGrossSection(const Pos2d &,const Vector &) const;
74  double getIGrossSection(const Line2d &) const;
75  double getIOGrossSection(const Pos2d &) const;
76  Matrix getIGrossSection(void) const;
77  Matrix getIGrossSection(const Pos2d &) const;
78 
79  virtual double getAreaHomogenizedSection(const double &) const= 0;
80  virtual Vector getCenterOfMassHomogenizedSection(const double &) const= 0;
81  virtual double getIyHomogenizedSection(const double &) const= 0;
82  virtual double getIzHomogenizedSection(const double &) const= 0;
83  virtual double getPyzHomogenizedSection(const double &) const= 0;
84 
85  double getIxHomogenizedSection(const double &) const;
86  double getTheta_pHomogenizedSection(void) const;
89  double getI1HomogenizedSection(const double &) const;
90  double getI2HomogenizedSection(const double &) const;
91  PrincipalAxesOfInertia2D getInertiaAxesHomogenizedSection(const double &) const;
92  Vector2d getAxis1VDirHomogenizedSection(const double &) const;
93  Vector2d getVDirStrongAxisHomogenizedSection(const double &) const;
94  Vector2d getAxis2VDirHomogenizedSection(const double &) const;
95  Vector2d getVDirWeakAxisHomogenizedSection(const double &) const;
96  double getIHomogenizedSection(const double &,const unsigned short int &,const unsigned short int &) const;
97  double getIHomogenizedSection(const double &,const unsigned short int &,const unsigned short int &,const Pos2d &) const;
98  double getIHomogenizedSection(const double &,const Pos2d &,const Vector &) const;
99  double getIHomogenizedSection(const double &,const Line2d &) const;
100  double getIOHomogenizedSection(const double &,const Pos2d &) const;
101  Matrix getIHomogenizedSection(const double &) const;
102  Matrix getIHomogenizedSection(const double &,const Pos2d &) const;
103 
106 
107  };
108 
109 } // end of XC namespace
110 
111 
112 #endif
113 
Vector getIAxisDir_bGrossSection(void) const
Direction of the other principal axis of inertia of the gross section with respect of current axis...
Definition: SectionMassProperties.cc:242
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) in a three-dimensio...
Definition: CrossSectionProperties3d.h:40
Float vector abstraction.
Definition: Vector.h:93
double getI1HomogenizedSection(const double &) const
Major principal moment of inertia of the homogenized section.
Definition: SectionMassProperties.cc:82
Vector2d getAxis2VDirHomogenizedSection(const double &) const
Direction of the minor principal axis of inertia of the homogenized section.
Definition: SectionMassProperties.cc:116
double getIHomogenizedSection(const double &, const unsigned short int &, const unsigned short int &) const
tensor of inertia (i,j) component of the homogenized section.
Definition: SectionMassProperties.cc:124
double getIOGrossSection(const Pos2d &) const
Return the polar moment of inertia with respect to the point o.
Definition: SectionMassProperties.cc:342
double getIxGrossSection(void) const
Inertia of the gross section about an axis parallel to x through his center of gravity.
Definition: SectionMassProperties.cc:221
Vector2d getVDirStrongAxisGrossSection(void) const
Direction of the major principal axis of inertia of the gross section.
Definition: SectionMassProperties.cc:282
Vector getIAxisDir_aHomogenizedSection(void) const
Direction of a principal axis of inertia of the homogenized section with respect of current axis...
Definition: SectionMassProperties.cc:60
Vector2d getVDirWeakAxisHomogenizedSection(const double &) const
Direction of the minor principal axis of inertia of the homogenized section.
Definition: SectionMassProperties.cc:120
Vector2d getAxis1VDirGrossSection(void) const
Direction of the major principal axis of inertia of the gross section.
Definition: SectionMassProperties.cc:278
double getTheta_pGrossSection(void) const
Agle of the principal axis of inertia of the gross section with respect of current axis...
Definition: SectionMassProperties.cc:226
Vector2d getAxis2VDirGrossSection(void) const
Direction of the minor principal axis of inertia of the gross section.
Definition: SectionMassProperties.cc:286
double getIxHomogenizedSection(const double &) const
Inertia of the homogenized section about an axis parallel to x through his center of gravity...
Definition: SectionMassProperties.cc:47
double getI2HomogenizedSection(const double &) const
Minor principal moment of inertia of the homogenized section.
Definition: SectionMassProperties.cc:91
Vector2d getVDirStrongAxisHomogenizedSection(const double &) const
Direction of the major principal axis of inertia of the homogenized section.
Definition: SectionMassProperties.cc:112
Vector2d getVDirWeakAxisGrossSection(void) const
Direction of the minor principal axis of inertia of the gross section.
Definition: SectionMassProperties.cc:290
double getIOHomogenizedSection(const double &, const Pos2d &) const
Return the polar moment of inertia with respect to the point o.
Definition: SectionMassProperties.cc:171
Mechanical (E, G) and mass properties of a section (area, moments of inertia,...) for a bi-dimensiona...
Definition: CrossSectionProperties2d.h:52
CrossSectionProperties2d getCrossSectionProperties2d(const CrossSectionProperties2d &) const
Return the 2D mass properties of the homogenized section.
Definition: SectionMassProperties.cc:210
SectionMassProperties(CommandEntity *owr=nullptr)
Constructor.
Definition: SectionMassProperties.cc:41
Vector getIAxisDir_bHomogenizedSection(void) const
Direction of the other axis of inertia of the homogenized section with respect of current axis...
Definition: SectionMassProperties.cc:72
CrossSectionProperties3d getCrossSectionProperties3d(const CrossSectionProperties3d &) const
Return the 3D mass properties of the homogenized section.
Definition: SectionMassProperties.cc:198
double getI2GrossSection(void) const
Minor principal moment of inertia of the gross section.
Definition: SectionMassProperties.cc:261
Vector getIAxisDir_aGrossSection(void) const
Direction of a principal axis of inertia of the gross section with respect of current axis...
Definition: SectionMassProperties.cc:231
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
PrincipalAxesOfInertia2D getInertiaAxesGrossSection(void) const
Principal axis of inertia of the gross section.
Definition: SectionMassProperties.cc:270
Vector2d getAxis1VDirHomogenizedSection(const double &) const
Direction of the major principal axis of inertia of the homogenized section.
Definition: SectionMassProperties.cc:108
Cross-section representation able to return mechanical propertis a area, moments of inertia...
Definition: SectionMassProperties.h:49
Matrix of floats.
Definition: Matrix.h:108
double getI1GrossSection(void) const
Major principal moment of inertia of the gross section.
Definition: SectionMassProperties.cc:252
Matrix getIGrossSection(void) const
Return the tensor of inertia computed with respect to the object centroid.
Definition: SectionMassProperties.cc:348
double getTheta_pHomogenizedSection(void) const
Agle of the principal axis of inertia of the homogenized section with respect of current axis...
Definition: SectionMassProperties.cc:54
PrincipalAxesOfInertia2D getInertiaAxesHomogenizedSection(const double &) const
Principal axis of inertia of the homogenized section.
Definition: SectionMassProperties.cc:100