00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef FILE_SPEEDFUNCTIONS_SIMPLIFIEDFIREMODEL_HXX
00021
00022
00023 #include "../errors.cxx"
00024 #include <stdio.h>
00025
00026
00027 namespace Multivac
00028 {
00029
00030
00032
00034
00036
00046 template <class T>
00047 class CSimplifiedFireModel: public CSpeedFunction<T>
00048 {
00049
00050
00051
00052
00053
00054
00055 protected:
00056
00058 T U;
00059
00061 T m;
00063 T c_1;
00064
00066 T epsilon_0;
00068 T alpha;
00069
00070
00071
00072
00073
00074
00075 public:
00076
00077 CSimplifiedFireModel() throw();
00078 CSimplifiedFireModel(T U_, T m_, T c_1_,
00079 T epsilon_0_, T alpha_) throw();
00080
00081 ~CSimplifiedFireModel() throw();
00082
00083
00084
00085
00086
00087
00088 public:
00089
00090 virtual void Init(CMesh<T>& Mesh);
00091
00092 virtual inline T operator() (T x, T y, T time) const;
00093 virtual inline T operator() (T x, T y, T time,
00094 T nx, T ny, T curvature) const;
00095
00096 virtual T GetMaxF1(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00097 virtual T GetMaxF2(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00098
00099 virtual T GetDerivatives(T x, T y, T nx, T ny, T t,
00100 T& dFdp, T& dFdx, T& dFdy,
00101 T& dFdnx, T& dFdny) const;
00102 virtual T Get2ndDerivatives(T x, T y, T nx, T ny, T t,
00103 T& dFdpdp, T& dFdpdx, T& dFdpdy,
00104 T& dFdpdnx, T& dFdpdny,
00105 T& dFdxdx, T& dFdxdy,
00106 T& dFdxdnx, T& dFdxdny,
00107 T& dFdydy, T& dFdydnx,
00108 T& dFdydny, T& dFdnxdnx,
00109 T& dFdnxdny, T& dFdnydny) const;
00110
00111
00112 void SetRate(T new_parameter)
00113 {
00114 U = new_parameter;
00115 }
00116
00117 private:
00118
00119 T Model(T, T, T) const;
00120
00121 };
00122
00123
00124 }
00125
00126
00127 #define FILE_MESHES_SIMPLIFIEDFIREMODEL_HXX
00128 #endif