Rev 4143 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 4158 | fmk | 1 | #ifndef RAFourSteelPCPlaneStress_h |
| 2 | #define RAFourSteelPCPlaneStress_h |
||
| 3 | |||
| 4 | // File: RAFourSteelPCPlaneStress.h |
||
| 5 | // |
||
| 6 | // Written: ALaskar |
||
| 7 | // Created: 2007.09 |
||
| 8 | // |
||
| 9 | // Description: This file contains the class definition for |
||
| 10 | // RAFourSteelPCPlaneStress material. |
||
| 11 | // RC material will contain steel in four directions |
||
| 12 | // For Detailed explanation of the model, please refer to the book |
||
| 13 | // entitled "Unified Theory of Concrete Structures," |
||
| 14 | // by Thomas T.C. Hsu and Y.L. Mo, John Wiley & Sons, April 2010. |
||
| 15 | |||
| 16 | |||
| 17 | #include <NDMaterial.h> |
||
| 18 | #include <UniaxialMaterial.h> |
||
| 19 | |||
| 20 | #include <Matrix.h> |
||
| 21 | #include <Vector.h> |
||
| 22 | #include <ID.h> |
||
| 23 | #include <Tensor.h> |
||
| 24 | |||
| 25 | class RAFourSteelPCPlaneStress : public NDMaterial |
||
| 26 | { |
||
| 27 | public: |
||
| 28 | RAFourSteelPCPlaneStress ( int tag, |
||
| 29 | double RHO, |
||
| 30 | UniaxialMaterial *t1, |
||
| 31 | UniaxialMaterial *t2, |
||
| 32 | UniaxialMaterial *s1, |
||
| 33 | UniaxialMaterial *s2, |
||
| 34 | UniaxialMaterial *c1, |
||
| 35 | UniaxialMaterial *c2, |
||
| 36 | double ANGLE1, |
||
| 37 | double ANGLE2, |
||
| 38 | double ANGLE3, |
||
| 39 | double ANGLE4, |
||
| 40 | double ROU1, |
||
| 41 | double ROU2, |
||
| 42 | double ROU3, |
||
| 43 | double ROU4, |
||
| 44 | double PSTRAIN1, |
||
| 45 | double PSTRAIN2, |
||
| 46 | double FPC, |
||
| 47 | double FY1, |
||
| 48 | double FY2, |
||
| 49 | double E, |
||
| 50 | double EPSC0); |
||
| 51 | RAFourSteelPCPlaneStress(); |
||
| 52 | ~RAFourSteelPCPlaneStress(); |
||
| 53 | |||
| 54 | double getRho(void); |
||
| 55 | |||
| 56 | int setTrialStrain(const Vector &v); // the one is used |
||
| 57 | int setTrialStrain(const Vector &v, const Vector &r); |
||
| 58 | int setTrialStrainIncr(const Vector &v); |
||
| 59 | int setTrialStrainIncr(const Vector &v, const Vector &r); |
||
| 60 | const Matrix &getTangent(void); |
||
| 61 | const Matrix &getInitialTangent(void) {return this->getTangent();}; |
||
| 62 | |||
| 63 | const Vector &getStress(void); |
||
| 64 | const Vector &getStrain(void); |
||
| 65 | |||
| 66 | const Vector &getCommittedStress(void); |
||
| 67 | const Vector &getCommittedStrain(void); |
||
| 68 | |||
| 69 | int commitState(void); |
||
| 70 | int revertToLastCommit(void); |
||
| 71 | int revertToStart(void); |
||
| 72 | |||
| 73 | NDMaterial *getCopy(void); |
||
| 74 | NDMaterial *getCopy(const char *type); |
||
| 75 | |||
| 76 | void Print(OPS_Stream &s, int flag = 0); |
||
| 77 | int sendSelf(int commitTag, Channel &theChannel); |
||
| 78 | int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker); |
||
| 79 | |||
| 80 | const char *getType(void) const { return "PlaneStress"; }; |
||
| 81 | int getOrder(void) const { return 3;}; |
||
| 82 | |||
| 83 | protected: |
||
| 84 | |||
| 85 | private: |
||
| 86 | |||
| 87 | double rho; |
||
| 88 | UniaxialMaterial **theMaterial; // pointer of the materials |
||
| 89 | Response **theResponses; |
||
| 90 | |||
| 91 | double angle1; // angel of the first steel layer to x coordinate |
||
| 92 | double angle2; // angel of the second steel layer to x coordinate |
||
| 93 | double angle3; // angel of the third steel layer to x coordinate |
||
| 94 | double angle4; // angel of the forth steel layer to x coordinate |
||
| 95 | |||
| 96 | double rou1; // steel ratio of the first steel layer |
||
| 97 | double rou2; // steel ratio of the second steel layer |
||
| 98 | double rou3; // steel ratio of the third steel layer |
||
| 99 | double rou4; // steel ratio of the forth steel layer |
||
| 100 | |||
| 101 | double pstrain1; // prestressing strain in first tendon layer |
||
| 102 | double pstrain2; // prestressing strain in second tendon layer |
||
| 103 | |||
| 104 | double fpc; // compressive strength of the concrete |
||
| 105 | double fy1; // yield stress of the bare tendons |
||
| 106 | double fy2; // yield stress of the bare steel bars |
||
| 107 | double E0; // young's modulus of the steel |
||
| 108 | double epsc0; // compressive strain of the concrete |
||
| 109 | |||
| 110 | double Tstress[3]; // Trial stresses |
||
| 111 | double lastStress[3]; // Last committed stresses, added for x, k |
||
| 112 | |||
| 113 | int steelStatus; // check if steel yield, 0 not yield, 1 yield |
||
| 114 | int dirStatus; // check if principle direction has exceed 90 degree, 1 yes, 0 no |
||
| 115 | |||
| 116 | double citaStrain; // principle strain direction |
||
| 117 | double citaStress; // principle stress direction |
||
| 118 | double miu12; // Hsu/Zhu ratio |
||
| 119 | double miu21; // Hsu/Zhu ratio |
||
| 120 | double G12; |
||
| 121 | |||
| 122 | |||
| 123 | // for damgage factor D=1-0.4*epslonC'/epslon0; epslon0=0.002 |
||
| 124 | |||
| 125 | // Trial values |
||
| 126 | int TOneReverseStatus; // Trial reverse status for concrete One, 1 reverse, 0 no |
||
| 127 | double TOneNowMaxComStrain; |
||
| 128 | double TOneLastMaxComStrain; |
||
| 129 | |||
| 130 | int TTwoReverseStatus; // Trial reverse status for concrete Two, 1 reverse, 0 no |
||
| 131 | double TTwoNowMaxComStrain; |
||
| 132 | double TTwoLastMaxComStrain; |
||
| 133 | |||
| 134 | // Converged values |
||
| 135 | int COneReverseStatus; // Converged reverse status for concrete One, 1 reverse, 0 no |
||
| 136 | double COneNowMaxComStrain; |
||
| 137 | double COneLastMaxComStrain; |
||
| 138 | |||
| 139 | int CTwoReverseStatus; // Converged reverse status for concrete Two, 1 reverse, 0 no |
||
| 140 | double CTwoNowMaxComStrain; |
||
| 141 | double CTwoLastMaxComStrain; |
||
| 142 | |||
| 143 | double DDOne; // damage factor for concrete One |
||
| 144 | double DDTwo; // damage factor for concrete Two |
||
| 145 | |||
| 146 | double tt1; |
||
| 147 | double tt2; |
||
| 148 | double xxx; |
||
| 149 | double kkk; |
||
| 150 | |||
| 151 | double beta1; |
||
| 152 | double beta2; |
||
| 153 | |||
| 154 | Vector strain_vec; |
||
| 155 | Vector stress_vec; |
||
| 156 | Matrix tangent_matrix; |
||
| 157 | |||
| 158 | int determineTrialStress(void); |
||
| 159 | |||
| 160 | }; |
||
| 161 | |||
| 162 | #endif |