xc
DeformationPlane.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 //DeformationPlane
29 
30 #ifndef DEFORMATION_PLANE_H
31 #define DEFORMATION_PLANE_H
32 
33 #include <iostream>
34 #include "utility/geom/d2/Plane.h"
35 #include "utility/actor/actor/MovableObject.h"
36 
37 class Pos2d;
38 class Pos3d;
39 class Line2d;
40 class HalfPlane2d;
41 
42 namespace XC {
43 
44 class Vector;
45 class ResponseId;
46 
50 //
52 //
54 class DeformationPlane: public Plane, public MovableObject
55  {
56  protected:
57  bool check_positions(const Pos2d &,const Pos2d &, const Pos2d &);
58  bool check_positions(const Pos3d &,const Pos3d &, const Pos3d &);
59  int sendData(Communicator &);
60  int recvData(const Communicator &);
61  friend class SectionForceDeformation;
62  friend class FiberPtrDeque;
63  friend class FiberSectionBase; //Erase this line.
64  public:
65  DeformationPlane( const Pos3d &p1,const Pos3d &p2, const Pos3d &p3);
66  explicit DeformationPlane(const Plane &);
67  DeformationPlane( const Pos2d &yz1, const double &e_1, //Strains at three fiber sections.
68  const Pos2d &yz2, const double &e_2,
69  const Pos2d &yz3, const double &e_3);
70  explicit DeformationPlane(const double &eps= 0.0);
71  DeformationPlane(const Vector &);
72 
73  double Strain(const Pos2d &p) const;
74  const Vector &getDeformation(void) const;
75  void setDeformation(const Vector &);
76  const Vector &getDeformation(const size_t &,const ResponseId &) const;
77  boost::python::list getGeneralizedStrainsPy(const boost::python::list &) const;
78 
79  void ConstantStrain(const double &);
80 
81  Line2d getNeutralAxis(void) const;
88 
89 
90  int sendSelf(Communicator &);
91  int recvSelf(const Communicator &);
92  };
93 
94 } // end of XC namespace
95 
96 #endif
Base class for force deformation section models.
Definition: SectionForceDeformation.h:88
HalfPlane2d getTensionedHalfPlane(void) const
Returns the tensioned half-plane.
Definition: DeformationPlane.cc:266
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: DeformationPlane.cc:325
Float vector abstraction.
Definition: Vector.h:94
Base class for fiber sections.
Definition: FiberSectionBase.h:58
HalfPlane2d getCompressedHalfPlane(void) const
Returns the compressed half plane.
Definition: DeformationPlane.cc:314
Communication parameters between processes.
Definition: Communicator.h:66
Posición en dos dimensiones.
Definition: Pos2d.h:41
Object that can move between processes.
Definition: MovableObject.h:100
Line in a two-dimensional space.
Definition: Line2d.h:61
void setDeformation(const Vector &)
Set the generalized strains vector.
Definition: DeformationPlane.cc:132
Plane in a three-dimensional space.
Definition: Plane.h:49
int recvData(const Communicator &)
Receives object members through the communicator argument.
Definition: DeformationPlane.cc:336
Deformation plane for a cross-section.
Definition: DeformationPlane.h:54
Fiber pointers container.
Definition: FiberPtrDeque.h:68
Stiffness material contribution response identifiers.
Definition: ResponseId.h:61
double Strain(const Pos2d &p) const
Return the strain of the fiber at the position being passed as parameter.
Definition: DeformationPlane.cc:117
const Vector & getDeformation(void) const
Returns the generalized strains vector (epsilon, zCurvature, yCurvature).
Definition: DeformationPlane.cc:121
Posición en tres dimensiones.
Definition: Pos3d.h:44
int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: DeformationPlane.cc:362
Line2d getNeutralAxis(void) const
Return the neutral axis.
Definition: DeformationPlane.cc:180
Half plane in a two-dimensional space.
Definition: HalfPlane2d.h:38
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: DeformationPlane.cc:347
Pos2d getPointOnCompressedHalfPlane(void) const
Returns (if possible) a point in the compressed zone.
Definition: DeformationPlane.cc:219
Pos2d getPointOnTensionedHalfPlane(void) const
Returns (if possible) a point in the tensioned side of the cross-section.
Definition: DeformationPlane.cc:198