75 lines
2.9 KiB
C
75 lines
2.9 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;
|
|
|
|
} 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_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
|
|
|