next up previous contents index
Next: Memory Methods on Adapt2d Up: Surfaces and 2D Finite Previous: Other Methods on Fe2d

Adapt2d

 

 

#CLASS Adapt2d : Fe2d {
  REFINE2D *refine;
  int number_of_bnd_functions; /* (max) no of different boundaries */
  int max_number_of_bnd_functions;
  BND_FUNCTION *bnd_function;   /* bnd_function[-neighbour[i][j]]  */
                                /*  ->g(x,bnd_function->par) = 0.0 */
                                /* is the boundary   (VEC3 x)      */
    /* Functions for interpolation and restriction
     * calls: interpol(ADAPT2D *tr,
     *                 int oldtriangle, int oldpoint1, int oldpoint2,
     *                 int newpoint, int newtriang1, int newtriang2)
     * oldpoint1 and oldpoint2 are the global points of the divided edge
     * newpoint is the global number of the new (added) point)
     *
     *        restrict(ADAPT2D *tr,
     *                 int deletriang1, int deletriang2, int deletpoint,
     *                 int newtriang, int makropoint1, int makropoint2)
     * deletpoint is the global number of the deleted point
     * makropoint1 and makropoint2 are the global points of the
     * coarsened edge in the new triangle
     *
     * while coarsening, gaps in the triangulation-arrays have to be
     * filled by moving elements or points with:
     *         element_compress(ADAPT2D *tr, int old_element_number,
     *                          int new_element_number)
     *         point_compress(ADAPT2D *tr, int old_point_number,
     *                          int new_point_number)
     */
  void (*interpol)(), (*restrict)();
  void (*element_compress)(), (*point_compress)();

};

   

typedef struct refine2d {
  unsigned char refine;       /* flag to refine/coarse */
  unsigned char edge;         /* next refinement edge */
  unsigned char friend;       /* local number of the last neighbour */
  unsigned char level;        /* level of refinement */
  unsigned char vtx_level[3]; /* generation of vertices */
} REFINE2D;

 

typedef struct bnd_function {
  double (*g)();
  void *par;
    /* bnd_function[-neighbour[i][j]->g(VEC3 x, bnd_function->par) = 0.0
       is the boundary with x */
} BND_FUNCTION;





SFB 256 Universität Bonn and IAM Universität Freiburg

Copyright © by the Sonderforschungsbereich 256 at the Institut für Angewandte Mathematik, Universität Bonn.