00001 //************************************************************************************// 00002 // Module : gstepper.hpp 00003 // Date : 6/24/05 (DLR) 00004 // Copyright : 2005-2006 Copyright University Corporation for Atmospheric 00005 // Research 00006 // Description : Encapsulates the methods and data associated with 00007 // a stepper interface class. This is intended to serve as a 00008 // (minimum) template for other time stepper objects. 00009 // Derived From : none. 00010 // Modifications: none. 00011 //************************************************************************************// 00012 #if !defined(GSTEPPER_HPP) 00013 #define GSTEPPER_HPP 00014 00015 #include "cg.hpp" 00016 #include "gcomm.hpp" 00017 #include "gelemlist.hpp" 00018 #include "gfieldlist.hpp" 00019 00020 class GStepper 00021 { 00022 public: 00023 00024 GStepper(){}; 00025 GStepper(GElemList *elems){}; 00026 GStepper(GElemList *elems, GFieldList *ulist[], GINT nlist, 00027 GFieldList **cadv, GINT *iadv, GINT nadv){}; 00028 GStepper(GFieldList *ulist[], GINT nf, GElemList *uelems, 00029 GElemList *pelems, GINT t){}; 00030 00031 ~GStepper(){}; 00032 00033 virtual GBOOL Step(GDOUBLE dt)=0; // Take one time step 00034 virtual void SetComm(GS *ggs)=0; // Set global gather scatter operator 00035 virtual GCHandle SetCommHandle(GCHandle hIn)=0 ; // Initializes comm with existing handle 00036 virtual void SetVBdyData (GINT idir, GVecList *bdy_vals)=0; // Set bcs for component idir 00037 virtual void SetTimestepHistory(GDBuffer *dthist)=0; // Set timestep hist. buffer 00038 00039 // virtual CG *GetSolver(GINT idir)=0; // Get pointer to iterative solver 00040 // virtual LinOp *GetPreconditioner(GINT idir, GINT eid)=0; // Get preconditioner for component idir, element eid 00041 // virtual GINT GetNumIterations(GINT idir)=0; // Get no. solver iterations 00042 // virtual GINT GetErrorType(GINT idir)=0; // Get solver error type 00043 // virtual GDOUBLE GetError(GINT idir)=0; // Get solver error 00044 // virtual GDOUBLE GetMinError(GINT idir)=0; // Get solver min error 00045 // virtual GDOUBLE GetMaxError(GINT idir)=0; // Get solver max error 00046 // virtual void SetElemList(GElemList *elems)=0; // Set element list 00047 // virtual void SetEvolType(TIME_EVOLTYPE itype)=0; // Set time stepping scheme 00048 virtual void SetTime(GDOUBLE time)=0; // Set integration start time 00049 // virtual void SetNSubcycles(GINT nsub)=0; // Set number of OIFS subcycles 00050 // virtual void SetPreconditioner(GINT idir, GPC itype)=0; // Set preconditioners 00051 00052 private: 00053 }; 00054 00055 #endif