// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == TU Dresden == // == == // == Institut f�r Wissenschaftliches Rechnen == // == Zellescher Weg 12-14 == // == 01069 Dresden == // == germany == // == == // ============================================================================ // == == // == https://gforge.zih.tu-dresden.de/projects/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; } mtl::dense2D<double>& getSubElemCoordsMat(int degree) const; mtl::dense2D<double>& getSubElemCoordsMat_so(int degree) 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; static double mat_d2_val[3][3]; static mtl::dense2D<double> mat_d2; static double mat_d2_left_val[3][3]; static mtl::dense2D<double> mat_d2_left; static double mat_d2_right_val[3][3]; static mtl::dense2D<double> mat_d2_right; static double test1_val[2][2]; static mtl::dense2D<double> test2_val; }; } #endif // AMDIS_ELINFO1D_H