ESYS13  Revision_
SystemMatrixPattern.h
Go to the documentation of this file.
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 */