7.1
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  * Functions 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-2021 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_cdo_turbulence.h"
34 #include "cs_equation.h"
35 #include "cs_field.h"
36 #include "cs_param_types.h"
37 #include "cs_property.h"
38 #include "cs_maxwell.h"
39 #include "cs_mesh.h"
40 #include "cs_navsto_param.h"
41 #include "cs_time_plot.h"
42 #include "cs_time_step.h"
43 #include "cs_thermal_system.h"
44 #include "cs_xdef.h"
45 
46 /*----------------------------------------------------------------------------*/
47 
49 
50 /*============================================================================
51  * Macro definitions
52  *============================================================================*/
53 
54 /*============================================================================
55  * Function pointer definitions
56  *============================================================================*/
57 
58 /*----------------------------------------------------------------------------*/
74 /*----------------------------------------------------------------------------*/
75 
76 typedef void *
78  cs_adv_field_t *adv_field,
79  cs_real_t *mflux,
80  cs_real_t *mflux_pre,
81  cs_boundary_type_t *fb_type,
82  void *nscc);
83 
84 /*----------------------------------------------------------------------------*/
94 /*----------------------------------------------------------------------------*/
95 
96 typedef void *
97 (cs_navsto_free_scheme_context_t)(void *scheme_context);
98 
99 /*----------------------------------------------------------------------------*/
110 /*----------------------------------------------------------------------------*/
111 
112 typedef void
114  const cs_cdo_quantities_t *quant,
115  const cs_time_step_t *ts,
116  cs_field_t *field);
117 
118 /*----------------------------------------------------------------------------*/
128 /*----------------------------------------------------------------------------*/
129 
130 typedef void
132  const cs_navsto_param_t *nsp,
133  void *scheme_context);
134 
135 /*=============================================================================
136  * Structure definitions
137  *============================================================================*/
138 
144 typedef struct {
145 
151 
158 
166 
174 
180 
193 
199 
216 
233 
240 
247 
254 
263 
270 
277 
284 
291 
297 
306 
320 
328 
342 
350 
357 
363 
370 
377 
379 
380 /*============================================================================
381  * Public function prototypes
382  *============================================================================*/
383 
384 /*----------------------------------------------------------------------------*/
391 /*----------------------------------------------------------------------------*/
392 
393 bool
395 
396 /*----------------------------------------------------------------------------*/
402 /*----------------------------------------------------------------------------*/
403 
404 void
405 cs_navsto_system_update_model(bool with_thermal);
406 
407 /*----------------------------------------------------------------------------*/
419 /*----------------------------------------------------------------------------*/
420 
422 cs_navsto_system_activate(const cs_boundary_t *boundaries,
424  cs_navsto_param_model_flag_t model_flag,
425  cs_navsto_param_coupling_t algo_coupling,
426  cs_navsto_param_post_flag_t post_flag);
427 
428 /*----------------------------------------------------------------------------*/
432 /*----------------------------------------------------------------------------*/
433 
434 void
436 
437 /*----------------------------------------------------------------------------*/
444 /*----------------------------------------------------------------------------*/
445 
448 
449 /*----------------------------------------------------------------------------*/
455 /*----------------------------------------------------------------------------*/
456 
459 
460 /*----------------------------------------------------------------------------*/
467 /*----------------------------------------------------------------------------*/
468 
471 
472 /*----------------------------------------------------------------------------*/
481 /*----------------------------------------------------------------------------*/
482 
483 cs_real_t *
484 cs_navsto_get_mass_flux(bool previous);
485 
486 /*----------------------------------------------------------------------------*/
492 /*----------------------------------------------------------------------------*/
493 
494 void
496 
497 /*----------------------------------------------------------------------------*/
506 /*----------------------------------------------------------------------------*/
507 
508 void
510  const cs_cdo_connect_t *connect,
511  const cs_cdo_quantities_t *quant,
512  const cs_time_step_t *time_step);
513 
514 /*----------------------------------------------------------------------------*/
518 /*----------------------------------------------------------------------------*/
519 
520 void
522 
523 /*----------------------------------------------------------------------------*/
534 /*----------------------------------------------------------------------------*/
535 
536 void
538  const cs_cdo_connect_t *connect,
539  const cs_cdo_quantities_t *quant,
540  const cs_time_step_t *time_step);
541 
542 /*----------------------------------------------------------------------------*/
549 /*----------------------------------------------------------------------------*/
550 
551 void
553  cs_lnum_t solid_cell_ids[]);
554 
555 /*----------------------------------------------------------------------------*/
565 /*----------------------------------------------------------------------------*/
566 
567 void
569  const cs_cdo_connect_t *connect,
570  const cs_cdo_quantities_t *quant,
571  const cs_time_step_t *time_step);
572 
573 /*----------------------------------------------------------------------------*/
583 /*----------------------------------------------------------------------------*/
584 
585 void
587  const cs_cdo_connect_t *connect,
588  const cs_cdo_quantities_t *quant,
589  const cs_time_step_t *time_step);
590 
591 /*----------------------------------------------------------------------------*/
600 /*----------------------------------------------------------------------------*/
601 
602 void
604  const cs_cdo_connect_t *connect,
605  const cs_cdo_quantities_t *quant,
606  const cs_time_step_t *time_step);
607 
608 /*----------------------------------------------------------------------------*/
617 /*----------------------------------------------------------------------------*/
618 
619 void
621  const cs_cdo_connect_t *connect,
622  const cs_cdo_quantities_t *quant,
623  const cs_time_step_t *time_step);
624 
625 /*----------------------------------------------------------------------------*/
647 /*----------------------------------------------------------------------------*/
648 
649 void
650 cs_navsto_system_extra_post(void *input,
651  int mesh_id,
652  int cat_id,
653  int ent_flag[5],
654  cs_lnum_t n_cells,
655  cs_lnum_t n_i_faces,
656  cs_lnum_t n_b_faces,
657  const cs_lnum_t cell_ids[],
658  const cs_lnum_t i_face_ids[],
659  const cs_lnum_t b_face_ids[],
660  const cs_time_step_t *time_step);
661 
662 /*----------------------------------------------------------------------------*/
666 /*----------------------------------------------------------------------------*/
667 
668 void
670 
671 /*----------------------------------------------------------------------------*/
672 
674 
675 #endif /* __CS_NAVSTO_SYSTEM_H__ */
time step descriptor
Definition: cs_time_step.h:64
cs_field_t * enstrophy
Definition: cs_navsto_system.h:290
int cs_boundary_type_t
Definition: cs_boundary.h:69
cs_navsto_free_scheme_context_t * free_scheme_context
Definition: cs_navsto_system.h:349
bool cs_navsto_system_is_activated(void)
Check if the resolution of the Navier-Stokes system has been activated.
Definition: cs_navsto_system.c:237
cs_field_t * mass_flux_balance
Definition: cs_navsto_system.h:269
Definition: cs_advection_field.h:149
Structure storing the parameters related to the resolution of the turbulence modelling. Several members are structures defined in cs_turbulence_model.h.
void cs_navsto_system_set_sles(void)
Define the settings for SLES related to the Navier-Stokes system.
Definition: cs_navsto_system.c:890
cs_navsto_param_coupling_t
Choice of algorithm for solving the system.
Definition: cs_navsto_param.h:571
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:1335
void cs_navsto_system_compute_steady_state(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Build, solve and update the Navier-Stokes system in case of a steady-state approach.
Definition: cs_navsto_system.c:1415
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:97
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:954
cs_navsto_compute_t * compute_steady
Definition: cs_navsto_system.h:369
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
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:511
void cs_navsto_system_update(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Update variables and related quantities when a new state of the Navier-Stokes system has been compute...
Definition: cs_navsto_system.c:1375
cs_navsto_init_values_t * init_velocity
Definition: cs_navsto_system.h:356
cs_field_t * mass_density
Definition: cs_navsto_system.h:262
Functions to handle the cs_thermal_system_t structure. This module can be used stand alone or linked ...
cs_flag_t cs_navsto_param_post_flag_t
Definition: cs_navsto_param.h:59
Definition: cs_cdo_connect.h:79
Definition: field.f90:27
Structure storing information related to the "physical" boundaries associated with the computational ...
Definition: cs_boundary.h:155
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:131
Structure storing the parameters related to the resolution of the Navier-Stokes system.
Definition: cs_navsto_param.h:605
cs_turbulence_t * turbulence
Definition: cs_navsto_system.h:215
double cs_real_t
Floating-point value.
Definition: cs_defs.h:322
Definition: cs_cdo_quantities.h:129
void * scheme_context
Definition: cs_navsto_system.h:327
cs_equation_t * stream_function_eq
Definition: cs_navsto_system.h:305
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:573
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:1779
struct _cs_time_plot_t cs_time_plot_t
Definition: cs_time_plot.h:48
Definition: cs_mesh.h:84
cs_field_t * velocity
Definition: cs_navsto_system.h:192
cs_navsto_init_scheme_context_t * init_scheme_context
Definition: cs_navsto_system.h:341
cs_field_t * helicity
Definition: cs_navsto_system.h:283
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:492
cs_real_t * mass_flux_array_pre
Definition: cs_navsto_system.h:173
cs_real_t * mass_flux_array
Definition: cs_navsto_system.h:165
cs_navsto_init_values_t * init_pressure
Definition: cs_navsto_system.h:362
cs_field_t * pressure
Definition: cs_navsto_system.h:198
cs_field_t * pressure_gradient
Definition: cs_navsto_system.h:246
Structure managing the Navier-Stokes system.
Definition: cs_navsto_system.h:144
void cs_navsto_system_update_model(bool with_thermal)
Update the flag associated to the modelling options.
Definition: cs_navsto_system.c:254
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:113
cs_boundary_type_t * bf_type
Definition: cs_navsto_system.h:179
cs_field_t * kinetic_energy
Definition: cs_navsto_system.h:253
cs_time_plot_t * plot_writer
Definition: cs_navsto_system.h:232
cs_navsto_param_t * param
Definition: cs_navsto_system.h:150
cs_navsto_system_t * cs_navsto_system_activate(const cs_boundary_t *boundaries, cs_navsto_param_model_t model, cs_navsto_param_model_flag_t model_flag, cs_navsto_param_coupling_t algo_coupling, cs_navsto_param_post_flag_t post_flag)
Allocate and initialize the Navier-Stokes (NS) system.
Definition: cs_navsto_system.c:295
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 *time_step)
Initialize the scheme context structure used to build the algebraic system. This is done after the se...
Definition: cs_navsto_system.c:1259
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
cs_navsto_compute_t * compute
Definition: cs_navsto_system.h:376
void *() cs_navsto_init_scheme_context_t(const cs_navsto_param_t *nsp, cs_adv_field_t *adv_field, cs_real_t *mflux, cs_real_t *mflux_pre, 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:77
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:552
Structure and functions handling the Maxwell module dedicated to the resolution of electro-magnetic e...
cs_field_t * vorticity
Definition: cs_navsto_system.h:276
#define END_C_DECLS
Definition: cs_defs.h:511
void cs_navsto_system_extra_op(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Predefined extra-operations for the Navier-Stokes system.
Definition: cs_navsto_system.c:1705
cs_adv_field_t * adv_field
Definition: cs_navsto_system.h:157
void cs_navsto_system_log_setup(void)
Summary of the main cs_navsto_system_t structure.
Definition: cs_navsto_system.c:1914
cs_field_t * velocity_gradient
Definition: cs_navsto_system.h:296
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:595
Main structure to handle the discretization and the resolution of an equation.
cs_navsto_param_model_t
Describe the system of equations related to the Navier-Stokes to be solved.
Definition: cs_navsto_param.h:82
void * coupling_context
Definition: cs_navsto_system.h:319
void cs_navsto_system_destroy(void)
Free the main structure related to the Navier-Stokes system.
Definition: cs_navsto_system.c:416
cs_flag_t cs_navsto_param_model_flag_t
Definition: cs_navsto_param.h:58
void cs_navsto_system_compute(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Build, solve and update the Navier-Stokes system.
Definition: cs_navsto_system.c:1579
Definition: mesh.f90:26
cs_field_t * velocity_divergence
Definition: cs_navsto_system.h:239