We have introduced the class Triang3d in order to describe the shapes of domains in the dimension three.
#CLASS Triang3d : Root { int number_of_points; int max_number_of_points; double *x, *y, *z; /* point-coordinates */ int number_of_elements; int max_number_of_elements; INT4 *vertex; /* vertex indices of all tetrahedron */ INT4 *neighbour; /* neighbour tetrahedron */ /* neighbour[j][i] is opposite to vertex[j][i] */ int data_is_borrowed; };
In order to employ finite elements a subclass Fe3d of Triang3d need to be introduced.
#CLASS Fe3d : Triang3d { int dimension_of_value; /* 1==scalar, >1 => vector function */ int polynomial_order; /* 1==linear, 2==quadratic,... elements */ void (*f)(struct fe3d *, int, VEC4, double*); /* void *f( FE3D *fe, int triangle, VEC4 barycentric_coordinates, double value[dim] ) */ /* optional ******************************************************/ int size_of_data; /* size of user data */ char *data; /* and pointer to it */ /* ***************************************************************/ };
Now let us specify for each method the message passing, the delivering of arguments and the return value. We will also describe briefly the method itself. (Note: There will occur methods working on instances of Scene. At the first scene node the object is a Fe3d instance registered and the following next_scene node contains the inserted instance after the return from the actual method.)
Copyright © by the Sonderforschungsbereich 256 at the Institut für Angewandte Mathematik, Universität Bonn.