00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef INC_PASO_SYSTEMMATRIXPATTERN
00027 #define INC_PASO_SYSTEMMATRIXPATTERN
00028
00029 #include "Distribution.h"
00030 #include "Pattern.h"
00031 #include "Coupler.h"
00032
00033
00034
00035 typedef struct Paso_SystemMatrixPattern {
00036 int type;
00037
00038 Paso_MPIInfo *mpi_info;
00039
00040
00041 Paso_Pattern* mainPattern;
00042 Paso_Pattern* col_couplePattern;
00043 Paso_Pattern* row_couplePattern;
00044 Paso_Connector* col_connector;
00045 Paso_Connector* row_connector;
00046 Paso_Distribution *output_distribution;
00047 Paso_Distribution *input_distribution;
00048
00049 dim_t reference_counter;
00050
00051
00052 } Paso_SystemMatrixPattern;
00053
00054
00055
00056
00057
00058 PASO_DLL_API
00059 Paso_SystemMatrixPattern* Paso_SystemMatrixPattern_alloc(int type, Paso_Distribution* output_distribution, Paso_Distribution* input_distribution, Paso_Pattern* mainPattern, Paso_Pattern* col_couplePattern, Paso_Pattern* row_couplePattern, Paso_Connector* col_connector, Paso_Connector* row_connector);
00060
00061 PASO_DLL_API
00062 Paso_SystemMatrixPattern* Paso_SystemMatrixPattern_getReference(Paso_SystemMatrixPattern*);
00063
00064 PASO_DLL_API
00065 void Paso_SystemMatrixPattern_free(Paso_SystemMatrixPattern*);
00066
00067 Paso_SystemMatrixPattern* Paso_SystemMatrixPattern_unrollBlocks(Paso_SystemMatrixPattern* pattern,
00068 int type, dim_t output_block_size,dim_t input_block_size);
00069 index_t Paso_SystemMatrixPattern_getNumOutput(Paso_SystemMatrixPattern*);
00070
00071 #endif