7.1
general documentation
cs_equation_assemble.h
Go to the documentation of this file.
1 #ifndef __CS_EQUATION_ASSEMBLE_H__
2 #define __CS_EQUATION_ASSEMBLE_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-2021 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_cdo_connect.h"
34 #include "cs_matrix.h"
35 #include "cs_matrix_assembler.h"
36 #include "cs_param_cdo.h"
37 #include "cs_param_types.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_equation_assemble_t cs_equation_assemble_t;
53 
54 /*============================================================================
55  * Function pointer type definitions
56  *============================================================================*/
57 
58 /*----------------------------------------------------------------------------*/
69 /*----------------------------------------------------------------------------*/
70 
71 typedef void
72 (cs_equation_assembly_t)(const cs_sdm_t *m,
73  const cs_lnum_t *dof_ids,
74  const cs_range_set_t *rset,
77 
78 /*============================================================================
79  * Public function prototypes
80  *============================================================================*/
81 
82 /*----------------------------------------------------------------------------*/
91 /*----------------------------------------------------------------------------*/
92 
95 
96 /*----------------------------------------------------------------------------*/
105 /*----------------------------------------------------------------------------*/
106 
108 cs_equation_assemble_get(int t_id);
109 
110 /*----------------------------------------------------------------------------*/
123 /*----------------------------------------------------------------------------*/
124 
125 void
127  cs_flag_t eb_flag,
128  cs_flag_t fb_flag,
129  cs_flag_t vb_flag,
130  cs_flag_t vcb_flag,
131  cs_flag_t hho_flag);
132 
133 /*----------------------------------------------------------------------------*/
138 /*----------------------------------------------------------------------------*/
139 
140 void
142 
143 /*----------------------------------------------------------------------------*/
152 /*----------------------------------------------------------------------------*/
153 
156  int ma_id);
157 
158 #if defined(HAVE_MPI)
159 
160 /*----------------------------------------------------------------------------*/
171 /*----------------------------------------------------------------------------*/
172 
173 void
174 cs_equation_assemble_matrix_mpit(const cs_sdm_t *m,
175  const cs_lnum_t *dof_ids,
176  const cs_range_set_t *rset,
179 
180 /*----------------------------------------------------------------------------*/
191 /*----------------------------------------------------------------------------*/
192 
193 void
194 cs_equation_assemble_matrix_mpis(const cs_sdm_t *m,
195  const cs_lnum_t *dof_ids,
196  const cs_range_set_t *rset,
199 
200 #endif /* defined(HAVE_MPI) */
201 
202 /*----------------------------------------------------------------------------*/
213 /*----------------------------------------------------------------------------*/
214 
215 void
216 cs_equation_assemble_matrix_seqt(const cs_sdm_t *m,
217  const cs_lnum_t *dof_ids,
218  const cs_range_set_t *rset,
221 
222 /*----------------------------------------------------------------------------*/
233 /*----------------------------------------------------------------------------*/
234 
235 void
236 cs_equation_assemble_matrix_seqs(const cs_sdm_t *m,
237  const cs_lnum_t *dof_ids,
238  const cs_range_set_t *rset,
241 
242 /*----------------------------------------------------------------------------*/
254 /*----------------------------------------------------------------------------*/
255 
256 void
258  const cs_lnum_t *dof_ids,
259  const cs_range_set_t *rset,
262 
263 /*----------------------------------------------------------------------------*/
275 /*----------------------------------------------------------------------------*/
276 
277 void
279  const cs_lnum_t *dof_ids,
280  const cs_range_set_t *rset,
283 
284 #if defined(HAVE_MPI)
285 
286 /*----------------------------------------------------------------------------*/
298 /*----------------------------------------------------------------------------*/
299 
300 void
301 cs_equation_assemble_eblock33_matrix_mpis(const cs_sdm_t *m,
302  const cs_lnum_t *dof_ids,
303  const cs_range_set_t *rset,
306 
307 /*----------------------------------------------------------------------------*/
319 /*----------------------------------------------------------------------------*/
320 
321 void
322 cs_equation_assemble_eblock33_matrix_mpit(const cs_sdm_t *m,
323  const cs_lnum_t *dof_ids,
324  const cs_range_set_t *rset,
327 
328 #endif /* defined(HAVE_MPI) */
329 
330 /*----------------------------------------------------------------------------*/
342 /*----------------------------------------------------------------------------*/
343 
344 void
346  const cs_lnum_t *dof_ids,
347  const cs_range_set_t *rset,
350 
351 /*----------------------------------------------------------------------------*/
363 /*----------------------------------------------------------------------------*/
364 
365 void
367  const cs_lnum_t *dof_ids,
368  const cs_range_set_t *rset,
371 
372 #if defined(HAVE_MPI)
373 
374 /*----------------------------------------------------------------------------*/
386 /*----------------------------------------------------------------------------*/
387 
388 void
389 cs_equation_assemble_eblock_matrix_mpis(const cs_sdm_t *m,
390  const cs_lnum_t *dof_ids,
391  const cs_range_set_t *rset,
394 
395 /*----------------------------------------------------------------------------*/
407 /*----------------------------------------------------------------------------*/
408 
409 void
410 cs_equation_assemble_eblock_matrix_mpit(const cs_sdm_t *m,
411  const cs_lnum_t *dof_ids,
412  const cs_range_set_t *rset,
415 
416 #endif /* defined(HAVE_MPI) */
417 
418 /*----------------------------------------------------------------------------*/
419 
421 
422 #endif /* __CS_EQUATION_ASSEMBLE_H__ */
cs_equation_assemble_t * cs_equation_assemble_get(int t_id)
Get a pointer to a cs_equation_assemble_t structure related to a given thread.
Definition: cs_equation_assemble.c:952
void cs_equation_assemble_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Scalar-valued case. Sequential and without openMP...
Definition: cs_equation_assemble.c:1512
struct _cs_matrix_assembler_values_t cs_matrix_assembler_values_t
Definition: cs_matrix_assembler.h:65
void cs_equation_assemble_eblock33_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, 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_equation_assemble.c:1558
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
void() cs_equation_assembly_t(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_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_equation_assemble.h:72
struct _cs_equation_assemble_t cs_equation_assemble_t
Definition: cs_equation_assemble.h:52
Definition: cs_cdo_connect.h:79
void cs_equation_assemble_eblock33_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, 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_equation_assemble.c:1635
void cs_equation_assemble_eblock_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, 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_equation_assemble.c:1979
cs_param_space_scheme_t
Type of numerical scheme for the discretization in space.
Definition: cs_param_types.h:180
void cs_equation_assemble_init(const cs_cdo_connect_t *connect, cs_flag_t eb_flag, cs_flag_t fb_flag, cs_flag_t vb_flag, cs_flag_t vcb_flag, cs_flag_t hho_flag)
Allocate and initialize matrix-related structures according to the type of discretization used for th...
Definition: cs_equation_assemble.c:976
void cs_equation_assemble_matrix_seqt(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, cs_matrix_assembler_values_t *mav)
Assemble a cellwise matrix into the global matrix Scalar-valued case. Sequential and with openMP thre...
Definition: cs_equation_assemble.c:1462
cs_equation_assembly_t * cs_equation_assemble_set(cs_param_space_scheme_t scheme, int ma_id)
Define the function pointer used to assemble the algebraic system.
Definition: cs_equation_assemble.c:1290
Definition: cs_range_set.h:57
cs_matrix_structure_t * cs_equation_get_matrix_structure(int flag)
Retrieve the pointer to a requested cs_matrix_structure_t structure.
Definition: cs_equation_assemble.c:929
void cs_equation_assemble_finalize(void)
Free matrix-related structures used during the simulation. Display overall statistic about the assemb...
Definition: cs_equation_assemble.c:1247
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_equation_assemble_eblock_matrix_seqs(const cs_sdm_t *m, const cs_lnum_t *dof_ids, const cs_range_set_t *rset, cs_equation_assemble_t *eqa, 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_equation_assemble.c:1899
struct _cs_matrix_structure_t cs_matrix_structure_t
Definition: cs_matrix.h:89