src/mesh/cs_mesh_bad_cells.h Source File

| programmer's documentation

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cs_mesh_bad_cells.h
Go to the documentation of this file.
1 #ifndef __CS_MESH_BAD_CELLS_H__
2 #define __CS_MESH_BAD_CELLS_H__
3
4 /*============================================================================
5 * Detect bad cells within meshes.
6 *============================================================================*/
7
8 /*
9 This file is part of Code_Saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2013 EDF S.A.
12
13 This program is free software; you can redistribute it and/or modify it under
14 the terms of the GNU General Public License as published by the Free Software
15 Foundation; either version 2 of the License, or (at your option) any later
16 version.
17
18 This program is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21 details.
22
23 You should have received a copy of the GNU General Public License along with
24 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25 Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 */
27
28 /*----------------------------------------------------------------------------*/
29
30 /*----------------------------------------------------------------------------
31 * Local headers
32 *----------------------------------------------------------------------------*/
33
34 #include "cs_base.h"
35 #include "cs_mesh.h"
36 #include "cs_mesh_quantities.h"
37
38 /*----------------------------------------------------------------------------*/
39
40 BEGIN_C_DECLS
41
42 /*============================================================================
43 * Macro definitions
44 *============================================================================*/
45
46 /*
47 * Detection criteria type
48 */
49
50 #define CS_BAD_CELL_ORTHO_NORM (1 << 0)
51 #define CS_BAD_CELL_OFFSET (1 << 1)
52 #define CS_BAD_CELL_LSQ_GRAD (1 << 2)
53 #define CS_BAD_CELL_RATIO (1 << 3)
54 #define CS_BAD_CELL_GUILT (1 << 4)
55 #define CS_BAD_CELL_USER (1 << 5)
56
57 /*=============================================================================
58 * Public function prototypes
59 *============================================================================*/
60
61 /*----------------------------------------------------------------------------
62 * Define which cell quality indicators are used and when.
63 *
64 * Note: we assume that if a given criterion is computed at each time
65 * step, it is also computed at initialization, but for visualization,
66 * it is either one or the other, as visualization formats and tools
67 * may not always accept both a fixed and time-varying instance of a
68 * given variable.
69 *
70 * parameters:
71 * type_flag_mask <-- criterion type mask (0 for all)
72 * compute <-- 0: never compute;
73 * 1: compute at initialization;
74 * 2: compute at each time step
75 * visualize <-- 0: never visualize
76 * 1: visualize at initialization;
77 * 2: visualize at each time step
78 *----------------------------------------------------------------------------*/
79
80 void
81 cs_mesh_bad_cells_set_options(int type_flag_mask,
82 int compute,
83 int visualize);
84
85 /*----------------------------------------------------------------------------
86 * Indicate which cell quality indicators are used and when.
87 *
88 * Each array is optional, and returns 2 flags; the first flag is used at
89 * initialization, the second one at each time step.
90 *
91 * A flag is a mask to be compared using an "and" (&) operation with a given
92 * criteria type mask (CS_BAD_CELL_ORTHO_NORM, CS_BAD_CELL_OFFSET, ...).
93 *
94 * parameters:
95 * compute --> computation mask (initialization, per time step), or NULL
96 * visualize --> visualization mask (initialization, per time step), or NULL
97 *----------------------------------------------------------------------------*/
98
99 void
100 cs_mesh_bad_cells_get_options(int compute[2],
101 int visualize[2]);
102
103 /*----------------------------------------------------------------------------
104 * Compute bad cell quality indicators.
105 *
106 * parameters:
107 * mesh <-- pointer to a mesh structure.
108 * mesh_quantities <-> pointer to a mesh quantities structures.
109 *----------------------------------------------------------------------------*/
110
111 void
112 cs_mesh_bad_cells_detect(const cs_mesh_t *mesh,
113 cs_mesh_quantities_t *mesh_quantities);
114
115 /*----------------------------------------------------------------------------
116 * Post-process bad cell quality indicators.
117 *
118 * parameters:
119 * mesh <-- pointer to a mesh structure.
120 * mesh_quantities <-- pointer to a mesh quantities structures.
121 *----------------------------------------------------------------------------*/
122
123 void
124 cs_mesh_bad_cells_postprocess(const cs_mesh_t *mesh,
125 const cs_mesh_quantities_t *mesh_quantities);
126
127 /*----------------------------------------------------------------------------*/
128
129 END_C_DECLS
130
131 #endif /* __CS_MESH_BAD_CELLS_H__ */