xc
InteractionDiagram.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 //InteractionDiagram.h
28 
29 #ifndef INTERACTION_DIAGRAM_H
30 #define INTERACTION_DIAGRAM_H
31 
32 #include "xc_utils/src/geom/d2/Trihedron.h"
33 #include <set>
34 #include <deque>
35 #include "ClosedTriangleMesh.h"
36 
37 class Triang3dMesh;
38 
39 namespace XC {
40 
41 class Vector;
42 class FiberSectionBase;
43 class InteractionDiagramData;
44 
46 //
49  {
50  protected:
51  typedef std::set<const Trihedron *> set_ptr_trihedrons;
52 
53 
54  set_ptr_trihedrons quadrant_trihedrons[8];
55 
56  void classify_trihedron(const Trihedron &tdro);
57  void classify_trihedrons(void);
58  void setPositionsMatrix(const Matrix &);
59  GeomObj::list_Pos3d get_intersection(const Pos3d &p) const;
60  public:
61  InteractionDiagram(void);
62  InteractionDiagram(const Pos3d &org,const Triang3dMesh &mll);
65  virtual InteractionDiagram *clon(void) const;
66 
67  const Trihedron *findTrihedronPtr(const Pos3d &p) const;
68  Pos3d getIntersection(const Pos3d &) const;
69  double getCapacityFactor(const Pos3d &) const;
70  Vector getCapacityFactor(const GeomObj::list_Pos3d &) const;
71 
72  void Print(std::ostream &os) const;
73  };
74 
75 InteractionDiagram calc_interaction_diagram(const FiberSectionBase &,const InteractionDiagramData &);
76 
77 } // end of XC namespace
78 
79 #endif
Float vector abstraction.
Definition: Vector.h:93
Pos3d getIntersection(const Pos3d &) const
Returns the intersection of the ray O->esf_d with the interaction diagram.
Definition: InteractionDiagram.cc:242
Base class for fiber sections.
Definition: FiberSectionBase.h:57
void classify_trihedrons(void)
We classify the trihedrons by its quadrants.
Definition: InteractionDiagram.cc:50
virtual InteractionDiagram * clon(void) const
Virtual constructor.
Definition: InteractionDiagram.cc:83
const Trihedron * findTrihedronPtr(const Pos3d &p) const
Search for the trihedron that contains the point being passed as parameter.
Definition: InteractionDiagram.cc:87
void setPositionsMatrix(const Matrix &)
Create the trihedrons that define the diagram from the matrix that contains the points that define ea...
Definition: InteractionDiagram.cc:308
double getCapacityFactor(const Pos3d &) const
Return the capacity factor for the internal forces triplet being passed as parameters.
Definition: InteractionDiagram.cc:258
@ingroup MATSCCDiagInt
Definition: InteractionDiagramData.h:41
InteractionDiagram & operator=(const InteractionDiagram &)
Assignment operator.
Definition: InteractionDiagram.cc:75
InteractionDiagram(void)
Default constructor.
Definition: InteractionDiagram.cc:58
@ingroup MATSCCDiagInt
Definition: InteractionDiagram.h:48
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Matrix of floats.
Definition: Matrix.h:108
@ingroup MATSCCDiagInt
Definition: ClosedTriangleMesh.h:48
void classify_trihedron(const Trihedron &tdro)
We classify the trihedron by its quadrant.
Definition: InteractionDiagram.cc:43
GeomObj::list_Pos3d get_intersection(const Pos3d &p) const
Return the intersection of the half-line thats links the origin (0,0,0) and p and the interaction dia...
Definition: InteractionDiagram.cc:177