XC Open source finite element analysis program
InelasticYS2DGNL.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 #ifndef INELASTICYS2DGNL_H
28 #define INELASTICYS2DGNL_H
29 
30 #include <domain/mesh/element/truss_beam_column/updatedLagrangianBeamColumn/UpdatedLagrangianBeam2D.h>
31 #include <material/yieldSurface/yieldSurfaceBC/YieldSurface_BC.h>
32 #include <utility/matrix/Vector.h>
33 
34 #define DISPLAY_YS 2745
35 
36 namespace XC {
37 
39 //
44 {
45  protected:
46  static Vector elasticForce;
47  static Vector F1, F2, Fs;
48 
49 
50  YieldSurface_BC *ys1, *ys2;
51 
52  mutable bool end1Plastify, end2Plastify;
53  bool end1Plastify_hist, end2Plastify_hist;
54 
55  Matrix end1G, end2G;
56  mutable Matrix Stiff;
57  mutable int forceRecoveryAlgo;
58  int forceRecoveryAlgo_orig;
59  bool end1Damage, end2Damage;
60  mutable bool split_step;
61 
62  int debug, fdebug, pdebug, ydebug, statusDebug;
63  mutable bool init;
64  bool updateKt;
65 
66 
67 
68  const static int INSIDE, OUTSIDE, WITHIN;
69 
70  static double storage;
71  public:
72  InelasticYS2DGNL(int tag,
73  int Nd1, int Nd2,
74  YieldSurface_BC *ysEnd1, YieldSurface_BC *ysEnd2,
75  int rf_algo = -1, // updated
76  bool islinear = false, double rho = 0.0);
77 
79 
80  virtual const Vector &getResistingForce(void) const;
81  virtual const Matrix &getTangentStiff(void) const;
82  virtual int commitState(void);
83  virtual int update(void) const;
84  void Print(std::ostream &s, int flag =0);
85  int sendSelf(CommParameters &);
86  int recvSelf(const CommParameters &);
87 
88  virtual Response *setResponse(const std::vector<std::string> &argv,Information &eleInformation);
89  virtual int getResponse(int responseID, Information &eleInformation);
90 
91  protected:
92  virtual void getLocalStiff(Matrix &K) const=0;
93  virtual void getLocalMass(Matrix &M) const;
94 
95 protected:
96  int computeTrueEleForce(Vector &trial_force) const;
97  void checkSpecialCases(void) const;
98 
99 private:
100  void forceBalance(Vector &force, int algo) const;
101  void plastifyOneEnd(int end, YieldSurface_BC *ys, Vector &trial_force, Vector &incrDisp, Matrix &K, Vector &total_force, int algo) const;
102 
103  void splitStep(int end_shoot, YieldSurface_BC *ys_shoots, YieldSurface_BC *ys_drifts,
104  Vector &trial_force, Matrix &K, Vector &total_force) const;
105 
106  void driftOneEnd(YieldSurface_BC *ys, Vector &trial_force, Vector &surface_force, Matrix &K, Vector &total_force) const;
107  void driftBothEnds(Vector &trial_force, Vector &surface_force,Matrix &K, Vector &total_force) const;
108  void plastifyBothEnds(Vector &trial_force, Vector &incrDisp,Matrix &K, Vector &total_force) const;
109  void checkEndStatus(bool &end1drifts, bool &end2drifts, Vector &trialForce) const;
110  int plasticPredictor(Vector &trialForce) const;
111  int elasticCorrector(Vector &trialForce, int algo);
112 };
113 } // end of XC namespace
114 
115 #endif
Inelastic Element - concentrated hinge model, Fi - Fj interaction at each ends using yield surfaces *...
Definition: InelasticYS2DGNL.h:43
Definition: Vector.h:82
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: InelasticYS2DGNL.cpp:1609
Information about an element.
Definition: Information.h:80
Lagrangian 2D beam element.
Definition: UpdatedLagrangianBeam2D.h:75
Definition: Matrix.h:82
Yield surface.
Definition: YieldSurface_BC.h:46
virtual int commitState(void)
Consuma el estado of the element.
Definition: InelasticYS2DGNL.cpp:1504
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Definition: Response.h:71