6.2
general documentation
cs_navsto_system.h
Go to the documentation of this file.
1 #ifndef __CS_NAVSTO_SYSTEM_H__
2 #define __CS_NAVSTO_SYSTEM_H__
3 
4 /*============================================================================
5  * Routines to handle cs_navsto_system_t structure
6  *============================================================================*/
7 
8 /*
9  This file is part of Code_Saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2020 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_advection_field.h"
33 #include "cs_equation.h"
34 #include "cs_field.h"
35 #include "cs_param_types.h"
36 #include "cs_property.h"
37 #include "cs_maxwell.h"
38 #include "cs_mesh.h"
39 #include "cs_navsto_param.h"
40 #include "cs_time_step.h"
41 #include "cs_thermal_system.h"
42 #include "cs_xdef.h"
43 
44 /*----------------------------------------------------------------------------*/
45 
47 
54 /*============================================================================
55  * Macro definitions
56  *============================================================================*/
57 
58 /*============================================================================
59  * Function pointer definitions
60  *============================================================================*/
61 
62 /*----------------------------------------------------------------------------*/
75 /*----------------------------------------------------------------------------*/
76 
77 typedef void *
79  cs_boundary_type_t *fb_type,
80  void *nscc);
81 
82 /*----------------------------------------------------------------------------*/
92 /*----------------------------------------------------------------------------*/
93 
94 typedef void *
95 (cs_navsto_free_scheme_context_t)(void *scheme_context);
96 
97 /*----------------------------------------------------------------------------*/
108 /*----------------------------------------------------------------------------*/
109 
110 typedef void
112  const cs_cdo_quantities_t *quant,
113  const cs_time_step_t *ts,
114  cs_field_t *field);
115 
116 /*----------------------------------------------------------------------------*/
126 /*----------------------------------------------------------------------------*/
127 
128 typedef void
130  const cs_navsto_param_t *nsp,
131  void *scheme_context);
132 
133 /*=============================================================================
134  * Structure definitions
135  *============================================================================*/
136 
142 typedef struct {
143 
148 
153 
166 
172 
189 
195  cs_maxwell_t *mxl;
196 
211 
218 
224 
230 
236 
241 
249 
262 
269 
282 
289 
295 
301 
307 
313 
315 
316 /*============================================================================
317  * Public function prototypes
318  *============================================================================*/
319 
320 /*----------------------------------------------------------------------------*/
327 /*----------------------------------------------------------------------------*/
328 
329 bool
331 
332 /*----------------------------------------------------------------------------*/
344 /*----------------------------------------------------------------------------*/
345 
347 cs_navsto_system_activate(const cs_boundary_t *boundaries,
349  cs_navsto_param_coupling_t algo_coupling,
350  cs_flag_t option_flag,
351  cs_flag_t post_flag);
352 
353 /*----------------------------------------------------------------------------*/
357 /*----------------------------------------------------------------------------*/
358 
359 void
361 
362 /*----------------------------------------------------------------------------*/
369 /*----------------------------------------------------------------------------*/
370 
373 
374 /*----------------------------------------------------------------------------*/
380 /*----------------------------------------------------------------------------*/
381 
384 
385 /*----------------------------------------------------------------------------*/
392 /*----------------------------------------------------------------------------*/
393 
396 
397 /*----------------------------------------------------------------------------*/
406 /*----------------------------------------------------------------------------*/
407 
408 cs_real_t *
409 cs_navsto_get_mass_flux(bool previous);
410 
411 /*----------------------------------------------------------------------------*/
417 /*----------------------------------------------------------------------------*/
418 
419 void
421 
422 /*----------------------------------------------------------------------------*/
431 /*----------------------------------------------------------------------------*/
432 
433 void
435  const cs_cdo_connect_t *connect,
436  const cs_cdo_quantities_t *quant,
437  const cs_time_step_t *time_step);
438 
439 /*----------------------------------------------------------------------------*/
443 /*----------------------------------------------------------------------------*/
444 
445 void
447 
448 /*----------------------------------------------------------------------------*/
459 /*----------------------------------------------------------------------------*/
460 
461 void
463  const cs_cdo_connect_t *connect,
464  const cs_cdo_quantities_t *quant,
465  const cs_time_step_t *ts);
466 
467 /*----------------------------------------------------------------------------*/
474 /*----------------------------------------------------------------------------*/
475 
476 void
478  cs_lnum_t solid_cell_ids[]);
479 
480 /*----------------------------------------------------------------------------*/
490 /*----------------------------------------------------------------------------*/
491 
492 void
494  const cs_time_step_t *time_step,
495  const cs_cdo_connect_t *connect,
496  const cs_cdo_quantities_t *cdoq);
497 
498 /*----------------------------------------------------------------------------*/
508 /*----------------------------------------------------------------------------*/
509 
510 void
512  const cs_time_step_t *time_step,
513  const cs_cdo_connect_t *connect,
514  const cs_cdo_quantities_t *cdoq);
515 
516 /*----------------------------------------------------------------------------*/
525 /*----------------------------------------------------------------------------*/
526 
527 void
529  const cs_time_step_t *time_step,
530  const cs_cdo_connect_t *connect,
531  const cs_cdo_quantities_t *cdoq);
532 
533 /*----------------------------------------------------------------------------*/
542 /*----------------------------------------------------------------------------*/
543 
544 void
546  const cs_cdo_connect_t *connect,
547  const cs_cdo_quantities_t *cdoq,
548  const cs_time_step_t *ts);
549 
550 /*----------------------------------------------------------------------------*/
572 /*----------------------------------------------------------------------------*/
573 
574 void
575 cs_navsto_system_extra_post(void *input,
576  int mesh_id,
577  int cat_id,
578  int ent_flag[5],
579  cs_lnum_t n_cells,
580  cs_lnum_t n_i_faces,
581  cs_lnum_t n_b_faces,
582  const cs_lnum_t cell_ids[],
583  const cs_lnum_t i_face_ids[],
584  const cs_lnum_t b_face_ids[],
585  const cs_time_step_t *time_step);
586 
587 /*----------------------------------------------------------------------------*/
591 /*----------------------------------------------------------------------------*/
592 
593 void
595 
596 /*----------------------------------------------------------------------------*/
597 
599 
600 #endif /* __CS_NAVSTO_SYSTEM_H__ */
time step descriptor
Definition: cs_time_step.h:64
void cs_navsto_system_compute(const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq)
Build, solve and update the Navier-Stokes system.
Definition: cs_navsto_system.c:1212
cs_field_t * enstrophy
Definition: cs_navsto_system.h:235
int cs_boundary_type_t
Definition: cs_boundary.h:65
cs_navsto_free_scheme_context_t * free_scheme_context
Definition: cs_navsto_system.h:288
bool cs_navsto_system_is_activated(void)
Check if the resolution of the Navier-Stokes system has been activated.
Definition: cs_navsto_system.c:201
Definition: cs_advection_field.h:149
void cs_navsto_system_set_sles(void)
Define the settings for SLES related to the Navier-Stokes system.
Definition: cs_navsto_system.c:729
cs_navsto_param_coupling_t
Choice of algorithm for solving the system.
Definition: cs_navsto_param.h:447
Field descriptor.
Definition: cs_field.h:125
void cs_navsto_system_set_solid_cells(cs_lnum_t n_solid_cells, cs_lnum_t solid_cell_ids[])
Set a solid zone related to the Navier-Stokes equations.
Definition: cs_navsto_system.c:1105
void *() cs_navsto_free_scheme_context_t(void *scheme_context)
Free the context structure related to a given discretization scheme for the resolution of the Navier-...
Definition: cs_navsto_system.h:95
void cs_navsto_system_finalize_setup(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Last step of the setup of the Navier-Stokes system.
Definition: cs_navsto_system.c:793
cs_navsto_compute_t * compute_steady
Definition: cs_navsto_system.h:306
#define BEGIN_C_DECLS
Definition: cs_defs.h:495
cs_equation_t * cs_navsto_system_get_momentum_eq(void)
Retrieve a pointer to the equation related to the momentum equation.
Definition: cs_navsto_system.c:425
void *() cs_navsto_init_scheme_context_t(const cs_navsto_param_t *nsp, cs_boundary_type_t *fb_type, void *nscc)
Allocate and initialize the context structure related to a given discretization scheme for the resolu...
Definition: cs_navsto_system.h:78
cs_navsto_init_values_t * init_velocity
Definition: cs_navsto_system.h:294
Routines to handle the cs_thermal_system_t structure. The temperature field is automatically defined ...
Definition: cs_cdo_connect.h:76
Definition: field.f90:27
Structure storing information related to the "physical" boundaries associated with the computational ...
Definition: cs_boundary.h:151
void() cs_navsto_compute_t(const cs_mesh_t *mesh, const cs_navsto_param_t *nsp, void *scheme_context)
Compute for the current time step the new state for the Navier-Stokes system. This means that equatio...
Definition: cs_navsto_system.h:129
Structure storing the parameters related to the resolution of the Navier-Stokes system.
Definition: cs_navsto_param.h:462
void cs_navsto_system_update(const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq)
Update variables and related quantities when a new state of the Navier-Stokes system has been compute...
Definition: cs_navsto_system.c:1150
double cs_real_t
Floating-point value.
Definition: cs_defs.h:307
Definition: cs_cdo_quantities.h:124
void * scheme_context
Definition: cs_navsto_system.h:268
cs_equation_t * stream_function_eq
Definition: cs_navsto_system.h:248
cs_real_t * cs_navsto_get_mass_flux(bool previous)
Retrieve the mass flux array related to the Navier-Stokes system.
Definition: cs_navsto_system.c:507
void cs_navsto_system_extra_post(void *input, int mesh_id, int cat_id, int ent_flag[5], cs_lnum_t n_cells, cs_lnum_t n_i_faces, cs_lnum_t n_b_faces, const cs_lnum_t cell_ids[], const cs_lnum_t i_face_ids[], const cs_lnum_t b_face_ids[], const cs_time_step_t *time_step)
Predefined post-processing output for the Navier-Stokes system. The prototype of this function is fix...
Definition: cs_navsto_system.c:1305
Definition: cs_mesh.h:74
cs_field_t * velocity
Definition: cs_navsto_system.h:165
cs_navsto_init_scheme_context_t * init_scheme_context
Definition: cs_navsto_system.h:281
cs_field_t * helicity
Definition: cs_navsto_system.h:229
cs_navsto_param_t * cs_navsto_system_get_param(void)
Retrieve the structure storing the parameters for the Navier–Stokes system.
Definition: cs_navsto_system.c:406
cs_navsto_init_values_t * init_pressure
Definition: cs_navsto_system.h:300
cs_field_t * pressure
Definition: cs_navsto_system.h:171
Structure managing the Navier-Stokes system.
Definition: cs_navsto_system.h:142
void cs_navsto_system_compute_steady_state(const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq)
Build, solve and update the Navier-Stokes system in case of a steady-state approach.
Definition: cs_navsto_system.c:1180
void() cs_navsto_init_values_t(const cs_navsto_param_t *nsp, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts, cs_field_t *field)
According to the model, coupling algorithm and the space discretization, initialize the field values ...
Definition: cs_navsto_system.h:111
cs_thermal_system_t * thm
Definition: cs_navsto_system.h:188
cs_boundary_type_t * bf_type
Definition: cs_navsto_system.h:152
cs_flag_t cs_navsto_param_model_t
Definition: cs_navsto_param.h:99
cs_field_t * kinetic_energy
Definition: cs_navsto_system.h:217
void cs_navsto_system_extra_op(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *ts)
Predefined extra-operations for the Navier-Stokes system.
Definition: cs_navsto_system.c:1244
cs_navsto_param_t * param
Definition: cs_navsto_system.h:147
void cs_navsto_system_initialize(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts)
Initialize the context structure used to build the algebraic system This is done after the setup step...
Definition: cs_navsto_system.c:1049
cs_navsto_system_t * cs_navsto_system_activate(const cs_boundary_t *boundaries, cs_navsto_param_model_t model, cs_navsto_param_coupling_t algo_coupling, cs_flag_t option_flag, cs_flag_t post_flag)
Allocate and initialize the Navier-Stokes (NS) system.
Definition: cs_navsto_system.c:224
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:301
cs_navsto_compute_t * compute
Definition: cs_navsto_system.h:312
cs_adv_field_t * cs_navsto_get_adv_field(void)
Retrieve the advection field structure (the mass flux) related to the Navier-Stokes system...
Definition: cs_navsto_system.c:466
Structure and routines handling the Maxwell module dedicated to the resolution of electro-magnetic eq...
cs_field_t * vorticity
Definition: cs_navsto_system.h:223
#define END_C_DECLS
Definition: cs_defs.h:496
unsigned short int cs_flag_t
Definition: cs_defs.h:309
cs_maxwell_t * mxl
Definition: cs_navsto_system.h:195
Definition: cs_thermal_system.h:145
void cs_navsto_system_log_setup(void)
Summary of the main cs_navsto_system_t structure.
Definition: cs_navsto_system.c:1424
cs_field_t * velocity_gradient
Definition: cs_navsto_system.h:240
void cs_navsto_system_init_setup(void)
Start setting-up the Navier-Stokes system At this stage, numerical settings should be completely dete...
Definition: cs_navsto_system.c:548
Main structure to handle the discretization and the resolution of an equation.
void * coupling_context
Definition: cs_navsto_system.h:261
void cs_navsto_system_destroy(void)
Free the main structure related to the Navier-Stokes system.
Definition: cs_navsto_system.c:345
Definition: mesh.f90:26
cs_field_t * velocity_divergence
Definition: cs_navsto_system.h:210