hypre/struct_mv/struct_grid.h
castilla 97686e91fe ta Structure/Function: struct_grid
Changes: added  int  *num_ghost ==  to keep track of the ghost layers
                int  ghlocal size == local size when ghosts are included
		and the macros to access these variables
Files = struct_mv.h struct_grid.h
Reason = to keep track of ghosts and the ghost local size of the struct grid

Module: struct_mv
Data Structure/Function A
Changes: added prototypes to the new functions
Reason:
Files: struct_mv.h
2002-12-13 04:50:08 +00:00

83 lines
3.3 KiB
C

/*BHEADER**********************************************************************
* (c) 1997 The Regents of the University of California
*
* See the file COPYRIGHT_and_DISCLAIMER for a complete copyright
* notice, contact person, and disclaimer.
*
* $Revision$
*********************************************************************EHEADER*/
/******************************************************************************
*
* Header info for the hypre_StructGrid structures
*
*****************************************************************************/
#ifndef hypre_STRUCT_GRID_HEADER
#define hypre_STRUCT_GRID_HEADER
/*--------------------------------------------------------------------------
* hypre_StructGrid:
*--------------------------------------------------------------------------*/
typedef struct hypre_StructGrid_struct
{
MPI_Comm comm;
int dim; /* Number of grid dimensions */
hypre_BoxArray *boxes; /* Array of boxes in this process */
int *ids; /* Unique IDs for boxes */
hypre_BoxNeighbors *neighbors; /* Neighbors of boxes */
int max_distance; /* Neighborhood size */
hypre_Box *bounding_box; /* Bounding box around grid */
int local_size; /* Number of grid points locally */
int global_size; /* Total number of grid points */
hypre_Index periodic; /* Indicates if grid is periodic */
int ref_count;
/* GEC0902 additions for ghost expansion of boxes */
int ghlocal_size; /* Number of vars in box including ghosts */
int num_ghost[6]; /* ghost layer size for each box */
} hypre_StructGrid;
/*--------------------------------------------------------------------------
* Accessor macros: hypre_StructGrid
*--------------------------------------------------------------------------*/
#define hypre_StructGridComm(grid) ((grid) -> comm)
#define hypre_StructGridDim(grid) ((grid) -> dim)
#define hypre_StructGridBoxes(grid) ((grid) -> boxes)
#define hypre_StructGridIDs(grid) ((grid) -> ids)
#define hypre_StructGridNeighbors(grid) ((grid) -> neighbors)
#define hypre_StructGridMaxDistance(grid) ((grid) -> max_distance)
#define hypre_StructGridBoundingBox(grid) ((grid) -> bounding_box)
#define hypre_StructGridLocalSize(grid) ((grid) -> local_size)
#define hypre_StructGridGlobalSize(grid) ((grid) -> global_size)
#define hypre_StructGridPeriodic(grid) ((grid) -> periodic)
#define hypre_StructGridRefCount(grid) ((grid) -> ref_count)
#define hypre_StructGridGhlocalSize(grid) ((grid) -> ghlocal_size)
#define hypre_StructGridNumGhost(grid) ((grid) -> num_ghost)
#define hypre_StructGridBox(grid, i) \
(hypre_BoxArrayBox(hypre_StructGridBoxes(grid), i))
#define hypre_StructGridNumBoxes(grid) \
(hypre_BoxArraySize(hypre_StructGridBoxes(grid)))
/*--------------------------------------------------------------------------
* Looping macros:
*--------------------------------------------------------------------------*/
#define hypre_ForStructGridBoxI(i, grid) \
hypre_ForBoxI(i, hypre_StructGridBoxes(grid))
#endif