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 #ifndef SeriesMaterial_h
00026 #define SeriesMaterial_h
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include <UniaxialMaterial.h>
00036
00037 class SeriesMaterial : public UniaxialMaterial
00038 {
00039 public:
00040 SeriesMaterial(int tag,
00041 int numMaterial,
00042 UniaxialMaterial **theMaterials,
00043 int maxIter = 1, double tol = 1.0e-10);
00044 SeriesMaterial();
00045 ~SeriesMaterial();
00046
00047 const char *getClassType(void) const {return "SeriesMaterial";};
00048
00049 int setTrialStrain(double strain, double strainRate = 0.0);
00050 double getStrain(void);
00051 double getStress(void);
00052 double getTangent(void);
00053 double getInitialTangent(void);
00054
00055 int commitState(void);
00056 int revertToLastCommit(void);
00057 int revertToStart(void);
00058
00059 UniaxialMaterial *getCopy(void);
00060
00061 int sendSelf(int commitTag, Channel &theChannel);
00062 int recvSelf(int commitTag, Channel &theChannel,
00063 FEM_ObjectBroker &theBroker);
00064
00065 void Print(OPS_Stream &s, int flag =0);
00066
00067 Response *setResponse(const char **argv, int argc,
00068 Information &matInformation,
00069 OPS_Stream &theOutputStream);
00070
00071 int getResponse(int responseID, Information &matInformation);
00072
00073 protected:
00074
00075 private:
00076 double Tstrain;
00077 double Cstrain;
00078 double Tstress;
00079 double Cstress;
00080 double Ttangent;
00081 double Ctangent;
00082
00083 int maxIterations;
00084 double tolerance;
00085
00086 double *stress;
00087 double *flex;
00088 double *strain;
00089
00090 bool initialFlag;
00091
00092 int numMaterials;
00093 UniaxialMaterial **theModels;
00094 };
00095
00096
00097 #endif
00098