// ============================================================================ // == == // == 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 ElInfo2d.h */ #ifndef AMDIS_ELINFO2D_H #define AMDIS_ELINFO2D_H #include <boost/numeric/mtl/mtl.hpp> #include "ElInfo.h" namespace AMDiS { /** \ingroup Traverse * \brief * ElInfo class for 2-dimensional elements (\ref Triangle). */ class ElInfo2d : public ElInfo { public: /// Constructor. Calls ElInfo's protected Constructor. ElInfo2d(Mesh* aMesh); /// ~ElInfo2d(); /// 2-dimensional realisation of ElInfo's fillElInfo method. void fillElInfo(int ichild, const ElInfo *elinfo_old); /// 2-dimensional realisation of ElInfo's fillMacroInfo method. void fillMacroInfo(const MacroElement*); /// 2-dimensional realisation of ElInfo's worldToCoord method. const int worldToCoord(const WorldVector<double>& w, DimVec<double>* l) const; /// 2-dimensional realisation of ElInfo's calcGrdLambda method. double calcGrdLambda(DimVec<WorldVector<double> >& grd_lam); /// 2-dimensional realisation of ElInfo's getNormal method. double getNormal(int side, WorldVector<double> &normal); /// 2-dimensional realisation of ElInfo's getElementNormal method. double getElementNormal(WorldVector<double> &normal) const; mtl::dense2D<double>& getSubElemCoordsMat(int degree) const; mtl::dense2D<double>& getSubElemGradCoordsMat(int degree) const; protected: /// Temp vectors for function \ref calcGrdLambda. WorldVector<double> *e1, *e2, *normal; static double mat_d1_val[3][3]; static mtl::dense2D<double> mat_d1; static double mat_d1_left_val[3][3]; static mtl::dense2D<double> mat_d1_left; static double mat_d1_right_val[3][3]; static mtl::dense2D<double> mat_d1_right; static double mat_d2_val[6][6]; static mtl::dense2D<double> mat_d2; static double mat_d2_left_val[6][6]; static mtl::dense2D<double> mat_d2_left; static double mat_d2_right_val[6][6]; static mtl::dense2D<double> mat_d2_right; }; } #endif // AMDIS_ELINFO2D_H