00001 #ifndef DSKYLINE_H
00002 #define DSKYLINE_H
00003
00004 #include "matrix.h"
00005 #include "vector.h"
00006 #include "gtopology.h"
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 class dskyline
00038 {
00039 public:
00040 dskyline (void);
00041 ~dskyline (void);
00042 void allocadr (long m);
00043 double* status ();
00044 long decomp ();
00045 void changedecomp ();
00046 void setfact ();
00047 void setnotfact ();
00048
00049 void column_lengths_elem (long *cn,long ndofe);
00050 void column_lengths_mult (long *ncn1,long *ncn2,long *mcn,long nm);
00051 void column_lengths(gtopology *top);
00052 void addresses ();
00053 void neglobmat ();
00054 void allocglomat ();
00055 void nullsky ();
00056 void localize (matrix &b,long *cn);
00057 void localized (double *b,long *cn,long k);
00058 void glocalize (matrix &b,long *rcn,long *ccn);
00059 void mult_localize (long nm,long *ncn1,long *ncn2,long *mcn);
00060 void initiate (gtopology *top,long ndof,long mespr);
00061
00062 void mxv_dsky (double *x,double *y);
00063 void mtxv_dsky (double *x,double *y);
00064 void addmat_dsky (double c,dskyline &dsky);
00065 void scalmat_dsky (double c);
00066 void copy_dsky (dskyline &dsky);
00067 void lu_dsky (double *x,double *y,double zero,long tc);
00068 void lukon_dsky (double *b,double *c,double *x,double *y,double zero,long nr,long tc);
00069 void bicg (double *x,double *y,long ni,double err,long &ani,double &ares,double zero,long iv);
00070 void printmat (FILE *out);
00071 void printdiag (FILE *out);
00072
00073 long give_negm ();
00074 void diag_check (double thr,double *rhs);
00075
00076
00077 long n;
00078
00079 long negm;
00080
00081 long *adr;
00082
00083 double *a;
00084
00085 long decompid;
00086 };
00087
00088 #endif