8.0
general documentation
cs_matrix_hypre_priv.h
Go to the documentation of this file.
1 #ifndef __CS_MATRIX_HYPRE_PRIV_H__
2 #define __CS_MATRIX_HYPRE_PRIV_H__
3 
4 /*============================================================================
5  * Private types for sparse matrix representation and operations using HYPRE.
6  *============================================================================*/
7 
8 /*
9  This file is part of code_saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2023 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  * HYPRE headers
32  *----------------------------------------------------------------------------*/
33 
34 #include <HYPRE.h>
35 #include <HYPRE_IJ_mv.h>
36 #include <HYPRE_parcsr_mv.h>
37 #include <HYPRE_utilities.h>
38 
39 /*----------------------------------------------------------------------------
40  * Local headers
41  *----------------------------------------------------------------------------*/
42 
43 #include "cs_defs.h"
44 
45 #include "cs_matrix_hypre.h"
46 
47 /*----------------------------------------------------------------------------*/
48 
50 
53 /*============================================================================
54  * Macro definitions
55  *============================================================================*/
56 
57 /*============================================================================
58  * Type definitions
59  *============================================================================*/
60 
61 /* Note that most types are declared in cs_matrix_priv.h.
62  only those only handled here are declared here. */
63 
64 /* Adapter coefficients stucture for HYPRE */
65 
66 typedef struct _cs_matrix_coeffs_hypre_t {
67 
68  HYPRE_BigInt l_range[2]; /* Local rows range
69  (block range if block size > 1) */
70  HYPRE_MemoryLocation memory_location; /* Memory location */
71 
72  HYPRE_IJMatrix hm; /* HYPRE matrix */
73  HYPRE_IJVector hx; /* x (input) vector */
74  HYPRE_IJVector hy; /* y (output) vector */
75 
76  int matrix_state; /* Matrix state:
77  0: not created
78  1: created and assembled */
79 
80  HYPRE_Int max_chunk_size; /* Chunk size */
81  HYPRE_BigInt *row_buf; /* row ids buffer */
82  HYPRE_BigInt *col_buf; /* column ids buffer */
83  HYPRE_Real *val_buf; /* values ids buffer */
84 
85 
86 } cs_matrix_coeffs_hypre_t;
87 
88 /*=============================================================================
89  * Semi-private function prototypes
90  *============================================================================*/
91 
92 /*----------------------------------------------------------------------------*/
100 /*----------------------------------------------------------------------------*/
101 
102 cs_matrix_coeffs_hypre_t *
103 cs_matrix_hypre_get_coeffs(const cs_matrix_t *matrix);
104 
107 /*----------------------------------------------------------------------------*/
108 
110 
111 #endif /* __CS_MATRIX_HYPRE_PRIV_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:509
#define END_C_DECLS
Definition: cs_defs.h:510
struct _cs_matrix_t cs_matrix_t
Definition: cs_matrix.h:110
void matrix(const int *iconvp, const int *idiffp, const int *ndircp, const int *isym, const cs_real_t *thetap, const int *imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t da[], cs_real_t xa[])
Definition: cs_matrix_building.c:111