Liebe Gitlab-Nutzer, lieber Gitlab-Nutzer, es ist nun möglich sich mittels des ZIH-Logins/LDAP an unserem Dienst anzumelden. Ein Anmelden über dieses erzeugt ein neues Konto. Das alte Konto ist über den Reiter "Standard" erreichbar. Die Administratoren

Dear Gitlab user, it is now possible to log in to our service using the ZIH login/LDAP. Logging in via this will create a new account. The old account can be accessed via the "Standard" tab. The administrators

ElInfo3d.h 4.19 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
// ============================================================================
// ==                                                                        ==
// == AMDiS - Adaptive multidimensional simulations                          ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  crystal growth group                                                  ==
// ==                                                                        ==
// ==  Stiftung caesar                                                       ==
// ==  Ludwig-Erhard-Allee 2                                                 ==
// ==  53175 Bonn                                                            ==
// ==  germany                                                               ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  http://www.caesar.de/cg/AMDiS                                         ==
// ==                                                                        ==
// ============================================================================

/** \file ElInfo3d.h */

#ifndef AMDIS_ELINFO3D_H
#define AMDIS_ELINFO3D_H

#include "ElInfo.h"
#include "MemoryManager.h"

namespace AMDiS {

  // ============================================================================
  // ===== class ElInfo3d =======================================================
  // ============================================================================


  /** \ingroup Traverse
   * \brief
   * ElInfo class for 3-dimensional elements (\ref Tetrahedron).
   */
  class ElInfo3d : public ElInfo
  {
  public:
    MEMORY_MANAGED(ElInfo3d);

    /** \brief
     * Constructor. Calls ElInfo's protected Constructor.
     */
    ElInfo3d(Mesh* aMesh) : ElInfo(aMesh) {};

    /** \brief
     * Assignment operator
     */
    ElInfo3d& operator=(const ElInfo3d& rhs) {
      ElInfo::operator=(rhs);
      el_type = rhs.el_type;
      orientation = rhs.orientation;
      return *this;
    } 

    /** \brief
     * 3-dimensional realisation of ElInfo's fillElInfo method.
     */
    void fillElInfo(int ichild, const ElInfo *elinfo_old);

    /** \brief
     * 3-dimensional realisation of ElInfo's fillMacroInfo method.
     */
    void fillMacroInfo(const MacroElement *);

    /** \brief
     * 3-dimensional realisation of ElInfo's worldToCoord method.
     */
    const int worldToCoord(const WorldVector<double>& w, DimVec<double>* l) const;

    /** \brief
     * 3-dimensional realisation of ElInfo's calcGrdLambda method.
     */
    double calcGrdLambda(DimVec<WorldVector<double> >& grd_lam) const;

    /** \brief
     * 3-dimensional realisation of ElInfo's getNormal method.
     */
    double getNormal(int side, WorldVector<double> &normal) const;

    /** \brief
     * 3-dimensional realisation of ElInfo's getElementNormal method.
     */
    //double getElementNormal( WorldVector<double> &normal) const;



    /** \brief
     * update ElInfo after refinement (of some neighbours). Only in 3d!
     */
    void update();

    /** \brief
     * get ElInfo's \ref el_type
     */
    inline unsigned char getType() const { return el_type; };

    /** \brief
     * get ElInfo's \ref orientation
     */
    inline signed char getOrientation() const { return orientation; };

    /** \brief
     * set ElInfo's \ref el_type to t
     */
    inline void setType(unsigned char t) { el_type = t; };

    /** \brief
     * set ElInfo's \ref orientation to o
     */
    inline void setOrientation(signed char o) { orientation = o; };

  protected:

    /** \brief
     * \ref el 's type. Is Filled automatically by the traversal routines.
     */
    unsigned char el_type;

    /** \brief
     * +/- 1: sign of the determinant of the transformation to the reference
     * element with vertices (0,0,0), (1,1,1), (1,1,0), (1,0,0).
     */
    signed char orientation;
  };

}

#endif // AMDIS_ELINFO3D_H