xref: /petsc/include/petscvec.h (revision f97c04019bd66f7fac0b5341bf50c86ab1e4ba0e)
12eac72dbSBarry Smith /*
22eac72dbSBarry Smith    This defines the abstract vector component. These are patterned
32eac72dbSBarry Smith    after the Level-1 Blas, but with some additions that have proved
42eac72dbSBarry Smith    useful. These include routines to allocate and free vectors.
52eac72dbSBarry Smith 
62eac72dbSBarry Smith    Note that the routines that are normally thought of as returning a
72eac72dbSBarry Smith    value (e.g., dot, norm) return their value through an argument.
82eac72dbSBarry Smith    This allows these routines to be used with other datatype, such
92eac72dbSBarry Smith    as float and dcomplex.
102eac72dbSBarry Smith 
112eac72dbSBarry Smith    All vectors should be declared as a Vec. All vector routines begin
122eac72dbSBarry Smith    with Vec.
132eac72dbSBarry Smith 
142eac72dbSBarry Smith 
152eac72dbSBarry Smith  */
162eac72dbSBarry Smith 
172eac72dbSBarry Smith #ifndef __VEC_PACKAGE
182eac72dbSBarry Smith #define __VEC_PACKAGE
192eac72dbSBarry Smith #include "is.h"
202eac72dbSBarry Smith 
212eac72dbSBarry Smith typedef struct _Vec*           Vec;
222eac72dbSBarry Smith 
238ed539a5SBarry Smith extern int VecCreateSequential(int,Vec *);
248ed539a5SBarry Smith extern int VecCreateSequentialBLAS(int,Vec *);
252eac72dbSBarry Smith 
26*f97c0401SBarry Smith #if defined(USING_MPI)
278ed539a5SBarry Smith extern int VecCreateMPI(MPI_Comm,int,int,Vec *);
288ed539a5SBarry Smith extern int VecCreateMPIBLAS(MPI_Comm,int,int,Vec *);
292eac72dbSBarry Smith #endif
302eac72dbSBarry Smith 
318ed539a5SBarry Smith extern int VecCreateInitialVector(int,Vec *);
322eac72dbSBarry Smith 
332eac72dbSBarry Smith 
342eac72dbSBarry Smith 
352eac72dbSBarry Smith 
368ed539a5SBarry Smith extern int VecDot(Vec, Vec, Scalar*);
378ed539a5SBarry Smith extern int VecTDot(Vec, Vec, Scalar*);
388ed539a5SBarry Smith extern int VecMDot(int,      Vec ,Vec*,Scalar*);
398ed539a5SBarry Smith extern int VecMTDot(int,      Vec ,Vec*,Scalar*);
408ed539a5SBarry Smith extern int VecNorm(Vec, double*);
418ed539a5SBarry Smith extern int VecASum(Vec, Scalar*);
428ed539a5SBarry Smith extern int VecMax(Vec, int *,    Scalar*);
438ed539a5SBarry Smith extern int VecScale(Scalar*, Vec);
448ed539a5SBarry Smith extern int VecCopy(Vec, Vec);
458ed539a5SBarry Smith extern int VecSet(Scalar*, Vec);
468ed539a5SBarry Smith extern int VecSwap(Vec, Vec);
478ed539a5SBarry Smith extern int VecAXPY(Scalar*, Vec, Vec);
488ed539a5SBarry Smith extern int VecMAXPY(int,      Scalar*, Vec ,Vec*);
498ed539a5SBarry Smith extern int VecAYPX(Scalar*, Vec, Vec);
508ed539a5SBarry Smith extern int VecWAXPY(Scalar*, Vec, Vec, Vec);
518ed539a5SBarry Smith extern int VecPMult(Vec, Vec, Vec);
528ed539a5SBarry Smith extern int VecPDiv(Vec, Vec, Vec);
538ed539a5SBarry Smith extern int VecCreate(Vec,Vec *);
548ed539a5SBarry Smith extern int VecDestroy(Vec);
558ed539a5SBarry Smith extern int VecGetVecs(Vec, int,Vec **);
568ed539a5SBarry Smith extern int VecFreeVecs(Vec*,int);
572eac72dbSBarry Smith 
588ed539a5SBarry Smith extern int VecAddValues(Vec, int, int *,Scalar*);
598ed539a5SBarry Smith extern int VecInsertValues(Vec, int, int *,Scalar*);
608ed539a5SBarry Smith extern int VecBeginAssembly(Vec);
618ed539a5SBarry Smith extern int VecEndAssembly(Vec);
628ed539a5SBarry Smith 
63*f97c0401SBarry Smith extern int VecScatterBegin(Vec,IS,Vec,IS,ISScatterCtx *);
64*f97c0401SBarry Smith extern int VecScatterEnd(Vec,IS,Vec,IS,ISScatterCtx *);
658ed539a5SBarry Smith 
66*f97c0401SBarry Smith extern int VecScatterAddBegin(Vec,IS,Vec,IS,ISScatterCtx *);
67*f97c0401SBarry Smith extern int VecScatterAddEnd(Vec,IS,Vec,IS,ISScatterCtx *);
688ed539a5SBarry Smith 
698ed539a5SBarry Smith extern int VecGetArray(Vec,Scalar**);
708ed539a5SBarry Smith extern int VecValidVector(Vec);
718ed539a5SBarry Smith extern int VecView(Vec, Viewer);
728ed539a5SBarry Smith 
738ed539a5SBarry Smith extern int VecGetSize(Vec,int *);
748ed539a5SBarry Smith extern int VecGetLocalSize(Vec,int *);
758ed539a5SBarry Smith 
768ed539a5SBarry Smith /* utility routines */
778ed539a5SBarry Smith extern int VecReciprocal(Vec);
782eac72dbSBarry Smith 
792eac72dbSBarry Smith #endif
802eac72dbSBarry Smith 
812eac72dbSBarry Smith 
82