Cell faces operations

Name

Cell faces operations -- 

Synopsis


#include <gfs.h>


#define     FTT_FACE_DIRECT                 (f)
#define     FTT_FACE_REVERSE                (dst, src)

struct      FttCellFace;

FttCellFace ftt_cell_face                   (FttCell *cell,
                                             FttDirection d);
FttFaceType ftt_face_type                   (const FttCellFace *face);
enum        FttFaceType;
void        ftt_face_pos                    (const FttCellFace *face,
                                             FttVector *pos);
void        ftt_face_traverse               (FttCell *root,
                                             FttComponent c,
                                             FttTraverseType order,
                                             FttTraverseFlags flags,
                                             gint max_depth,
                                             FttFaceTraverseFunc func,
                                             gpointer data);
void        (*FttFaceTraverseFunc)          (FttCellFace *face,
                                             gpointer data);
void        ftt_face_traverse_boundary      (FttCell *root,
                                             FttDirection d,
                                             FttTraverseType order,
                                             FttTraverseFlags flags,
                                             gint max_depth,
                                             FttFaceTraverseFunc func,
                                             gpointer data);
void        ftt_face_draw                   (const FttCellFace *face,
                                             FILE *fp);

Description

Details

FTT_FACE_DIRECT()

#define  FTT_FACE_DIRECT(f)       ((f)->d % 2 == 0)

f :


FTT_FACE_REVERSE()

#define     FTT_FACE_REVERSE(dst, src)

dst :

src :


struct FttCellFace

struct FttCellFace {

  FttCell * cell, * neighbor;
  FttDirection d;
};


ftt_cell_face ()

FttCellFace ftt_cell_face                   (FttCell *cell,
                                             FttDirection d);

cell :

a FttCell.

d :

a direction.

Returns :

the face of cell in direction d.


ftt_face_type ()

FttFaceType ftt_face_type                   (const FttCellFace *face);

face :

a FttCellFace.

Returns :

the type of face.


enum FttFaceType

typedef enum {
  FTT_BOUNDARY,
  FTT_FINE_FINE,
  FTT_FINE_COARSE
} FttFaceType;


ftt_face_pos ()

void        ftt_face_pos                    (const FttCellFace *face,
                                             FttVector *pos);

Fills pos with the coordinates of the center of face.

face :

a FttCellFace.

pos :

a FttVector.


ftt_face_traverse ()

void        ftt_face_traverse               (FttCell *root,
                                             FttComponent c,
                                             FttTraverseType order,
                                             FttTraverseFlags flags,
                                             gint max_depth,
                                             FttFaceTraverseFunc func,
                                             gpointer data);

Traverses a cell tree starting at the given root FttCell. Calls the given function for each face of the cells of the tree.

If FTT_TRAVERSE_BOUNDARY_FACES is not set in flags, only "double-sided" faces are traversed i.e. the neighbor field of the face is never NULL.

root :

the root FttCell of the tree to traverse.

c :

only the faces orthogonal to this component will be traversed - one of FTT_X, FTT_Y, (FTT_Z), FTT_XYZ.

order :

the order in which the cells are visited - FTT_PRE_ORDER, FTT_POST_ORDER.

flags :

which types of children and faces are to be visited.

max_depth :

the maximum depth of the traversal. Cells below this depth will not be traversed. If max_depth is -1 all cells in the tree are visited.

func :

the function to call for each visited FttCellFace.

data :

user data to pass to func.


FttFaceTraverseFunc ()

void        (*FttFaceTraverseFunc)          (FttCellFace *face,
                                             gpointer data);

face :

data :


ftt_face_traverse_boundary ()

void        ftt_face_traverse_boundary      (FttCell *root,
                                             FttDirection d,
                                             FttTraverseType order,
                                             FttTraverseFlags flags,
                                             gint max_depth,
                                             FttFaceTraverseFunc func,
                                             gpointer data);

Traverses a cell tree starting at the given root FttCell. Calls the given function for each face of the cell tree forming the boundary of the domain in direction d.

root :

the root FttCell of the tree to traverse.

d :

the direction of the boundary to visit.

order :

the order in which the cells are visited - FTT_PRE_ORDER, FTT_POST_ORDER.

flags :

which types of children are to be visited.

max_depth :

the maximum depth of the traversal. Cells below this depth will not be traversed. If max_depth is -1 all cells in the tree are visited.

func :

the function to call for each visited FttCellFace.

data :

user data to pass to func.


ftt_face_draw ()

void        ftt_face_draw                   (const FttCellFace *face,
                                             FILE *fp);

Outputs in fp an OOGL (geomview) representation of face.

face :

a FttCellFace.

fp :

a file pointer.