vtf-logo

GFMLevelSet.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 // Copyright (C) 2003-2007 California Institute of Technology
00004 // Ralf Deiterding, ralf@amroc.net
00005 
00006 #ifndef AMROC_GFMLEVELSET_H
00007 #define AMROC_GFMLEVELSET_H
00008 
00022 template <class DataType, int dim>
00023 class GFMLevelSet : public controlable {
00024 
00025 public:
00026   typedef GridFunction<DataType,dim> grid_fct_type;   
00027   typedef GridData<DataType,dim> grid_data_type;   
00028 
00029   GFMLevelSet() : _PlotPhi(0), _Stationary(0), _Ghosts(0), _Dim(dim) {    
00030     _Hierarchy = (GridHierarchy*) 0;
00031   }
00032 
00033   virtual ~GFMLevelSet() {}
00034 
00035   //******************************************************************************
00036   // Abstract class interface
00037   //******************************************************************************
00038   virtual void SetGrid(grid_data_type& gdphi, const int& Level, const double& t) = 0;   
00039   //******************************************************************************
00040 
00041   virtual void register_at(ControlDevice& Ctrl) {}
00042   virtual void register_at(ControlDevice& Ctrl, const std::string& prefix) {}
00043   virtual void init() {}
00044   virtual void update() {}
00045   virtual void finish() {} 
00046 
00047   virtual void SetPhi(grid_fct_type& phi, const int Time, const int Level, double t) { 
00048     forall (phi,Time,Level,c)
00049       SetGrid(phi(Time,Level,c),Level,t);    
00050     end_forall
00051     START_WATCH
00052       Sync(phi,Time,Level);
00053     END_WATCH(LS_SYNC)
00054     START_WATCH
00055       ExternalBoundaryUpdate(phi,Time,Level);
00056     END_WATCH(BOUNDARIES_EXTERNAL)
00057   }
00058 
00059   inline const int& PlotPhi() const { return _PlotPhi; }
00060   inline const int& Stationary() const { return _Stationary; }
00061 
00062   virtual void SetupData(GridHierarchy* gh, const int& ghosts) {
00063     _Hierarchy = gh;
00064     _Ghosts = ghosts;
00065   }
00066 
00067   GridHierarchy& GH() { return *_Hierarchy; }
00068   const GridHierarchy& GH() const { return *_Hierarchy; }
00069 
00070   const int& NGhosts() const { return _Ghosts; }
00071   const int& Dim() const { return _Dim; }
00072 
00073 protected:
00074   int _PlotPhi;
00075   int _Stationary;
00076   int _Ghosts;
00077   int _Dim;
00078   GridHierarchy* _Hierarchy;
00079   ControlDevice LocCtrl;
00080 };
00081 
00082 
00083 #endif

Generated on Fri Aug 24 13:00:51 2007 for AMROC Fluid-solver Framework - by  doxygen 1.4.7