#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;
Copyright © by the Sonderforschungsbereich 256 at the Institut für Angewandte Mathematik, Universität Bonn.