Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

evforce.hpp

Go to the documentation of this file.
00001 //************************************************************************************//
00002 // Module       : evforce.hpp
00003 // Date         : 12/4/02 (DLR)
00004 // Copyright    : 2002-2006 Copyright University Corporation for Atmospheric
00005 //                Research
00006 // Description  : Encapsulates the methods and data associated with
00007 //                defining the state-independent Einaudi-Villi 
00008 //                forcing function. This function is defined in
00009 //                AIP S1070-664X(99)02711-1, s.t.
00010 //                F_ = Curl ( f z^ ), where
00011 //                  f = A_1(x,y) sin^2(Pi t/(2 t_*) + A_2(x,y) sin^2(Pi t/(2 t_*) + Pi/2),
00012 //                with
00013 //                A_i = Sum_m,n alpha^i_m,n sin(k_n x + k_m y + xi^i_m,n).
00014 // Derived From : SIForce
00015 // Modifications:
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];  // beginning index for [A_component][direction: x, y] 
00049          GINT              ie_[2][2];  // end       index for [A_component][direction: x, y]
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

Generated on Wed Dec 21 16:00:48 2005 for Geophysics & Astrophysics Spectral Element Adaptive Refinement (GASpAR) 2D Code by  doxygen 1.4.4