00001 #ifndef SLESOLV_H 00002 #define SLESOLV_H 00003 00004 #include <stdio.h> 00005 #include "galias.h" 00006 #include "xfile.h" 00007 #include "precond.h" 00008 #include "seqfeti.h" 00009 #include "seqschur.h" 00010 //#include "seqtop.h" 00011 //#include "seqselnodes.h" 00012 //#include "saddpoint.h" 00013 class saddpoint; 00014 00015 //#include "gmatrix.h" 00016 class gmatrix; 00017 class gtopology; 00018 //class seqfeti; 00019 //class precond; 00020 00021 /** 00022 class slesolv defines type of solver of systems of linear algebraic equations 00023 00024 JK 00025 */ 00026 00027 class slesolv 00028 { 00029 public: 00030 slesolv (); 00031 ~slesolv (); 00032 void read (gtopology *top,XFILE *in,long mespr); 00033 void print (FILE *out); 00034 void initiate (slesolv *ssle); 00035 00036 void prepare_data (long *ndof,gtopology *top,FILE *out); 00037 00038 void solve_system (gtopology *gt,gmatrix *gm,double *lhs,double *rhs,FILE *out); 00039 00040 /// type of solver of system of linear algebraic equations 00041 linsolvertype tlinsol; 00042 00043 /// if tlinsol is conden, additional information is needed 00044 linsolvertype tsol; 00045 00046 /// block size in direct sparse solver 00047 unsigned char bsize; 00048 00049 /// computer zero 00050 double zero; 00051 00052 /// maximum number of iterations in iterative methods 00053 long ni; 00054 /// required norm of residual %vector 00055 double err; 00056 /// number of performed iterations (atual number of iterations) 00057 long ani; 00058 /// attained norm of residual %vector 00059 double aerr; 00060 00061 /// initial values in iterative methods 00062 /// iv=0 - the input %vector is multiplied by zero 00063 /// the iteration starts from zero %vector 00064 /// iv=1 - the input %vector is used as a start %vector 00065 long iv; 00066 00067 /// number of rows which are not condensed 00068 long nbdof; 00069 00070 /// preconditioner 00071 precond prec; 00072 00073 /// FETI solver 00074 seqfeti feti; 00075 00076 /// solver based on the Schur complement method 00077 seqschur schur; 00078 00079 // saddle point solver 00080 saddpoint *sp; 00081 }; 00082 00083 #endif