00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef SoilFootingSection2d_h
00015 #define SoilFootingSection2d_h
00016
00017 #include <SectionForceDeformation.h>
00018 #include <Matrix.h>
00019 #include <Vector.h>
00020 #include <ID.h>
00021
00022 #include <fstream>
00023 #include <iostream>
00024
00025 using namespace std;
00026
00027 class Channel;
00028 class FEM_ObjectBroker;
00029 class Information;
00030
00031 class SoilFootingSection2d: public SectionForceDeformation
00032 {
00033 public:
00034
00035
00036 SoilFootingSection2d (int tag, double fs, double vult, double l, double kv,
00037 double kh, double rv, double deltaL);
00038 SoilFootingSection2d (void);
00039 ~SoilFootingSection2d (void);
00040
00041
00042 virtual int commitState (void);
00043 virtual int revertToLastCommit (void);
00044 virtual int revertToStart (void);
00045
00046
00047 virtual int setTrialSectionDeformation (const Vector&);
00048 virtual const Vector &getSectionDeformation (void);
00049
00050
00051 const Vector &getStressResultant (void);
00052 const Matrix &getSectionTangent (void);
00053 const Matrix &getSectionFlexibility (void);
00054
00055
00056 const ID &getType (void);
00057 int getOrder (void) const;
00058 virtual SectionForceDeformation *getCopy (void);
00059
00060
00061 int sendSelf (int commitTag, Channel &theChannel);
00062 int recvSelf (int commitTag, Channel &theChannel,
00063 FEM_ObjectBroker &theBroker);
00064
00065 virtual void Print (OPS_Stream &s, int flag =0);
00066
00067 const Matrix& getInitialTangent();
00068
00069
00070
00071 protected:
00072
00073
00074 void initializeInternalVariables (void);
00075 void initializeBoundingSurface (void);
00076 void tempFunction (void);
00077 int applyLoading (Vector);
00078
00079
00080
00081 private:
00082
00083
00084
00085
00086 double FS;
00087 double Vult, qult;
00088 double V;
00089 double L;
00090 double Kv, Kh, Kt;
00091 double M;
00092
00093 double h, hCurr, hPrev, dhCurr, dVtemp;
00094
00095
00096 Vector e, eCommit, deModel;
00097 Vector s, sCommit;
00098 Matrix ks, ksE;
00099 double dTheta, dThetaPrev;
00100 double HPrevCommit, MPrevCommit;
00101
00102
00103
00104 double Rv;
00105 double dL;
00106 double ecc, eccCommit;
00107 double Mult, Melastic, Mmaxpast;
00108
00109 int noNodes;
00110 int incr;
00111 int ini_size;
00112 int c1, c1T, c2, c2T;
00113 int c1Commit, c1TCommit, c2Commit, c2TCommit;
00114
00115
00116 double **foot;
00117 double **soilMin, **soilMax;
00118 double **pressure, **pressMax;
00119 double thetaPlus, thetaMinus, thetaRange, Mlimit;
00120 double thetaPlusPrev, thetaMinusPrev;
00121
00122
00123 double a, b, ccc, d, eee, f;
00124 double A, B;
00125 double Fv, Fh, Fm;
00126 double alpha, beta, pult;
00127 double tolerance;
00128 double soilFree;
00129
00130 static ID code;
00131 int isOver, isdV;
00132 int isElastic;
00133 double dTh, dThP;
00134
00135 };
00136
00137 #endif