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 /* Dudley: Converting an element list into a matrix shape */ 00017 00018 /**************************************************************/ 00019 00020 #ifndef INC_DUDLEY_INDEXLIST 00021 #define INC_DUDLEY_INDEXLIST 00022 00023 #include "Dudley.h" 00024 #include "ElementFile.h" 00025 #include "Mesh.h" 00026 00027 /* structure to build system matrix */ 00028 00029 #define INDEXLIST_LENGTH 85 00030 00031 typedef struct Dudley_IndexList { 00032 index_t index[INDEXLIST_LENGTH]; 00033 dim_t n; 00034 struct Dudley_IndexList *extension; 00035 } Dudley_IndexList; 00036 void Dudley_IndexList_insertElements(Dudley_IndexList * index_list, Dudley_ElementFile * elements, 00037 bool_t reduce_row_order, index_t * row_map, 00038 bool_t reduce_col_order, index_t * col_map); 00039 void Dudley_IndexList_insertIndex(Dudley_IndexList *, index_t); 00040 void Dudley_IndexList_toArray(Dudley_IndexList *, index_t *, index_t, index_t, index_t); 00041 dim_t Dudley_IndexList_count(Dudley_IndexList *, index_t, index_t); 00042 void Dudley_IndexList_free(Dudley_IndexList *); 00043 Paso_Pattern *Dudley_IndexList_createPattern(dim_t n0, dim_t n, Dudley_IndexList * index_list, index_t range_min, 00044 index_t range_max, index_t index_offset); 00045 void Dudley_IndexList_insertElementsWithRowRange(Dudley_IndexList * index_list, index_t firstRow, index_t lastRow, 00046 Dudley_ElementFile * elements, index_t * row_map, index_t * col_map); 00047 void Dudley_IndexList_insertElementsWithRowRangeNoMainDiagonal(Dudley_IndexList * index_list, index_t firstRow, 00048 index_t lastRow, Dudley_ElementFile * elements, 00049 index_t * row_map, index_t * col_map); 00050 00051 #endif /* #ifndef INC_DUDLEY_INDEXLIST */