7.2
general documentation
cs_cdo_assembly.h
Go to the documentation of this file.
1 #ifndef __CS_CDO_ASSEMBLY_H__
2 #define __CS_CDO_ASSEMBLY_H__
3 
4 /*============================================================================
5  * Functions to handle the assembly process of equatino discretized with CDO
6  * schemes
7  *============================================================================*/
8 
9 /*
10  This file is part of code_saturne, a general-purpose CFD tool.
11 
12  Copyright (C) 1998-2022 EDF S.A.
13 
14  This program is free software; you can redistribute it and/or modify it under
15  the terms of the GNU General Public License as published by the Free Software
16  Foundation; either version 2 of the License, or (at your option) any later
17  version.
18 
19  This program is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
22  details.
23 
24  You should have received a copy of the GNU General Public License along with
25  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
26  Street, Fifth Floor, Boston, MA 02110-1301, USA.
27 */
28 
29 /*----------------------------------------------------------------------------
30  * Local headers
31  *----------------------------------------------------------------------------*/
32 
33 #include "cs_matrix.h"
34 #include "cs_matrix_assembler.h"
35 #include "cs_param_cdo.h"
36 #include "cs_param_types.h"
37 #include "cs_range_set.h"
38 #include "cs_sdm.h"
39 
40 /*----------------------------------------------------------------------------*/
41 
43 
44 /*============================================================================
45  * Macro definitions
46  *============================================================================*/
47 
48 /*============================================================================
49  * Type definitions
50  *============================================================================*/
51 
52 typedef struct _cs_cdo_assembly_t cs_cdo_assembly_t;
53 
54 /*============================================================================
55  * Function pointer type definitions
56  *============================================================================*/
57 
58 /*----------------------------------------------------------------------------*/
69 /*----------------------------------------------------------------------------*/
70 
71 typedef void
72 (cs_cdo_assembly_func_t)(const cs_sdm_t *m,
73  const cs_lnum_t *dof_ids,
74  const cs_range_set_t *rset,
75  cs_cdo_assembly_t *eqa,
77 
78 /*============================================================================
79  * Public function prototypes
80  *============================================================================*/
81 
82 /*----------------------------------------------------------------------------*/
91 /*----------------------------------------------------------------------------*/
92 
94 cs_cdo_assembly_get(int t_id);
95 
96 /*----------------------------------------------------------------------------*/
106 /*----------------------------------------------------------------------------*/
107 
108 void
109 cs_cdo_assembly_init(int ddim,
110  int edim,
111  int n_cw_dofs);
112 
113 /*----------------------------------------------------------------------------*/
118 /*----------------------------------------------------------------------------*/
119 
120 void
122 
123 /*----------------------------------------------------------------------------*/
133 /*----------------------------------------------------------------------------*/
134 
135 void
137  cs_lnum_t l_row_shift,
138  cs_lnum_t l_col_shift);
139 
140 /*----------------------------------------------------------------------------*/
152 /*----------------------------------------------------------------------------*/
153 
154 void
155 cs_cdo_assembly_matrix_scal_generic(const cs_sdm_t *m,
156  const cs_lnum_t *dof_ids,
157  const cs_range_set_t *rset,
158  cs_cdo_assembly_t *asb,
160 
161 /*----------------------------------------------------------------------------*/
173 /*----------------------------------------------------------------------------*/
174 
175 void
176 cs_cdo_assembly_matrix_e33_generic(const cs_sdm_t *m,
177  const cs_lnum_t *dof_ids,
178  const cs_range_set_t *rset,
179  cs_cdo_assembly_t *asb,
181 
182 #if defined(HAVE_MPI)
183 /*----------------------------------------------------------------------------*/
194 /*----------------------------------------------------------------------------*/
195 
196 void
197 cs_cdo_assembly_matrix_mpit(const cs_sdm_t *m,
198  const cs_lnum_t *dof_ids,
199  const cs_range_set_t *rset,
200  cs_cdo_assembly_t *asb,
202 
203 /*----------------------------------------------------------------------------*/
214 /*----------------------------------------------------------------------------*/
215 
216 void
217 cs_cdo_assembly_matrix_mpis(const cs_sdm_t *m,
218  const cs_lnum_t *dof_ids,
219  const cs_range_set_t *rset,
220  cs_cdo_assembly_t *asb,
222 #endif /* defined(HAVE_MPI) */
223 
224 /*----------------------------------------------------------------------------*/
235 /*----------------------------------------------------------------------------*/
236 
237 void
238 cs_cdo_assembly_matrix_seqt(const cs_sdm_t *m,
239  const cs_lnum_t *dof_ids,
240  const cs_range_set_t *rset,
241  cs_cdo_assembly_t *asb,
243 
244 /*----------------------------------------------------------------------------*/
256 /*----------------------------------------------------------------------------*/
257 
258 void
259 cs_cdo_assembly_matrix_seqs(const cs_sdm_t *m,
260  const cs_lnum_t *dof_ids,
261  const cs_range_set_t *rset,
262  cs_cdo_assembly_t *asb,
264 
265 /*----------------------------------------------------------------------------*/
279 /*----------------------------------------------------------------------------*/
280 
281 void
282 cs_cdo_assembly_matrix_sys_seqs(const cs_sdm_t *m,
283  const cs_lnum_t *dof_ids,
284  const cs_range_set_t *rset,
285  cs_cdo_assembly_t *asb,
287 
288 /*----------------------------------------------------------------------------*/
302 /*----------------------------------------------------------------------------*/
303 
304 void
305 cs_cdo_assembly_matrix_sys_seqt(const cs_sdm_t *m,
306  const cs_lnum_t *dof_ids,
307  const cs_range_set_t *rset,
308  cs_cdo_assembly_t *asb,
310 
311 #if defined(HAVE_MPI)
312 /*----------------------------------------------------------------------------*/
323 /*----------------------------------------------------------------------------*/
324 
325 void
326 cs_cdo_assembly_matrix_sys_mpis(const cs_sdm_t *m,
327  const cs_lnum_t *dof_ids,
328  const cs_range_set_t *rset,
329  cs_cdo_assembly_t *asb,
331 #endif /* HAVE_MPI */
332 
333 /*----------------------------------------------------------------------------*/
345 /*----------------------------------------------------------------------------*/
346 
347 void
348 cs_cdo_assembly_eblock33_matrix_seqs(const cs_sdm_t *m,
349  const cs_lnum_t *dof_ids,
350  const cs_range_set_t *rset,
351  cs_cdo_assembly_t *asb,
353 
354 /*----------------------------------------------------------------------------*/
366 /*----------------------------------------------------------------------------*/
367 
368 void
369 cs_cdo_assembly_eblock33_matrix_seqt(const cs_sdm_t *m,
370  const cs_lnum_t *dof_ids,
371  const cs_range_set_t *rset,
372  cs_cdo_assembly_t *asb,
374 
375 #if defined(HAVE_MPI)
376 /*----------------------------------------------------------------------------*/
388 /*----------------------------------------------------------------------------*/
389 
390 void
391 cs_cdo_assembly_eblock33_matrix_mpis(const cs_sdm_t *m,
392  const cs_lnum_t *dof_ids,
393  const cs_range_set_t *rset,
394  cs_cdo_assembly_t *asb,
396 
397 /*----------------------------------------------------------------------------*/
409 /*----------------------------------------------------------------------------*/
410 
411 void
412 cs_cdo_assembly_eblock33_matrix_mpit(const cs_sdm_t *m,
413  const cs_lnum_t *dof_ids,
414  const cs_range_set_t *rset,
415  cs_cdo_assembly_t *asb,
417 #endif /* defined(HAVE_MPI) */
418 
419 /*----------------------------------------------------------------------------*/
431 /*----------------------------------------------------------------------------*/
432 
433 void
434 cs_cdo_assembly_block33_matrix_seqs(const cs_sdm_t *m,
435  const cs_lnum_t *dof_ids,
436  const cs_range_set_t *rset,
437  cs_cdo_assembly_t *asb,
439 
440 /*----------------------------------------------------------------------------*/
452 /*----------------------------------------------------------------------------*/
453 
454 void
455 cs_cdo_assembly_block33_matrix_seqt(const cs_sdm_t *m,
456  const cs_lnum_t *dof_ids,
457  const cs_range_set_t *rset,
458  cs_cdo_assembly_t *asb,
460 
461 #if defined(HAVE_MPI)
462 /*----------------------------------------------------------------------------*/
474 /*----------------------------------------------------------------------------*/
475 
476 void
477 cs_cdo_assembly_block33_matrix_mpis(const cs_sdm_t *m,
478  const cs_lnum_t *dof_ids,
479  const cs_range_set_t *rset,
480  cs_cdo_assembly_t *asb,
482 
483 /*----------------------------------------------------------------------------*/
495 /*----------------------------------------------------------------------------*/
496 
497 void
498 cs_cdo_assembly_block33_matrix_mpit(const cs_sdm_t *m,
499  const cs_lnum_t *dof_ids,
500  const cs_range_set_t *rset,
501  cs_cdo_assembly_t *asb,
503 #endif /* defined(HAVE_MPI) */
504 
505 /*----------------------------------------------------------------------------*/
517 /*----------------------------------------------------------------------------*/
518 
519 void
520 cs_cdo_assembly_eblock_matrix_seqs(const cs_sdm_t *m,
521  const cs_lnum_t *dof_ids,
522  const cs_range_set_t *rset,
523  cs_cdo_assembly_t *asb,
525 
526 /*----------------------------------------------------------------------------*/
538 /*----------------------------------------------------------------------------*/
539 
540 void
541 cs_cdo_assembly_eblock_matrix_seqt(const cs_sdm_t *m,
542  const cs_lnum_t *dof_ids,
543  const cs_range_set_t *rset,
544  cs_cdo_assembly_t *asb,
546 
547 #if defined(HAVE_MPI)
548 /*----------------------------------------------------------------------------*/
560 /*----------------------------------------------------------------------------*/
561 
562 void
563 cs_cdo_assembly_eblock_matrix_mpis(const cs_sdm_t *m,
564  const cs_lnum_t *dof_ids,
565  const cs_range_set_t *rset,
566  cs_cdo_assembly_t *asb,
568 
569 /*----------------------------------------------------------------------------*/
581 /*----------------------------------------------------------------------------*/
582 
583 void
584 cs_cdo_assembly_eblock_matrix_mpit(const cs_sdm_t *m,
585  const cs_lnum_t *dof_ids,
586  const cs_range_set_t *rset,
587  cs_cdo_assembly_t *asb,
589 #endif /* defined(HAVE_MPI) */
590 
591 /*----------------------------------------------------------------------------*/
592 
594 
595 #endif /* __CS_CDO_ASSEMBLY_H__ */
void cs_cdo_assembly_eblock33_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Case of a block 3x3 entries. Expand each row...
Definition: cs_cdo_assembly.c:1971
void cs_cdo_assembly_block33_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Case of a block 3x3 entries. Expand each row...
Definition: cs_cdo_assembly.c:2237
void() cs_cdo_assembly_func_t(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *eqa, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Block or no block versions are handled.
Definition: cs_cdo_assembly.h:72
void cs_cdo_assembly_matrix_sys_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise (no-block) matrix into the global matrix corresponding to a system of coupled equ...
Definition: cs_cdo_assembly.c:1660
void cs_cdo_assembly_matrix_e33_generic(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Rely on the generic cs_matrix_assembler_values_add_...
Definition: cs_cdo_assembly.c:1369
struct _cs_matrix_assembler_values_t cs_matrix_assembler_values_t
Definition: cs_matrix_assembler.h:65
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
cs_cdo_assembly_t * cs_cdo_assembly_get(int t_id)
Get a pointer to a cs_cdo_assembly_t structure related to a given thread.
Definition: cs_cdo_assembly.c:1173
void cs_cdo_assembly_init(int ddim, int edim, int n_cw_dofs)
Allocate cs_cdo_assembly_t structure (shared among schemes). Each thread has its own copy this struct...
Definition: cs_cdo_assembly.c:1194
void cs_cdo_assembly_set_shift(cs_cdo_assembly_t *asb, cs_lnum_t l_row_shift, cs_lnum_t l_col_shift)
Set the current shift values to consider during the assembly stage.
Definition: cs_cdo_assembly.c:1253
void cs_cdo_assembly_eblock_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise system into the global algebraic system. Case of a block NxN entries. Expand each row. Sequential run with openMP threading.
Definition: cs_cdo_assembly.c:2646
void cs_cdo_assembly_eblock_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Case of a block NxN entries. Expand each row...
Definition: cs_cdo_assembly.c:2563
Definition: cs_range_set.h:57
void cs_cdo_assembly_block33_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Case of a block 3x3 entries. Expand each row...
Definition: cs_cdo_assembly.c:2312
void cs_cdo_assembly_matrix_sys_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise (no-block) matrix into the global matrix corresponding to a system of coupled equ...
Definition: cs_cdo_assembly.c:1729
void cs_cdo_assembly_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Scalar-valued case. Sequential and with openMP thre...
Definition: cs_cdo_assembly.c:1559
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
#define END_C_DECLS
Definition: cs_defs.h:511
void cs_cdo_assembly_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Scalar-valued case. Sequential and without openMP...
Definition: cs_cdo_assembly.c:1611
void cs_cdo_assembly_finalize(void)
Free matrix-related structures used during the simulation. Display overall statistic about the assemb...
Definition: cs_cdo_assembly.c:1230
void cs_cdo_assembly_eblock33_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Case of a block 3x3 entries. Expand each row...
Definition: cs_cdo_assembly.c:1891
struct _cs_cdo_assembly_t cs_cdo_assembly_t
Definition: cs_cdo_assembly.h:52
void cs_cdo_assembly_matrix_scal_generic(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_cdo_assembly_t *asb, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Rely on the generic cs_matrix_assembler_values_add_...
Definition: cs_cdo_assembly.c:1281