Main Page | User's guide | Class Hierarchy | Class List | File List | Class Members

fastmarchingfirstorderengquistosher.hxx

00001 // Copyright (C) 2002-2004 Vivien Mallet
00002 //
00003 // This file is part of Multivac library.
00004 // Multivac library provides front-tracking algorithms.
00005 // 
00006 // Multivac is free software; you can redistribute it and/or modify
00007 // it under the terms of the GNU General Public License as published by
00008 // the Free Software Foundation; either version 2 of the License, or
00009 // (at your option) any later version.
00010 // 
00011 // Multivac is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 // GNU General Public License (file "license") for more details.
00015 //
00016 // For more information, please see the Multivac home page:
00017 //     http://spacetown.free.fr/fronts/
00018 
00019 
00020 #ifndef FILE_UPDATER_FASTMARCHINGFIRSTORDERENGQUISTOSHER_HXX
00021 
00022 
00023 #include "../errors.cxx"
00024 #include <stdio.h>
00025 
00026 
00027 namespace Multivac
00028 {
00029 
00030 
00032   // CFASTMARCHINGFIRSTORDERENGQUISTOSHER //
00034 
00036 
00038   template <class T>
00039   class CFastMarchingFirstOrderEngquistOsher: public CUpdater<T>
00040   {
00041 
00042 
00043     /***********************
00044      * TYPEDEF DECLARATION *
00045      ***********************/
00046 
00047   public:
00048 
00049     typedef CFastMarchingNode<T> heap_node_value_type;
00050     typedef CFastMarchingNode<T>& heap_node_reference;
00051     typedef const CFastMarchingNode<T>& heap_node_const_reference;
00052     typedef CFastMarchingNode<T>* heap_node_pointer;
00053     typedef const CFastMarchingNode<T>* heap_node_const_pointer;
00054 
00055 
00056     /**************
00057      * ATTRIBUTES *
00058      **************/
00059 
00060   protected:
00061 
00062 
00063     /*****************************
00064      * CONSTRUCTORS & DESTRUCTOR *
00065      *****************************/
00066 
00067   public:
00068 
00069     CFastMarchingFirstOrderEngquistOsher()  throw();
00070     CFastMarchingFirstOrderEngquistOsher(T TMax_)  throw();
00071 
00072     ~CFastMarchingFirstOrderEngquistOsher()  throw();
00073 
00074 
00075     /***********
00076      * METHODS *
00077      ***********/
00078     
00079   public:
00080   
00081     virtual bool IsNarrowBand() const;
00082     virtual bool IsFastMarching() const;
00083 
00084     virtual void Init(CMesh<T>& Mesh, CLevelSet<T>& Phi);
00085     virtual void UpdateLevelSet(T Delta_t,
00086                                 CMesh<T>& Mesh,
00087                                 CSpeedFunction<T>& F,
00088                                 CLevelSet<T>& Phi,
00089                                 T CurrentTime);
00090 
00091     virtual bool KeepOnWorking() const;
00092 
00093   private:
00094     
00095     T  RefreshTime(CMesh<T>& Mesh, CSpeedFunction<T>& F,
00096                    CLevelSet<T>& Phi, int i, int j);
00097 
00098   };  // CFastMarchingFirstOrderEngquistOsher.
00099 
00100 
00101 }  // namespace Multivac.
00102 
00103 
00104 #define FILE_UPDATER_FASTMARCHINGFIRSTORDERENGQUISTOSHER_HXX
00105 #endif

Generated on Mon Apr 19 01:59:14 2004 for Multivac by doxygen 1.3.6-20040222