Go to the documentation of this file.00001
00006 #ifndef elemFormulaNormalTangentialVector_hh
00007 #define elemFormulaNormalTangentialVector_hh
00008
00009 #include "basics/typedefs.hh"
00010 #include "formula/elementFormula.hh"
00011
00012 namespace concepts {
00013
00014
00015
00016
00026 class FrmE_NormalVector : public ElementFormula<Real2d> {
00027 public:
00028 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00029 const Real p, const Real t = 0.0) const;
00030 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00031 const Real2d& p,
00032 const Real t = 0.0) const {
00033 return (*this)(elm, p[0], t);
00034 }
00035 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00036 const Real3d& p,
00037 const Real t = 0.0) const {
00038 return (*this)(elm, p[0], t);
00039 }
00040
00042 virtual FrmE_NormalVector* clone() const {
00043 return new FrmE_NormalVector();
00044 }
00045 protected:
00046 virtual std::ostream& info(std::ostream& os) const;
00047 };
00048
00049
00050
00060 class FrmE_TangentialVector : public ElementFormula<Real2d> {
00061 public:
00062 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00063 const Real p, const Real t = 0.0) const;
00064 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00065 const Real2d& p,
00066 const Real t = 0.0) const {
00067 return (*this)(elm, p[0], t);
00068 }
00069 virtual Real2d operator() (const ElementWithCell<Real>& elm,
00070 const Real3d& p,
00071 const Real t = 0.0) const {
00072 return (*this)(elm, p[0], t);
00073 }
00074
00076 virtual FrmE_TangentialVector* clone() const {
00077 return new FrmE_TangentialVector();
00078 }
00079 protected:
00080 virtual std::ostream& info(std::ostream& os) const;
00081 };
00082
00083 }
00084
00085 #endif // elemFormulaNormalTangentialVector_hh
00086