7.3
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-2022 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 /*----------------------------------------------------------------------------*/
116 /*----------------------------------------------------------------------------*/
117 
118 void
120  cs_lnum_t n_x,
121  const cs_real_t *array,
122  const cs_adjacency_t *c2x,
123  const cs_real_t *w_x,
124  cs_real_t *min,
125  cs_real_t *max,
126  cs_real_t *wsum,
127  cs_real_t *asum,
128  cs_real_t *ssum);
129 
130 /*----------------------------------------------------------------------------*/
140 /*----------------------------------------------------------------------------*/
141 
142 void
144  const cs_xdef_t *def,
145  cs_real_t retval[]);
146 
147 /*----------------------------------------------------------------------------*/
157 /*----------------------------------------------------------------------------*/
158 
159 void
161  const cs_xdef_t *def,
162  cs_real_t time_eval,
163  cs_real_t retval[]);
164 
165 /*----------------------------------------------------------------------------*/
175 /*----------------------------------------------------------------------------*/
176 
177 void
179  const cs_lnum_t n_v_selected,
180  const cs_lnum_t *selected_lst,
181  cs_real_t retval[]);
182 
183 /*----------------------------------------------------------------------------*/
194 /*----------------------------------------------------------------------------*/
195 
196 void
198  const cs_real_t time_eval,
199  const cs_lnum_t n_v_selected,
200  const cs_lnum_t *selected_lst,
201  cs_real_t retval[]);
202 
203 /*----------------------------------------------------------------------------*/
213 /*----------------------------------------------------------------------------*/
214 
215 void
217  const cs_lnum_t n_v_selected,
218  const cs_lnum_t *selected_lst,
219  cs_real_t retval[]);
220 
221 /*----------------------------------------------------------------------------*/
231 /*----------------------------------------------------------------------------*/
232 
233 void
235  const cs_lnum_t n_f_selected,
236  const cs_lnum_t *selected_lst,
237  cs_real_t retval[]);
238 
239 /*----------------------------------------------------------------------------*/
250 /*----------------------------------------------------------------------------*/
251 
252 void
254  const cs_real_t time_eval,
255  const cs_lnum_t n_f_selected,
256  const cs_lnum_t *selected_lst,
257  cs_real_t retval[]);
258 
259 /*----------------------------------------------------------------------------*/
267 /*----------------------------------------------------------------------------*/
268 
269 void
271  cs_real_t retval[]);
272 
273 /*----------------------------------------------------------------------------*/
282 /*----------------------------------------------------------------------------*/
283 
284 void
286  const cs_real_t time_eval,
287  cs_real_t retval[]);
288 
289 /*----------------------------------------------------------------------------*/
297 /*----------------------------------------------------------------------------*/
298 
299 void
301  cs_real_t retval[]);
302 
303 /*----------------------------------------------------------------------------*/
315 /*----------------------------------------------------------------------------*/
316 
317 void
319  const cs_xdef_t *def,
320  cs_real_t vvals[],
321  cs_real_t wvals[]);
322 
323 /*----------------------------------------------------------------------------*/
333 /*----------------------------------------------------------------------------*/
334 
335 void
337  const cs_lnum_t n_e_selected,
338  const cs_lnum_t *selected_lst,
339  cs_real_t retval[]);
340 
341 /*----------------------------------------------------------------------------*/
351 /*----------------------------------------------------------------------------*/
352 
353 void
355  const cs_lnum_t n_e_selected,
356  const cs_lnum_t *selected_lst,
357  cs_real_t retval[]);
358 
359 /*----------------------------------------------------------------------------*/
370 /*----------------------------------------------------------------------------*/
371 
372 void
374  const cs_real_t time_eval,
375  const cs_lnum_t n_e_selected,
376  const cs_lnum_t *selected_lst,
377  cs_real_t retval[]);
378 
379 /*----------------------------------------------------------------------------*/
388 /*----------------------------------------------------------------------------*/
389 
390 void
392  const cs_lnum_t n_f_selected,
393  const cs_lnum_t *selected_lst,
394  cs_real_t retval[]);
395 
396 /*----------------------------------------------------------------------------*/
407 /*----------------------------------------------------------------------------*/
408 
409 void
411  const cs_real_t time_eval,
412  const cs_lnum_t n_f_selected,
413  const cs_lnum_t *selected_lst,
414  cs_real_t retval[]);
415 
416 /*----------------------------------------------------------------------------*/
423 /*----------------------------------------------------------------------------*/
424 
425 void
427  cs_real_t retval[]);
428 
429 /*----------------------------------------------------------------------------*/
436 /*----------------------------------------------------------------------------*/
437 
438 void
440  cs_real_t retval[]);
441 
442 /*----------------------------------------------------------------------------*/
451 /*----------------------------------------------------------------------------*/
452 
453 void
455  cs_real_t time_eval,
456  cs_real_t retval[]);
457 
458 /*----------------------------------------------------------------------------*/
468 /*----------------------------------------------------------------------------*/
469 
470 cs_real_t
472  const cs_real_t *array_val);
473 
474 /*============================================================================
475  * Inline public function prototypes
476  *============================================================================*/
477 
478 /*----------------------------------------------------------------------------*/
488 /*----------------------------------------------------------------------------*/
489 
490 static inline void
492  cs_real_t time_eval,
493  const cs_lnum_t n_f_selected,
494  const cs_lnum_t *selected_lst,
495  cs_real_t retval[])
496 {
497  /* Sanity checks */
498  assert(def != NULL);
499 
500  switch (def->type) {
501 
502  case CS_XDEF_BY_VALUE:
504  n_f_selected, selected_lst,
505  retval);
506  break;
507 
510  time_eval,
511  n_f_selected, selected_lst,
512  retval);
513  break;
514 
515  default:
516  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
517 
518  }
519 }
520 
521 /*----------------------------------------------------------------------------*/
529 /*----------------------------------------------------------------------------*/
530 
531 static inline void
533  cs_real_t time_eval,
534  cs_real_t retval[])
535 {
536  /* Sanity checks */
537  assert(def != NULL);
538 
539  switch (def->type) {
540 
541  case CS_XDEF_BY_VALUE:
543  break;
544 
546  cs_evaluate_average_on_cells_by_analytic(def, time_eval, retval);
547  break;
548 
549  case CS_XDEF_BY_ARRAY:
551 
552  default:
553  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
554 
555  }
556 }
557 
558 /*----------------------------------------------------------------------------*/
559 
561 
562 #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:2561
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:2632
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:2851
Definition: cs_xdef.h:119
static void cs_evaluate_average_on_cells(const cs_xdef_t *def, cs_real_t time_eval, cs_real_t retval[])
Evaluate the average of a function on the cells.
Definition: cs_evaluate.h:532
void cs_evaluate_potential_at_vertices_by_dof_func(const cs_xdef_t *def, 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 a DoF f...
Definition: cs_evaluate.c:1807
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:2204
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:2257
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:1760
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:1612
#define BEGIN_C_DECLS
Definition: cs_defs.h:512
static void cs_evaluate_average_on_faces(const cs_xdef_t *def, 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.
Definition: cs_evaluate.h:491
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:1507
Definition: cs_cdo_connect.h:61
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:2341
Definition: cs_xdef.h:112
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:132
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:2430
cs_xdef_type_t type
Definition: cs_xdef.h:190
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:2114
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:1555
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:1944
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:1680
Definition: cs_xdef.h:111
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:1850
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:2029
Structure storing medata for defining a quantity in a very flexible way.
Definition: cs_xdef.h:155
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:2724
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
void cs_evaluate_potential_at_cells_by_dof_func(const cs_xdef_t *def, cs_real_t retval[])
Evaluate the quantity attached to a potential field at cells when the definition relies on a DoF func...
Definition: cs_evaluate.c:2157
#define END_C_DECLS
Definition: cs_defs.h:513
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:2684
void cs_evaluate_init_sharing(const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect)
Set shared pointers to main domain members.
Definition: cs_evaluate.c:1426
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:2783