xref: /petsc/include/petscvec.h (revision 289bc588618de054f36015f5c3d330cf718be7c1)
1 /*
2    This defines the abstract vector component. These are patterned
3    after the Level-1 Blas, but with some additions that have proved
4    useful. These include routines to allocate and free vectors.
5 
6    Note that the routines that are normally thought of as returning a
7    value (e.g., dot, norm) return their value through an argument.
8    This allows these routines to be used with other datatype, such
9    as float and dcomplex.
10 
11    All vectors should be declared as a Vec. All vector routines begin
12    with Vec.
13 
14 
15  */
16 
17 #ifndef __VEC_PACKAGE
18 #define __VEC_PACKAGE
19 #include "is.h"
20 
21 typedef struct _Vec*           Vec;
22 typedef struct _VecScatterCtx* VecScatterCtx;
23 typedef double*                VecScalar;
24 
25 extern int VecCreateSequential          ANSI_ARGS((int,Vec *));
26 extern int VecCreateSequentialBLAS      ANSI_ARGS((int,Vec *));
27 extern int VecCreateComplexSequential   ANSI_ARGS((int,Vec *));
28 
29 extern int VecCreateInitialVector   ANSI_ARGS((int,int,char **,Vec *));
30 
31 #if defined(MPI_PACKAGE)
32 extern int VecCreateMPI            ANSI_ARGS((void *,int,int,Vec *));
33 extern int VecCreateMPIBLAS        ANSI_ARGS((void *,int,int,Vec *));
34 extern int VecCreateComplexMPI     ANSI_ARGS((void *,int,int,Vec *));
35 #endif
36 
37 extern int VecDot           ANSI_ARGS((Vec, Vec, VecScalar));
38 extern int VecTDot          ANSI_ARGS((Vec, Vec, VecScalar));
39 extern int VecMDot          ANSI_ARGS((int,      Vec ,Vec*,VecScalar));
40 extern int VecMTDot         ANSI_ARGS((int,      Vec ,Vec*,VecScalar));
41 extern int VecNorm          ANSI_ARGS((Vec, VecScalar));
42 extern int VecASum          ANSI_ARGS((Vec, VecScalar));
43 extern int VecMax           ANSI_ARGS((Vec, int *,    VecScalar));
44 extern int VecScale         ANSI_ARGS((VecScalar, Vec));
45 extern int VecCopy          ANSI_ARGS((Vec, Vec));
46 extern int VecSet           ANSI_ARGS((VecScalar, Vec));
47 extern int VecSwap          ANSI_ARGS((Vec, Vec));
48 extern int VecAXPY          ANSI_ARGS((VecScalar, Vec, Vec));
49 extern int VecMAXPY         ANSI_ARGS((int,      VecScalar, Vec ,Vec*));
50 extern int VecAYPX          ANSI_ARGS((VecScalar, Vec, Vec));
51 extern int VecWAXPY         ANSI_ARGS((VecScalar, Vec, Vec, Vec));
52 extern int VecPMult         ANSI_ARGS((Vec, Vec, Vec));
53 extern int VecPDiv          ANSI_ARGS((Vec, Vec, Vec));
54 extern int VecCreate        ANSI_ARGS((Vec,Vec *));
55 extern int VecDestroy       ANSI_ARGS((Vec));
56 extern int VecGetVecs       ANSI_ARGS((Vec, int,Vec **));
57 extern int VecFreeVecs      ANSI_ARGS((Vec*,int));
58 
59 extern int VecAddValues     ANSI_ARGS((Vec, int, int *,VecScalar));
60 extern int VecInsertValues  ANSI_ARGS((Vec, int, int *,VecScalar));
61 extern int VecBeginAssembly ANSI_ARGS((Vec));
62 extern int VecEndAssembly   ANSI_ARGS((Vec));
63 
64 extern int VecScatterBegin  ANSI_ARGS((Vec,IS,Vec,IS,VecScatterCtx *));
65 extern int VecScatterEnd    ANSI_ARGS((Vec,IS,Vec,IS,VecScatterCtx *));
66 
67 extern int VecScatterAddBegin ANSI_ARGS((Vec,IS,Vec,IS,VecScatterCtx *));
68 extern int VecScatterAddEnd   ANSI_ARGS((Vec,IS,Vec,IS,VecScatterCtx *));
69 
70 extern int VecGetArray      ANSI_ARGS((Vec,VecScalar **));
71 extern int VecValidVector   ANSI_ARGS((Vec));
72 extern int VecView          ANSI_ARGS((Vec,void *));
73 
74 extern int VecGetSize       ANSI_ARGS((Vec,int *));
75 extern int VecGetLocalSize  ANSI_ARGS((Vec,int *));
76 
77 #endif
78 
79 
80