7.0
general documentation
cs_hodge.h
Go to the documentation of this file.
1 #ifndef __CS_HODGE_H__
2 #define __CS_HODGE_H__
3 
4 /*============================================================================
5  * Manage discrete Hodge operators and closely related operators
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  * Standard C library headers
30  *----------------------------------------------------------------------------*/
31 
32 /*----------------------------------------------------------------------------
33  * Local headers
34  *----------------------------------------------------------------------------*/
35 
36 #include "cs_cdo_connect.h"
37 #include "cs_cdo_local.h"
38 #include "cs_cdo_quantities.h"
39 #include "cs_param_cdo.h"
40 #include "cs_property.h"
41 #include "cs_sdm.h"
42 
43 /*----------------------------------------------------------------------------*/
44 
46 
47 /*============================================================================
48  * Macro and type definitions
49  *============================================================================*/
50 
81 typedef enum {
82 
90 
92 
94 
128 typedef enum {
129 
136 
138 
140 
165 typedef struct {
166 
167  /* Each Hodge operator is associated to a property */
168  bool inv_pty;
169 
170  cs_hodge_type_t type; /* type of discrete Hodge operator */
171  cs_hodge_algo_t algo; /* type of algorithm used to build this op. */
172  double coef; /* Value of the stabilization parameter
173  * if the COST or OCS2 algo. is used, otherwise 0.
174  */
176 
177 /* DISCRETE HODGE OPERATORS */
178 /* ======================== */
179 
189 typedef struct {
190 
191  /* Each Hodge operator is associated to a property */
192  const cs_hodge_param_t *param; /* shared */
193 
195  cs_sdm_t *matrix;
196 
197 } cs_hodge_t;
198 
199 /*----------------------------------------------------------------------------*/
210 /*----------------------------------------------------------------------------*/
211 
212 typedef void
214  cs_hodge_t *hodge,
215  cs_cell_builder_t *cb);
216 
217 /*============================================================================
218  * Static inline public function definitions
219  *============================================================================*/
220 
221 /*----------------------------------------------------------------------------*/
231 /*----------------------------------------------------------------------------*/
232 
233 static inline bool
234 cs_hodge_param_is_similar(const cs_hodge_param_t h1_info,
235  const cs_hodge_param_t h2_info)
236 {
237  if (h1_info.type != h2_info.type)
238  return false;
239  if (h1_info.algo != h2_info.algo)
240  return false;
241  if (h1_info.algo == CS_HODGE_ALGO_COST ||
242  h1_info.algo == CS_HODGE_ALGO_BUBBLE) {
243  if (fabs(h1_info.coef - h2_info.coef) > 0)
244  return false;
245  else
246  return true;
247  }
248  else
249  return true;
250 }
251 
252 /*============================================================================
253  * Public function definitions
254  *============================================================================*/
255 
256 /*----------------------------------------------------------------------------*/
268 /*----------------------------------------------------------------------------*/
269 
270 cs_hodge_t *
271 cs_hodge_create(const cs_cdo_connect_t *connect,
272  const cs_property_t *property,
273  const cs_hodge_param_t *hp,
274  bool need_tensor,
275  bool need_eigen);
276 
277 /*----------------------------------------------------------------------------*/
291 /*----------------------------------------------------------------------------*/
292 
293 cs_hodge_t **
295  const cs_property_t *property,
296  const cs_hodge_param_t *hp,
297  bool need_tensor,
298  bool need_eigen);
299 
300 /*----------------------------------------------------------------------------*/
306 /*----------------------------------------------------------------------------*/
307 
308 void
309 cs_hodge_free(cs_hodge_t **p_hodge);
310 
311 /*----------------------------------------------------------------------------*/
317 /*----------------------------------------------------------------------------*/
318 
319 void
320 cs_hodge_free_context(cs_hodge_t ***p_hodges);
321 
322 /*----------------------------------------------------------------------------*/
331 /*----------------------------------------------------------------------------*/
332 
334 cs_hodge_get_func(const char *calling_func,
335  const cs_hodge_param_t hp);
336 
337 /*----------------------------------------------------------------------------*/
345 /*----------------------------------------------------------------------------*/
346 
347 void
348 cs_hodge_param_log(const char *prefix,
349  const cs_property_t *property,
350  const cs_hodge_param_t hp);
351 
352 /*----------------------------------------------------------------------------*/
360 /*----------------------------------------------------------------------------*/
361 
362 void
364  cs_hodge_param_t *h_cpy);
365 
366 /*----------------------------------------------------------------------------*/
377 /*----------------------------------------------------------------------------*/
378 
379 void
381  const cs_real_t t_eval,
382  const cs_flag_t c_flag,
383  cs_hodge_t *hodge);
384 
385 /*----------------------------------------------------------------------------*/
397 /*----------------------------------------------------------------------------*/
398 
399 void
401  const cs_real_t t_eval,
402  const cs_flag_t c_flag,
403  cs_hodge_t *hodge);
404 
405 /*----------------------------------------------------------------------------*/
416 /*----------------------------------------------------------------------------*/
417 
418 void
420  cs_hodge_t *hodge,
421  cs_cell_builder_t *cb);
422 
423 /*----------------------------------------------------------------------------*/
435 /*----------------------------------------------------------------------------*/
436 
437 void
439  cs_hodge_t *hodge,
440  cs_cell_builder_t *cb);
441 
442 /*----------------------------------------------------------------------------*/
453 /*----------------------------------------------------------------------------*/
454 
455 void
457  cs_hodge_t *hodge,
458  cs_cell_builder_t *cb);
459 
460 /*----------------------------------------------------------------------------*/
471 /*----------------------------------------------------------------------------*/
472 
473 void
475  cs_hodge_t *hodge,
476  cs_cell_builder_t *cb);
477 
478 /*----------------------------------------------------------------------------*/
489 /*----------------------------------------------------------------------------*/
490 
491 void
493  cs_hodge_t *hodge,
494  cs_cell_builder_t *cb);
495 
496 /*----------------------------------------------------------------------------*/
507 /*----------------------------------------------------------------------------*/
508 
509 void
511  cs_hodge_t *hodge,
512  cs_cell_builder_t *cb);
513 
514 /*----------------------------------------------------------------------------*/
525 /*----------------------------------------------------------------------------*/
526 
527 void
529  cs_hodge_t *hodge,
530  cs_cell_builder_t *cb);
531 
532 /*----------------------------------------------------------------------------*/
545 /*----------------------------------------------------------------------------*/
546 
547 void
549  cs_hodge_t *hodge,
550  cs_cell_builder_t *cb);
551 
552 /*----------------------------------------------------------------------------*/
563 /*----------------------------------------------------------------------------*/
564 
565 void
567  cs_hodge_t *hodge,
568  cs_cell_builder_t *cb);
569 
570 /*----------------------------------------------------------------------------*/
581 /*----------------------------------------------------------------------------*/
582 
583 void
585  cs_hodge_t *hodge,
586  cs_cell_builder_t *cb);
587 
588 /*----------------------------------------------------------------------------*/
599 /*----------------------------------------------------------------------------*/
600 
601 void
603  cs_hodge_t *hodge,
604  cs_cell_builder_t *cb);
605 
606 /*----------------------------------------------------------------------------*/
616 /*----------------------------------------------------------------------------*/
617 
618 void
620  cs_hodge_t *hodge,
621  cs_cell_builder_t *cb);
622 
623 /*----------------------------------------------------------------------------*/
634 /*----------------------------------------------------------------------------*/
635 
636 void
638  cs_hodge_t *hodge,
639  cs_cell_builder_t *cb);
640 
641 /*----------------------------------------------------------------------------*/
652 /*----------------------------------------------------------------------------*/
653 
654 void
656  cs_hodge_t *hodge,
657  cs_cell_builder_t *cb);
658 
659 /*----------------------------------------------------------------------------*/
669 /*----------------------------------------------------------------------------*/
670 
671 void
673  cs_hodge_t *hodge,
674  cs_cell_builder_t *cb);
675 
676 /*----------------------------------------------------------------------------*/
687 /*----------------------------------------------------------------------------*/
688 
689 void
691  cs_hodge_t *hodge,
692  cs_cell_builder_t *cb);
693 
694 /*----------------------------------------------------------------------------*/
705 /*----------------------------------------------------------------------------*/
706 
707 void
709  cs_hodge_t *hodge,
710  cs_cell_builder_t *cb);
711 
712 /*----------------------------------------------------------------------------*/
723 /*----------------------------------------------------------------------------*/
724 
725 void
727  cs_hodge_t *hodge,
728  cs_cell_builder_t *cb);
729 
730 /*----------------------------------------------------------------------------*/
741 /*----------------------------------------------------------------------------*/
742 
743 void
745  cs_hodge_t *hodge,
746  cs_cell_builder_t *cb);
747 
748 /*----------------------------------------------------------------------------*/
760 /*----------------------------------------------------------------------------*/
761 
762 void
764  cs_hodge_t *hodge,
765  cs_cell_builder_t *cb);
766 
767 /*----------------------------------------------------------------------------*/
780 /*----------------------------------------------------------------------------*/
781 
782 void
784  cs_hodge_t *hodge,
785  cs_cell_builder_t *cb);
786 
787 /*----------------------------------------------------------------------------*/
798 /*----------------------------------------------------------------------------*/
799 
800 void
802  cs_hodge_t *hodge,
803  cs_cell_builder_t *cb);
804 
805 /*----------------------------------------------------------------------------*/
816 /*----------------------------------------------------------------------------*/
817 
818 void
820  cs_hodge_t *hodge,
821  cs_cell_builder_t *cb);
822 
823 /*----------------------------------------------------------------------------*/
834 /*----------------------------------------------------------------------------*/
835 
836 void
838  cs_hodge_t *hodge,
839  cs_cell_builder_t *cb);
840 
841 /*----------------------------------------------------------------------------*/
852 /*----------------------------------------------------------------------------*/
853 
854 void
856  cs_hodge_t *hodge,
857  cs_cell_builder_t *cb);
858 
859 /*----------------------------------------------------------------------------*/
869 /*----------------------------------------------------------------------------*/
870 
871 void
873  cs_hodge_t *hodge,
874  cs_cell_builder_t *cb);
875 
876 /*----------------------------------------------------------------------------*/
887 /*----------------------------------------------------------------------------*/
888 
889 void
891  cs_hodge_t *hodge,
892  cs_cell_builder_t *cb);
893 
894 /*----------------------------------------------------------------------------*/
904 /*----------------------------------------------------------------------------*/
905 
906 void
908  cs_hodge_t *hodge,
909  cs_cell_builder_t *cb);
910 
911 /*----------------------------------------------------------------------------*/
922 /*----------------------------------------------------------------------------*/
923 
924 void
926  cs_hodge_t *hodge,
927  cs_cell_builder_t *cb);
928 
929 /*----------------------------------------------------------------------------*/
942 /*----------------------------------------------------------------------------*/
943 
944 void
945 cs_hodge_matvec(const cs_cdo_connect_t *connect,
946  const cs_cdo_quantities_t *quant,
947  const cs_hodge_param_t hodgep,
948  const cs_property_t *pty,
949  const cs_real_t in_vals[],
950  cs_real_t t_eval,
951  cs_real_t result[]);
952 
953 /*----------------------------------------------------------------------------*/
966 /*----------------------------------------------------------------------------*/
967 
968 void
970  const cs_cdo_quantities_t *quant,
971  cs_real_t t_eval,
972  const cs_hodge_param_t hodgep,
973  const cs_property_t *pty,
974  const cs_real_t flux[],
975  cs_real_t circul[]);
976 
977 /*----------------------------------------------------------------------------*/
986 /*----------------------------------------------------------------------------*/
987 
988 void
990  cs_sdm_t *hf);
991 
992 /*----------------------------------------------------------------------------*/
993 
995 
996 #endif /* __CS_HODGE_H__ */
void cs_hodge_epfd_cost_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the COST algo. Hodge op. from primal edges to dua...
Definition: cs_hodge.c:3244
void cs_hodge_edfp_cost_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the COST algo. Hodge op. from dual edges to prima...
Definition: cs_hodge.c:3694
Definition: cs_hodge.h:86
void cs_hodge_edfp_voro_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using VORONOI algo. Hodge op. from dual edges to primal...
Definition: cs_hodge.c:3634
void cs_hodge_compute_wbs_surfacic(const cs_face_mesh_t *fm, cs_sdm_t *hf)
Compute the hodge operator related to a face (i.e. a mass matrix with unity property) using a Whitney...
Definition: cs_hodge.c:4229
bool inv_pty
Definition: cs_hodge.h:168
Definition: cs_hodge.h:83
void cs_hodge_vb_cost_get_iso_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic COST algo. The computed matrix is stored in cb->loc ...
Definition: cs_hodge.c:1932
cs_hodge_type_t type
Definition: cs_hodge.h:170
void cs_hodge_fb_voro_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the Voronoi algorithm The computed matrix is stored in cb->loc a...
Definition: cs_hodge.c:1873
cs_hodge_compute_t * cs_hodge_get_func(const char *calling_func, const cs_hodge_param_t hp)
Retrieve a function pointer to compute a discrete Hodge operator.
Definition: cs_hodge.c:1390
Structure storing the evaluation of a property and its related data.
Definition: cs_property.h:178
void cs_hodge_vpcd_voro_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using VORONOI algo. Hodge op. from primal vertices to d...
Definition: cs_hodge.c:3126
#define BEGIN_C_DECLS
Definition: cs_defs.h:495
void cs_hodge_fped_cost_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the COST algo. Hodge op. from primal faces to dua...
Definition: cs_hodge.c:3494
void cs_hodge_edfp_cost_get_opt(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the COST algo. Hodge op. from dual edges to prima...
Definition: cs_hodge.c:3765
void cs_hodge_free(cs_hodge_t **p_hodge)
Free a cs_hodge_t structure.
Definition: cs_hodge.c:1332
Definition: cs_hodge.h:89
void cs_hodge_vb_cost_get_aniso_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic COST algo. The computed matrix is stored in cb->loc ...
Definition: cs_hodge.c:1986
Set of local quantities and connectivities related to a mesh cell This is a key structure for all cel...
Definition: cs_cdo_local.h:159
void cs_hodge_set_property_value_cw(const cs_cell_mesh_t *cm, const cs_real_t t_eval, const cs_flag_t c_flag, cs_hodge_t *hodge)
Set the property value (scalar- or tensor-valued) related to a discrete Hodge operator inside a cell ...
Definition: cs_hodge.c:1672
Definition: cs_cdo_connect.h:76
void cs_hodge_vb_bubble_get_iso_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic Bubble algo. The computed matrix is stored in cb->lo...
Definition: cs_hodge.c:2040
void cs_hodge_vb_voro_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the Voronoi algorithm The computed matrix is stored in cb->loc a...
Definition: cs_hodge.c:2397
cs_hodge_t ** cs_hodge_init_context(const cs_cdo_connect_t *connect, const cs_property_t *property, const cs_hodge_param_t *hp, bool need_tensor, bool need_eigen)
Create and initialize an array of pointers to a cs_hodge_t structures. This array is of size the numb...
Definition: cs_hodge.c:1293
Definition: cs_hodge.h:137
Structure associated to a discrete Hodge operator.
Definition: cs_hodge.h:189
void cs_hodge_fped_voro_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using VORONOI algo. Hodge op. from primal faces to dual...
Definition: cs_hodge.c:3434
double cs_real_t
Floating-point value.
Definition: cs_defs.h:307
Definition: cs_cdo_quantities.h:124
void cs_hodge_edfp_bubble_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the Bubble algo. Hodge op. from dual edges to pri...
Definition: cs_hodge.c:3833
void cs_hodge_fped_bubble_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the Bubble algo. Hodge op. from primal faces to d...
Definition: cs_hodge.c:3566
void() cs_hodge_compute_t(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a discrete Hodge operator or a related operator (such as the stiffmess matrix) for a given cell...
Definition: cs_hodge.h:213
void cs_hodge_vpcd_wbs_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using WBS algo. Hodge op. from primal vertices to dual ...
Definition: cs_hodge.c:3009
void cs_hodge_vcb_wbs_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the WBS algo. This function is specific for verte...
Definition: cs_hodge.c:2885
double coef
Definition: cs_hodge.h:172
void cs_hodge_vb_ocs2_get_aniso_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the Orthogonal Consistent/Sub-Stabilization decomposition (OCS2)...
Definition: cs_hodge.c:2150
Definition: cs_field_pointer.h:134
void cs_hodge_free_context(cs_hodge_t ***p_hodges)
Free a set of cs_hodge_t structures.
Definition: cs_hodge.c:1357
Definition: cs_hodge.h:130
Definition: cs_hodge.h:91
void cs_hodge_vcb_voro_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the Voronoi algo. This leads to a diagonal operat...
Definition: cs_hodge.c:2819
void cs_hodge_epfd_voro_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using VORONOI algo. Hodge op. from primal edges to dual...
Definition: cs_hodge.c:3179
void cs_hodge_fb_cost_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic COST algo. The computed matrix is stored in cb->loc ...
Definition: cs_hodge.c:1750
void cs_hodge_fb_bubble_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic COST algo. with the usage of bubble stabilization...
Definition: cs_hodge.c:1812
void cs_hodge_vb_wbs_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic WBS algo. WBS standing for Whitney Barycentric Subdi...
Definition: cs_hodge.c:2488
cs_hodge_type_t
Type of discrete Hodge operators.
Definition: cs_hodge.h:81
Definition: cs_hodge.h:131
void cs_hodge_set_property_value(const cs_lnum_t c_id, const cs_real_t t_eval, const cs_flag_t c_flag, cs_hodge_t *hodge)
Set the property value (scalar- or tensor-valued) related to a discrete Hodge operator inside a cell ...
Definition: cs_hodge.c:1591
void cs_hodge_vcb_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic WBS algo. WBS standing for Whitney Barycentric Subdi...
Definition: cs_hodge.c:2608
cs_hodge_algo_t
Type of algorithm to build a discrete Hodge operator.
Definition: cs_hodge.h:128
Set of local and temporary buffers useful for building the algebraic system with a cellwise process...
Definition: cs_cdo_local.h:69
void cs_hodge_epfd_bubble_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the COST algo. with a bubble stabilization. The discrete Hodge operator is stored in hodge->matrix Hodge op. from primal edges to dual faces. This function is specific for vertex-based schemes.
Definition: cs_hodge.c:3318
Definition: cs_hodge.h:133
Definition: cs_hodge.h:134
cs_hodge_t * cs_hodge_create(const cs_cdo_connect_t *connect, const cs_property_t *property, const cs_hodge_param_t *hp, bool need_tensor, bool need_eigen)
Create and initialize a pointer to a cs_hodge_t structure.
Definition: cs_hodge.c:1229
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:301
void cs_hodge_epfd_ocs2_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator for a given cell using the Orthogonal Consistent/Sub-Stabilization decom...
Definition: cs_hodge.c:3386
void cs_hodge_vb_cost_get_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic COST algo. The computed matrix is stored in cb->loc ...
Definition: cs_hodge.c:2194
const cs_hodge_param_t * param
Definition: cs_hodge.h:192
void cs_hodge_circulation_from_flux(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, cs_real_t t_eval, const cs_hodge_param_t hodgep, const cs_property_t *pty, const cs_real_t flux[], cs_real_t circul[])
Compute cellwise a discrete hodge operator in order to define a circulation array from a flux array...
Definition: cs_hodge.c:4123
cs_property_data_t * pty_data
Definition: cs_hodge.h:194
cs_sdm_t * matrix
Definition: cs_hodge.h:195
#define END_C_DECLS
Definition: cs_defs.h:496
Definition: cs_hodge.h:135
unsigned short int cs_flag_t
Definition: cs_defs.h:309
Definition: cs_hodge.h:88
Definition: cs_hodge.h:132
void cs_hodge_matvec(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_hodge_param_t hodgep, const cs_property_t *pty, const cs_real_t in_vals[], cs_real_t t_eval, cs_real_t result[])
Compute cellwise a discrete hodge operator and multiple it with a vector.
Definition: cs_hodge.c:3903
void cs_hodge_fb_get(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local Hodge operator on a given cell which is equivalent of a mass matrix. It relies on a CO+ST algo. and is specific to CDO-Fb schemes. The discrete Hodge operator is stored in hodge->matrix.
Definition: cs_hodge.c:2742
Set of local quantities and connectivities related to a mesh face Structure used to get a better memo...
Definition: cs_cdo_local.h:227
cs_hodge_algo_t algo
Definition: cs_hodge.h:171
Definition: cs_hodge.h:85
Definition: cs_hodge.h:84
void cs_hodge_param_log(const char *prefix, const cs_property_t *property, const cs_hodge_param_t hp)
Output the settings related to a cs_hodge_param_t structure.
Definition: cs_hodge.c:1526
Structure associated to the definition of a property relying on the cs_xdef_t structure.
Structure storing all metadata/parameters related to the usage of a discrete Hodge operator...
Definition: cs_hodge.h:165
void cs_hodge_copy_parameters(const cs_hodge_param_t *h_ref, cs_hodge_param_t *h_cpy)
Copy the set of parameters associated to a discrete Hodge operator to another one.
Definition: cs_hodge.c:1565
Definition: cs_hodge.h:87
void cs_hodge_vb_bubble_get_aniso_stiffness(const cs_cell_mesh_t *cm, cs_hodge_t *hodge, cs_cell_builder_t *cb)
Build a local stiffness matrix using the generic Bubble algo. The computed matrix is stored in cb->lo...
Definition: cs_hodge.c:2094