/usr/include/seq_mv.h is in libhypre-dev 2.4.0b-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | /*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision: 2.17 $
***********************************************************************EHEADER*/
#include <HYPRE_config.h>
#include "HYPRE_seq_mv.h"
#ifndef hypre_MV_HEADER
#define hypre_MV_HEADER
#include "_hypre_utilities.h"
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************
*
* Header info for CSR Matrix data structures
*
* Note: this matrix currently uses 0-based indexing.
*
*****************************************************************************/
#ifndef hypre_CSR_MATRIX_HEADER
#define hypre_CSR_MATRIX_HEADER
/*--------------------------------------------------------------------------
* CSR Matrix
*--------------------------------------------------------------------------*/
typedef struct
{
double *data;
int *i;
int *j;
int num_rows;
int num_cols;
int num_nonzeros;
/* for compressing rows in matrix multiplication */
int *rownnz;
int num_rownnz;
/* Does the CSRMatrix create/destroy `data', `i', `j'? */
int owns_data;
} hypre_CSRMatrix;
/*--------------------------------------------------------------------------
* Accessor functions for the CSR Matrix structure
*--------------------------------------------------------------------------*/
#define hypre_CSRMatrixData(matrix) ((matrix) -> data)
#define hypre_CSRMatrixI(matrix) ((matrix) -> i)
#define hypre_CSRMatrixJ(matrix) ((matrix) -> j)
#define hypre_CSRMatrixNumRows(matrix) ((matrix) -> num_rows)
#define hypre_CSRMatrixNumCols(matrix) ((matrix) -> num_cols)
#define hypre_CSRMatrixNumNonzeros(matrix) ((matrix) -> num_nonzeros)
#define hypre_CSRMatrixRownnz(matrix) ((matrix) -> rownnz)
#define hypre_CSRMatrixNumRownnz(matrix) ((matrix) -> num_rownnz)
#define hypre_CSRMatrixOwnsData(matrix) ((matrix) -> owns_data)
/*--------------------------------------------------------------------------
* CSR Boolean Matrix
*--------------------------------------------------------------------------*/
typedef struct
{
int *i;
int *j;
int num_rows;
int num_cols;
int num_nonzeros;
int owns_data;
} hypre_CSRBooleanMatrix;
/*--------------------------------------------------------------------------
* Accessor functions for the CSR Boolean Matrix structure
*--------------------------------------------------------------------------*/
#define hypre_CSRBooleanMatrix_Get_I(matrix) ((matrix)->i)
#define hypre_CSRBooleanMatrix_Get_J(matrix) ((matrix)->j)
#define hypre_CSRBooleanMatrix_Get_NRows(matrix) ((matrix)->num_rows)
#define hypre_CSRBooleanMatrix_Get_NCols(matrix) ((matrix)->num_cols)
#define hypre_CSRBooleanMatrix_Get_NNZ(matrix) ((matrix)->num_nonzeros)
#define hypre_CSRBooleanMatrix_Get_OwnsData(matrix) ((matrix)->owns_data)
#endif
/******************************************************************************
*
* Header info for Mapped Matrix data structures
*
*****************************************************************************/
#ifndef hypre_MAPPED_MATRIX_HEADER
#define hypre_MAPPED_MATRIX_HEADER
/*--------------------------------------------------------------------------
* Mapped Matrix
*--------------------------------------------------------------------------*/
typedef struct
{
void *matrix;
int (*ColMap)(int, void *);
void *MapData;
} hypre_MappedMatrix;
/*--------------------------------------------------------------------------
* Accessor functions for the Mapped Matrix structure
*--------------------------------------------------------------------------*/
#define hypre_MappedMatrixMatrix(matrix) ((matrix) -> matrix)
#define hypre_MappedMatrixColMap(matrix) ((matrix) -> ColMap)
#define hypre_MappedMatrixMapData(matrix) ((matrix) -> MapData)
#define hypre_MappedMatrixColIndex(matrix,j) \
(hypre_MappedMatrixColMap(matrix)(j,hypre_MappedMatrixMapData(matrix)))
#endif
/******************************************************************************
*
* Header info for Multiblock Matrix data structures
*
*****************************************************************************/
#ifndef hypre_MULTIBLOCK_MATRIX_HEADER
#define hypre_MULTIBLOCK_MATRIX_HEADER
/*--------------------------------------------------------------------------
* Multiblock Matrix
*--------------------------------------------------------------------------*/
typedef struct
{
int num_submatrices;
int *submatrix_types;
void **submatrices;
} hypre_MultiblockMatrix;
/*--------------------------------------------------------------------------
* Accessor functions for the Multiblock Matrix structure
*--------------------------------------------------------------------------*/
#define hypre_MultiblockMatrixSubmatrices(matrix) ((matrix) -> submatrices)
#define hypre_MultiblockMatrixNumSubmatrices(matrix) ((matrix) -> num_submatrices)
#define hypre_MultiblockMatrixSubmatrixTypes(matrix) ((matrix) -> submatrix_types)
#define hypre_MultiblockMatrixSubmatrix(matrix,j) (hypre_MultiblockMatrixSubmatrices\
(matrix)[j])
#define hypre_MultiblockMatrixSubmatrixType(matrix,j) (hypre_MultiblockMatrixSubmatrixTypes\
(matrix)[j])
#endif
/******************************************************************************
*
* Header info for Vector data structure
*
*****************************************************************************/
#ifndef hypre_VECTOR_HEADER
#define hypre_VECTOR_HEADER
/*--------------------------------------------------------------------------
* hypre_Vector
*--------------------------------------------------------------------------*/
typedef struct
{
double *data;
int size;
/* Does the Vector create/destroy `data'? */
int owns_data;
/* For multivectors...*/
int num_vectors; /* the above "size" is size of one vector */
int multivec_storage_method;
/* ...if 0, store colwise v0[0], v0[1], ..., v1[0], v1[1], ... v2[0]... */
/* ...if 1, store rowwise v0[0], v1[0], ..., v0[1], v1[1], ... */
/* With colwise storage, vj[i] = data[ j*size + i]
With rowwise storage, vj[i] = data[ j + num_vectors*i] */
int vecstride, idxstride;
/* ... so vj[i] = data[ j*vecstride + i*idxstride ] regardless of row_storage.*/
} hypre_Vector;
/*--------------------------------------------------------------------------
* Accessor functions for the Vector structure
*--------------------------------------------------------------------------*/
#define hypre_VectorData(vector) ((vector) -> data)
#define hypre_VectorSize(vector) ((vector) -> size)
#define hypre_VectorOwnsData(vector) ((vector) -> owns_data)
#define hypre_VectorNumVectors(vector) ((vector) -> num_vectors)
#define hypre_VectorMultiVecStorageMethod(vector) ((vector) -> multivec_storage_method)
#define hypre_VectorVectorStride(vector) ((vector) -> vecstride )
#define hypre_VectorIndexStride(vector) ((vector) -> idxstride )
#endif
/* csr_matop.c */
hypre_CSRMatrix *hypre_CSRMatrixAdd ( hypre_CSRMatrix *A , hypre_CSRMatrix *B );
hypre_CSRMatrix *hypre_CSRMatrixMultiply ( hypre_CSRMatrix *A , hypre_CSRMatrix *B );
hypre_CSRMatrix *hypre_CSRMatrixDeleteZeros ( hypre_CSRMatrix *A , double tol );
int hypre_CSRMatrixTranspose ( hypre_CSRMatrix *A , hypre_CSRMatrix **AT , int data );
int hypre_CSRMatrixReorder ( hypre_CSRMatrix *A );
double hypre_CSRMatrixSumElts ( hypre_CSRMatrix *A );
/* csr_matrix.c */
hypre_CSRMatrix *hypre_CSRMatrixCreate ( int num_rows , int num_cols , int num_nonzeros );
int hypre_CSRMatrixDestroy ( hypre_CSRMatrix *matrix );
int hypre_CSRMatrixInitialize ( hypre_CSRMatrix *matrix );
int hypre_CSRMatrixSetDataOwner ( hypre_CSRMatrix *matrix , int owns_data );
int hypre_CSRMatrixSetRownnz ( hypre_CSRMatrix *matrix );
hypre_CSRMatrix *hypre_CSRMatrixRead ( char *file_name );
int hypre_CSRMatrixPrint ( hypre_CSRMatrix *matrix , char *file_name );
int hypre_CSRMatrixCopy ( hypre_CSRMatrix *A , hypre_CSRMatrix *B , int copy_data );
hypre_CSRMatrix *hypre_CSRMatrixClone ( hypre_CSRMatrix *A );
hypre_CSRMatrix *hypre_CSRMatrixUnion ( hypre_CSRMatrix *A , hypre_CSRMatrix *B , int *col_map_offd_A , int *col_map_offd_B , int **col_map_offd_C );
/* csr_matvec.c */
int hypre_CSRMatrixMatvec ( double alpha , hypre_CSRMatrix *A , hypre_Vector *x , double beta , hypre_Vector *y );
int hypre_CSRMatrixMatvecT ( double alpha , hypre_CSRMatrix *A , hypre_Vector *x , double beta , hypre_Vector *y );
int hypre_CSRMatrixMatvec_FF( double alpha , hypre_CSRMatrix *A , hypre_Vector *x , double beta , hypre_Vector *y , int *CF_marker_x , int *CF_marker_y , int fpt );
/* genpart.c */
int hypre_GeneratePartitioning ( int length , int num_procs , int **part_ptr );
int hypre_GenerateLocalPartitioning ( int length , int num_procs , int myid , int **part_ptr );
/* HYPRE_csr_matrix.c */
HYPRE_CSRMatrix HYPRE_CSRMatrixCreate ( int num_rows , int num_cols , int *row_sizes );
int HYPRE_CSRMatrixDestroy ( HYPRE_CSRMatrix matrix );
int HYPRE_CSRMatrixInitialize ( HYPRE_CSRMatrix matrix );
HYPRE_CSRMatrix HYPRE_CSRMatrixRead ( char *file_name );
void HYPRE_CSRMatrixPrint ( HYPRE_CSRMatrix matrix , char *file_name );
int HYPRE_CSRMatrixGetNumRows ( HYPRE_CSRMatrix matrix , int *num_rows );
/* HYPRE_mapped_matrix.c */
HYPRE_MappedMatrix HYPRE_MappedMatrixCreate ( void );
int HYPRE_MappedMatrixDestroy ( HYPRE_MappedMatrix matrix );
int HYPRE_MappedMatrixLimitedDestroy ( HYPRE_MappedMatrix matrix );
int HYPRE_MappedMatrixInitialize ( HYPRE_MappedMatrix matrix );
int HYPRE_MappedMatrixAssemble ( HYPRE_MappedMatrix matrix );
void HYPRE_MappedMatrixPrint ( HYPRE_MappedMatrix matrix );
int HYPRE_MappedMatrixGetColIndex ( HYPRE_MappedMatrix matrix , int j );
void *HYPRE_MappedMatrixGetMatrix ( HYPRE_MappedMatrix matrix );
int HYPRE_MappedMatrixSetMatrix ( HYPRE_MappedMatrix matrix , void *matrix_data );
int HYPRE_MappedMatrixSetColMap ( HYPRE_MappedMatrix matrix , int (*ColMap )(int ,void *));
int HYPRE_MappedMatrixSetMapData ( HYPRE_MappedMatrix matrix , void *MapData );
/* HYPRE_multiblock_matrix.c */
HYPRE_MultiblockMatrix HYPRE_MultiblockMatrixCreate ( void );
int HYPRE_MultiblockMatrixDestroy ( HYPRE_MultiblockMatrix matrix );
int HYPRE_MultiblockMatrixLimitedDestroy ( HYPRE_MultiblockMatrix matrix );
int HYPRE_MultiblockMatrixInitialize ( HYPRE_MultiblockMatrix matrix );
int HYPRE_MultiblockMatrixAssemble ( HYPRE_MultiblockMatrix matrix );
void HYPRE_MultiblockMatrixPrint ( HYPRE_MultiblockMatrix matrix );
int HYPRE_MultiblockMatrixSetNumSubmatrices ( HYPRE_MultiblockMatrix matrix , int n );
int HYPRE_MultiblockMatrixSetSubmatrixType ( HYPRE_MultiblockMatrix matrix , int j , int type );
/* HYPRE_vector.c */
HYPRE_Vector HYPRE_VectorCreate ( int size );
int HYPRE_VectorDestroy ( HYPRE_Vector vector );
int HYPRE_VectorInitialize ( HYPRE_Vector vector );
int HYPRE_VectorPrint ( HYPRE_Vector vector , char *file_name );
HYPRE_Vector HYPRE_VectorRead ( char *file_name );
/* mapped_matrix.c */
hypre_MappedMatrix *hypre_MappedMatrixCreate ( void );
int hypre_MappedMatrixDestroy ( hypre_MappedMatrix *matrix );
int hypre_MappedMatrixLimitedDestroy ( hypre_MappedMatrix *matrix );
int hypre_MappedMatrixInitialize ( hypre_MappedMatrix *matrix );
int hypre_MappedMatrixAssemble ( hypre_MappedMatrix *matrix );
void hypre_MappedMatrixPrint ( hypre_MappedMatrix *matrix );
int hypre_MappedMatrixGetColIndex ( hypre_MappedMatrix *matrix , int j );
void *hypre_MappedMatrixGetMatrix ( hypre_MappedMatrix *matrix );
int hypre_MappedMatrixSetMatrix ( hypre_MappedMatrix *matrix , void *matrix_data );
int hypre_MappedMatrixSetColMap ( hypre_MappedMatrix *matrix , int (*ColMap )(int ,void *));
int hypre_MappedMatrixSetMapData ( hypre_MappedMatrix *matrix , void *map_data );
/* multiblock_matrix.c */
hypre_MultiblockMatrix *hypre_MultiblockMatrixCreate ( void );
int hypre_MultiblockMatrixDestroy ( hypre_MultiblockMatrix *matrix );
int hypre_MultiblockMatrixLimitedDestroy ( hypre_MultiblockMatrix *matrix );
int hypre_MultiblockMatrixInitialize ( hypre_MultiblockMatrix *matrix );
int hypre_MultiblockMatrixAssemble ( hypre_MultiblockMatrix *matrix );
void hypre_MultiblockMatrixPrint ( hypre_MultiblockMatrix *matrix );
int hypre_MultiblockMatrixSetNumSubmatrices ( hypre_MultiblockMatrix *matrix , int n );
int hypre_MultiblockMatrixSetSubmatrixType ( hypre_MultiblockMatrix *matrix , int j , int type );
int hypre_MultiblockMatrixSetSubmatrix ( hypre_MultiblockMatrix *matrix , int j , void *submatrix );
/* vector.c */
hypre_Vector *hypre_SeqVectorCreate ( int size );
hypre_Vector *hypre_SeqMultiVectorCreate ( int size , int num_vectors );
int hypre_SeqVectorDestroy ( hypre_Vector *vector );
int hypre_SeqVectorInitialize ( hypre_Vector *vector );
int hypre_SeqVectorSetDataOwner ( hypre_Vector *vector , int owns_data );
hypre_Vector *hypre_SeqVectorRead ( char *file_name );
int hypre_SeqVectorPrint ( hypre_Vector *vector , char *file_name );
int hypre_SeqVectorSetConstantValues ( hypre_Vector *v , double value );
int hypre_SeqVectorSetRandomValues ( hypre_Vector *v , int seed );
int hypre_SeqVectorCopy ( hypre_Vector *x , hypre_Vector *y );
hypre_Vector *hypre_SeqVectorCloneDeep ( hypre_Vector *x );
hypre_Vector *hypre_SeqVectorCloneShallow ( hypre_Vector *x );
int hypre_SeqVectorScale ( double alpha , hypre_Vector *y );
int hypre_SeqVectorAxpy ( double alpha , hypre_Vector *x , hypre_Vector *y );
double hypre_SeqVectorInnerProd ( hypre_Vector *x , hypre_Vector *y );
double hypre_VectorSumElts ( hypre_Vector *vector );
#ifdef __cplusplus
}
#endif
#endif
|