// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == crystal growth group == // == == // == Stiftung caesar == // == Ludwig-Erhard-Allee 2 == // == 53175 Bonn == // == germany == // == == // ============================================================================ // == == // == http://www.caesar.de/cg/AMDiS == // == == // ============================================================================ /** \file ElInfo1d.h */ #ifndef AMDIS_ELINFO1D_H #define AMDIS_ELINFO1D_H #include <boost/numeric/mtl/mtl.hpp> #include "ElInfo.h" namespace AMDiS { /** \ingroup Traverse * \brief * ElInfo class for 1-dimensional elements (\ref Line). */ class ElInfo1d : public ElInfo { public: /// Constructor. Calls ElInfo's protected Constructor. ElInfo1d(Mesh* aMesh) : ElInfo(aMesh) {} /// 1-dimensional realisation of ElInfo's fillElInfo method. void fillElInfo(int ichild, const ElInfo *elinfo_old); /// 1-dimensional realisation of ElInfo's fillMacroInfo method. void fillMacroInfo(const MacroElement*); /// 1-dimensional realisation of ElInfo's worldToCoord method. const int worldToCoord(const WorldVector<double>& w, DimVec<double>* l) const; /// 1-dimensional realisation of ElInfo's calcGrdLambda method. double calcGrdLambda(DimVec<WorldVector<double> >& grd_lam); /// 1-dimensional realisation of ElInfo's getNormal method. double getNormal(int side, WorldVector<double> &normal); /// 1-dimensional realisation of ElInfo's getElementNormal method. double getElementNormal( WorldVector<double> &normal) const; int getSideOfNeighbour(int i) { return (i + 1) % 2; } void getRefSimplexCoords(const BasisFunction *basisFcts, mtl::dense2D<double>& coords) const; void getSubElementCoords(const BasisFunction *basisFcts, int iChild, mtl::dense2D<double>& coords) const; protected: static double mat_d1_val[2][2]; static mtl::dense2D<double> mat_d1; static double mat_d1_left_val[2][2]; static mtl::dense2D<double> mat_d1_left; static double mat_d1_right_val[2][2]; static mtl::dense2D<double> mat_d1_right; }; } #endif // AMDIS_ELINFO1D_H