xc
CircularSectRegion.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 //CircularSectRegion.h
28 // Written by Remo M. de Souza
29 // December 1998
30 
31 #ifndef CircularSectRegion_h
32 #define CircularSectRegion_h
33 
34 #include <material/section/repres/geom_section/region/QuadCellRegion.h>
35 #include <utility/matrix/Vector.h>
36 
37 class AnnulusSector2d;
38 
39 namespace XC {
40 class Matrix;
41 
43 //
46  {
47  private:
48  Vector centerPosit;
49  double intRad;
50  double extRad;
51  double initAng;
52  double finalAng;
53  public:
55  CircularSectRegion(Material *, int numSubdivCircunf, int numSubdivRadial,
56  const Vector &centerPosition, double internRadius,
57  double externRadius, double initialAngle, double finalAngle);
58 
59  //edition functions
60  void setCenterPosition(const Vector &);
61  void setCenterPos(const Pos2d &);
62  Pos2d getCenterPos(void) const;
64  inline double getInteriorRadius(void) const
65  { return intRad; }
67  inline double getExteriorRadius(void) const
68  { return extRad; }
70  inline double getInitialAngle(void) const
71  { return initAng; }
73  inline double getFinalAngle(void) const
74  { return finalAng; }
76  void setInteriorRadius(const double &d)
77  { intRad= d; }
79  void setExteriorRadius(const double &d)
80  { extRad= d; }
82  void setInitialAngle(const double &d)
83  { initAng= d; }
85  void setFinalAngle(const double &d)
86  { finalAng= d; }
87  void setRadii(double internRadius, double externRadius);
88  void setAngles(double initialAngle, double finalAngle);
89 
90  //inquiring functions
91  const Grid2d &getMesh(void) const;
92  const VectorCells &getCells(void) const;
93  SectRegion *getCopy(void) const;
94 
95  void getRadii(double &internRadius, double &externRadius) const;
96  void getAngles(double &initialAngle, double &finalAngle) const;
97  const Vector &getCenterPosition(void) const;
98  const Matrix &getVertCoords(void) const;
99 
100  double getMaxY(void) const;
101  double getMaxZ(void) const;
102  double getMinY(void) const;
103  double getMinZ(void) const;
104 
105  Polygon2d getPolygon(void) const;
106  AnnulusSector2d &getSector(void) const;
107 
108 
109  void Print(std::ostream &s, int flag =0) const;
110  friend std::ostream &operator<<(std::ostream &, CircularSectRegion &);
111  };
112 std::ostream &operator<<(std::ostream &, CircularSectRegion &);
113 } // end of XC namespace
114 
115 
116 #endif
117 
118 
Circular shaped patch.
Definition: CircularSectRegion.h:45
double getInteriorRadius(void) const
Returns internal radius.
Definition: CircularSectRegion.h:64
Float vector abstraction.
Definition: Vector.h:93
void setInteriorRadius(const double &d)
Sets internal radius.
Definition: CircularSectRegion.h:76
CircularSectRegion(Material *mat)
Default constructor.
Definition: CircularSectRegion.cc:45
Region of a section that creates quadrilateral cells.
Definition: QuadCellRegion.h:50
Base class for materials.
Definition: Material.h:91
double getInitialAngle(void) const
Returns initial angle.
Definition: CircularSectRegion.h:70
const Grid2d & getMesh(void) const
Return the discretization grid.
Definition: CircularSectRegion.cc:155
SectRegion * getCopy(void) const
Virtual constructor.
Definition: CircularSectRegion.cc:184
const VectorCells & getCells(void) const
Returns the cell container.
Definition: CircularSectRegion.cc:158
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:57
void setFinalAngle(const double &d)
Sets final angle.
Definition: CircularSectRegion.h:85
double getExteriorRadius(void) const
Returns extenal radius.
Definition: CircularSectRegion.h:67
Cells vector.
Definition: VectorCells.h:42
void setInitialAngle(const double &d)
Sets starting angle.
Definition: CircularSectRegion.h:82
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
double getFinalAngle(void) const
Returns final angle.
Definition: CircularSectRegion.h:73
Matrix of floats.
Definition: Matrix.h:108
void setExteriorRadius(const double &d)
Sets external radius.
Definition: CircularSectRegion.h:79