00001
00002
00004
00005 #if !defined BKSTRESSLIMSURFACE2D_H
00006 #define BKSTRESSLIMSURFACE2D_H
00007
00008 #include "YS_Evolution2D.h"
00009 class YieldSurface_BC;
00010
00011 class BkStressLimSurface2D : public YS_Evolution2D
00012 {
00013 public:
00014 BkStressLimSurface2D(int tag, int classTag, double min_iso_factor,
00015 double iso_ratio, double kin_ratio,
00016 YieldSurface_BC &lim_surface,
00017 PlasticHardeningMaterial &kinX,
00018 PlasticHardeningMaterial &kinY,
00019 PlasticHardeningMaterial &isoXPos,
00020 PlasticHardeningMaterial &isoXNeg,
00021 PlasticHardeningMaterial &isoYPos,
00022 PlasticHardeningMaterial &isoYNeg,
00023 int restype, double res_Fact, double app_Fact, double dir
00024 );
00025
00026 virtual ~BkStressLimSurface2D();
00027 virtual int commitState();
00028 virtual int revertToLastCommit(void);
00029
00030 virtual int displaySelf(Renderer &theViewer, int displayMode, float fact);
00031 virtual void Print(OPS_Stream &s, int flag =0);
00032 void setResidual(double res=1.0);
00033 virtual YS_Evolution *getCopy(void)=0;
00034 virtual const Vector &getEquiPlasticStiffness(void);
00035 double getTrialPlasticStrains(int dof);
00036 double getCommitPlasticStrains(int dof);
00037
00038 protected:
00039 virtual void setTrialPlasticStrains(double ep, const Vector &f, const Vector &g);
00040 virtual double getIsoPlasticStiffness(int dir);
00041 virtual double getKinPlasticStiffness(int dir);
00042 virtual Vector& getEvolDirection(Vector &f_new);
00043
00044 protected:
00045
00046 PlasticHardeningMaterial *kinMatX, *kinMatY;
00047 PlasticHardeningMaterial *isoMatXPos, *isoMatXNeg;
00048 PlasticHardeningMaterial *isoMatYPos, *isoMatYNeg;
00049
00050 YieldSurface_BC *limSurface;
00051 bool defPosX, defPosY;
00052 bool resHardening, resApproach;
00053 int resAlgo;
00054 double resFactor, appFactor;
00055 double direction, direction_orig;
00056 };
00057
00058 #endif