xc
InteractionDiagram.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 //InteractionDiagram.h
29 
30 #ifndef INTERACTION_DIAGRAM_H
31 #define INTERACTION_DIAGRAM_H
32 
33 #include "utility/geom/d2/Trihedron.h"
34 #include <set>
35 #include <deque>
36 #include "ClosedTriangleMesh.h"
37 
38 class Triang3dMesh;
39 
40 namespace XC {
41 
42 class Vector;
43 class FiberSectionBase;
44 class InteractionDiagramData;
45 
47 //
50  {
51  protected:
52  typedef std::set<const Trihedron *> set_ptr_trihedrons;
53 
54 
55  set_ptr_trihedrons quadrant_trihedrons[8];
56 
57  void classify_trihedron(const Trihedron &tdro);
58  void classify_trihedrons(void);
59  void setPositionsMatrix(const Matrix &);
61  public:
62  InteractionDiagram(void);
63  InteractionDiagram(const Pos3d &org,const Triang3dMesh &mll);
66  virtual InteractionDiagram *getCopy(void) const;
67 
68  const Trihedron *findTrihedronPtr(const Pos3d &p) const;
69  Pos3d getIntersection(const Pos3d &) const;
70  double getCapacityFactor(const Pos3d &) const;
72 
73  void Print(std::ostream &os) const;
74  };
75 
76 InteractionDiagram calc_interaction_diagram(const FiberSectionBase &,const InteractionDiagramData &);
77 
78 } // end of XC namespace
79 
80 #endif
Float vector abstraction.
Definition: Vector.h:94
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:58
Base class for position lists.
Definition: PolyPos.h:35
void classify_trihedrons(void)
We classify the trihedrons by its quadrants.
Definition: InteractionDiagram.cc:50
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
virtual InteractionDiagram * getCopy(void) const
Virtual constructor.
Definition: InteractionDiagram.cc:83
@ingroup MATSCCDiagInt
Definition: InteractionDiagramData.h:42
InteractionDiagram & operator=(const InteractionDiagram &)
Assignment operator.
Definition: InteractionDiagram.cc:75
void Print(std::ostream &os) const
Print stuff.
Definition: InteractionDiagram.cc:302
InteractionDiagram(void)
Default constructor.
Definition: InteractionDiagram.cc:58
@ingroup MATSCCDiagInt
Definition: InteractionDiagram.h:49
Posición en tres dimensiones.
Definition: Pos3d.h:44
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
A geometric figure composed of three planes meeting at a single vertex.
Definition: Trihedron.h:37
3D Triange mesh.
Definition: Triang3dMesh.h:37
Matrix of floats.
Definition: Matrix.h:111
Closed triangle mesh used to represent the interaction diagram (N,Mx,My) of a section.
Definition: ClosedTriangleMesh.h:50
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 that links the origin (0,0,0) and p and the interaction diag...
Definition: InteractionDiagram.cc:177