ESYS13  Revision_
IndexList.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 /* Finley: Converting an element list into a matrix shape     */
00018 
00019 /**************************************************************/
00020 
00021 #ifndef INC_FINLEY_INDEXLIST
00022 #define INC_FINLEY_INDEXLIST
00023 
00024 #include "Finley.h"
00025 #include "ElementFile.h"
00026 #include "Mesh.h"
00027 
00028 /* structure to build system matrix */
00029 
00030 #define INDEXLIST_LENGTH 85
00031 
00032 typedef struct Finley_IndexList {
00033   index_t index[INDEXLIST_LENGTH];
00034   dim_t n;
00035   struct Finley_IndexList *extension;
00036 } Finley_IndexList;
00037 void Finley_IndexList_insertElements(Finley_IndexList* index_list, Finley_ElementFile* elements,
00038                                        bool_t reduce_row_order, index_t* row_map,
00039                                        bool_t reduce_col_order, index_t* col_map);
00040 void Finley_IndexList_insertIndex(Finley_IndexList*, index_t);
00041 void Finley_IndexList_toArray(Finley_IndexList*, index_t*, index_t, index_t, index_t);
00042 dim_t Finley_IndexList_count(Finley_IndexList*,  index_t, index_t);
00043 void Finley_IndexList_free(Finley_IndexList*);
00044 Paso_Pattern* Finley_IndexList_createPattern(dim_t n0, dim_t n,Finley_IndexList* index_list,index_t range_min,index_t range_max, index_t index_offset);
00045 void Finley_IndexList_insertElementsWithRowRange(Finley_IndexList* index_list, index_t firstRow, index_t lastRow,
00046                                                  Finley_ElementFile* elements, index_t* row_map, index_t* col_map);
00047 void Finley_IndexList_insertElementsWithRowRangeNoMainDiagonal(Finley_IndexList* index_list, index_t firstRow, index_t lastRow,
00048                                                               Finley_ElementFile* elements, index_t* row_map, index_t* col_map);
00049 
00050 
00051 
00052 
00053 #endif /* #ifndef INC_FINLEY_INDEXLIST */