00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef FILE_SPEEDFUNCTIONS_CONSTANTSPEED_HXX
00021
00022
00023 #include "../errors.cxx"
00024 #include <stdio.h>
00025
00026
00027 namespace Multivac
00028 {
00029
00030
00032
00034
00036 template <class T>
00037 class CConstantSpeed: public CSpeedFunction<T>
00038 {
00039
00040
00041
00042
00043
00044
00045 protected:
00046
00048 T SpeedRate;
00049
00050
00051
00052
00053
00054
00055 public:
00056
00057 CConstantSpeed() throw();
00058 CConstantSpeed(T SpeedRate_) throw();
00059
00060 ~CConstantSpeed() throw();
00061
00062
00063
00064
00065
00066
00067 public:
00068
00069 virtual void Init(CMesh<T>& Mesh);
00070
00071 virtual inline T operator() (T x, T y, T time) const;
00072 virtual inline T operator() (T x, T y, T time,
00073 T nx, T ny, T curvature) const;
00074
00075 virtual T GetMaxF1(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00076 virtual T GetMaxF2(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const;
00077
00078 virtual inline T operator() (int i, int j) const;
00079
00080 virtual T GetDerivatives(T x, T y, T nx, T ny, T t,
00081 T& dFdp, T& dFdx, T& dFdy,
00082 T& dFdnx, T& dFdny) const;
00083 virtual T Get2ndDerivatives(T x, T y, T nx, T ny, T t,
00084 T& dFdpdp, T& dFdpdx, T& dFdpdy,
00085 T& dFdpdnx, T& dFdpdny,
00086 T& dFdxdx, T& dFdxdy,
00087 T& dFdxdnx, T& dFdxdny,
00088 T& dFdydy, T& dFdydnx,
00089 T& dFdydny, T& dFdnxdnx,
00090 T& dFdnxdny, T& dFdnydny) const;
00091
00092 void SetRate(T rate);
00093
00094 };
00095
00096
00097 }
00098
00099
00100 #define FILE_MESHES_CONSTANTSPEED_HXX
00101 #endif