00001 #ifndef DPFETI_H
00002 #define DPFETI_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 "selnodes.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 class dpfeti
00024 {
00025 public:
00026 dpfeti (int np,int mr,long nd);
00027 ~dpfeti();
00028 void initiate (selnodes *selnodschur,selnodes *selnodfeti);
00029 void cornodedetection (gtopology *top,long *ltg,long *domproc,FILE *out);
00030 void dpfetiordering (gtopology *top,long *ltg);
00031 void globcnnum_dpfeti (gtopology *top,long *ltg,long *domproc,FILE *out);
00032 void extract_from_local_vector (double *ev,double *lv);
00033 void put_into_local_vector (double *ev,double *lv);
00034 void extract_from_global_vector (double *ev,double *gv,long nsub);
00035 void put_into_global_vector (double *ev,double *gv,long nsub);
00036
00037 void arrmatrix (double *condmat,long *domproc,FILE *out);
00038 void vectors_br_bm (gtopology *top,gmatrix *gm,
00039 double *condmat,double *condvect,double *rhs,long *domproc,FILE *out);
00040
00041 void rhs_dpfeti (gtopology *top,long *domproc,gmatrix *gm,FILE *out);
00042
00043 void matxvect (gtopology *top,long *domproc,
00044 gmatrix *gm,double *input,double *output);
00045
00046 void cg (gtopology *top,long *domproc,gmatrix *gm,long iv,FILE *out);
00047
00048 void corner_displ (gtopology *top,long *domproc,gmatrix *gm);
00049
00050 void compute_displ (gtopology *top,gmatrix *gm,long *domproc,
00051 double *subdispl,double *rhs);
00052
00053 void solve_system (gtopology *top,gmatrix *gm,
00054 long *domproc,double *lhs,double *rhs,FILE *out,long mespr);
00055
00056
00057 int nproc;
00058
00059 int myrank;
00060
00061 long ndom;
00062
00063
00064 long ndof;
00065
00066 long nidof;
00067
00068 long ncdof;
00069
00070 long tncdof;
00071
00072 long tnmdof;
00073
00074
00075
00076 long maxncdof;
00077 long maxnbdof;
00078 long nlbdof;
00079
00080
00081 long *localcn;
00082 long *globalcn;
00083
00084
00085
00086
00087
00088
00089 long nicgdpfeti;
00090
00091 long anicgdpfeti;
00092
00093 double errcgdpfeti;
00094
00095 double aerrcgdpfeti;
00096
00097 double zero;
00098
00099
00100
00101 double *krc;
00102
00103
00104
00105
00106
00107
00108 long **loccn;
00109
00110 long **globcn;
00111
00112 long *ncdofdom;
00113
00114 long *nlbdofdom;
00115
00116
00117
00118 redsystsolver trssol;
00119
00120
00121 storagetype rsmstor;
00122
00123
00124 slesolv ssle;
00125
00126
00127 gtopology *ptop;
00128
00129
00130 double *br;
00131
00132 double *bm;
00133
00134
00135 gmatrix *arr;
00136
00137 double *cgrhs;
00138 double *cglhs;
00139 double *displ;
00140 };
00141
00142
00143 #endif