xc
YieldSurfaceSection2d.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 // @ rkaul@stanford.edu
29 // @ ggd@stanford.edu
30 
31 #ifndef YieldSurfaceSection2d_h
32 #define YieldSurfaceSection2d_h
33 
34 #include "material/section/PrismaticBarCrossSection.h"
35 #include "utility/matrix/Matrix.h"
36 #include "utility/matrix/Vector.h"
37 
38 namespace XC {
39 class Channel;
40 class FEM_ObjectBroker;
41 class Information;
42 class YieldSurface_BC;
43 
45 //
47 //
52  {
53  protected:
54  virtual void getSectionStiffness(Matrix &Ks)=0;
55  const bool use_Kr_orig;
56  YieldSurface_BC *ys;
59  Vector eCommit;
60  Vector s;
61  Vector sCommit;
62  mutable Matrix ks;
63 
64  private:
65  // int algo;
66  bool use_Kr, split_step;
67  static Vector dele;
68  static Vector surfaceForce;
69  static Matrix G;
70  static Matrix Ktp;
71  public:
72  YieldSurfaceSection2d( int tag, int classtag,YieldSurface_BC *ptrys, bool use_kr=true);
73  YieldSurfaceSection2d(void);
74  ~YieldSurfaceSection2d(void);
75 
76  virtual int commitState(void);
77  virtual int revertToLastCommit(void);
78  virtual int revertToStart(void);
79 
80  virtual int setInitialSectionDeformation(const Vector&);
81  virtual int setTrialSectionDeformation(const Vector&);
83  virtual const Vector &getInitialSectionDeformation(void) const;
84  virtual const Vector &getSectionDeformation(void) const;
85 
86  const Vector &getStressResultant(void) const;
87  const Matrix &getSectionTangent(void) const;
88  const Matrix &getSectionFlexibility(void) const;
89 
90  const ResponseId &getResponseType(void) const;
91  int getOrder(void) const;
92 
93  int sendSelf(Communicator &);
94  int recvSelf(const Communicator &);
95 
96  virtual void Print(std::ostream &s, int flag =0) const;
97  virtual SectionForceDeformation *getCopy(void) const=0;
98  };
99 } // end of XC namespace
100 
101 #endif
Base class for force deformation section models.
Definition: SectionForceDeformation.h:88
const Vector & getStressResultant(void) const
Return the section resisting forces, , at the current trial state.
Definition: YieldSurfaceSection2d.cpp:219
const Matrix & getSectionTangent(void) const
Return the section tangent stiffness matrix, , at the current trial state.
Definition: YieldSurfaceSection2d.cpp:222
Float vector abstraction.
Definition: Vector.h:94
virtual void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: YieldSurfaceSection2d.cpp:244
Communication parameters between processes.
Definition: Communicator.h:66
Base class for beam-column cross sections.
Definition: PrismaticBarCrossSection.h:50
int recvSelf(const Communicator &)
Receive the object.
Definition: YieldSurfaceSection2d.cpp:241
virtual const Vector & getSectionDeformation(void) const
Returns generalized trial deformation.
Definition: YieldSurfaceSection2d.cpp:212
int getOrder(void) const
Return the number of response quantities provided by the section.
Definition: YieldSurfaceSection2d.cpp:235
int sendSelf(Communicator &)
Send the object.
Definition: YieldSurfaceSection2d.cpp:238
void zeroInitialSectionDeformation(void)
Zeroes initial strains.
Definition: YieldSurfaceSection2d.cpp:205
Vector eTrial
section trial deformations
Definition: YieldSurfaceSection2d.h:57
Vector eInic
section initial deformations.
Definition: YieldSurfaceSection2d.h:58
Stiffness material contribution response identifiers.
Definition: ResponseId.h:61
virtual SectionForceDeformation * getCopy(void) const =0
Virtual constructor.
virtual int setTrialSectionDeformation(const Vector &)
Set the value of the trial section deformation vector, to be {def}.
Definition: YieldSurfaceSection2d.cpp:103
virtual int commitState(void)
Commit the state of the material.
Definition: YieldSurfaceSection2d.cpp:72
Base class for cross sections with yield surface on a bi-dimensional space (three DOFs for each secti...
Definition: YieldSurfaceSection2d.h:51
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
const ResponseId & getResponseType(void) const
Return the ordering and type of response quantities returned by this object.
Definition: YieldSurfaceSection2d.cpp:232
const Matrix & getSectionFlexibility(void) const
Returns the tangent flexibility matrix of the section.
Definition: YieldSurfaceSection2d.cpp:225
YieldSurface_BC is an abstract class and provides the interface between the specific yield surface de...
Definition: YieldSurface_BC.h:53