00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _IFSLICER_H_
00012 #define _IFSLICER_H_
00013
00014 #include <map>
00015
00016 #include "Vector.H"
00017 #include "REAL.H"
00018 #include "IndexTM.H"
00019
00020 #include "Notation.H"
00021 #include "BaseIF.H"
00022
00023 using std::endl;
00024
00025 #include "NamespaceHeader.H"
00026
00027 template <int dim> class IFSlicer
00028 {
00029 public:
00030
00031
00032
00033
00034
00035 IFSlicer();
00036
00037
00038
00039
00040
00041 IFSlicer(const IFSlicer<dim> & a_IFSlicer);
00042
00043
00044
00045
00046
00047 IFSlicer(IFSlicer<dim+1> const * a_slicer,
00048 const int & a_fixedComp,
00049 const Real & a_fixedValue);
00050
00051 void setParams(IFSlicer<dim+1> const * a_slicer,
00052 const int & a_fixedComp,
00053 const Real & a_fixedValue);
00054
00055
00056
00057
00058
00059 virtual ~IFSlicer();
00060
00061
00062
00063
00064
00065
00066 virtual Real value(const IndexTM<int, dim> & a_partialDerivative,
00067 const IndexTM<Real,dim> & a_point)const;
00068
00069
00070
00071
00072
00073 void print(ostream& out) const;
00074
00075 protected:
00076
00077 IFSlicer<dim + 1> const * m_IFSlicer;
00078
00079
00080 int m_fixedComp;
00081 Real m_fixedValue;
00082
00083 private:
00084
00085
00086
00087
00088 IFSlicer<dim>& operator=(const IFSlicer<dim>&);
00089
00090 };
00091
00092 template<> class IFSlicer<GLOBALDIM>
00093 {
00094 public:
00095
00096
00097
00098
00099 IFSlicer();
00100
00101
00102
00103
00104
00105 IFSlicer(const IFSlicer<GLOBALDIM> & a_IFSlicer);
00106
00107
00108
00109
00110
00111 IFSlicer(const BaseIF & a_implicitFunction);
00112
00113
00114
00115
00116
00117 virtual ~IFSlicer();
00118
00119
00120
00121
00122
00123
00124 virtual Real value(const IndexTM<int, GLOBALDIM> & a_partialDerivative,
00125 const IndexTM<Real,GLOBALDIM> & a_point) const;
00126
00127 void print(ostream& a_out) const;
00128
00129 protected:
00130
00131
00132 BaseIF* m_implicitFunction;
00133
00134 private:
00135
00136
00137
00138
00139 IFSlicer<GLOBALDIM>& operator=(const IFSlicer<GLOBALDIM>&);
00140 };
00141
00142 #include "NamespaceFooter.H"
00143
00144 #include "IFSlicerImplem.H"
00145
00146 #endif