8.3
general documentation
cs_turbomachinery.h
Go to the documentation of this file.
1#ifndef __CS_TURBOMACHINERY_H__
2#define __CS_TURBOMACHINERY_H__
3
4/*============================================================================
5 * Turbomachinery modeling features.
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 * Standard C library headers
32 *----------------------------------------------------------------------------*/
33
34#include "cs_defs.h"
35
36/*----------------------------------------------------------------------------
37 * Local headers
38 *----------------------------------------------------------------------------*/
39
40#include "cs_restart.h"
41
42/*----------------------------------------------------------------------------*/
43
45
46/*=============================================================================
47 * Local Type Definitions
48 *============================================================================*/
49
50/*----------------------------------------------------------------------------
51 * Local Structure Definitions
52 *----------------------------------------------------------------------------*/
53
54/* Turbomachinery model type */
55
56typedef enum {
57
58 CS_TURBOMACHINERY_NONE, /* No turbomachinery modeling */
59 CS_TURBOMACHINERY_FROZEN, /* Frozen rotor model */
60 CS_TURBOMACHINERY_TRANSIENT /* full transient simulation */
61
63
64/*============================================================================
65 * Static global variables
66 *============================================================================*/
67
68/*============================================================================
69 * Public function prototypes
70 *============================================================================*/
71
72/*----------------------------------------------------------------------------
73 * Define rotor/stator model.
74 *----------------------------------------------------------------------------*/
75
76void
78
79/*----------------------------------------------------------------------------
80 * return rotor/stator model.
81 *----------------------------------------------------------------------------*/
82
85
86/*----------------------------------------------------------------------------*/
94/*----------------------------------------------------------------------------*/
95
96int
98
99/*----------------------------------------------------------------------------
100 * Define a rotor by its axis and cell selection criteria.
101 *
102 * parameters:
103 * cell_criteria <-- cell selection criteria string
104 * rotation_velocity <-- rotation velocity, in radians/second
105 * rotation_axis <-- rotation axis vector
106 * rotation_invariant <-- rotation invariant point
107 *----------------------------------------------------------------------------*/
108
109void
110cs_turbomachinery_add_rotor(const char *cell_criteria,
111 double rotation_velocity,
112 const double rotation_axis[3],
113 const double rotation_invariant[3]);
114
115/*----------------------------------------------------------------------------
116 * Add a cs_join_t structure to the list of rotor/stator joinings.
117 *
118 * parameters:
119 * sel_criteria <-- boundary face selection criteria
120 * fraction <-- value of the fraction parameter
121 * plane <-- value of the plane parameter
122 * verbosity <-- level of verbosity required
123 * visualization <-- level of visualization required
124 *
125 * returns:
126 * number (1 to n) associated with new joining
127 *----------------------------------------------------------------------------*/
128
129int
130cs_turbomachinery_join_add(const char *sel_criteria,
131 float fraction,
132 float plane,
133 int verbosity,
134 int visualization);
135
136/*----------------------------------------------------------------------------
137 * \brief Add a boundary coupling to the list of rotor/stator couplings.
138 *
139 * parameters:
140 * sel_criteria <-- boundary face selection criteria
141 * tolerance <-- value of the search tolerance
142 * verbosity <-- level of verbosity required
143 *
144 * returns:
145 * number (1 to n) associated with new coupling
146 *----------------------------------------------------------------------------*/
147
148int
149cs_turbomachinery_coupling_add(const char *sel_criteria,
150 float tolerance,
151 int verbosity);
152
153/*----------------------------------------------------------------------------
154 * Definitions for turbomachinery computation.
155 *----------------------------------------------------------------------------*/
156
157void
159
160/*----------------------------------------------------------------------------
161 * Initializations for turbomachinery computation
162 *
163 * Note: this function should be called after the mesh is built,
164 * but before cs_post_init_meshes() so that postprocessing meshes are
165 * updated correctly in the transient case.
166 *----------------------------------------------------------------------------*/
167
168void
170
171/*----------------------------------------------------------------------------
172 * Free turbomachinery info
173 *----------------------------------------------------------------------------*/
174
175void
177
178/*----------------------------------------------------------------------------
179 * Update mesh for unsteady rotor/stator computation
180 *
181 * parameters:
182 * t_elapsed --> elapsed computation time
183 *----------------------------------------------------------------------------*/
184
185void
186cs_turbomachinery_update_mesh(double *t_elapsed);
187
188/*----------------------------------------------------------------------------
189 * Update mesh for unsteady rotor/stator computation in case of restart.
190 *
191 * Reads mesh from checkpoint when available.
192 *----------------------------------------------------------------------------*/
193
194void
196
197/*----------------------------------------------------------------------------
198 * Reinitialize interior face-based fields.
199 *----------------------------------------------------------------------------*/
200
201void
203
204/*----------------------------------------------------------------------------
205 * Resize cell-based fields.
206 *
207 * This function only handles fields owning their values.
208 *----------------------------------------------------------------------------*/
209
210void
212
213/*----------------------------------------------------------------------------
214 * Compute rotation matrix
215 *
216 * parameters:
217 * rotor_num <-- rotor number (1 to n numbering)
218 * theta <-- rotation angle, in radians
219 * matrix --> resulting rotation matrix
220 *----------------------------------------------------------------------------*/
221
222void
224 double theta,
225 cs_real_t matrix[3][4]);
226
227/*----------------------------------------------------------------------------
228 * Return number of rotors.
229 *
230 * Note that the number of associated rotations is n_rotors + 1, as the
231 * first rotation id is reserved for the fixed portion of the domain.
232 *
233 * return:
234 * number of rotors
235 *----------------------------------------------------------------------------*/
236
237int
239
240/*----------------------------------------------------------------------------
241 * Return cell rotor number.
242 *
243 * Each cell may be associated with a given rotor, or rotation, with 0
244 * indicating that that cell does not rotate.
245 *
246 * returns:
247 * array defining rotor number associated with each cell
248 * (0 for none, 1 to n otherwise)
249 *----------------------------------------------------------------------------*/
250
251const int *
253
254/*----------------------------------------------------------------------------*/
261/*----------------------------------------------------------------------------*/
262
263void
265 cs_real_t **hfltur);
266
267/*----------------------------------------------------------------------------
268 * Return rotation velocity
269 *
270 * parameters:
271 * rotor_num <-- rotor number (1 to n numbering)
272 *----------------------------------------------------------------------------*/
273
274double
276
277/*----------------------------------------------------------------------------*/
284/*----------------------------------------------------------------------------*/
285
286void
288 double omega);
289
290/*----------------------------------------------------------------------------*/
300/*----------------------------------------------------------------------------*/
301
304
305/*----------------------------------------------------------------------------*/
317/*----------------------------------------------------------------------------*/
318
319void
320cs_turbomachinery_set_rotation_retry(int n_max_join_retries,
321 double dt_retry_multiplier);
322
323/*----------------------------------------------------------------------------
324 * Rotation of vector and tensor fields.
325 *
326 * parameters:
327 * dt <-- cell time step values
328 *----------------------------------------------------------------------------*/
329
330void
332
333/*----------------------------------------------------------------------------
334 * Compute velocity relative to fixed coordinates at a given point
335 *
336 * Deprecated:
337 * Use cs_rotation_velocity for more consistent naming of this reference
338 * frame velocity.
339 *
340 * parameters:
341 * rotor_num <-- associated rotor number (1 to n numbering)
342 * coords <-- point coordinates
343 * velocity --> velocity relative to fixed coordinates
344 *----------------------------------------------------------------------------*/
345
346void
348 const cs_real_t coords[3],
349 cs_real_t velocity[3]);
350
351/*----------------------------------------------------------------------------*/
359/*----------------------------------------------------------------------------*/
360
361void
363
364/*----------------------------------------------------------------------------*/
372/*----------------------------------------------------------------------------*/
373
374void
376
377/*----------------------------------------------------------------------------*/
382/*----------------------------------------------------------------------------*/
383
384void
386
387/*----------------------------------------------------------------------------*/
388
390
391#endif /* __CS_TURBOMACHINERY_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:542
double cs_real_t
Floating-point value.
Definition: cs_defs.h:342
cs_real_t cs_real_34_t[3][4]
Definition: cs_defs.h:374
#define END_C_DECLS
Definition: cs_defs.h:543
@ dt
Definition: cs_field_pointer.h:65
struct _cs_restart_t cs_restart_t
Definition: cs_restart.h:95
void cs_turbomachinery_relative_velocity(int rotor_num, const cs_real_t coords[3], cs_real_t velocity[3])
Compute velocity relative to fixed coordinates at a given point.
Definition: cs_turbomachinery.cpp:2070
void cs_turbomachinery_finalize(void)
Free turbomachinery structure.
Definition: cs_turbomachinery.cpp:1694
void cs_turbomachinery_define(void)
Definitions for turbomachinery computation.
Definition: cs_turbomachinery.cpp:1596
void cs_turbomachinery_set_rotation_velocity(int rotor_num, double omega)
Set rotation velocity.
Definition: cs_turbomachinery.cpp:1924
void cs_turbomachinery_rotation_matrix(int rotor_num, double theta, cs_real_t matrix[3][4])
Compute rotation matrix.
Definition: cs_turbomachinery.cpp:1831
int cs_turbomachinery_coupling_add(const char *sel_criteria, float tolerance, int verbosity)
Add a boundary coupling to the list of rotor/stator couplings.
Definition: cs_turbomachinery.cpp:1527
const int * cs_turbomachinery_get_cell_rotor_num(void)
Return cell rotor number.
Definition: cs_turbomachinery.cpp:1876
int cs_turbomachinery_join_add(const char *sel_criteria, float fraction, float plane, int verbosity, int visualization)
Add a cs_join_t structure to the list of rotor/stator joinings.
Definition: cs_turbomachinery.cpp:1478
void cs_turbomachinery_restart_write(cs_restart_t *r)
Write turbomachinery metadata to checkpoint file.
Definition: cs_turbomachinery.cpp:2141
int cs_turbomachinery_n_rotors(void)
Return number of rotors.
Definition: cs_turbomachinery.cpp:1853
void cs_turbomachinery_rotate_fields(const cs_real_t dt[])
Rotation of vector and tensor fields.
Definition: cs_turbomachinery.cpp:1995
void cs_turbomachinery_define_functions(void)
Create or access function objects specific to turbomachinery models (relative_pressure,...
Definition: cs_turbomachinery.cpp:2178
void cs_turbomachinery_resize_cell_fields(void)
Resize cell-based fields.
Definition: cs_turbomachinery.cpp:1751
void cs_turbomachinery_set_rotation_retry(int n_max_join_retries, double dt_retry_multiplier)
Set turbomachinery joining retry parameters.
Definition: cs_turbomachinery.cpp:1947
void cs_turbomachinery_restart_mesh(void)
Update mesh for unsteady rotor/stator computation in case of restart.
Definition: cs_turbomachinery.cpp:1575
int cs_turbomachinery_get_n_couplings(void)
Return number of boundary couplings used for rotor/stator model.
Definition: cs_turbomachinery.cpp:1412
void cs_turbomachinery_restart_read(cs_restart_t *r)
Read turbomachinery metadata from restart file.
Definition: cs_turbomachinery.cpp:2095
cs_turbomachinery_model_t cs_turbomachinery_get_model(void)
Return rotor/stator model.
Definition: cs_turbomachinery.cpp:1393
void cs_turbomachinery_reinit_i_face_fields(void)
Reinitialize interior face-based fields.
Definition: cs_turbomachinery.cpp:1728
cs_real_34_t * cs_turbomachinery_get_rotation_matrices(double dt)
Build rotation matrices for a given time interval.
Definition: cs_turbomachinery.cpp:1969
cs_turbomachinery_model_t
Definition: cs_turbomachinery.h:56
@ CS_TURBOMACHINERY_TRANSIENT
Definition: cs_turbomachinery.h:60
@ CS_TURBOMACHINERY_NONE
Definition: cs_turbomachinery.h:58
@ CS_TURBOMACHINERY_FROZEN
Definition: cs_turbomachinery.h:59
void cs_turbomachinery_update_mesh(double *t_elapsed)
Update mesh for unsteady rotor/stator computation.
Definition: cs_turbomachinery.cpp:1561
void cs_turbomachinery_initialize(void)
Initializations for turbomachinery computation.
Definition: cs_turbomachinery.cpp:1628
void cs_turbomachinery_set_model(cs_turbomachinery_model_t model)
Define rotor/stator model.
Definition: cs_turbomachinery.cpp:1372
double cs_turbomachinery_get_rotation_velocity(int rotor_num)
Return rotation velocity.
Definition: cs_turbomachinery.cpp:1907
void cs_turbomachinery_get_wall_bc_coeffs(cs_real_t **coftur, cs_real_t **hfltur)
Get arrays associated to wall BC update.
Definition: cs_turbomachinery.cpp:1891
void cs_turbomachinery_add_rotor(const char *cell_criteria, double rotation_velocity, const double rotation_axis[3], const double rotation_invariant[3])
Define a rotor by its axis and cell selection criteria.
Definition: cs_turbomachinery.cpp:1434
double precision, dimension(:,:,:), allocatable theta
Definition: atimbr.f90:122