00001 #ifndef PARAL_H 00002 #define PARAL_H 00003 00004 #include <stdio.h> 00005 #include "mpi.h" 00006 #include "../GEFEL/gtopology.h" 00007 00008 /** 00009 class paral contains information about local-global ordering 00010 00011 ********************************** 00012 PRIMAL DOMAIN DECOMPOSITION METHOD 00013 ********************************** 00014 nproc, myrank, ndom 00015 number of processors, myrank and number of domain are established 00016 after constructor execution 00017 00018 ndof, indof 00019 total number of local unknowns and number of internal unknowns on subdomains 00020 are established after execution of function schurordering 00021 00022 ngdof (M) 00023 total number of global unknowns is established after execution of 00024 function globcnnum_pdd 00025 00026 maxnbn, maxnrdof, totmaxndofn 00027 maximum number of boundary nodes, maximum number of boundary unknowns on 00028 subdomain and maximum number of degrees of freedom on node are established 00029 after execution of globcnnum_pdd 00030 00031 gcn 00032 array of local to global code numbers correspondence is established 00033 after execution of function globcnnum_pdd 00034 00035 nbndom (M) 00036 array of numbers of boundary nodes on subdomains is established after 00037 execution of function globcnnum_pdd 00038 00039 nrdofdom (M) 00040 array of numbers of reduced unknowns on subdomains is established after 00041 execution of function globcnnum_pdd 00042 00043 masgcn (M) 00044 array of local to global code numbers of all subdomains is established after 00045 execution of function globcnnum_pdd 00046 00047 00048 ************************************************* 00049 FINITE ELEMENT TEARING AND INTERCONNECTING METHOD 00050 ************************************************* 00051 nproc, myrank, ndom 00052 number of processors, myrank and number of domain are established 00053 after constructor execution 00054 00055 ndof 00056 total number of local unknowns is established after execution 00057 of function schurordering 00058 00059 nbndom (M) 00060 array of numbers of boundary nodes on subdomains is established after 00061 execution of function globcnnum_feti 00062 00063 maxnbn, totmaxndofn 00064 maximum number of boundary nodes and maximum number of degrees of freedom 00065 on node are established after execution of globcnnum_feti 00066 00067 maxinc 00068 maximum number of incidencies is established after execution of globcnnum_feti 00069 00070 ngdof (M) 00071 total number of global unknowns is established after execution of 00072 function globcnnum_feti 00073 00074 nodnum 00075 array of legth nbn containing global node numbers; components correspond 00076 only to boundary nodes, internal nodes are excluded 00077 array is established after execution of function globcnnum_feti 00078 00079 inc, lcngcn 00080 array of numbers of incidencies of nodes to subdomains and 00081 global code numbers in FETI method are established after execution 00082 of function globcnnum_feti 00083 00084 00085 *************************************************************** 00086 DUAL-PRIMAL FINITE ELEMENT TEARING AND INTERCONNECTING METHOD 00087 *************************************************************** 00088 00089 totmaxndofn, maxncn, maxncdof, maxnbn 00090 maximum number of degrees of freedom on node, maximum number of corner 00091 noeds on subdomain, maximum number of corner unknowns on subdomain and 00092 maximum number of bounadary nodes on subdomain are established after 00093 after execution of function globcnnum_dpfeti 00094 00095 00096 00097 */ 00098 class paral 00099 { 00100 public: 00101 paral (int np,int mr,int nd); 00102 ~paral(); 00103 void read (FILE *in,gtopology *top); 00104 void procdomcorr (); 00105 void schurordering (gtopology *top); 00106 void globcnnum_pdd (gtopology *top,FILE *out); 00107 00108 void globcnnum_feti (gtopology *top,FILE *out); 00109 void locglobfeti (gtopology *top,double *gv,double *lv); 00110 void globlocfeti (gtopology *top,double *gv,double *lv); 00111 00112 void dpfetiordering (gtopology *top); 00113 void globcnnum_dpfeti (gtopology *top,FILE *out); 00114 00115 00116 // number of processors 00117 int nproc; 00118 // rank of processor 00119 int myrank; 00120 // number of subdomain 00121 int ndom; 00122 00123 // domain-processor correspondence 00124 long *domproc; 00125 00126 // number of degrees of freedom on subdomain 00127 long ndof; 00128 // number of internal degrees of freedom on subdomain 00129 long indof; 00130 // number of boundary nodes 00131 long nbn; 00132 // maximum number of reduced DOFs on subdomain 00133 long maxnrdof; 00134 // maximum number of degrees of freedom on node 00135 long totmaxndofn; 00136 00137 // local to global correspondence of node numbers 00138 long *ltg; 00139 00140 // PDD 00141 // local to global code numbers correspondence in PDD 00142 long *gcn; 00143 // asi to smazu 00144 00145 00146 // FETI 00147 // array containing global code numbers in FETI method 00148 long **lcngcn; 00149 // array containing numbers of incidencies of nodes to subdomains 00150 long *inc; 00151 // array containing global node numbers of boundary nodes 00152 long *nodnum; 00153 00154 00155 //******************************************** 00156 // VARIABLES DEFINED ONLY ON MASTER PROCESSOR 00157 // 00158 // number of global DOFs = total number of boundary DOFs 00159 long ngdof; 00160 00161 // array containing numbers of boundary nodes on subdomains 00162 long *nbndom; 00163 // array containing numbers of reduced DOFs on subdomains 00164 long *nrdofdom; 00165 // array containing global code numbers of all subdomains PDD 00166 long **masgcn; 00167 00168 // array containing numbers of RBM on subdomains 00169 long *nrbmdom; 00170 // array containing addresses of first RBM in coarse matrix 00171 long *rbmadr; 00172 }; 00173 00174 00175 #endif