XC Open source finite element analysis program
YieldSurface_BC2D.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 // YieldSurfaceBC_2D.h: interface for the HingeForceDeformation class.
28 //
30 
31 #ifndef YIELDSURFACE_BC2D_H
32 #define YIELDSURFACE_BC2D_H
33 
34 #include "material/yieldSurface/yieldSurfaceBC/YieldSurface_BC.h"
35 #include <material/uniaxial/UniaxialMaterial.h>
36 
37 namespace XC {
41  {
42  protected:
43 // UniaxialMaterial *kpMatX, *kpMatY;
44  double xPos, xNeg, yPos, yNeg; // Extent along X and Y
45  double a1, b1, a2, b2, a3, b3, a4, b4; // y = ax +b -> inner quad
46  double offset, increment;
47 // double isotropicRatio; // Ratio of the plastic deformation that
48  // is isotropic
50 // state variables
52 // double translateX, translateY; // Kinematic displacement
53 // double isotropicFactor; // Magnification factor
54 // double sumPlasticDeformX, sumPlasticDeformY;
55 
56 // double translateX_hist, translateY_hist;
57  int status_hist;
58  int state;
59 // double isotropicFactor_hist;
60 // double sumPlasticDeformX_hist, sumPlasticDeformY_hist;
61  double fx_hist, fy_hist, gx_hist, gy_hist;
62  double fx_trial, fy_trial, gx_trial, gy_trial;
63 
64  static Vector v6;
65  static double error;
66  static Vector v2;
67  static Vector g2;
68  static Vector v4;
69  static Vector T2;
70  static Vector F2;
71  public:
72  YieldSurface_BC2D(int tag, int classTag, double xmax, double ymax,YS_Evolution &);
73 
74 
75 
76 // virtual Response *setResponse(const std::vector<std::string> &argv, Information &info);
77 // virtual int getResponse(int responseID, Information &info);
78  virtual void Print(std::ostream &s, int flag =0)=0;
79  virtual int sendSelf(CommParameters &){return -1;}
80  virtual int recvSelf(const CommParameters &){return -1;}
81 
82  virtual void setTransformation(int xDof, int yDof, int xFact, int yFact);
83 
84  virtual void getCommitGradient(Matrix &G);
85  virtual void getTrialGradient(Matrix &G, Vector &force);
86  //virtual const Vector &getGradient(void);
87  //virtual const Vector &getTrialGradient(void);
88 
89  virtual int update(int flag = 0);
90  virtual int getState(int stateInfo);
91  virtual double getTrialDrift(Vector &force);
92  virtual int getTrialForceLocation(Vector &force);
93  virtual int getCommitForceLocation();
94  //virtual const Vector &getForce(void);
95  //virtual const Vector &getTrialForce(void);
96 
97  //virtual int setTrialForce(Vector &force);
98 
99  // double getIsotropicFactor(void){ return hModel->getIsotropicFactor();}
100 
101  virtual void addPlasticStiffness(Matrix &K);
102 // virtual void checkState(Vector &trialforce, bool &plastify, bool &shootsthrough);
103 
104  virtual double setToSurface(Vector &force, int algoType, int colorFlag = 0);
105  virtual int modifySurface(double magPlasticDefo, Vector &Fsurface, Matrix &G, int flag=0);
106  //virtual int trialModifySurface(double magPlasticDefo);
107  //virtual double getElasticForce(Vector &force, Vector &elasticForce);
108 
109  virtual int commitState(Vector &force);
110  virtual int revertToLastCommit(void);
111 
112  virtual YieldSurface_BC *getCopy(void) = 0;
113 //protected:
114  virtual Vector &translationTo(Vector &f_new, Vector &f_dir);
115  virtual double getDrift(double x, double y);
116 // For the following 2 methods, x, y already non-dimensionalized
117  virtual void getGradient(double &gx, double &gy, double x, double y)=0;
118  virtual double getSurfaceDrift(double x, double y)=0;
119  virtual void setExtent()=0;
120  virtual const Vector &getExtent(void);
121 
122  virtual int forceLocation(double drift);
123  virtual double interpolate(double xi, double yi, double xj, double yj);
124  virtual void customizeInterpolate(double &xi, double &yi, double &xj, double &yj);
125 
126  double interpolateClose(double xi, double yi, double xj, double yj);
127 // Dimensionalizing taken care at Element System <--> Local System level
128 // void toDeformedCoord(double &x, double &y);
129 // void toOriginalCoord(double &x, double &y);
130  };
131 } // end of XC namespace
132 
133 #endif
Definition: Vector.h:82
virtual void Print(std::ostream &s, int flag=0)=0
Imprime el objeto.
Definition: Matrix.h:82
Yield surface.
Definition: YieldSurface_BC.h:46
Yield surface evolution.
Definition: YS_Evolution.h:46
Communication parameters between processes.
Definition: CommParameters.h:65
BC 2D yield surface.
Definition: YieldSurface_BC2D.h:40
================================================================================
Definition: ContinuaReprComponent.h:34