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 FiberSection3d_h
00034 #define FiberSection3d_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
00044 class FiberSection3d : public SectionForceDeformation
00045 {
00046 public:
00047 FiberSection3d();
00048 FiberSection3d(int tag, int numFibers, Fiber **fibers);
00049 ~FiberSection3d();
00050
00051 const char *getClassType(void) const {return "FiberSection3d";};
00052
00053 int setTrialSectionDeformation(const Vector &deforms);
00054 const Vector &getSectionDeformation(void);
00055
00056 const Vector &getStressResultant(void);
00057 const Matrix &getSectionTangent(void);
00058 const Matrix &getInitialTangent(void);
00059
00060 int commitState(void);
00061 int revertToLastCommit(void);
00062 int revertToStart(void);
00063
00064 SectionForceDeformation *getCopy(void);
00065 const ID &getType (void);
00066 int getOrder (void) const;
00067
00068 int sendSelf(int cTag, Channel &theChannel);
00069 int recvSelf(int cTag, Channel &theChannel,
00070 FEM_ObjectBroker &theBroker);
00071 void Print(OPS_Stream &s, int flag = 0);
00072
00073 Response *setResponse(const char **argv, int argc,
00074 Information &info,
00075 OPS_Stream &s);
00076 int getResponse(int responseID, Information &info);
00077
00078 int addFiber(Fiber &theFiber);
00079
00080 int setParameter(const char **argv, int argc, Parameter ¶m);
00081
00082 protected:
00083
00084 private:
00085 int numFibers;
00086 UniaxialMaterial **theMaterials;
00087 double *matData;
00088 double kData[9];
00089 double sData[3];
00090
00091 double yBar;
00092 double zBar;
00093
00094 static ID code;
00095
00096 Vector e;
00097 Vector eCommit;
00098 Vector *s;
00099 Matrix *ks;
00100 };
00101
00102 #endif