00001
00037 #ifndef _VEC_H_
00038 #define _VEC_H_
00039
00040 #include <mc/mc_base.h>
00041
00042 #include <mc/mat.h>
00043
00049 struct sVec {
00050
00051 Vmem *vmem;
00052 int iMadeVmem;
00054 char name[10];
00055 int n;
00056 double *u;
00057 int iMallocU;
00059 };
00060
00067 typedef struct sVec Vec;
00068
00069
00070
00071
00072
00073
00074
00075 #if !defined(VINLINE_BAM)
00076 #else
00077 #endif
00078
00089 Vec* Vec_ctor(Vmem *vmem, const char *name, int length);
00090
00102 Vec* Vec_ctor2(Vmem *vmem, const char *name, int length, double *data);
00103
00112 void Vec_dtor(Vec **thee);
00113
00122 int Vec_len(Vec *thee);
00123
00132 double *Vec_addr(Vec *thee);
00133
00143 double Vec_val(Vec *thee, int i);
00144
00155 void Vec_set(Vec *thee, int i, double val);
00156
00165 double Vec_nrm1(Vec *thee);
00166
00175 double Vec_nrm2(Vec *thee);
00176
00185 double Vec_nrm8(Vec *thee);
00186
00196 double Vec_dif1(Vec *thee, Vec *s);
00197
00207 double Vec_dif2(Vec *thee, Vec *s);
00208
00218 double Vec_dif8(Vec *thee, Vec *s);
00219
00229 double Vec_dot(Vec *thee, Vec *s);
00230
00240 void Vec_init(Vec *thee, double val);
00241
00251 void Vec_scal(Vec *thee, double val);
00252
00262 void Vec_copy(Vec *thee, Vec *s);
00263
00274 void Vec_axpy(Vec *thee, Vec *s, double val);
00275
00284 void Vec_print(Vec *thee);
00285
00296 void Vec_printSp(Vec *thee, char *fname, int pflag);
00297
00308 void Vec_diagScale(Vec *thee, Mat *amat, Vec *f);
00309
00326 void Vec_matvec(Vec *thee, Mat *amat, Vec *v, int key, int part);
00327
00346 void Vec_smooth(Vec *thee, Mat *amat, Vec *f, Vec *w,
00347 int key, int ioflag, int meth, int adj, int itmax, double etol,
00348 double omega);
00349
00366 void Vec_jac(Vec *thee, Mat *amat, Vec *f, Vec *w,
00367 int key, int ioflag, int itmax, double etol, double omega);
00368
00385 void Vec_gs(Vec *thee, Mat *amat, Vec *f, Vec *w,
00386 int key, int ioflag, int adj, int itmax, double etol);
00387
00398 void Vec_bnd(Vec *thee, Mat *mat, int key);
00399
00409 void Vec_absLog(Vec *thee, double val);
00410
00411 #endif
00412
00413