8.3
general 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-2024 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#define CS_BAD_CELL_TO_REGULARIZE (1 << 6)
57
58/*=============================================================================
59 * Public function prototypes
60 *============================================================================*/
61
62/*----------------------------------------------------------------------------
63 * Define which cell quality indicators are used and when.
64 *
65 * Note: we assume that if a given criterion is computed at each time
66 * step, it is also computed at initialization, but for visualization,
67 * it is either one or the other, as visualization formats and tools
68 * may not always accept both a fixed and time-varying instance of a
69 * given variable.
70 *
71 * parameters:
72 * type_flag_mask <-- criterion type mask (0 for all)
73 * compute <-- 0: never compute;
74 * 1: compute at initialization;
75 * 2: compute at each time step
76 * visualize <-- 0: never visualize
77 * 1: visualize at initialization;
78 * 2: visualize at each time step
79 *----------------------------------------------------------------------------*/
80
81void
82cs_mesh_bad_cells_set_options(int type_flag_mask,
83 int compute,
84 int visualize);
85
86/*----------------------------------------------------------------------------
87 * Indicate which cell quality indicators are used and when.
88 *
89 * Each array is optional, and returns 2 flags; the first flag is used at
90 * initialization, the second one at each time step.
91 *
92 * A flag is a mask to be compared using an "and" (&) operation with a given
93 * criteria type mask (CS_BAD_CELL_ORTHO_NORM, CS_BAD_CELL_OFFSET, ...).
94 *
95 * parameters:
96 * compute --> computation mask (initialization, per time step), or NULL
97 * visualize --> visualization mask (initialization, per time step), or NULL
98 *----------------------------------------------------------------------------*/
99
100void
101cs_mesh_bad_cells_get_options(int compute[2],
102 int visualize[2]);
103
104/*----------------------------------------------------------------------------
105 * Compute bad cell quality indicators.
106 *
107 * parameters:
108 * mesh <-- pointer to a mesh structure.
109 * mesh_quantities <-> pointer to a mesh quantities structures.
110 *----------------------------------------------------------------------------*/
111
112void
114 cs_mesh_quantities_t *mesh_quantities);
115
116/*----------------------------------------------------------------------------
117 * Post-process bad cell quality indicators.
118 *
119 * parameters:
120 * mesh <-- pointer to a mesh structure.
121 * mesh_quantities <-- pointer to a mesh quantities structures.
122 *----------------------------------------------------------------------------*/
123
124void
126 const cs_mesh_quantities_t *mesh_quantities);
127
128/*----------------------------------------------------------------------------*/
129
131
132#endif /* __CS_MESH_BAD_CELLS_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:542
#define END_C_DECLS
Definition: cs_defs.h:543
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.cpp:794
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.cpp:822
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.cpp:1122
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.cpp:742
Definition: mesh.f90:26
Definition: cs_mesh_quantities.h:92
Definition: cs_mesh.h:85