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 /* 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 */