6.2
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-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 
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 /*----------------------------------------------------------------------------*/
141 /*----------------------------------------------------------------------------*/
142 
143 cs_real_t
145  const cs_adjacency_t *c2x,
146  const cs_real_t *w_c2x);
147 
148 /*----------------------------------------------------------------------------*/
161 /*----------------------------------------------------------------------------*/
162 
163 cs_real_t
165  const cs_adjacency_t *c2x,
166  const cs_real_t *w_c2x);
167 
168 /*----------------------------------------------------------------------------*/
182 /*----------------------------------------------------------------------------*/
183 
184 cs_real_t
186  const cs_real_t *ref,
187  const cs_adjacency_t *c2x,
188  const cs_real_t *w_c2x);
189 
190 /*----------------------------------------------------------------------------*/
205 /*----------------------------------------------------------------------------*/
206 
207 cs_real_t
209  const cs_real_t *ref,
210  const cs_adjacency_t *c2x,
211  const cs_real_t *w_c2x);
212 
213 /*----------------------------------------------------------------------------*/
229 /*----------------------------------------------------------------------------*/
230 
231 cs_real_t
233  const cs_real_t *ref,
234  const cs_adjacency_t *c2x,
235  const cs_real_t *w_c2x);
236 
237 /*----------------------------------------------------------------------------*/
247 /*----------------------------------------------------------------------------*/
248 
249 void
251  const cs_xdef_t *def,
252  cs_real_t time_eval,
253  cs_real_t retval[]);
254 
255 /*----------------------------------------------------------------------------*/
265 /*----------------------------------------------------------------------------*/
266 
267 void
269  const cs_xdef_t *def,
270  cs_real_t retval[]);
271 
272 /*----------------------------------------------------------------------------*/
283 /*----------------------------------------------------------------------------*/
284 
285 void
287  const cs_real_t time_eval,
288  const cs_lnum_t n_v_selected,
289  const cs_lnum_t *selected_lst,
290  cs_real_t retval[]);
291 
292 /*----------------------------------------------------------------------------*/
303 /*----------------------------------------------------------------------------*/
304 
305 void
307  const cs_real_t time_eval,
308  const cs_lnum_t n_f_selected,
309  const cs_lnum_t *selected_lst,
310  cs_real_t retval[]);
311 
312 /*----------------------------------------------------------------------------*/
321 /*----------------------------------------------------------------------------*/
322 
323 void
325  const cs_real_t time_eval,
326  cs_real_t retval[]);
327 
328 /*----------------------------------------------------------------------------*/
340 /*----------------------------------------------------------------------------*/
341 
342 void
344  const cs_xdef_t *def,
345  cs_real_t vvals[],
346  cs_real_t wvals[]);
347 
348 /*----------------------------------------------------------------------------*/
358 /*----------------------------------------------------------------------------*/
359 
360 void
362  const cs_lnum_t n_v_selected,
363  const cs_lnum_t *selected_lst,
364  cs_real_t retval[]);
365 
366 /*----------------------------------------------------------------------------*/
376 /*----------------------------------------------------------------------------*/
377 
378 void
380  const cs_lnum_t n_f_selected,
381  const cs_lnum_t *selected_lst,
382  cs_real_t retval[]);
383 
384 /*----------------------------------------------------------------------------*/
392 /*----------------------------------------------------------------------------*/
393 
394 void
396  cs_real_t retval[]);
397 
398 /*----------------------------------------------------------------------------*/
408 /*----------------------------------------------------------------------------*/
409 
410 void
412  const cs_lnum_t n_e_selected,
413  const cs_lnum_t *selected_lst,
414  cs_real_t retval[]);
415 
416 /*----------------------------------------------------------------------------*/
426 /*----------------------------------------------------------------------------*/
427 
428 void
430  const cs_lnum_t n_e_selected,
431  const cs_lnum_t *selected_lst,
432  cs_real_t retval[]);
433 
434 /*----------------------------------------------------------------------------*/
445 /*----------------------------------------------------------------------------*/
446 
447 void
449  const cs_real_t time_eval,
450  const cs_lnum_t n_e_selected,
451  const cs_lnum_t *selected_lst,
452  cs_real_t retval[]);
453 
454 /*----------------------------------------------------------------------------*/
463 /*----------------------------------------------------------------------------*/
464 
465 void
467  const cs_lnum_t n_f_selected,
468  const cs_lnum_t *selected_lst,
469  cs_real_t retval[]);
470 
471 /*----------------------------------------------------------------------------*/
482 /*----------------------------------------------------------------------------*/
483 
484 void
486  const cs_real_t time_eval,
487  const cs_lnum_t n_f_selected,
488  const cs_lnum_t *selected_lst,
489  cs_real_t retval[]);
490 
491 /*----------------------------------------------------------------------------*/
498 /*----------------------------------------------------------------------------*/
499 
500 void
502  cs_real_t retval[]);
503 
504 /*----------------------------------------------------------------------------*/
511 /*----------------------------------------------------------------------------*/
512 
513 void
515  cs_real_t retval[]);
516 
517 /*----------------------------------------------------------------------------*/
526 /*----------------------------------------------------------------------------*/
527 
528 void
530  cs_real_t time_eval,
531  cs_real_t retval[]);
532 
533 /*----------------------------------------------------------------------------*/
543 /*----------------------------------------------------------------------------*/
544 
545 cs_real_t
547  const cs_real_t *array_val);
548 
549 /*============================================================================
550  * Inline public function prototypes
551  *============================================================================*/
552 
553 /*----------------------------------------------------------------------------*/
563 /*----------------------------------------------------------------------------*/
564 
565 static inline void
566 cs_evaluate_average_on_faces(const cs_xdef_t *def,
567  cs_real_t time_eval,
568  const cs_lnum_t n_f_selected,
569  const cs_lnum_t *selected_lst,
570  cs_real_t retval[])
571 {
572  /* Sanity checks */
573  assert(def != NULL);
574 
575  switch (def->type) {
576 
577  case CS_XDEF_BY_VALUE:
579  n_f_selected, selected_lst,
580  retval);
581  break;
582 
585  time_eval,
586  n_f_selected, selected_lst,
587  retval);
588  break;
589 
590  default:
591  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
592 
593  }
594 }
595 
596 /*----------------------------------------------------------------------------*/
604 /*----------------------------------------------------------------------------*/
605 
606 static inline void
607 cs_evaluate_average_on_cells(const cs_xdef_t *def,
608  cs_real_t time_eval,
609  cs_real_t retval[])
610 {
611  /* Sanity checks */
612  assert(def != NULL);
613 
614  switch (def->type) {
615 
616  case CS_XDEF_BY_VALUE:
618  break;
619 
621  cs_evaluate_average_on_cells_by_analytic(def, time_eval, retval);
622  break;
623 
624  case CS_XDEF_BY_ARRAY:
626 
627  default:
628  bft_error(__FILE__, __LINE__, 0, " %s: Case not handled yet.", __func__);
629 
630  }
631 }
632 
633 /*----------------------------------------------------------------------------*/
634 
636 
637 #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:2947
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:3020
cs_real_t cs_evaluate_delta_square_wc2x_norm(const cs_real_t *array, const cs_real_t *ref, const cs_adjacency_t *c2x, const cs_real_t *w_c2x)
Compute the norm of the difference of two arrays scanne by the same cs_adjacency_t structure with the...
Definition: cs_evaluate.c:1728
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:3245
Definition: cs_xdef.h:100
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:2329
Definition: cs_mesh_adjacencies.h:67
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:2638
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:2150
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:2024
#define BEGIN_C_DECLS
Definition: cs_defs.h:495
cs_real_t cs_evaluate_delta_3_square_wc2x_rnorm(const cs_real_t *array, const cs_real_t *ref, const cs_adjacency_t *c2x, const cs_real_t *w_c2x)
Compute the relative norm of the difference of two arrays scanned by the same cs_adjacency_t structur...
Definition: cs_evaluate.c:1925
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:1505
Definition: cs_cdo_connect.h:76
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:2724
Definition: cs_xdef.h:93
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 quantities computed are synchr...
Definition: cs_evaluate.c:1454
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:307
Definition: cs_cdo_quantities.h:124
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:2815
cs_xdef_type_t type
Definition: cs_xdef.h:171
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:2281
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:2092
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:2198
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:2381
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:1428
Definition: cs_xdef.h:92
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:2458
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:2551
Structure storing medata for defining a quantity in a very flexible way.
Definition: cs_xdef.h:136
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:3115
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:301
cs_real_t cs_evaluate_delta_square_wc2x_rnorm(const cs_real_t *array, const cs_real_t *ref, const cs_adjacency_t *c2x, const cs_real_t *w_c2x)
Compute the relative norm of the difference of two arrays scanned by the same cs_adjacency_t structur...
Definition: cs_evaluate.c:1820
cs_real_t cs_evaluate_3_square_wc2x_norm(const cs_real_t *array, const cs_adjacency_t *c2x, const cs_real_t *w_c2x)
Compute the weighted L2-norm of an array. The weight is scanned by a cs_adjacency_t structure...
Definition: cs_evaluate.c:1640
#define END_C_DECLS
Definition: cs_defs.h:496
unsigned short int cs_flag_t
Definition: cs_defs.h:309
cs_real_t cs_evaluate_square_wc2x_norm(const cs_real_t *array, const cs_adjacency_t *c2x, const cs_real_t *w_c2x)
Compute the weighted L2-norm of an array. The weight is scanned by a cs_adjacency_t structure The qua...
Definition: cs_evaluate.c:1552
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:3074
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:3176