00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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
00034
00036
00038 template <class T>
00039 class CFastMarchingFirstOrderEngquistOsher: public CUpdater<T>
00040 {
00041
00042
00043
00044
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
00058
00059
00060 protected:
00061
00062
00063
00064
00065
00066
00067 public:
00068
00069 CFastMarchingFirstOrderEngquistOsher() throw();
00070 CFastMarchingFirstOrderEngquistOsher(T TMax_) throw();
00071
00072 ~CFastMarchingFirstOrderEngquistOsher() throw();
00073
00074
00075
00076
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 };
00099
00100
00101 }
00102
00103
00104 #define FILE_UPDATER_FASTMARCHINGFIRSTORDERENGQUISTOSHER_HXX
00105 #endif