00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(EVFORCE_HPP)
00018 #define EVFORCE_HPP
00019
00020 #include "siforce.hpp"
00021
00022
00023 class EVForce: public SIForce
00024 {
00025 public:
00026 EVForce();
00027 EVForce(Elem2D *e);
00028 ~EVForce();
00029
00030 GVector Accel(GDOUBLE time, GINT idir) ;
00031 GBOOL Accel(GDOUBLE time, GINT idir, GVector &ret) ;
00032 GBOOL Initialize();
00033 GBOOL ParamSet(char *filename, char *blockname);
00034 void SetElem(Elem2D *e);
00035 void SetTurnoverTime(const GDOUBLE tt);
00036 void SetStartTime(const GDOUBLE ts);
00037 void SetWaveRange(GINT idir, GDOUBLE k0, GDOUBLE k1);
00038 void SetIndexRange(GINT icomponent, GINT idir, GINT ib, GINT ie);
00039 void DoRenormalization(GBOOL yn, GDOUBLE norm);
00040
00041 private:
00042 void UpdateRand();
00043 void ComputeDerivs(GINT idir);
00044
00045 GBOOL bUpdated_;
00046 GBOOL bRenormalized_;
00047 GBOOL bInitialized_;
00048 GINT ib_[2][2];
00049 GINT ie_[2][2];
00050 GINT imin;
00051 GINT imax;
00052 GDOUBLE last_time_;
00053 GDOUBLE start_time_;
00054 GDOUBLE turn_time_;
00055 GDOUBLE A_avg_;
00056 GDOUBLE *k_[2];
00057 GDOUBLE kmin_[2];
00058 GDOUBLE kmax_[2];
00059 GDOUBLE *alpha_[2];
00060 GDOUBLE *xi_[2];
00061 GDOUBLE norm_[2];
00062 GVector *vtmp;
00063 GVector *dA_ [2];
00064
00065 };
00066
00067 #endif