8.0
general documentation
Loading...
Searching...
No Matches
cs_fan.h
Go to the documentation of this file.
1#ifndef __CS_FAN_H__
2#define __CS_FAN_H__
3
4/*============================================================================
5 * Fan modeling through velocity source terms.
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2023 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 * Standard C library headers
32 *----------------------------------------------------------------------------*/
33
34/*----------------------------------------------------------------------------
35 * Local headers
36 *----------------------------------------------------------------------------*/
37
38#include "cs_base.h"
39
40#include "cs_mesh.h"
41#include "cs_mesh_quantities.h"
42
43/*----------------------------------------------------------------------------*/
44
46
47/*============================================================================
48 * Structure definition
49 *============================================================================*/
50
51typedef struct _cs_fan_t cs_fan_t;
52
53/*============================================================================
54 * Public function prototypes for Fortran API
55 *============================================================================*/
56
57/*----------------------------------------------------------------------------
58 * Compute the flows through the fans
59 *
60 * Fortran interface:
61 *
62 * subroutine debvtl
63 * *****************
64 *
65 * double precision flumas(*) : <-- : interior faces mass flux
66 * double precision flumab(*) : <-- : boundary faces mass flux
67 * double precision rhofac(*) : <-- : density at cells
68 * double precision rhofab(*) : <-- : density at boundary faces
69 *----------------------------------------------------------------------------*/
70
71void CS_PROCF (debvtl, DEBVTL)
72(
73 cs_real_t flumas[],
74 cs_real_t flumab[],
75 cs_real_t rhofac[],
76 cs_real_t rhofab[]
77);
78
79/*----------------------------------------------------------------------------
80 * Compute the force induced by the fans (needs a previous calculation
81 * of the flows through each fan).
82 *
83 * The induced force is added to the array crvxep (which can have other
84 * contributions).
85 *
86 * Fortran interface:
87 *
88 * subroutine tsvvtl
89 * *****************
90 *
91 * parameters:
92 * crvexp <-> Explicit source term (velocity)
93 *----------------------------------------------------------------------------*/
94
95void CS_PROCF (tsvvtl, TSVVTL)
96(
97 cs_real_3_t crvexp[]
98);
99
100/*============================================================================
101 * Public function prototypes
102 *============================================================================*/
103
104/*----------------------------------------------------------------------------
105 * Fan definition (added to the ones previously defined)
106 *
107 * Fans are handled as explicit momentum source terms at the given location,
108 * based on the fan's axis and diameter.
109 * The fan's pressure characteristic curve is defined by 3 coefficients,
110 * such that:
111 * delta P = C_0 + C_1.flow + C_2.flow^2
112 * An axial torque may also be defined for the 3D model.
113 *
114 * parameters:
115 * fan_dim <-- fan dimension:
116 * 2: pseudo-2D (extruded mesh)
117 * 3: 3D (standard)
118 * mode <-- mode:
119 * 0: fan
120 * 1: wind turbine
121 * inlet_axis_coords <-- intersection coords. of axis and inlet face
122 * outlet_axis_coords <-- intersection coords. od axis and outlet face
123 * fan_radius <-- fan radius
124 * blades_radius <-- blades radius
125 * hub_radius <-- hub radius
126 * curve_coeffs <-- coefficients of degre 0, 1 and 2 of
127 * the pressure drop/flow rate
128 * characteristic curve
129 * axial_torque <-- fan axial torque
130 *----------------------------------------------------------------------------*/
131
132void
133cs_fan_define(int fan_dim,
134 int mode,
135 const cs_real_t inlet_axis_coords[3],
136 const cs_real_t outlet_axis_coords[3],
137 cs_real_t fan_radius,
138 cs_real_t blades_radius,
139 cs_real_t hub_radius,
140 const cs_real_t curve_coeffs[3],
141 cs_real_t axial_torque);
142
143/*----------------------------------------------------------------------------
144 * Destroy the structures associated with fans.
145 *----------------------------------------------------------------------------*/
146
147void
149
150/*----------------------------------------------------------------------------
151 * Return number of fans.
152 *
153 * returns:
154 * number of defined fans
155 *----------------------------------------------------------------------------*/
156
157int
158cs_fan_n_fans(void);
159
160/*----------------------------------------------------------------------------
161 * Log fans definition setup information.
162 *----------------------------------------------------------------------------*/
163
164void
165cs_fan_log_setup(void);
166
167/*----------------------------------------------------------------------------
168 * Log fan information for a given iteration.
169 *----------------------------------------------------------------------------*/
170
171void
173
174/*----------------------------------------------------------------------------
175 * Define the cells belonging to the different fans.
176 *
177 * parameters:
178 * mesh <-- associated mesh structure
179 * mesh_quantities <-- mesh quantities
180 *----------------------------------------------------------------------------*/
181
182void
184 const cs_mesh_quantities_t *mesh_quantities);
185
186/*----------------------------------------------------------------------------
187 * Compute the flows through the fans.
188 *
189 * parameters:
190 * mesh <-- mesh structure
191 * mesh_quantities <-- mesh quantities
192 * i_mass_flux <-- interior faces mass flux
193 * b_mass_flux <-- boundary faces mass flux
194 * c_rho <-- density at cells
195 * b_rho <-- density at boundary faces
196 *----------------------------------------------------------------------------*/
197
198void
200 const cs_mesh_quantities_t *mesh_quantities,
201 const cs_real_t i_mass_flux[],
202 const cs_real_t b_mass_flux[],
203 const cs_real_t c_rho[],
204 const cs_real_t b_rho[]);
205
206/*----------------------------------------------------------------------------
207 * Compute the force induced by the fans (needs a previous calculation
208 * of the flows through each fan).
209 *
210 * The induced force is added to the array CRVXEP (which can have other
211 * other contributions).
212 *
213 * parameters:
214 * mesh_quantities <-- mesh quantities
215 * source_t <-> explicit source term for the velocity
216 *----------------------------------------------------------------------------*/
217
218void
219cs_fan_compute_force(const cs_mesh_quantities_t *mesh_quantities,
220 cs_real_3_t source_t[]);
221
222/*----------------------------------------------------------------------------
223 * Flag the cells belonging to the different fans
224 * (by the fan id, -1 otherwise)
225 *
226 * parameters:
227 * mesh <-- associated mesh structure
228 * cell_fan_id --> indicator by cell
229 *----------------------------------------------------------------------------*/
230
231void
233 int cell_fan_id[]);
234
235/*----------------------------------------------------------------------------
236 * Selection function for cells belonging to fans.
237 *
238 * This function may be used for the definition of postprocessing meshes.
239 *
240 * param
241 * \param[in, out] input pointer to input (unused here)
242 * \param[out] n_cells number of selected cells
243 * \param[out] cell_ids array of selected cell ids (0 to n-1 numbering)
244 */
245/*----------------------------------------------------------------------------*/
246
247void
248cs_fan_cells_select(void *input,
249 cs_lnum_t *n_cells,
250 cs_lnum_t **cell_ids);
251
252/*----------------------------------------------------------------------------*/
253
255
256#endif /* __CS_FAN_H__ */
#define BEGIN_C_DECLS
Definition cs_defs.h:509
double cs_real_t
Floating-point value.
Definition cs_defs.h:319
#define CS_PROCF(x, y)
Definition cs_defs.h:523
#define END_C_DECLS
Definition cs_defs.h:510
int cs_lnum_t
local mesh entity id
Definition cs_defs.h:313
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition cs_defs.h:332
void debvtl(cs_real_t flumas[], cs_real_t flumab[], cs_real_t rho[], cs_real_t rhofab[])
Definition cs_fan.c:157
void tsvvtl(cs_real_3_t crvexp[])
Definition cs_fan.c:189
void cs_fan_compute_force(const cs_mesh_quantities_t *mesh_quantities, cs_real_3_t source_t[])
Compute the force induced by the fans (needs a previous calculation of the flows through each fan).
Definition cs_fan.c:759
void cs_fan_log_setup(void)
Log fans definition setup information.
Definition cs_fan.c:348
struct _cs_fan_t cs_fan_t
Definition cs_fan.h:51
void cs_fan_cells_select(void *input, cs_lnum_t *n_cells, cs_lnum_t **cell_ids)
Selection function for cells belonging to fans.
Definition cs_fan.c:966
void cs_fan_build_all(const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities)
Define the cells belonging to the different fans.
Definition cs_fan.c:430
int cs_fan_n_fans(void)
Return number of fans.
Definition cs_fan.c:336
void cs_fan_compute_flows(const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, const cs_real_t i_mass_flux[], const cs_real_t b_mass_flux[], const cs_real_t c_rho[], const cs_real_t b_rho[])
Compute the flows through the fans.
Definition cs_fan.c:625
void cs_fan_destroy_all(void)
Destroy the structures associated with fans.
Definition cs_fan.c:314
void cs_fan_define(int fan_dim, int mode, const cs_real_t inlet_axis_coords[3], const cs_real_t outlet_axis_coords[3], cs_real_t fan_radius, cs_real_t blades_radius, cs_real_t hub_radius, const cs_real_t curve_coeffs[3], cs_real_t axial_torque)
Fan definition (added to the ones previously defined)
Definition cs_fan.c:231
void cs_fan_log_iteration(void)
Log fan information for a given iteration.
Definition cs_fan.c:394
void cs_fan_flag_cells(const cs_mesh_t *mesh, int cell_fan_id[])
Flag the cells belonging to the different fans (by the fan id, -1 otherwise)
Definition cs_fan.c:918
Definition mesh.f90:26
Definition cs_mesh_quantities.h:92
Definition cs_mesh.h:85