ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 00015 /**************************************************************/ 00016 00017 /* Paso: system matrix pattern */ 00018 00019 /**************************************************************/ 00020 00021 /* Copyrights by ACcESS Australia 2004,2005 */ 00022 /* Author: Lutz Gross, l.gross@uq.edu.au */ 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 Esys_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 /* interfaces: */ 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 /* #ifndef INC_PASO_SYSTEMPATTERN */