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 #ifndef FiberSection2d_h
00034 #define FiberSection2d_h
00035
00036 #include <SectionForceDeformation.h>
00037 #include <Vector.h>
00038 #include <Matrix.h>
00039
00040 class UniaxialMaterial;
00041 class Fiber;
00042 class Response;
00043 class SectionIntegration;
00044
00045 class FiberSection2d : public SectionForceDeformation
00046 {
00047 public:
00048 FiberSection2d();
00049 FiberSection2d(int tag, int numFibers, Fiber **fibers);
00050 FiberSection2d(int tag, int numFibers, UniaxialMaterial **mats,
00051 SectionIntegration &si);
00052 ~FiberSection2d();
00053
00054 const char *getClassType(void) const {return "FiberSection2d";};
00055
00056 int setTrialSectionDeformation(const Vector &deforms);
00057 const Vector &getSectionDeformation(void);
00058
00059 const Vector &getStressResultant(void);
00060 const Matrix &getSectionTangent(void);
00061 const Matrix &getInitialTangent(void);
00062
00063 int commitState(void);
00064 int revertToLastCommit(void);
00065 int revertToStart(void);
00066
00067 SectionForceDeformation *getCopy(void);
00068 const ID &getType (void);
00069 int getOrder (void) const;
00070
00071 int sendSelf(int cTag, Channel &theChannel);
00072 int recvSelf(int cTag, Channel &theChannel,
00073 FEM_ObjectBroker &theBroker);
00074 void Print(OPS_Stream &s, int flag = 0);
00075
00076 Response *setResponse(const char **argv, int argc,
00077 Information &info,
00078 OPS_Stream &s);
00079 int getResponse(int responseID, Information &info);
00080
00081 int addFiber(Fiber &theFiber);
00082
00083
00084 int setParameter(const char **argv, int argc, Parameter ¶m);
00085 const Vector& getStressResultantSensitivity(int gradNumber,
00086 bool conditional);
00087 const Vector& getSectionDeformationSensitivity(int gradNumber);
00088 const Matrix& getInitialTangentSensitivity(int gradNumber);
00089 int commitSensitivity(const Vector& sectionDeformationGradient,
00090 int gradNumber, int numGrads);
00091
00092
00093 protected:
00094
00095
00096 int numFibers;
00097 UniaxialMaterial **theMaterials;
00098 double *matData;
00099 double kData[4];
00100 double sData[2];
00101
00102 double yBar;
00103
00104 SectionIntegration *sectionIntegr;
00105
00106 static ID code;
00107
00108 Vector e;
00109 Vector eCommit;
00110 Vector *s;
00111 Matrix *ks;
00112
00113
00114 Vector dedh;
00115
00116 };
00117
00118 #endif