xc
PrismaticBarCrossSectionsVector.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 //PrismaticBarCrossSectionsVector.h
29 
30 #ifndef PrismaticBarCrossSectionsVector_h
31 #define PrismaticBarCrossSectionsVector_h
32 
33 #include "utility/kernel/CommandEntity.h"
34 #include "utility/actor/actor/MovableObject.h"
35 #include <vector>
36 
37 namespace XC {
38 
39 class PrismaticBarCrossSection;
40 class Vector;
41 class Matrix;
42 class Material;
43 class BeamStrainLoad;
44 
46 //
49 class PrismaticBarCrossSectionsVector: public CommandEntity, public std::vector<PrismaticBarCrossSection *>, public MovableObject
50  {
51  protected:
52  void clear_sections(void);
53  void clearAll(void);
55  int sendData(Communicator &);
56  int recvData(const Communicator &);
57 
58  public:
59  typedef std::vector<PrismaticBarCrossSection *> mat_vector;
60  typedef mat_vector::iterator iterator;
61  typedef mat_vector::reference reference;
62  typedef mat_vector::const_reference const_reference;
63 
64  PrismaticBarCrossSectionsVector(const size_t &sz);
65  PrismaticBarCrossSectionsVector(const size_t &sz,const Material *m);
66  PrismaticBarCrossSectionsVector(const size_t &sz,const PrismaticBarCrossSection *matModel);
69 
70  bool isTorsion(void) const;
71 
72  void setSection(const PrismaticBarCrossSection *nueva_secc);
73  void setSectionCopy(size_t i,PrismaticBarCrossSection *nueva_secc);
74  void setupSection(const Material *sec);
75  bool setSections(const std::vector<PrismaticBarCrossSection *> &sectionPtrs);
77  void setInitialSectionDeformations(const std::vector<Vector> &vs);
78  void incrementInitialSectionDeformations(const BeamStrainLoad &,const double &,const Matrix &, const double &L);
79  void setTrialSectionDeformations(const std::vector<Vector> &vs);
80 
81  int commitState(void);
82  int revertToLastCommit(void);
83  int revertToStart(void);
84 
85  int sendSelf(Communicator &);
86  int recvSelf(const Communicator &);
87 
88  };
89 
90 } // end of XC namespace
91 
92 
93 #endif
Vector of pointers to PrismaticBarCrossSectiones.
Definition: PrismaticBarCrossSectionsVector.h:49
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: PrismaticBarCrossSectionsVector.cc:316
Communication parameters between processes.
Definition: Communicator.h:66
int recvData(const Communicator &)
Receives object through the communicator argument.
Definition: PrismaticBarCrossSectionsVector.cc:330
Object that can move between processes.
Definition: MovableObject.h:100
int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: PrismaticBarCrossSectionsVector.cc:362
Base class for beam-column cross sections.
Definition: PrismaticBarCrossSection.h:50
Base class for materials.
Definition: Material.h:93
void setTrialSectionDeformations(const std::vector< Vector > &vs)
Set trial strains.
Definition: PrismaticBarCrossSectionsVector.cc:306
int commitState(void)
Commits sections state.
Definition: PrismaticBarCrossSectionsVector.cc:177
void zeroInitialSectionDeformations(void)
Zeroes initial strains.
Definition: PrismaticBarCrossSectionsVector.cc:262
PrismaticBarCrossSectionsVector & operator=(const PrismaticBarCrossSectionsVector &)
Assignment operator.
Definition: PrismaticBarCrossSectionsVector.cc:110
void incrementInitialSectionDeformations(const BeamStrainLoad &, const double &, const Matrix &, const double &L)
Set initial strains interpolating between e1 and e2.
Definition: PrismaticBarCrossSectionsVector.cc:283
Objet that can execute python scripts.
Definition: CommandEntity.h:40
void setInitialSectionDeformations(const std::vector< Vector > &vs)
Set initial strains.
Definition: PrismaticBarCrossSectionsVector.cc:270
Load due to restricted material expansion or contraction on beam elements.
Definition: BeamStrainLoad.h:45
int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: PrismaticBarCrossSectionsVector.cc:348
bool isTorsion(void) const
Returns true if the sections have torsional stiffness.
Definition: PrismaticBarCrossSectionsVector.cc:208
bool setSections(const std::vector< PrismaticBarCrossSection *> &sectionPtrs)
Set the sections of the vector.
Definition: PrismaticBarCrossSectionsVector.cc:225
int revertToLastCommit(void)
Returns the sections to its last committed state.
Definition: PrismaticBarCrossSectionsVector.cc:187
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
int revertToStart(void)
Returns the sections to its initial state.
Definition: PrismaticBarCrossSectionsVector.cc:198
PrismaticBarCrossSectionsVector(const size_t &sz)
Constructor.
Definition: PrismaticBarCrossSectionsVector.cc:65