Rev 4143 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4143 | Rev 4158 | ||
|---|---|---|---|
| Line 1... | Line -... | ||
| 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
|
- | |
| - | 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
|
|