8.3
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-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_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_ONLY = 2 /* Only CDO schemes are used */
102
103/*============================================================================
104 * Global variables
105 *============================================================================*/
106
108
109/*============================================================================
110 * Public function prototypes
111 *============================================================================*/
112
113/*----------------------------------------------------------------------------*/
118/*----------------------------------------------------------------------------*/
119
120void
122
123/*----------------------------------------------------------------------------*/
129/*----------------------------------------------------------------------------*/
130
133
134/*----------------------------------------------------------------------------*/
138/*----------------------------------------------------------------------------*/
139
140void
141cs_param_cdo_log(void);
142
143/*----------------------------------------------------------------------------*/
147/*----------------------------------------------------------------------------*/
148
149void
151
152/*----------------------------------------------------------------------------*/
153
155
156#endif /* __CS_PARAM_CDO_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:542
#define END_C_DECLS
Definition: cs_defs.h:543
void cs_param_cdo_log(void)
Print a welcome message indicating what is the current CDO status.
Definition: cs_param_cdo.cpp:113
cs_param_cdo_mode_t
Definition: cs_param_cdo.h:94
@ CS_PARAM_CDO_MODE_ONLY
Definition: cs_param_cdo.h:98
@ CS_PARAM_CDO_MODE_OFF
Definition: cs_param_cdo.h:96
@ CS_PARAM_CDO_MODE_WITH_FV
Definition: cs_param_cdo.h:97
cs_param_cdo_mode_t cs_glob_param_cdo_mode
void cs_param_cdo_setup_log(void)
Print generic parameters used with CDO/HHO schemes.
Definition: cs_param_cdo.cpp:145
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