00001 #ifndef SMAGGREG_H 00002 #define SMAGGREG_H 00003 00004 #include "locmatrix.h" 00005 #include "aggregator.h" 00006 #include "gmatrix.h" 00007 #include "gtopology.h" 00008 00009 /** 00010 class contains solver of system of linear algebraic equations based 00011 on smoothed aggregation concept 00012 00013 JK, 23.12.2006 00014 */ 00015 class smaggreg 00016 { 00017 public: 00018 smaggreg (); 00019 ~smaggreg (); 00020 00021 //void aggregates (); 00022 //void tentative_prolongator (); 00023 void localization_matrices (gtopology >); 00024 void local_aggregated_matrices (gmatrix &sm); 00025 00026 void decompose_aggreg_matrix (gmatrix &sm); 00027 void smoothed_prolong (); 00028 00029 /// number of unknowns 00030 long nu; 00031 /// number of aggregates 00032 long na; 00033 /// kernel dimension for each aggregate 00034 long dimker; 00035 00036 /// list of numbers of nodes in aggregates 00037 /// nnagr[i]=j - the i-th aggregate contains j nodes 00038 //long *nnagr; 00039 00040 /// list of nodes in aggregates 00041 /// lnnagr[i][j]=k - the j-th node in the i-th aggregate has number k 00042 //long **lnnagr; 00043 00044 /// list of number of unknowns on aggregates 00045 /// nuagr[i]=j - the i-th aggregate contains j unknowns 00046 long *nuagr; 00047 00048 /// list of unknown id's on aggregates 00049 /// uagr[i][j]=k - the j-th unknown on the i-th aggregate has number k 00050 /// k is number if global ordering 00051 long **uagr; 00052 00053 /// tentative prolongator 00054 /// (Brezina, page 68, plongator is defined columnwise there) 00055 /// this formulation assembles transposed prolongator because of 00056 /// structure of class localization %matrix (locmatrix.h) 00057 //locmatrix tp; 00058 00059 /// smoothed prolongator 00060 /// (Brezina, page 69, plongator is defined columnwise there) 00061 /// this formulation assembles transposed prolongator because of 00062 /// structure of class localization %matrix (locmatrix.h) 00063 locmatrix sp; 00064 00065 /// localization matrices 00066 locmatrix *lm; 00067 00068 00069 /// local aggregated matrices 00070 gmatrix *gm; 00071 00072 /// aggregator 00073 aggregator aggreg; 00074 }; 00075 00076 #endif