00001 #ifndef BOUNDPARCONGRAD_H
00002 #define BOUNDPARCONGRAD_H
00003
00004 #include <stdio.h>
00005 #include <mpi.h>
00006 #include "gtopology.h"
00007 #include "gmatrix.h"
00008 #include "pgalias.h"
00009 #include "partop.h"
00010 #include "selnodes.h"
00011 class PETSC_CONT;
00012
00013
00014
00015
00016 class boundparcongrad
00017 {
00018 public:
00019 boundparcongrad(int np,int mr,long nd,long mes);
00020 ~boundparcongrad ();
00021
00022 void initiate (selnodes *selnodschur,partop *ptop,gtopology *top,FILE *out);
00023 double v_ixu_i(double *u,double *v);
00024 double uxv(double *u,double *v, long n);
00025 void select_bound(double *buff,double *v);
00026 void add_bound(double *buff,double *v);
00027 void add_master_buff (double *buff,double *cv,long nd);
00028 void select_master_buff(double *cv,double *buff,long nd);
00029 void ilu_mat_petsc(gmatrix *gm,FILE *out);
00030 void solve_fact_mat_petsc(double *r,double *z,long ndof,FILE *out);
00031 void initialize_diag_prec(gmatrix *gm,double *precvec,FILE *out);
00032 void jacobi_precondition(double *precvec,double *invec,double *outvec,long ndof,FILE *out);
00033 void solve_system (partop *ptop,gtopology *top,gmatrix *gm,long *domproc,double *lhs,double *rhs,FILE *out,long iv);
00034
00035
00036 long mespr;
00037
00038
00039 int nproc;
00040
00041 int myrank;
00042
00043 long ndom;
00044
00045
00046 long ni;
00047
00048 double err;
00049
00050 long prec;
00051
00052 double *factmat;
00053
00054
00055
00056 long nn;
00057
00058 long nbn;
00059
00060 long nin;
00061
00062 long ndof;
00063
00064 long nidof;
00065
00066 long nbdof;
00067
00068 long maxnbdof;
00069
00070
00071 long *lbdof;
00072
00073
00074 long *lidof;
00075
00076
00077
00078
00079
00080
00081
00082 long ndofcp;
00083
00084
00085
00086
00087 long *nbdofdom;
00088
00089
00090
00091 long **bcn;
00092 PETSC_CONT *petscpoint;
00093
00094
00095 int Argc;
00096 char **Argv;
00097
00098 };
00099
00100
00101 #endif