# Values, macros and structures in Gerris

(Difference between revisions)
 Revision as of 14:09, 15 May 2012Blagree (Talk | contribs)← Previous diff Revision as of 14:14, 15 May 2012Blagree (Talk | contribs) Next diff → Line 77: Line 77: - children and parent are the two [[The Fully Threaded Tree/Basic Concepts|FttOct]] associated with the FttCell. + children and parent are the two [[The Fully Threaded Tree/Basic concepts|FttOct]]s associated with the FttCell. === FttCellChildren === === FttCellChildren === Line 91: Line 91: === FttCellFace === === FttCellFace === - See [[The Fully Threaded Tree/Basic Concepts/FttDirection|FttDirection]]. + See [[The Fully Threaded Tree/Basic concepts/FttDirection|FttDirection]]. === FttCellFlags === === FttCellFlags === Line 104: Line 104: } } + + === FttCellNeighbors === + + + struct { + /* right, left, top, bottom, front, back */ + FttCell * c[FTT_NEIGHBORS]; + } + + + c is the array containing the neighbors of a considered [[#FttCell|FttCell]].

## Values defined in Gerris

N_CELLS = FTT_CELLS = [itex]2^{dimension}[/itex]

FTT_NEIGHBORS_2D = (FTT_BOTTOM) + 1

GFS_STATUS_UNDEFINED = 0

GFS_STATUS_SOLID = 1

GFS_STATUS_FLUID = 2

## Gerris structures

### CellCube

`typedef struct {  GtsPoint p[8];  GfsSegment s[12];}`

The vertices of the cube are stored in the GtsPoint array and the edges in the GfsSegment array.

### CellFace

`typedef struct {  GtsPoint p[4];  GfsSegment s[4];}`

The vertices of the face are stored in the GtsPoint array and the edges in the GfsSegment array.

### CompatPar

`typedef struct {  GfsVariable * lhs;  gboolean dirichlet;}`

The homogeneous version of the considered GfsVariable is stored in lhs.

### DiffusionCoeff

`typedef struct {  GfsSourceDiffusion * d;  gdouble lambda2[FTT_DIMENSION];  gdouble dt;  GfsVariable * rhoc, * metric;  GfsFunction * alpha;  GfsDomain * domain;}`

d is a GfsSourceDiffusion, dt is the timestep, the GfsVariable rhoc is the mass, metric is the implicit metric term, the GfsFunction alpha is the inverse of the density and domain is the considered GfsDomain.

### FttCell

`struct {  /*<public>*/  guint flags;  gpointer data;   /*<private>*/  struct _FttOct * parent, * children;}`

children and parent are the two FttOcts associated with the FttCell.

### FttCellChildren

`struct {  FttCell * c[FTT_CELLS];};`

The children of the considered FttCell are stored in c (4 in 2D and 8 in 3D).

### FttCellFace

See FttDirection.

### FttCellFlags

`typedef enum {  FTT_FLAG_ID = 7,  FTT_FLAG_DESTROYED = 1 << 3,  FTT_FLAG_LEAF = 1 << 4, /* used only for I/O operations */  FTT_FLAG_TRAVERSED = FTT_FLAG_LEAF, /* used for face traversal */  FTT_FLAG_USER = 5 /* user flags start here */}`

### FttCellNeighbors

`struct {  /* right, left, top, bottom, front, back */  FttCell * c[FTT_NEIGHBORS];}`

c is the array containing the neighbors of a considered FttCell.