00001 #ifndef PARCONGRAD_H
00002 #define PARCONGRAD_H
00003
00004 #include <stdio.h>
00005 #include <mpi.h>
00006 #include "../GEFEL/gtopology.h"
00007 #include "../GEFEL/gmatrix.h"
00008 #include "pgalias.h"
00009 #include "partop.h"
00010
00011
00012
00013
00014 class parcongrad
00015 {
00016 public:
00017 parcongrad(int np,int mr,long nd,long mes);
00018 ~parcongrad ();
00019 void initiate(partop *ptop,gtopology *top,FILE *out);
00020 void subdomain_ordering (partop *ptop,gtopology *top,FILE *out);
00021 void coarse_problem_ordering (long *domproc,gtopology *top,partop *ptop,FILE *out);
00022
00023 void local_buff (double *lv,double *buff);
00024 void buff_coarse (double *cv,double *buff,long nd);
00025 void coarse_buff (double *cv,double *buff,long nd);
00026 void buff_local (double *lv,double *buff);
00027
00028 double mod_scal_prod (double *u,double *v);
00029 void solve_system (partop *ptop,gtopology *top,gmatrix *gm,long *domproc,double *lhs,double *rhs,FILE *out,long iv);
00030
00031
00032 long mespr;
00033
00034
00035 int nproc;
00036
00037 int myrank;
00038
00039 long ndom;
00040
00041
00042 long ndof;
00043
00044 long nidof;
00045
00046 long nbdof;
00047
00048 long nbn;
00049
00050 long maxnbdof;
00051
00052
00053 long *lbdof;
00054
00055 long *lidof;
00056
00057
00058
00059
00060
00061 long ndofcp;
00062
00063
00064 long *nbdofdom;
00065
00066 long **bcn;
00067
00068
00069 long maxndof;
00070 long tndof;
00071 long *ndofdom;
00072 long ni;
00073 double err;
00074 };
00075
00076
00077 #endif