9.1
general documentation
cs_param_cdo.h
Go to the documentation of this file.
1#ifndef __CS_PARAM_CDO_H__
2#define __CS_PARAM_CDO_H__
3
4/*============================================================================
5 * High-level metadata related to CDO/HHO schemes
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2025 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 "base/cs_defs.h"
35
36/*----------------------------------------------------------------------------*/
37
39
40/*============================================================================
41 * Macro definitions
42 *============================================================================*/
43
44/* Same mechanism as the one used in PETSC_DEFAULT */
45
46#define CS_CDO_KEEP_DEFAULT -2
47
48/* Specifications for OpenMP loops/sections */
49
50#define CS_CDO_OMP_CHUNK_SIZE 128
51#define CS_CDO_OMP_SCHEDULE schedule(static, CS_CDO_OMP_CHUNK_SIZE)
52#define CS_CDO_OMP_SYNC_MODE 0 /* > 0 --> critical sections otherwise
53 * atomic sections is used */
54
55/* Avoid issues with assert in some OpenMp contructs using gcc 9 */
56
57#if defined(HAVE_OPENMP) && defined(__GNUC__)
58 #if __GNUC__ == 9
59 #define CS_CDO_OMP_ASSERT(e)
60 #else
61 #define CS_CDO_OMP_ASSERT(e) assert(e)
62 #endif
63#else
64 #define CS_CDO_OMP_ASSERT(e) assert(e)
65#endif
66
67/* The following limitation only results from an optimization in the size of
68 the bit mask (can be changed if needed by changing the definition of
69 the type cs_mask_t)
70 Here is the max. number of reaction terms allowed in an equation */
72#define CS_CDO_N_MAX_REACTIONS 8
74#define CS_ALL_FACES 0 /* All faces: interior + border */
75#define CS_BND_FACES 1 /* Boundary faces */
76#define CS_INT_FACES 2 /* Interior faces */
77
78/* HHO specific part:
79 *
80 * Number of DoFs on faces and cells according to the polynomial space
81 */
83#define CS_N_DOFS_FACE_0TH 1
84#define CS_N_DOFS_FACE_1ST 3
85#define CS_N_DOFS_FACE_2ND 6
87#define CS_N_DOFS_CELL_0TH 1
88#define CS_N_DOFS_CELL_1ST 4
89#define CS_N_DOFS_CELL_2ND 10
90
91/*============================================================================
92 * Type definitions
93 *============================================================================*/
95typedef enum {
97 CS_PARAM_CDO_MODE_OFF = -1, /* CDO schemes are not used */
98 CS_PARAM_CDO_MODE_WITH_FV = 1, /* CDO and legacy FV schemes are used */
99 CS_PARAM_CDO_MODE_NS_WITH_FV = 2, /* CDO schemes activated for NSE
100 and legacy FV schemes for
101 other equations */
102 CS_PARAM_CDO_MODE_ONLY = 3 /* Only CDO schemes are used */
105
106/*============================================================================
107 * Global variables
108 *============================================================================*/
109
111
112/*============================================================================
113 * Public function prototypes
114 *============================================================================*/
115
116/*----------------------------------------------------------------------------*/
121/*----------------------------------------------------------------------------*/
122
123void
125
126/*----------------------------------------------------------------------------*/
132/*----------------------------------------------------------------------------*/
133
136
137/*----------------------------------------------------------------------------*/
141/*----------------------------------------------------------------------------*/
142
143void
144cs_param_cdo_log(void);
145
146/*----------------------------------------------------------------------------*/
150/*----------------------------------------------------------------------------*/
151
152void
154
155/*----------------------------------------------------------------------------*/
159/*----------------------------------------------------------------------------*/
160
161bool
163
164/*----------------------------------------------------------------------------*/
168/*----------------------------------------------------------------------------*/
169
170bool
172
173/*----------------------------------------------------------------------------*/
177/*----------------------------------------------------------------------------*/
178
179bool
181
182/*----------------------------------------------------------------------------*/
186/*----------------------------------------------------------------------------*/
187
188bool
190
191/*----------------------------------------------------------------------------*/
195/*----------------------------------------------------------------------------*/
196
197bool
199
200/*----------------------------------------------------------------------------*/
204/*----------------------------------------------------------------------------*/
205
206bool
208
209/*----------------------------------------------------------------------------*/
213/*----------------------------------------------------------------------------*/
214
215bool
217
218/*----------------------------------------------------------------------------*/
219
221
222#endif /* __CS_PARAM_CDO_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:554
#define END_C_DECLS
Definition: cs_defs.h:555
bool cs_param_cdo_has_cdo_only(void)
Tell if CDO is only used.
Definition: cs_param_cdo.cpp:253
bool cs_param_cdo_has_cdo_and_fv(void)
Tell if FVM and CDO are used.
Definition: cs_param_cdo.cpp:236
bool cs_param_cdo_has_cdo(void)
Tell if CDO is used.
Definition: cs_param_cdo.cpp:289
void cs_param_cdo_log(void)
Print a welcome message indicating what is the current CDO status.
Definition: cs_param_cdo.cpp:113
bool cs_param_cdo_has_cdo_main(void)
Tell if CDO is used to solve main equations.
Definition: cs_param_cdo.cpp:219
bool cs_param_cdo_has_fv_only(void)
Tell if FVM is oly used.
Definition: cs_param_cdo.cpp:277
cs_param_cdo_mode_t
Definition: cs_param_cdo.h:94
@ CS_PARAM_CDO_MODE_ONLY
Definition: cs_param_cdo.h:101
@ CS_PARAM_CDO_MODE_OFF
Definition: cs_param_cdo.h:96
@ CS_PARAM_CDO_MODE_NS_WITH_FV
Definition: cs_param_cdo.h:98
@ CS_PARAM_CDO_MODE_WITH_FV
Definition: cs_param_cdo.h:97
cs_param_cdo_mode_t cs_glob_param_cdo_mode
bool cs_param_cdo_has_fv_main(void)
Tell if FVM is used to solve main equations.
Definition: cs_param_cdo.cpp:202
void cs_param_cdo_setup_log(void)
Print generic parameters used with CDO/HHO schemes.
Definition: cs_param_cdo.cpp:153
bool cs_param_cdo_has_NS_with_fv(void)
Tell if CDO is only used.
Definition: cs_param_cdo.cpp:265
cs_param_cdo_mode_t cs_param_cdo_mode_get(void)
Get the mode of activation for the CDO/HHO schemes.
Definition: cs_param_cdo.cpp:101
void cs_param_cdo_mode_set(cs_param_cdo_mode_t mode)
Set the global variable storing the mode of activation to apply to CDO/HHO schemes....
Definition: cs_param_cdo.cpp:87