1 #ifndef __CS_VOLUME_MASS_INJECTION_H__
2 #define __CS_VOLUME_MASS_INJECTION_H__
3 
4 /*============================================================================
5  * Mass source terms computation.
6  *============================================================================*/
7 
8 /*
9   This file is part of Code_Saturne, a general-purpose CFD tool.
10 
11   Copyright (C) 1998-2021 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  *  Local headers
30  *----------------------------------------------------------------------------*/
31 
32 #include "cs_base.h"
33 
34 /*----------------------------------------------------------------------------*/
35 
36 BEGIN_C_DECLS
37 
38 /*============================================================================
39  * Type definitions
40  *============================================================================*/
41 
42 /*=============================================================================
43  * Public function prototypes
44  *============================================================================*/
45 
46 /*----------------------------------------------------------------------------*/
47 /*!
48  * \brief Flag volume zones with the appropriate
49  *        CS_VOLUME_ZONE_MASS_SOURCE_TERM flag when at least one volume
50  *        mass injection on that zone is present.
51  *
52  * This is necessary for the reverse zone indexing required by the legacy code
53  * to function with defintions that are partially unrolled an not purely
54  * zone-based.
55  */
56 /*----------------------------------------------------------------------------*/
57 
58 void
59 cs_volume_mass_injection_flag_zones(void);
60 
61 /*----------------------------------------------------------------------------*/
62 /*!
63  * \brief Build the list and zone ids of cells with volume mass injection.
64  *
65  * \param[in]   n_cells       number of cells in mass source term zones
66  * \param[out]  cell_num      numbers (1-based) cells in mass source term zones
67  * \param[out]  cell_zone_id  associated zone ids
68  */
69 /*----------------------------------------------------------------------------*/
70 
71 void
72 cs_volume_mass_injection_build_lists(cs_lnum_t   n_cells,
73                                      cs_lnum_t   cell_num[],
74                                      int         cell_zone_id[]);
75 
76 /*----------------------------------------------------------------------------*/
77 /*!
78  * \brief Evaluate contributions to volume mass injection.
79  *
80  * \param[in]     nvar          total number of variables
81  * \param[in]     ncesmp        number of cells with mass source term
82  * \param[in]     itypsm        mass source type for the working variable
83  *                              size: [nvar][ncesmp]
84  * \param[in]     smacel        values of the variables associated to the
85  *                              mass source (for the pressure variable,
86  *                              smacel is the mass flux)
87  *                              size: [nvar][ncesmp]
88  */
89 /*----------------------------------------------------------------------------*/
90 
91 void
92 cs_volume_mass_injection_eval(int        nvar,
93                               cs_lnum_t  ncesmp,
94                               int        itypsm[],
95                               cs_real_t  smacel[]);
96 
97 /*----------------------------------------------------------------------------*/
98 /*!
99  * \brief Return pointers to the mass source term arrays.
100  *
101  * \param[in]   f         pointer to associated field
102  * \param[out]  ncesmp    number of cells with mass source terms
103  * \param[out]  icetsm    pointet to source mass cells list (1-based numbering)
104  * \param[out]  itpsmp    mass source type for the working variable
105  *                              (see \ref cs_user_mass_source_terms)
106  * \param[out]  s_type    mass source types (0: ambient value, 1: s_val value)
107  * \param[out]  smcelp    pointer to mass source values
108  * \param[out]  gamma     pointer to flow mass value
109  */
110 /*----------------------------------------------------------------------------*/
111 
112 void
113 cs_volume_mass_injection_get_arrays(const cs_field_t  *f,
114                                     cs_lnum_t         *ncesmp,
115                                     cs_lnum_t         **icetsm,
116                                     int               **itpsmp,
117                                     cs_real_t         **smcelp,
118                                     cs_real_t         **gamma);
119 
120 /*----------------------------------------------------------------------------*/
121 
122 END_C_DECLS
123 
124 #endif /* __CS_VOLUME_MASS_INJECTION_H__ */
125