8.0
general documentation
Loading...
Searching...
No Matches
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-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#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/*----------------------------------------------------------------------------
87 * Define a rotor by its axis and cell selection criteria.
88 *
89 * parameters:
90 * cell_criteria <-- cell selection criteria string
91 * rotation_velocity <-- rotation velocity, in radians/second
92 * rotation_axis <-- rotation axis vector
93 * rotation_invariant <-- rotation invariant point
94 *----------------------------------------------------------------------------*/
95
96void
97cs_turbomachinery_add_rotor(const char *cell_criteria,
98 double rotation_velocity,
99 const double rotation_axis[3],
100 const double rotation_invariant[3]);
101
102/*----------------------------------------------------------------------------
103 * Add a cs_join_t structure to the list of rotor/stator joinings.
104 *
105 * parameters:
106 * sel_criteria <-- boundary face selection criteria
107 * fraction <-- value of the fraction parameter
108 * plane <-- value of the plane parameter
109 * verbosity <-- level of verbosity required
110 * visualization <-- level of visualization required
111 *
112 * returns:
113 * number (1 to n) associated with new joining
114 *----------------------------------------------------------------------------*/
115
116int
117cs_turbomachinery_join_add(const char *sel_criteria,
118 float fraction,
119 float plane,
120 int verbosity,
121 int visualization);
122
123/*----------------------------------------------------------------------------
124 * \brief Add a boundary coupling to the list of rotor/stator couplings.
125 *
126 * parameters:
127 * sel_criteria <-- boundary face selection criteria
128 * tolerance <-- value of the search tolerance
129 * verbosity <-- level of verbosity required
130 *
131 * returns:
132 * number (1 to n) associated with new coupling
133 *----------------------------------------------------------------------------*/
134
135int
136cs_turbomachinery_coupling_add(const char *sel_criteria,
137 float tolerance,
138 int verbosity);
139
140/*----------------------------------------------------------------------------
141 * Definitions for turbomachinery computation.
142 *----------------------------------------------------------------------------*/
143
144void
146
147/*----------------------------------------------------------------------------
148 * Initializations for turbomachinery computation
149 *
150 * Note: this function should be called after the mesh is built,
151 * but before cs_post_init_meshes() so that postprocessing meshes are
152 * updated correctly in the transient case.
153 *----------------------------------------------------------------------------*/
154
155void
157
158/*----------------------------------------------------------------------------
159 * Free turbomachinery info
160 *----------------------------------------------------------------------------*/
161
162void
164
165/*----------------------------------------------------------------------------
166 * Update mesh for unsteady rotor/stator computation
167 *
168 * parameters:
169 * t_elapsed --> elapsed computation time
170 *----------------------------------------------------------------------------*/
171
172void
173cs_turbomachinery_update_mesh(double *t_elapsed);
174
175/*----------------------------------------------------------------------------
176 * Update mesh for unsteady rotor/stator computation in case of restart.
177 *
178 * Reads mesh from checkpoint when available.
179 *----------------------------------------------------------------------------*/
180
181void
183
184/*----------------------------------------------------------------------------
185 * Reinitialize interior face-based fields.
186 *----------------------------------------------------------------------------*/
187
188void
190
191/*----------------------------------------------------------------------------
192 * Resize cell-based fields.
193 *
194 * This function only handles fields owning their values.
195 *----------------------------------------------------------------------------*/
196
197void
199
200/*----------------------------------------------------------------------------
201 * Compute rotation matrix
202 *
203 * parameters:
204 * rotor_num <-- rotor number (1 to n numbering)
205 * theta <-- rotation angle, in radians
206 * matrix --> resulting rotation matrix
207 *----------------------------------------------------------------------------*/
208
209void
211 double theta,
212 cs_real_t matrix[3][4]);
213
214/*----------------------------------------------------------------------------
215 * Return number of rotors.
216 *
217 * Note that the number of associated rotations is n_rotors + 1, as the
218 * first rotation id is reserved for the fixed portion of the domain.
219 *
220 * return:
221 * number of rotors
222 *----------------------------------------------------------------------------*/
223
224int
226
227/*----------------------------------------------------------------------------
228 * Return cell rotor number.
229 *
230 * Each cell may be associated with a given rotor, or rotation, with 0
231 * indicating that that cell does not rotate.
232 *
233 * returns:
234 * array defining rotor number associated with each cell
235 * (0 for none, 1 to n otherwise)
236 *----------------------------------------------------------------------------*/
237
238const int *
240
241/*----------------------------------------------------------------------------
242 * Return rotation velocity
243 *
244 * parameters:
245 * rotor_num <-- rotor number (1 to n numbering)
246 *----------------------------------------------------------------------------*/
247
248double
250
251/*----------------------------------------------------------------------------*/
258/*----------------------------------------------------------------------------*/
259
260void
262 double omega);
263
264/*----------------------------------------------------------------------------*/
274/*----------------------------------------------------------------------------*/
275
278
279/*----------------------------------------------------------------------------*/
291/*----------------------------------------------------------------------------*/
292
293void
294cs_turbomachinery_set_rotation_retry(int n_max_join_retries,
295 double dt_retry_multiplier);
296
297/*----------------------------------------------------------------------------
298 * Rotation of vector and tensor fields.
299 *
300 * parameters:
301 * dt <-- cell time step values
302 *----------------------------------------------------------------------------*/
303
304void
306
307/*----------------------------------------------------------------------------
308 * Compute velocity relative to fixed coordinates at a given point
309 *
310 * Deprecated:
311 * Use cs_rotation_velocity for more consistent naming of this reference
312 * frame velocity.
313 *
314 * parameters:
315 * rotor_num <-- associated rotor number (1 to n numbering)
316 * coords <-- point coordinates
317 * velocity --> velocity relative to fixed coordinates
318 *----------------------------------------------------------------------------*/
319
320void
322 const cs_real_t coords[3],
323 cs_real_t velocity[3]);
324
325/*----------------------------------------------------------------------------*/
333/*----------------------------------------------------------------------------*/
334
335void
337
338/*----------------------------------------------------------------------------*/
346/*----------------------------------------------------------------------------*/
347
348void
350
351/*----------------------------------------------------------------------------*/
356/*----------------------------------------------------------------------------*/
357
358void
360
361/*----------------------------------------------------------------------------*/
362
364
365#endif /* __CS_TURBOMACHINERY_H__ */
366
#define BEGIN_C_DECLS
Definition cs_defs.h:509
double cs_real_t
Floating-point value.
Definition cs_defs.h:319
cs_real_t cs_real_34_t[3][4]
Definition cs_defs.h:347
#define END_C_DECLS
Definition cs_defs.h:510
@ dt
Definition cs_field_pointer.h:65
void matrix(const int *iconvp, const int *idiffp, const int *ndircp, const int *isym, const cs_real_t *thetap, const int *imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t da[], cs_real_t xa[])
Definition cs_matrix_building.c:111
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.c:2011
void cs_turbomachinery_finalize(void)
Free turbomachinery structure.
Definition cs_turbomachinery.c:1679
void cs_turbomachinery_define(void)
Definitions for turbomachinery computation.
Definition cs_turbomachinery.c:1585
void cs_turbomachinery_set_rotation_velocity(int rotor_num, double omega)
Set rotation velocity.
Definition cs_turbomachinery.c:1865
void cs_turbomachinery_rotation_matrix(int rotor_num, double theta, cs_real_t matrix[3][4])
Compute rotation matrix.
Definition cs_turbomachinery.c:1789
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.c:1517
const int * cs_turbomachinery_get_cell_rotor_num(void)
Return cell rotor number.
Definition cs_turbomachinery.c:1834
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.c:1468
void cs_turbomachinery_restart_write(cs_restart_t *r)
Write turbomachinery metadata to checkpoint file.
Definition cs_turbomachinery.c:2082
int cs_turbomachinery_n_rotors(void)
Return number of rotors.
Definition cs_turbomachinery.c:1811
void cs_turbomachinery_rotate_fields(const cs_real_t dt[])
Rotation of vector and tensor fields.
Definition cs_turbomachinery.c:1936
void cs_turbomachinery_define_functions(void)
Create or access function objects specific to turbomachinery models (relative_pressure,...
Definition cs_turbomachinery.c:2116
void cs_turbomachinery_resize_cell_fields(void)
Resize cell-based fields.
Definition cs_turbomachinery.c:1733
void cs_turbomachinery_set_rotation_retry(int n_max_join_retries, double dt_retry_multiplier)
Set turbomachinery joining retry parameters.
Definition cs_turbomachinery.c:1888
void cs_turbomachinery_restart_mesh(void)
Update mesh for unsteady rotor/stator computation in case of restart.
Definition cs_turbomachinery.c:1564
void cs_turbomachinery_restart_read(cs_restart_t *r)
Read turbomachinery metadata from restart file.
Definition cs_turbomachinery.c:2036
cs_turbomachinery_model_t cs_turbomachinery_get_model(void)
Return rotor/stator model.
Definition cs_turbomachinery.c:1404
void cs_turbomachinery_reinit_i_face_fields(void)
Reinitialize interior face-based fields.
Definition cs_turbomachinery.c:1710
cs_real_34_t * cs_turbomachinery_get_rotation_matrices(double dt)
Build rotation matrices for a given time interval.
Definition cs_turbomachinery.c:1910
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.c:1550
void cs_turbomachinery_initialize(void)
Initializations for turbomachinery computation.
Definition cs_turbomachinery.c:1617
void cs_turbomachinery_set_model(cs_turbomachinery_model_t model)
Define rotor/stator model.
Definition cs_turbomachinery.c:1383
double cs_turbomachinery_get_rotation_velocity(int rotor_num)
Return rotation velocity.
Definition cs_turbomachinery.c:1848
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.c:1424