7.1
general documentation
cs_evaluate.h
Go to the documentation of this file.
1 #ifndef __CS_EVALUATE_H__
2 #define __CS_EVALUATE_H__
3 
4 /*============================================================================
5  * Functions and structures to deal with evaluation of quantities
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 
30 /*----------------------------------------------------------------------------
31  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_base.h"
35 #include "cs_cdo_connect.h"
36 #include "cs_cdo_local.h"
37 #include "cs_cdo_quantities.h"
38 #include "cs_xdef.h"
39 
40 /*----------------------------------------------------------------------------*/
41 
43 
44 /*============================================================================
45  * Macro definitions
46  *============================================================================*/
47 
48 /*============================================================================
49  * Type definitions
50  *============================================================================*/
51 
52 /*============================================================================
53  * Public function prototypes
54  *============================================================================*/
55 
56 /*----------------------------------------------------------------------------*/
63 /*----------------------------------------------------------------------------*/
64 
65 void
67  const cs_cdo_connect_t *connect);
68 
69 /*----------------------------------------------------------------------------*/
84 /*----------------------------------------------------------------------------*/
85 
86 void
88  cs_lnum_t n_x,
89  const cs_real_t *array,
90  const cs_real_t *w_x,
91  cs_real_t *min,
92  cs_real_t *max,
93  cs_real_t *wsum,
94  cs_real_t *asum,
95  cs_real_t *ssum);
96 
97 /*----------------------------------------------------------------------------*/
115 /*----------------------------------------------------------------------------*/
116 
117 void
119  cs_lnum_t n_x,
120  const cs_real_t *array,
121  const cs_adjacency_t *c2x,
122  const cs_real_t *w_x,
123  cs_real_t *min,
124  cs_real_t *max,
125  cs_real_t *wsum,
126  cs_real_t *asum,
127  cs_real_t *ssum);
128 
129 /*----------------------------------------------------------------------------*/
139 /*----------------------------------------------------------------------------*/
140 
141 void
143  const cs_xdef_t *def,
144  cs_real_t time_eval,
145  cs_real_t retval[]);
146 
147 /*----------------------------------------------------------------------------*/
157 /*----------------------------------------------------------------------------*/
158 
159 void
161  const cs_xdef_t *def,
162  cs_real_t retval[]);
163 
164 /*----------------------------------------------------------------------------*/
175 /*----------------------------------------------------------------------------*/
176 
177 void
179  const cs_real_t time_eval,
180  const cs_lnum_t n_v_selected,
181  const cs_lnum_t *selected_lst,
182  cs_real_t retval[]);
183 
184 /*----------------------------------------------------------------------------*/
195 /*----------------------------------------------------------------------------*/
196 
197 void
199  const cs_real_t time_eval,
200  const cs_lnum_t n_f_selected,
201  const cs_lnum_t *selected_lst,
202  cs_real_t retval[]);
203 
204 /*----------------------------------------------------------------------------*/
213 /*----------------------------------------------------------------------------*/
214 
215 void
217  const cs_real_t time_eval,
218  cs_real_t retval[]);
219 
220 /*----------------------------------------------------------------------------*/
232 /*----------------------------------------------------------------------------*/
233 
234 void
236  const cs_xdef_t *def,
237  cs_real_t vvals[],
238  cs_real_t wvals[]);
239 
240 /*----------------------------------------------------------------------------*/
250 /*----------------------------------------------------------------------------*/
251 
252 void
254  const cs_lnum_t n_v_selected,
255  const cs_lnum_t *selected_lst,
256  cs_real_t retval[]);
257 
258 /*----------------------------------------------------------------------------*/
268 /*----------------------------------------------------------------------------*/
269 
270 void
272  const cs_lnum_t n_f_selected,
273  const cs_lnum_t *selected_lst,
274  cs_real_t retval[]);
275 
276 /*----------------------------------------------------------------------------*/
284 /*----------------------------------------------------------------------------*/
285 
286 void
288  cs_real_t retval[]);
289 
290 /*----------------------------------------------------------------------------*/
300 /*----------------------------------------------------------------------------*/
301 
302 void
304  const cs_lnum_t n_e_selected,
305  const cs_lnum_t *selected_lst,
306  cs_real_t retval[]);
307 
308 /*----------------------------------------------------------------------------*/
318 /*----------------------------------------------------------------------------*/
319 
320 void
322  const cs_lnum_t n_e_selected,
323  const cs_lnum_t *selected_lst,
324  cs_real_t retval[]);
325 
326 /*----------------------------------------------------------------------------*/
337 /*----------------------------------------------------------------------------*/
338 
339 void
341  const cs_real_t time_eval,
342  const cs_lnum_t n_e_selected,
343  const cs_lnum_t *selected_lst,
344  cs_real_t retval[]);
345 
346 /*----------------------------------------------------------------------------*/
355 /*----------------------------------------------------------------------------*/
356 
357 void
359  const cs_lnum_t n_f_selected,
360  const cs_lnum_t *selected_lst,
361  cs_real_t retval[]);
362 
363 /*----------------------------------------------------------------------------*/
374 /*----------------------------------------------------------------------------*/
375 
376 void
378  const cs_real_t time_eval,
379  const cs_lnum_t n_f_selected,
380  const cs_lnum_t *selected_lst,
381  cs_real_t retval[]);
382 
383 /*----------------------------------------------------------------------------*/
390 /*----------------------------------------------------------------------------*/
391 
392 void
394  cs_real_t retval[]);
395 
396 /*----------------------------------------------------------------------------*/
403 /*----------------------------------------------------------------------------*/
404 
405 void
407  cs_real_t retval[]);
408 
409 /*----------------------------------------------------------------------------*/
418 /*----------------------------------------------------------------------------*/
419 
420 void
422  cs_real_t time_eval,
423  cs_real_t retval[]);
424 
425 /*----------------------------------------------------------------------------*/
435 /*----------------------------------------------------------------------------*/
436 
437 cs_real_t
439  const cs_real_t *array_val);
440 
441 /*============================================================================
442  * Inline public function prototypes
443  *============================================================================*/
444 
445 /*----------------------------------------------------------------------------*/
455 /*----------------------------------------------------------------------------*/
456 
457 static inline void
458 cs_evaluate_average_on_faces(const cs_xdef_t *def,
459  cs_real_t time_eval,
460  const cs_lnum_t n_f_selected,
461  const cs_lnum_t *selected_lst,
462  cs_real_t retval[])
463 {
464  /* Sanity checks */
465  assert(def != NULL);
466 
467  switch (def->type) {
468 
469  case CS_XDEF_BY_VALUE:
471  n_f_selected, selected_lst,
472  retval);
473  break;
474 
477  time_eval,
478  n_f_selected, selected_lst,
479  retval);
480  break;
481 
482  default:
483  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
484 
485  }
486 }
487 
488 /*----------------------------------------------------------------------------*/
496 /*----------------------------------------------------------------------------*/
497 
498 static inline void
499 cs_evaluate_average_on_cells(const cs_xdef_t *def,
500  cs_real_t time_eval,
501  cs_real_t retval[])
502 {
503  /* Sanity checks */
504  assert(def != NULL);
505 
506  switch (def->type) {
507 
508  case CS_XDEF_BY_VALUE:
510  break;
511 
513  cs_evaluate_average_on_cells_by_analytic(def, time_eval, retval);
514  break;
515 
516  case CS_XDEF_BY_ARRAY:
518 
519  default:
520  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
521 
522  }
523 }
524 
525 /*----------------------------------------------------------------------------*/
526 
528 
529 #endif /* __CS_EVALUATE_H__ */
void cs_evaluate_average_on_faces_by_value(const cs_xdef_t *def, const cs_lnum_t n_f_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the average of a function on the faces.
Definition: cs_evaluate.c:2472
void cs_evaluate_average_on_faces_by_analytic(const cs_xdef_t *def, const cs_real_t time_eval, const cs_lnum_t n_f_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the average of a function on the faces. Warning: retval has to be initialize before calling ...
Definition: cs_evaluate.c:2545
cs_real_t cs_evaluate_scal_domain_integral_by_array(cs_flag_t array_loc, const cs_real_t *array_val)
Evaluate the integral over the full computational domain of a quantity defined by an array...
Definition: cs_evaluate.c:2770
Definition: cs_xdef.h:118
void cs_evaluate_potential_by_qov(cs_flag_t dof_flag, const cs_xdef_t *def, cs_real_t vvals[], cs_real_t wvals[])
Define a value to each DoF in the case of a potential field in order to put a given quantity inside t...
Definition: cs_evaluate.c:1854
Definition: cs_mesh_adjacencies.h:68
void cs_evaluate_circulation_along_edges_by_value(const cs_xdef_t *def, const cs_lnum_t n_e_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the circulation along a selection of (primal) edges. Circulation is defined thanks to a cons...
Definition: cs_evaluate.c:2163
void cs_evaluate_potential_at_vertices_by_analytic(const cs_xdef_t *def, const cs_real_t time_eval, const cs_lnum_t n_v_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the quantity attached to a potential field at vertices when the definition relies on an anal...
Definition: cs_evaluate.c:1675
void cs_evaluate_density_by_analytic(cs_flag_t dof_flag, const cs_xdef_t *def, cs_real_t time_eval, cs_real_t retval[])
Compute the value related to each DoF in the case of a density field The value defined by the analyti...
Definition: cs_evaluate.c:1549
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
void cs_evaluate_scatter_array_reduction(int dim, cs_lnum_t n_x, const cs_real_t *array, const cs_adjacency_t *c2x, const cs_real_t *w_x, cs_real_t *min, cs_real_t *max, cs_real_t *wsum, cs_real_t *asum, cs_real_t *ssum)
Compute reduced quantities for an array attached to either vertex, face or edge DoFs The weight to ap...
Definition: cs_evaluate.c:1504
Definition: cs_cdo_connect.h:79
void cs_evaluate_circulation_along_edges_by_array(const cs_xdef_t *def, const cs_lnum_t n_e_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the circulation along a selection of (primal) edges. Circulation is defined thanks to an arr...
Definition: cs_evaluate.c:2249
Definition: cs_xdef.h:111
void cs_evaluate_array_reduction(int dim, cs_lnum_t n_x, const cs_real_t *array, const cs_real_t *w_x, cs_real_t *min, cs_real_t *max, cs_real_t *wsum, cs_real_t *asum, cs_real_t *ssum)
Compute reduced quantities for an array of size equal to dim * n_x The computed quantities are synchr...
Definition: cs_evaluate.c:1453
void bft_error(const char *const file_name, const int line_num, const int sys_error_code, const char *const format,...)
Calls the error handler (set by bft_error_handler_set() or default).
Definition: bft_error.c:193
double cs_real_t
Floating-point value.
Definition: cs_defs.h:322
Definition: cs_cdo_quantities.h:129
void cs_evaluate_circulation_along_edges_by_analytic(const cs_xdef_t *def, const cs_real_t time_eval, const cs_lnum_t n_e_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the circulation along a selection of (primal) edges. Circulation is defined by an analytical...
Definition: cs_evaluate.c:2340
cs_xdef_type_t type
Definition: cs_xdef.h:189
void cs_evaluate_potential_at_cells_by_analytic(const cs_xdef_t *def, const cs_real_t time_eval, cs_real_t retval[])
Evaluate the quantity attached to a potential field at cell centers when the definition relies on an ...
Definition: cs_evaluate.c:1806
void cs_evaluate_density_by_value(cs_flag_t dof_flag, const cs_xdef_t *def, cs_real_t retval[])
Evaluate the quantity defined by a value in the case of a density field for all the degrees of freedo...
Definition: cs_evaluate.c:1617
void cs_evaluate_potential_at_faces_by_analytic(const cs_xdef_t *def, const cs_real_t time_eval, const cs_lnum_t n_f_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate the quantity attached to a potential field at face centers when the definition relies on an ...
Definition: cs_evaluate.c:1723
void cs_evaluate_potential_at_vertices_by_value(const cs_xdef_t *def, const cs_lnum_t n_v_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate a potential field at vertices from a definition by a constant value.
Definition: cs_evaluate.c:1906
void cs_evaluate_set_shared_pointers(const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect)
Set shared pointers to main domain members.
Definition: cs_evaluate.c:1427
Definition: cs_xdef.h:110
void cs_evaluate_potential_at_faces_by_value(const cs_xdef_t *def, const cs_lnum_t n_f_selected, const cs_lnum_t *selected_lst, cs_real_t retval[])
Evaluate a potential field atface centers from a definition by a constant value.
Definition: cs_evaluate.c:1983
void cs_evaluate_potential_at_cells_by_value(const cs_xdef_t *def, cs_real_t retval[])
Evaluate a potential field at cell centers from a definition by value.
Definition: cs_evaluate.c:2076
Structure storing medata for defining a quantity in a very flexible way.
Definition: cs_xdef.h:154
void cs_evaluate_average_on_cells_by_array(const cs_xdef_t *def, cs_real_t retval[])
Evaluate the average of a function on the cells.
Definition: cs_evaluate.c:2640
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
#define END_C_DECLS
Definition: cs_defs.h:511
unsigned short int cs_flag_t
Definition: cs_defs.h:324
void cs_evaluate_average_on_cells_by_value(const cs_xdef_t *def, cs_real_t retval[])
Evaluate the average of a function on the cells.
Definition: cs_evaluate.c:2599
void cs_evaluate_average_on_cells_by_analytic(const cs_xdef_t *def, cs_real_t time_eval, cs_real_t retval[])
Evaluate the average of a function on the cells Warning: retval has to be initialize before calling t...
Definition: cs_evaluate.c:2701