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 #ifndef LoadPattern_h
00027 #define LoadPattern_h
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #include <DomainComponent.h>
00042 #include <Vector.h>
00043
00044 class NodalLoad;
00045 class TimeSeries;
00046 class ElementalLoad;
00047 class SP_Constraint;
00048 class NodalLoadIter;
00049 class ElementalLoadIter;
00050 class SingleDomSP_Iter;
00051 class SP_ConstraintIter;
00052 class TaggedObjectStorage;
00053 class GroundMotion;
00054
00055 class LoadPattern : public DomainComponent
00056 {
00057 public:
00058
00059 LoadPattern(int tag);
00060 LoadPattern();
00061 LoadPattern(int tag, int classTag);
00062
00063
00064 virtual ~LoadPattern();
00065
00066
00067 virtual void setTimeSeries(TimeSeries *theSeries);
00068 virtual void setDomain(Domain *theDomain);
00069
00070
00071 virtual bool addSP_Constraint(SP_Constraint *);
00072 virtual bool addNodalLoad(NodalLoad *);
00073 virtual bool addElementalLoad(ElementalLoad *);
00074 virtual NodalLoadIter &getNodalLoads(void);
00075 virtual ElementalLoadIter &getElementalLoads(void);
00076 virtual SP_ConstraintIter &getSPs(void);
00077
00078
00079 virtual void clearAll(void);
00080 virtual NodalLoad *removeNodalLoad(int tag);
00081 virtual ElementalLoad *removeElementalLoad(int tag);
00082 virtual SP_Constraint *removeSP_Constraint(int tag);
00083
00084
00085 virtual void applyLoad(double pseudoTime = 0.0);
00086 virtual void setLoadConstant(void);
00087
00088 virtual double getLoadFactor(void);
00089
00090
00091 virtual int sendSelf(int commitTag, Channel &theChannel);
00092 virtual int recvSelf(int commitTag, Channel &theChannel,
00093 FEM_ObjectBroker &theBroker);
00094 virtual void Print(OPS_Stream &s, int flag =0);
00095
00096
00097 virtual LoadPattern *getCopy(void);
00098
00099 virtual int addMotion(GroundMotion &theMotion, int tag);
00100 virtual GroundMotion *getMotion(int tag);
00101
00102
00103 virtual void applyLoadSensitivity(double pseudoTime = 0.0);
00104 virtual int setParameter(const char **argv, int argc, Parameter ¶m);
00105 virtual int updateParameter(int parameterID, Information &info);
00106 virtual int activateParameter(int parameterID);
00107 virtual const Vector & getExternalForceSensitivity(int gradNumber);
00108
00109
00110 protected:
00111 int isConstant;
00112
00113 private:
00114 double loadFactor;
00115
00116 TimeSeries *theSeries;
00117
00118 int currentGeoTag;
00119 int lastGeoSendTag;
00120 int dbSPs, dbNod, dbEle;
00121
00122
00123 TaggedObjectStorage *theNodalLoads;
00124 TaggedObjectStorage *theElementalLoads;
00125 TaggedObjectStorage *theSPs;
00126
00127
00128 NodalLoadIter *theNodIter;
00129 ElementalLoadIter *theEleIter;
00130 SingleDomSP_Iter *theSpIter;
00131
00132
00133 Vector *randomLoads;
00134 bool RVisRandomProcessDiscretizer;
00135
00136
00137 int lastChannel;
00138 };
00139
00140 #endif
00141
00142
00143
00144
00145
00146
00147