CoarseningManager1d.h 2.85 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
// ============================================================================
// ==                                                                        ==
// == AMDiS - Adaptive multidimensional simulations                          ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  crystal growth group                                                  ==
// ==                                                                        ==
// ==  Stiftung caesar                                                       ==
// ==  Ludwig-Erhard-Allee 2                                                 ==
// ==  53175 Bonn                                                            ==
// ==  germany                                                               ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  http://www.caesar.de/cg/AMDiS                                         ==
// ==                                                                        ==
// ============================================================================

/** \file CoarseningManager1d.h */

#ifndef AMDIS_COARSENINGMANAGER_1D_H
#define AMDIS_COARSENINGMANAGER_1D_H

#include "CoarseningManager.h"
#include "MemoryManager.h"

namespace AMDiS {

  // ============================================================================
  // ===== class CoarseningManager1d ============================================
  // ============================================================================

  /** \ingroup Adaption 
   * \brief
   * Implements a CoarseningManager for 1-dimensional meshes.
   */
  class CoarseningManager1d : public CoarseningManager
  {
  public:
    MEMORY_MANAGED(CoarseningManager1d);

    /** \brief
     * Calls base class constructor and checks dimension of mesh. 
     */
46
    CoarseningManager1d() : CoarseningManager() {};
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

    /** \brief
     * destructor
     */
    virtual ~CoarseningManager1d() {};

    /** \brief
     * Overloads CoarseningManager::coarsenMesh. In 1d a simple recursive
     * coarsening algorithm is implemented which doesn't need coarsenFunction.
     */
    Flag coarsenMesh(Mesh *aMesh);

  protected:
    /** \brief
     * Not needed in this sub class
     */
    int coarsenFunction(ElInfo *) {
      FUNCNAME("CoarseningManager1d::coarsenFunction");
      ERROR_EXIT("not used for dim = 1");
      return 0;
    };
  
    /** \brief
     * Needed instead of coarsenFunction in 1d.
     */
    int coarsenRecursive(Line *parent);
  
  };

}

#endif // AMDIS_COARSENINGMANAGER_1D_H