8.1
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-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 
56 typedef 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 
76 void
78 
79 /*----------------------------------------------------------------------------
80  * return rotor/stator model.
81  *----------------------------------------------------------------------------*/
82 
85 
86 /*----------------------------------------------------------------------------*/
94 /*----------------------------------------------------------------------------*/
95 
96 int
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 
109 void
110 cs_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 
129 int
130 cs_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 
148 int
149 cs_turbomachinery_coupling_add(const char *sel_criteria,
150  float tolerance,
151  int verbosity);
152 
153 /*----------------------------------------------------------------------------
154  * Definitions for turbomachinery computation.
155  *----------------------------------------------------------------------------*/
156 
157 void
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 
168 void
170 
171 /*----------------------------------------------------------------------------
172  * Free turbomachinery info
173  *----------------------------------------------------------------------------*/
174 
175 void
177 
178 /*----------------------------------------------------------------------------
179  * Update mesh for unsteady rotor/stator computation
180  *
181  * parameters:
182  * t_elapsed --> elapsed computation time
183  *----------------------------------------------------------------------------*/
184 
185 void
186 cs_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 
194 void
196 
197 /*----------------------------------------------------------------------------
198  * Reinitialize interior face-based fields.
199  *----------------------------------------------------------------------------*/
200 
201 void
203 
204 /*----------------------------------------------------------------------------
205  * Resize cell-based fields.
206  *
207  * This function only handles fields owning their values.
208  *----------------------------------------------------------------------------*/
209 
210 void
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 
222 void
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 
237 int
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 
251 const int *
253 
254 /*----------------------------------------------------------------------------*/
261 /*----------------------------------------------------------------------------*/
262 
263 void
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 
274 double
276 
277 /*----------------------------------------------------------------------------*/
284 /*----------------------------------------------------------------------------*/
285 
286 void
288  double omega);
289 
290 /*----------------------------------------------------------------------------*/
300 /*----------------------------------------------------------------------------*/
301 
302 cs_real_34_t *
304 
305 /*----------------------------------------------------------------------------*/
317 /*----------------------------------------------------------------------------*/
318 
319 void
320 cs_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 
330 void
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 
346 void
348  const cs_real_t coords[3],
349  cs_real_t velocity[3]);
350 
351 /*----------------------------------------------------------------------------*/
359 /*----------------------------------------------------------------------------*/
360 
361 void
363 
364 /*----------------------------------------------------------------------------*/
372 /*----------------------------------------------------------------------------*/
373 
374 void
376 
377 /*----------------------------------------------------------------------------*/
382 /*----------------------------------------------------------------------------*/
383 
384 void
386 
387 /*----------------------------------------------------------------------------*/
388 
390 
391 #endif /* __CS_TURBOMACHINERY_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
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:349
#define END_C_DECLS
Definition: cs_defs.h:515
@ 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[])
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:2110
void cs_turbomachinery_finalize(void)
Free turbomachinery structure.
Definition: cs_turbomachinery.c:1737
void cs_turbomachinery_define(void)
Definitions for turbomachinery computation.
Definition: cs_turbomachinery.c:1639
void cs_turbomachinery_set_rotation_velocity(int rotor_num, double omega)
Set rotation velocity.
Definition: cs_turbomachinery.c:1964
cs_real_34_t * cs_turbomachinery_get_rotation_matrices(double dt)
Build rotation matrices for a given time interval.
Definition: cs_turbomachinery.c:2009
void cs_turbomachinery_rotation_matrix(int rotor_num, double theta, cs_real_t matrix[3][4])
Compute rotation matrix.
Definition: cs_turbomachinery.c:1871
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:1570
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:1521
void cs_turbomachinery_restart_write(cs_restart_t *r)
Write turbomachinery metadata to checkpoint file.
Definition: cs_turbomachinery.c:2181
int cs_turbomachinery_n_rotors(void)
Return number of rotors.
Definition: cs_turbomachinery.c:1893
void cs_turbomachinery_rotate_fields(const cs_real_t dt[])
Rotation of vector and tensor fields.
Definition: cs_turbomachinery.c:2035
void cs_turbomachinery_define_functions(void)
Create or access function objects specific to turbomachinery models (relative_pressure,...
Definition: cs_turbomachinery.c:2218
void cs_turbomachinery_resize_cell_fields(void)
Resize cell-based fields.
Definition: cs_turbomachinery.c:1794
void cs_turbomachinery_set_rotation_retry(int n_max_join_retries, double dt_retry_multiplier)
Set turbomachinery joining retry parameters.
Definition: cs_turbomachinery.c:1987
void cs_turbomachinery_restart_mesh(void)
Update mesh for unsteady rotor/stator computation in case of restart.
Definition: cs_turbomachinery.c:1618
int cs_turbomachinery_get_n_couplings(void)
Return number of boundary couplings used for rotor/stator model.
Definition: cs_turbomachinery.c:1455
void cs_turbomachinery_restart_read(cs_restart_t *r)
Read turbomachinery metadata from restart file.
Definition: cs_turbomachinery.c:2135
cs_turbomachinery_model_t cs_turbomachinery_get_model(void)
Return rotor/stator model.
Definition: cs_turbomachinery.c:1436
void cs_turbomachinery_reinit_i_face_fields(void)
Reinitialize interior face-based fields.
Definition: cs_turbomachinery.c:1771
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:1604
void cs_turbomachinery_initialize(void)
Initializations for turbomachinery computation.
Definition: cs_turbomachinery.c:1671
const int * cs_turbomachinery_get_cell_rotor_num(void)
Return cell rotor number.
Definition: cs_turbomachinery.c:1916
void cs_turbomachinery_set_model(cs_turbomachinery_model_t model)
Define rotor/stator model.
Definition: cs_turbomachinery.c:1415
double cs_turbomachinery_get_rotation_velocity(int rotor_num)
Return rotation velocity.
Definition: cs_turbomachinery.c:1947
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.c:1931
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:1477
double precision, dimension(:,:,:), allocatable theta
Definition: atimbr.f90:123
double precision, dimension(:), pointer coftur
Definition: turbomachinery.f90:52
double precision, dimension(:), pointer hfltur
Definition: turbomachinery.f90:52
double precision, dimension(ncharm), save omega
Definition: cpincl.f90:96