8.1
general documentation
cs_cdo_advection.h
Go to the documentation of this file.
1 #ifndef __CS_CDO_ADVECTION_H__
2 #define __CS_CDO_ADVECTION_H__
3 
4 /*============================================================================
5  * Build discrete convection operators for CDO schemes
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  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_advection_field.h"
35 #include "cs_cdo_connect.h"
36 #include "cs_cdo_local.h"
37 #include "cs_cdo_quantities.h"
38 #include "cs_equation_param.h"
39 #include "cs_property.h"
40 
41 /*----------------------------------------------------------------------------*/
42 
44 
45 /*============================================================================
46  * Macro definitions
47  *============================================================================*/
48 
49 /*============================================================================
50  * Type definitions
51  *============================================================================*/
52 
53 /* ---------------------------------------------------------------------------
54  * Function pointers for CDO face-based schemes
55  * -------------------------------------------------------------------------- */
56 
57 /*----------------------------------------------------------------------------*/
68 /*----------------------------------------------------------------------------*/
69 
70 typedef void
72  const cs_cell_mesh_t *cm,
73  const cs_cell_sys_t *csys,
74  void *input,
75  cs_cell_builder_t *cb);
76 
77 /*----------------------------------------------------------------------------*/
89 /*----------------------------------------------------------------------------*/
90 
91 typedef void
92 (cs_cdofb_adv_scheme_t)(int dim,
93  const cs_cell_mesh_t *cm,
94  const cs_cell_sys_t *csys,
96  cs_sdm_t *adv);
97 
98 /*----------------------------------------------------------------------------*/
113 /*----------------------------------------------------------------------------*/
114 
115 typedef void
117  const cs_cell_mesh_t *cm,
118  const cs_cell_sys_t *csys,
119  cs_cdofb_adv_scheme_t *scheme_func,
120  cs_cell_builder_t *cb);
121 
122 /*----------------------------------------------------------------------------*/
133 /*----------------------------------------------------------------------------*/
134 
135 typedef void
137  const cs_cell_mesh_t *cm,
138  cs_cell_sys_t *csys,
139  cs_cell_builder_t *cb,
140  cs_sdm_t *adv);
141 
142 /* ---------------------------------------------------------------------------
143  * Function pointers for CDO vertex-based schemes
144  * -------------------------------------------------------------------------- */
145 
146 /*----------------------------------------------------------------------------*/
158 /*----------------------------------------------------------------------------*/
159 
160 typedef void
162  const cs_cell_mesh_t *cm,
163  const cs_property_data_t *diff_pty,
165  cs_cell_builder_t *cb);
166 
167 /*----------------------------------------------------------------------------*/
179 /*----------------------------------------------------------------------------*/
180 
181 typedef void
183  const cs_equation_param_t *eqp,
184  cs_real_t t_eval,
186  cs_cell_builder_t *cb,
187  cs_cell_sys_t *csys);
188 
189 /*============================================================================
190  * Global variables
191  *============================================================================*/
192 
193 /*============================================================================
194  * Public function prototypes
195  *============================================================================*/
196 
197 /*----------------------------------------------------------------------------*/
203 /*----------------------------------------------------------------------------*/
204 
205 void
206 cs_cdo_advection_set_cip_coef(double new_value);
207 
208 /*----------------------------------------------------------------------------*/
214 /*----------------------------------------------------------------------------*/
215 
216 double
218 
219 /*----------------------------------------------------------------------------*/
232 /*----------------------------------------------------------------------------*/
233 
234 void
236  const cs_cell_mesh_t *cm,
237  const cs_cell_sys_t *csys,
238  void *input,
239  cs_cell_builder_t *cb);
240 
241 /*----------------------------------------------------------------------------*/
254 /*----------------------------------------------------------------------------*/
255 
256 void
258  const cs_cell_mesh_t *cm,
259  cs_cell_sys_t *csys,
260  cs_cell_builder_t *cb,
261  cs_sdm_t *adv);
262 
263 /*----------------------------------------------------------------------------*/
276 /*----------------------------------------------------------------------------*/
277 
278 void
280  const cs_cell_mesh_t *cm,
281  cs_cell_sys_t *csys,
282  cs_cell_builder_t *cb,
283  cs_sdm_t *adv);
284 
285 /*----------------------------------------------------------------------------*/
298 /*----------------------------------------------------------------------------*/
299 
300 void
302  const cs_cell_mesh_t *cm,
303  cs_cell_sys_t *csys,
304  cs_cell_builder_t *cb,
305  cs_sdm_t *adv);
306 
307 /*----------------------------------------------------------------------------*/
320 /*----------------------------------------------------------------------------*/
321 
322 void
324  const cs_cell_mesh_t *cm,
325  cs_cell_sys_t *csys,
326  cs_cell_builder_t *cb,
327  cs_sdm_t *adv);
328 
329 /*----------------------------------------------------------------------------*/
346 /*----------------------------------------------------------------------------*/
347 
348 void
350  const cs_cell_mesh_t *cm,
351  const cs_cell_sys_t *csys,
352  cs_cdofb_adv_scheme_t *scheme_func,
353  cs_cell_builder_t *cb);
354 
355 /*----------------------------------------------------------------------------*/
371 /*----------------------------------------------------------------------------*/
372 
373 void
375  const cs_cell_mesh_t *cm,
376  const cs_cell_sys_t *csys,
377  cs_cdofb_adv_scheme_t *scheme_func,
378  cs_cell_builder_t *cb);
379 
380 /*----------------------------------------------------------------------------*/
399 /*----------------------------------------------------------------------------*/
400 
401 void
403  const cs_cell_mesh_t *cm,
404  const cs_cell_sys_t *csys,
405  cs_cell_builder_t *cb,
406  cs_sdm_t *adv);
407 
408 /*----------------------------------------------------------------------------*/
427 /*----------------------------------------------------------------------------*/
428 
429 void
431  const cs_cell_mesh_t *cm,
432  const cs_cell_sys_t *csys,
433  cs_cell_builder_t *cb,
434  cs_sdm_t *adv);
435 
436 /*----------------------------------------------------------------------------*/
455 /*----------------------------------------------------------------------------*/
456 
457 void
459  const cs_cell_mesh_t *cm,
460  const cs_cell_sys_t *csys,
461  cs_cell_builder_t *cb,
462  cs_sdm_t *adv);
463 
464 /*----------------------------------------------------------------------------*/
483 /*----------------------------------------------------------------------------*/
484 
485 void
487  const cs_cell_mesh_t *cm,
488  const cs_cell_sys_t *csys,
489  cs_cell_builder_t *cb,
490  cs_sdm_t *adv);
491 
492 /*----------------------------------------------------------------------------*/
508 /*----------------------------------------------------------------------------*/
509 
510 void
512  const cs_cell_mesh_t *cm,
513  const cs_property_data_t *diff_pty,
515  cs_cell_builder_t *cb);
516 
517 /*----------------------------------------------------------------------------*/
532 /*----------------------------------------------------------------------------*/
533 
534 void
536  const cs_cell_mesh_t *cm,
537  const cs_property_data_t *diff_pty,
539  cs_cell_builder_t *cb);
540 
541 /*----------------------------------------------------------------------------*/
556 /*----------------------------------------------------------------------------*/
557 
558 void
560  const cs_cell_mesh_t *cm,
561  const cs_property_data_t *diff_pty,
563  cs_cell_builder_t *cb);
564 
565 /*----------------------------------------------------------------------------*/
580 /*----------------------------------------------------------------------------*/
581 
582 void
584  const cs_cell_mesh_t *cm,
585  const cs_property_data_t *diff_pty,
587  cs_cell_builder_t *cb);
588 
589 /*----------------------------------------------------------------------------*/
604 /*----------------------------------------------------------------------------*/
605 
606 void
608  const cs_cell_mesh_t *cm,
609  const cs_property_data_t *diff_pty,
611  cs_cell_builder_t *cb);
612 
613 /*----------------------------------------------------------------------------*/
629 /*----------------------------------------------------------------------------*/
630 
631 void
633  const cs_cell_mesh_t *cm,
634  const cs_property_data_t *diff_pty,
636  cs_cell_builder_t *cb);
637 
638 /*----------------------------------------------------------------------------*/
653 /*----------------------------------------------------------------------------*/
654 
655 void
657  const cs_cell_mesh_t *cm,
658  const cs_property_data_t *diff_pty,
660  cs_cell_builder_t *cb);
661 
662 /*----------------------------------------------------------------------------*/
677 /*----------------------------------------------------------------------------*/
678 
679 void
681  const cs_cell_mesh_t *cm,
682  const cs_property_data_t *diff_pty,
684  cs_cell_builder_t *cb);
685 
686 /*----------------------------------------------------------------------------*/
698 /*----------------------------------------------------------------------------*/
699 
700 void
702  const cs_cell_mesh_t *cm,
703  const cs_property_data_t *diff_pty,
705  cs_cell_builder_t *cb);
706 
707 /*----------------------------------------------------------------------------*/
718 /*----------------------------------------------------------------------------*/
719 
720 void
722  const cs_cell_mesh_t *cm,
723  const cs_property_data_t *diff_pty,
725  cs_cell_builder_t *cb);
726 
727 /*----------------------------------------------------------------------------*/
738 /*----------------------------------------------------------------------------*/
739 
740 void
742  const cs_equation_param_t *eqp,
743  cs_real_t t_eval,
745  cs_cell_builder_t *cb,
746  cs_cell_sys_t *csys);
747 
748 /*----------------------------------------------------------------------------*/
760 /*----------------------------------------------------------------------------*/
761 
762 void
764  const cs_equation_param_t *eqp,
765  cs_real_t t_eval,
767  cs_cell_builder_t *cb,
768  cs_cell_sys_t *csys);
769 
770 /*----------------------------------------------------------------------------*/
781 /*----------------------------------------------------------------------------*/
782 
783 void
786  cs_real_t coefval[]);
787 
788 /*----------------------------------------------------------------------------*/
789 
791 
792 #endif /* __CS_CDO_ADVECTION_H__ */
void cs_cdo_advection_vb_upwcsv_wpty(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme with an upwind sche...
Definition: cs_cdo_advection.c:1955
void cs_cdo_advection_vcb_bc(const cs_cell_mesh_t *cm, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_face_mesh_t *fm, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
Compute the BC contribution for the convection operator with CDO V+C schemes.
Definition: cs_cdo_advection.c:2859
double cs_cdo_advection_get_cip_coef(void)
Get the value of the stabilization coefficient used in CIP scheme.
Definition: cs_cdo_advection.c:1240
void cs_cdofb_advection_upwnoc(int dim, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Compute the convection operator attached to a cell with a CDO face-based scheme.
Definition: cs_cdo_advection.c:1614
void cs_cdo_advection_vb_upwcsv(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme without diffusion a...
Definition: cs_cdo_advection.c:2046
void cs_cdo_advection_vb_upwnoc(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme without diffusion w...
Definition: cs_cdo_advection.c:2354
void cs_cdofb_advection_close_default_vect(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Operation done after the matrix related to the advection term has been defined. Follow the prototype ...
Definition: cs_cdo_advection.c:1336
void cs_cdofb_advection_no_diffusion(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cdofb_adv_scheme_t *scheme_func, cs_cell_builder_t *cb)
Main function to build the cellwise advection operator for CDO-Fb schemes The local matrix related to...
Definition: cs_cdo_advection.c:1472
void cs_cdofb_advection_close_default_scal(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Operation done after the matrix related to the advection term has been defined. Follow the prototype ...
Definition: cs_cdo_advection.c:1307
void cs_cdo_advection_vcb_cw_cst(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex+cell-based scheme when the advec...
Definition: cs_cdo_advection.c:2466
void cs_cdofb_advection_cennoc(int dim, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Compute the convection operator attached to a cell with a CDO face-based scheme.
Definition: cs_cdo_advection.c:1808
void cs_cdofb_advection_cencsv(int dim, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Compute the convection operator attached to a cell with a CDO face-based scheme.
Definition: cs_cdo_advection.c:1880
void cs_cdo_advection_vb_bc(const cs_cell_mesh_t *cm, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_face_mesh_t *fm, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
Compute the BC contribution for the convection operator.
Definition: cs_cdo_advection.c:2737
void cs_cdofb_advection(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cdofb_adv_scheme_t *scheme_func, cs_cell_builder_t *cb)
Main function to build the cellwise advection operator for CDO face-based schemes....
Definition: cs_cdo_advection.c:1553
void cs_cdofb_advection_close_exp_none_scal(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Operation done after the matrix related to the advection term has been defined. Follow the prototype ...
Definition: cs_cdo_advection.c:1381
void() cs_cdofb_adv_build_t(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cdofb_adv_scheme_t *scheme_func, cs_cell_builder_t *cb)
Build the cellwise advection operator for CDO-Fb schemes The local matrix related to this operator is...
Definition: cs_cdo_advection.h:116
void cs_cdo_advection_vcb(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex+cell-based scheme.
Definition: cs_cdo_advection.c:2606
void() cs_cdofb_adv_scheme_t(int dim, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Define the local convection operator in CDO-Fb schemes. Case of an operator that should be assemble i...
Definition: cs_cdo_advection.h:92
void cs_cdo_advection_vb_upwnoc_wpty(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme with an upwind sche...
Definition: cs_cdo_advection.c:2265
void cs_cdo_advection_set_cip_coef(double new_value)
Set the value of the stabilization coefficient used in CIP scheme.
Definition: cs_cdo_advection.c:1226
void() cs_cdovb_advection_bc_t(const cs_cell_mesh_t *cm, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_face_mesh_t *fm, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
Compute the BC contribution for the advection operator in CDO vertex-based (or vertex+cell-based) sch...
Definition: cs_cdo_advection.h:182
void() cs_cdofb_adv_close_hook_t(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Operation done after the matrix related to the advection term has been defined.
Definition: cs_cdo_advection.h:136
void cs_cdo_advection_vb_mcucsv(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme when a mixed center...
Definition: cs_cdo_advection.c:2162
void cs_cdo_advection_vb_mcunoc(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme when a mixed center...
Definition: cs_cdo_advection.c:2213
void cs_cdo_advection_vb_cennoc(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme when a centered sch...
Definition: cs_cdo_advection.c:2418
void cs_cdo_advection_cell_upwind_coef(const cs_cdo_quantities_t *cdoq, cs_param_advection_scheme_t scheme, cs_real_t coefval[])
Compute the value of the upwinding coefficient in each cell knowing the related Peclet number.
Definition: cs_cdo_advection.c:2924
void cs_cdofb_advection_upwcsv(int dim, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Compute the convection operator attached to a cell with a CDO face-based scheme.
Definition: cs_cdo_advection.c:1711
void() cs_cdofb_adv_open_hook_t(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, void *input, cs_cell_builder_t *cb)
Perform preprocessing such as the computation of the advection flux at the expected location in order...
Definition: cs_cdo_advection.h:71
void cs_cdofb_advection_close_exp_none_vect(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb, cs_sdm_t *adv)
Operation done after the matrix related to the advection term has been defined. Follow the prototype ...
Definition: cs_cdo_advection.c:1419
void() cs_cdovb_advection_t(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme....
Definition: cs_cdo_advection.h:161
void cs_cdo_advection_vb_cencsv(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *diff_pty, cs_face_mesh_t *fm, cs_cell_builder_t *cb)
Compute the convection operator attached to a cell with a CDO vertex-based scheme when a centered sch...
Definition: cs_cdo_advection.c:2111
void cs_cdofb_advection_open_default(const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, void *input, cs_cell_builder_t *cb)
Perform preprocessing such as the computation of the advection flux at the expected location in order...
Definition: cs_cdo_advection.c:1261
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
double cs_real_t
Floating-point value.
Definition: cs_defs.h:319
#define END_C_DECLS
Definition: cs_defs.h:515
@ fm
Definition: cs_field_pointer.h:127
cs_param_advection_scheme_t
Definition: cs_param_types.h:351
Definition: cs_cdo_quantities.h:137
Set of local and temporary buffers.
Definition: cs_cdo_local.h:60
Set of local quantities and connectivities related to a mesh cell.
Definition: cs_cdo_local.h:203
Set of arrays and local (small) dense matrices related to a mesh cell This is a key structure for bui...
Definition: cs_cdo_local.h:147
Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources.
Definition: cs_equation_param.h:192
Set of local quantities and connectivities related to a mesh face Structure used to get a better memo...
Definition: cs_cdo_local.h:279
Structure storing the evaluation of a property and its related data.
Definition: cs_property.h:223