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