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