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

baseclass.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_SPEEDFUNCTIONS_BASECLASS_HXX
00021 
00022 
00023 #include "../errors.cxx"
00024 #include <stdio.h>
00025 
00026 
00027 namespace Multivac
00028 {
00029 
00030 
00032   // CSPEEDFUNCTION //
00034 
00036 
00041   template <class T>
00042   class CSpeedFunction
00043   {
00044 
00045 
00046     /**************
00047      * ATTRIBUTES *
00048      **************/
00049 
00050   protected:
00051 
00053     Matrix<T> Values;
00054 
00056     bool dependence_position;
00058     bool dependence_time;
00060     bool dependence_normal;
00062     bool dependence_curvature;
00063 
00064 
00065     /*****************************
00066      * CONSTRUCTORS & DESTRUCTOR *
00067      *****************************/
00068 
00069   public:
00070 
00071     CSpeedFunction()  throw();
00072 
00073     virtual ~CSpeedFunction()  throw();
00074 
00075 
00076     /***********
00077      * METHODS *
00078      ***********/
00079 
00080   public:
00081   
00082     bool IsPositionDependent() const;
00083     bool IsTimeDependent() const;
00084     bool IsNormalDependent() const;
00085     bool IsCurvatureDependent() const;
00086 
00087     virtual void Init(CMesh<T>& Mesh) = 0;
00088 
00089     Matrix<T>& GetValues();
00090     virtual T operator() (T x, T y, T time) const = 0;
00091     virtual T operator() (T x, T y, T time,
00092                           T nx, T ny, T curvature) const = 0;
00093 
00094     virtual T GetMaxF1(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const = 0;
00095     virtual T GetMaxF2(T Xmin, T Xmax, T Ymin, T Ymax, T norm2) const = 0;
00096 
00097     virtual T operator() (int i, int j) 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 = 0;
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 = 0;
00110 
00111     virtual void Save(string FFile) const;
00112 
00113   };  // CSpeedFunction.
00114 
00115 
00116 }  // namespace Multivac.
00117 
00118 
00119 #define FILE_MESHES_BASECLASS_HXX
00120 #endif

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