My Project
UnstructuredGrid.h
Go to the documentation of this file.
1/*
2 Copyright 2010, 2011, 2012 SINTEF ICT, Applied Mathematics.
3
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef OPM_GRID_HEADER_INCLUDED
21#define OPM_GRID_HEADER_INCLUDED
22
23#include <stddef.h>
24#include <stdbool.h>
25
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/*
38---- synopsis of grid.h ----
39
40struct UnstructuredGrid
41{
42 int dimensions;
43 int number_of_cells;
44 int number_of_faces;
45 int number_of_nodes;
46 int *face_nodes;
47 int *face_nodepos;
48 int *face_cells;
49 int *cell_faces;
50 int *cell_facepos;
51 double *node_coordinates;
52 double *face_centroids;
53 double *face_areas;
54 double *face_normals;
55 double *cell_centroids;
56 double *cell_volumes;
57 int *global_cell;
58 int cartdims[3];
59 int *cell_facetag;
60};
61
62void destroy_grid(struct UnstructuredGrid *g);
63
64struct UnstructuredGrid *
65create_grid_empty(void);
66
67struct UnstructuredGrid *
68allocate_grid(size_t ndims ,
69 size_t ncells ,
70 size_t nfaces ,
71 size_t nfacenodes,
72 size_t ncellfaces,
73 size_t nnodes );
74
75struct UnstructuredGrid *
76read_grid(const char *fname);
77
78 ---- end of synopsis of grid.h ----
79*/
80
99{
107
114
139
153
161
173 double *face_areas;
185
198
199
215
227 int cartdims[3];
245
246
247 /*
248 This vector is retained to be able to construct an
249 EclipseGrid representation of the Grid. If the grid
250 processor actually modifies the elements of the zcorn
251 vector from the input the modified version is stored here;
252 otherwise we just use the default.
253 */
254 double * zcorn;
255};
256
264void destroy_grid(struct UnstructuredGrid *g);
265
275struct UnstructuredGrid *
277
294struct UnstructuredGrid *
295allocate_grid(size_t ndims ,
296 size_t ncells ,
297 size_t nfaces ,
298 size_t nfacenodes,
299 size_t ncellfaces,
300 size_t nnodes );
301
302
307void
309 const double * zcorn);
310
311
319struct UnstructuredGrid *
320read_grid(const char *fname);
321
322
323
324
325bool
326grid_equal(const struct UnstructuredGrid * grid1 , const struct UnstructuredGrid * grid2);
327
328#ifdef __cplusplus
329}
330#endif
331
332#endif /* OPM_GRID_HEADER_INCLUDED */
void attach_zcorn_copy(struct UnstructuredGrid *G, const double *zcorn)
Will allocate storage internally in the grid object to hold a copy of the zcorn data supplied in the ...
Definition: UnstructuredGrid.c:75
struct UnstructuredGrid * create_grid_empty(void)
Allocate and initialise an empty UnstructuredGrid.
Definition: UnstructuredGrid.c:60
void destroy_grid(struct UnstructuredGrid *g)
Destroy and deallocate an UnstructuredGrid and all its data.
Definition: UnstructuredGrid.c:32
struct UnstructuredGrid * read_grid(const char *fname)
Import a grid from a character representation stored in file.
Definition: UnstructuredGrid.c:526
struct UnstructuredGrid * allocate_grid(size_t ndims, size_t ncells, size_t nfaces, size_t nfacenodes, size_t ncellfaces, size_t nnodes)
Allocate and initialise an UnstructuredGrid where pointers are set to location with correct size.
Definition: UnstructuredGrid.c:87
Data structure for an unstructured grid, unstructured meaning that any cell may have an arbitrary num...
Definition: UnstructuredGrid.h:99
int * face_nodes
Contains for each face, the indices of its adjacent nodes.
Definition: UnstructuredGrid.h:121
int * face_nodepos
For a face f, face_nodepos[f] contains the starting index for f's nodes in the face_nodes array.
Definition: UnstructuredGrid.h:127
int number_of_cells
The number of cells in the grid.
Definition: UnstructuredGrid.h:109
double * face_areas
Exact or approximate face areas.
Definition: UnstructuredGrid.h:173
int * cell_faces
Contains for each cell, the indices of its adjacent faces.
Definition: UnstructuredGrid.h:146
int number_of_faces
The number of faces in the grid.
Definition: UnstructuredGrid.h:111
double * cell_centroids
Exact or approximate cell centroids, stored consecutively for each cell.
Definition: UnstructuredGrid.h:192
int * cell_facepos
For a cell c, cell_facepos[c] contains the starting index for c's faces in the cell_faces array.
Definition: UnstructuredGrid.h:152
int * cell_facetag
If non-null, this array contains a number for cell-face adjacency indicating the face's position with...
Definition: UnstructuredGrid.h:244
double * cell_volumes
Exact or approximate cell volumes.
Definition: UnstructuredGrid.h:197
int * face_cells
For a face f, face_cells[2*f] and face_cells[2*f + 1] contain the cell indices of the cells adjacent ...
Definition: UnstructuredGrid.h:138
double * face_centroids
Exact or approximate face centroids, stored consecutively for each face.
Definition: UnstructuredGrid.h:168
int number_of_nodes
The number of nodes in the grid.
Definition: UnstructuredGrid.h:113
int dimensions
The topological and geometrical dimensionality of the grid.
Definition: UnstructuredGrid.h:106
int cartdims[3]
Contains the size of the logical cartesian structure (if any) of the grid.
Definition: UnstructuredGrid.h:227
int * global_cell
If non-null, this array contains the logical cartesian indices (in a lexicographic ordering) of each ...
Definition: UnstructuredGrid.h:214
double * face_normals
Exact or approximate face normals, stored consecutively for each face.
Definition: UnstructuredGrid.h:184
double * node_coordinates
Node coordinates, stored consecutively for each node.
Definition: UnstructuredGrid.h:160