xc
CircularSectRegion.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 //CircularSectRegion.h
29 // Written by Remo M. de Souza
30 // December 1998
31 
32 #ifndef CircularSectRegion_h
33 #define CircularSectRegion_h
34 
35 #include <material/section/repres/section_geometry/region/QuadCellRegion.h>
36 #include <utility/matrix/Vector.h>
37 
38 class AnnulusSector2d;
39 
40 namespace XC {
41 class Matrix;
42 
44 //
47  {
48  private:
49  Vector centerPosit;
50  double intRad;
51  double extRad;
52  double initAng;
53  double finalAng;
54  public:
56  CircularSectRegion(Material *, int numSubdivCircunf, int numSubdivRadial,
57  const Vector &centerPosition, double internRadius,
58  double externRadius, double initialAngle, double finalAngle);
59 
60  //edition functions
61  void setCenterPosition(const Vector &);
62  void setCenterPos(const Pos2d &);
63  Pos2d getCenterPos(void) const;
65  inline bool isHollow(void) const
66  { return intRad>0.0; }
68  inline double getInteriorRadius(void) const
69  { return intRad; }
71  inline double getExteriorRadius(void) const
72  { return extRad; }
74  inline double getInitialAngle(void) const
75  { return initAng; }
77  inline double getFinalAngle(void) const
78  { return finalAng; }
80  inline double getIncludedAngle(void) const
81  { return finalAng-initAng; }
83  void setInteriorRadius(const double &d)
84  { intRad= d; }
86  void setExteriorRadius(const double &d)
87  { extRad= d; }
89  void setInitialAngle(const double &d)
90  { initAng= d; }
92  void setFinalAngle(const double &d)
93  { finalAng= d; }
94  void setRadii(double internRadius, double externRadius);
95  void setAngles(double initialAngle, double finalAngle);
96 
97  //inquiring functions
98  const Grid2d &getMesh(void) const;
99  const VectorCells &getCells(void) const;
100  SectRegion *getCopy(void) const;
101 
102  void getRadii(double &internRadius, double &externRadius) const;
103  void getAngles(double &initialAngle, double &finalAngle) const;
104  const Vector &getCenterPosition(void) const;
105  const Matrix &getVertCoords(void) const;
106 
107  double getMaxY(void) const;
108  double getMaxZ(void) const;
109  double getMinY(void) const;
110  double getMinZ(void) const;
111 
112  Polygon2d getPolygon(void) const;
113  AnnulusSector2d &getSector(void) const;
114 
115 
116  void Print(std::ostream &s, int flag =0) const;
117  friend std::ostream &operator<<(std::ostream &, CircularSectRegion &);
118  };
119 std::ostream &operator<<(std::ostream &, CircularSectRegion &);
120 } // end of XC namespace
121 
122 
123 #endif
124 
125 
Circular shaped patch.
Definition: CircularSectRegion.h:46
bool isHollow(void) const
Return true if it&#39;s a hollow section.
Definition: CircularSectRegion.h:65
double getInteriorRadius(void) const
Returns internal radius.
Definition: CircularSectRegion.h:68
Float vector abstraction.
Definition: Vector.h:94
void setInteriorRadius(const double &d)
Sets internal radius.
Definition: CircularSectRegion.h:83
CircularSectRegion(Material *mat)
Default constructor.
Definition: CircularSectRegion.cc:45
Sector de un anillo circular en dos dimensiones.
Definition: AnnulusSector2d.h:35
Posición en dos dimensiones.
Definition: Pos2d.h:41
Region of a section that creates quadrilateral cells.
Definition: QuadCellRegion.h:51
Base class for materials.
Definition: Material.h:93
double getInitialAngle(void) const
Returns initial angle.
Definition: CircularSectRegion.h:74
const Grid2d & getMesh(void) const
Return the discretization grid.
Definition: CircularSectRegion.cc:171
Polígono en dos dimensiones.
Definition: Polygon2d.h:38
Grid in a two-dimensional space.
Definition: Grid2d.h:32
double getIncludedAngle(void) const
Return the angle covered by the region.
Definition: CircularSectRegion.h:80
SectRegion * getCopy(void) const
Virtual constructor.
Definition: CircularSectRegion.cc:200
const VectorCells & getCells(void) const
Returns the cell container.
Definition: CircularSectRegion.cc:174
Polygon2d getPolygon(void) const
Returns a polygon inscribed in the annulus sector.
Definition: CircularSectRegion.cc:141
Region of a section that corresponds with a material.
Definition: SectRegion.h:58
void setFinalAngle(const double &d)
Sets final angle.
Definition: CircularSectRegion.h:92
double getExteriorRadius(void) const
Returns external radius.
Definition: CircularSectRegion.h:71
Cells vector.
Definition: VectorCells.h:42
void setInitialAngle(const double &d)
Sets starting angle.
Definition: CircularSectRegion.h:89
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
double getFinalAngle(void) const
Returns final angle.
Definition: CircularSectRegion.h:77
Matrix of floats.
Definition: Matrix.h:111
void setExteriorRadius(const double &d)
Sets external radius.
Definition: CircularSectRegion.h:86