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
00047 template <class T>
00048 class CSimplifiedFireModel: public CSpeedFunction<T>
00049 {
00050
00051
00052
00053
00054
00055
00056 protected:
00057
00059 T U;
00060
00062 T m;
00064 T c_1;
00065
00067 T epsilon_0;
00069 T alpha;
00070
00071
00072
00073
00074
00075
00076 public:
00077
00078 CSimplifiedFireModel() throw();
00079 CSimplifiedFireModel(T U_, T m_, T c_1_,
00080 T epsilon_0_, T alpha_) throw();
00081
00082 ~CSimplifiedFireModel() throw();
00083
00084
00085
00086
00087
00088
00089 public:
00090
00091 virtual void Init(CMesh<T>& Mesh);
00092
00093 virtual inline T operator() (T x, T y, T time) const;
00094 virtual inline T operator() (T x, T y, T time,
00095 T nx, T ny, T curvature) const;
00096
00097 virtual T GetMaxF1(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00098 virtual T GetMaxF2(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00099
00100 virtual T GetDerivatives(T x, T y, T nx, T ny, T t,
00101 T& dFdp, T& dFdx, T& dFdy,
00102 T& dFdnx, T& dFdny) const;
00103 virtual T Get2ndDerivatives(T x, T y, T nx, T ny, T t,
00104 T& dFdpdp, T& dFdpdx, T& dFdpdy,
00105 T& dFdpdnx, T& dFdpdny,
00106 T& dFdxdx, T& dFdxdy,
00107 T& dFdxdnx, T& dFdxdny,
00108 T& dFdydy, T& dFdydnx,
00109 T& dFdydny, T& dFdnxdnx,
00110 T& dFdnxdny, T& dFdnydny) const;
00111
00112
00113 void SetRate(T new_parameter)
00114 {
00115 U = new_parameter;
00116 }
00117
00118 private:
00119
00120 T Model(T, T, T) const;
00121
00122 };
00123
00124
00125 }
00126
00127
00128 #define FILE_MESHES_SIMPLIFIEDFIREMODEL_HXX
00129 #endif