xc
ListReinfLayer.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 //ListReinfLayer.h
28 
29 #ifndef ListReinfLayer_h
30 #define ListReinfLayer_h
31 
32 #include <list>
33 #include "material/section/repres/SectionMassProperties.h"
34 
35 class Pos2d;
36 class Polygon2d;
37 class HalfPlane2d;
38 
39 namespace XC {
40 
41 class ReinfLayer;
42 class CircReinfLayer;
43 class StraightReinfLayer;
44 class SingleBar;
45 class MaterialHandler;
46 class Vector;
47 class Matrix;
48 class GeomSection;
49 
51 //
53 class ListReinfLayer: public std::list<ReinfLayer *>, public SectionMassProperties
54  {
55  public:
56  typedef std::list<ReinfLayer *> l_reg;
57  typedef l_reg::reference reference;
58  typedef l_reg::const_reference const_reference;
59  typedef l_reg::iterator iterator;
60  typedef l_reg::const_iterator const_iterator;
61  private:
62  void free_mem(void);
63  void free_mem(const size_t i);
64  void copy(const ListReinfLayer &otra);
65  protected:
66 
68 
69  friend class GeomSection;
73  public:
74  ~ListReinfLayer(void);
75 
76  ReinfLayer *push_back(const ReinfLayer &reg);
77 
78  void clear(void);
79 
80  const GeomSection *getGeomSection(void) const;
81  double getCover(void) const;
82 
83  StraightReinfLayer *newStraightReinfLayer(const std::string &);
84  CircReinfLayer *newCircReinfLayer(const std::string &);
85  SingleBar *newReinfBar(const std::string &);
86 
87 
88  size_t getNumReinfBars(void) const;
89 
90  void getBarrasIn(const Polygon2d &,ListReinfLayer &,bool );
91  void getBarrasIn(const HalfPlane2d &,ListReinfLayer &,bool );
92 
93  double getAreaGrossSection(void) const;
95  double getIyGrossSection(void) const;
96  double getIzGrossSection(void) const;
97  double getPyzGrossSection(void) const;
98 
99  Vector getCenterOfMassHomogenizedSection(const double &E0) const;
100  double getAreaHomogenizedSection(const double &E0) const;
101  double getIyHomogenizedSection(const double &E0) const;
102  double getIzHomogenizedSection(const double &E0) const;
103  double getPyzHomogenizedSection(const double &E0) const;
104 
105  void Print(std::ostream &s) const;
106  };
107 
108 } // end of XC namespace
109 
110 
111 #endif
Cross section geometry.
Definition: GeomSection.h:63
ListReinfLayer(GeomSection *, MaterialHandler *ml)
Constructor.
Definition: ListReinfLayer.cc:61
MaterialHandler * material_handler
Material definition handler (searching,...).
Definition: ListReinfLayer.h:67
Float vector abstraction.
Definition: Vector.h:93
double getAreaHomogenizedSection(const double &E0) const
Returns the homogenized area of the regions.
Definition: ListReinfLayer.cc:180
Set of rebars distributed along a segment.
Definition: StraightReinfLayer.h:71
SingleBar * newReinfBar(const std::string &)
Returns a single bar with the material with the identifier being passed as parameter.
Definition: ListReinfLayer.cc:101
ListReinfLayer & operator=(const ListReinfLayer &)
Assignment operator.
Definition: ListReinfLayer.cc:70
double getPyzGrossSection(void) const
Product of inertia of the gross section about y and z axis through its centroid.
Definition: ListReinfLayer.cc:303
Arc of a circle shaped reinforcement layer.
Definition: CircReinfLayer.h:70
ReinfLayer * push_back(const ReinfLayer &reg)
Adds a rebar layer to the container.
Definition: ListReinfLayer.cc:118
Rebar layer.
Definition: ReinfLayer.h:73
~ListReinfLayer(void)
Destructor.
Definition: ListReinfLayer.cc:110
void getBarrasIn(const Polygon2d &, ListReinfLayer &, bool)
Returns the rebar subset which center lies inside the polygon.
Definition: ListReinfLayer.cc:160
double getIyGrossSection(void) const
Inertia of the gross section about an axis parallel to y through its centroid.
Definition: ListReinfLayer.cc:275
double getIyHomogenizedSection(const double &E0) const
Returns homogenized moment of inertia of the cross-section with respecto to the axis parallel to y pa...
Definition: ListReinfLayer.cc:205
size_t getNumReinfBars(void) const
Returns the número total de celdas.
Definition: ListReinfLayer.cc:149
Vector getCenterOfMassGrossSection(void) const
Returns gross section centroid position.
Definition: ListReinfLayer.cc:259
double getPyzHomogenizedSection(const double &E0) const
Returns homogenized product of inertia of the cross-section with respecto to the axis parallel to y a...
Definition: ListReinfLayer.cc:235
double getAreaGrossSection(void) const
Returns region&#39;s gross section area.
Definition: ListReinfLayer.cc:250
void clear(void)
Erases the reinforcement layers.
Definition: ListReinfLayer.cc:114
Single rebar (not included in a reinforcement layer).
Definition: SingleBar.h:41
const GeomSection * getGeomSection(void) const
Returns a reference to the GeomSection object that owns this one.
Definition: ListReinfLayer.cc:127
Reinf layer container (list).
Definition: ListReinfLayer.h:53
double getCover(void) const
Returns the minimum value of the bars concrete cover.
Definition: ListReinfLayer.cc:137
double getIzHomogenizedSection(const double &E0) const
Returns homogenized moment of inertia of the cross-section with respecto to the axis parallel to z pa...
Definition: ListReinfLayer.cc:220
Material handler (definition, searching,...).
Definition: MaterialHandler.h:45
double getIzGrossSection(void) const
Inertia of the gross section about an axis parallel to z through its centroid.
Definition: ListReinfLayer.cc:289
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Cross-section representation able to return mechanical propertis a area, moments of inertia...
Definition: SectionMassProperties.h:49