00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00035
00036
00037
00039
00040 #ifndef BILINEAR_H
00041 #define BILINEAR_H
00042
00043 #include <UniaxialMaterial.h>
00044 #include <Vector.h>
00045 #include <stdio.h>
00046 #include <DamageModel.h>
00047 #include <MaterialResponse.h>
00048
00049 class Bilinear : public UniaxialMaterial
00050 {
00051 public:
00052 Bilinear();
00053 Bilinear(int tag, Vector inputParam ,DamageModel *strength,DamageModel *stiffness,DamageModel *capping);
00054 virtual ~Bilinear();
00055
00056 const char *getClassType(void) const {return "Bilinear";};
00057
00058 int setTrialStrain(double d, double strainRate = 0.0);
00059 double getStrain(void);
00060
00061 double getStress(void);
00062 double getTangent(void);
00063 double getInitialTangent(void);
00064 int commitState(void);
00065 int revertToLastCommit(void);
00066 int revertToStart(void);
00067
00068
00069 UniaxialMaterial *getCopy(void);
00070
00071 int sendSelf(int commitTag, Channel &theChannel);
00072 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00073
00074 Response* setResponse(const char **argv, int argc, Information &matInfo);
00075 int getResponse(int responseID, Information &matInfo);
00076
00077 void Print(OPS_Stream &s, int flag =0);
00078 int setParameter(const char **argv, int argc, Parameter ¶m);
00079 int updateParameter (int parameterID, Information &info);
00080 int activateParameter (int parameterID);
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 protected:
00095 void envelPosCap( double ekelstk, double fy, double ekhard, double dcap,
00096 double ekcap, double fRes, double *fuPos, double d, double *f, double *ek );
00097 void envelNegCap( double ekelstk, double fy, double ekhard, double dcap,
00098 double ekcap, double fRes, double *fuNeg, double d, double *f, double *ek );
00099 void recordInfo(int cond =0);
00100
00101 private:
00102
00103 double elstk, fyieldPos ,fyieldNeg, alfa;
00104 double alfaCap, capDispPos, capDispNeg, Resfac;
00105 int flagCapenv;
00106 DamageModel *StrDamage;
00107 DamageModel *StfDamage;
00108 DamageModel *CapDamage;
00109
00110
00111 double hsTrial[17], hsCommit[17], hsLastCommit[17];
00112
00113 FILE *OutputFile;
00114
00115
00116 int parameterID;
00117 Matrix *SHVs;
00118 };
00119
00120 #endif