programmer's documentation
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-2015 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 
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
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
125  const cs_mesh_quantities_t *mesh_quantities);
126 
127 /*----------------------------------------------------------------------------*/
128 
130 
131 #endif /* __CS_MESH_BAD_CELLS_H__ */
void cs_mesh_bad_cells_set_options(int type_flag_mask, int compute, int visualize)
Define which cell quality indicators are used and when.
Definition: cs_mesh_bad_cells.c:639
#define BEGIN_C_DECLS
Definition: cs_defs.h:429
Definition: cs_mesh.h:62
Definition: cs_mesh_quantities.h:51
void cs_mesh_bad_cells_get_options(int compute[2], int visualize[2])
Indicate which cell quality indicators are used and when.
Definition: cs_mesh_bad_cells.c:691
void cs_mesh_bad_cells_detect(const cs_mesh_t *mesh, cs_mesh_quantities_t *mesh_quantities)
Compute bad cell quality indicators.
Definition: cs_mesh_bad_cells.c:719
#define END_C_DECLS
Definition: cs_defs.h:430
void cs_mesh_bad_cells_postprocess(const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities)
Post-process time-independent bad cell quality indicators.
Definition: cs_mesh_bad_cells.c:986
Definition: mesh.f90:26