2
/*******************************************************
4
* Copyright (c) 2003-2010 by University of Queensland
5
* Earth Systems Science Computational Center (ESSCC)
6
* http://www.uq.edu.au/esscc
8
* Primary Business: Queensland, Australia
9
* Licensed under the Open Software License version 3.0
10
* http://www.opensource.org/licenses/osl-3.0.php
12
*******************************************************/
14
/**************************************************************/
16
/* Dudley: Converting an element list into a matrix shape */
18
/**************************************************************/
20
#ifndef INC_DUDLEY_INDEXLIST
21
#define INC_DUDLEY_INDEXLIST
24
#include "ElementFile.h"
27
/* structure to build system matrix */
29
#define INDEXLIST_LENGTH 85
31
typedef struct Dudley_IndexList {
32
index_t index[INDEXLIST_LENGTH];
34
struct Dudley_IndexList *extension;
36
void Dudley_IndexList_insertElements(Dudley_IndexList * index_list, Dudley_ElementFile * elements,
37
bool_t reduce_row_order, index_t * row_map,
38
bool_t reduce_col_order, index_t * col_map);
39
void Dudley_IndexList_insertIndex(Dudley_IndexList *, index_t);
40
void Dudley_IndexList_toArray(Dudley_IndexList *, index_t *, index_t, index_t, index_t);
41
dim_t Dudley_IndexList_count(Dudley_IndexList *, index_t, index_t);
42
void Dudley_IndexList_free(Dudley_IndexList *);
43
Paso_Pattern *Dudley_IndexList_createPattern(dim_t n0, dim_t n, Dudley_IndexList * index_list, index_t range_min,
44
index_t range_max, index_t index_offset);
45
void Dudley_IndexList_insertElementsWithRowRange(Dudley_IndexList * index_list, index_t firstRow, index_t lastRow,
46
Dudley_ElementFile * elements, index_t * row_map, index_t * col_map);
47
void Dudley_IndexList_insertElementsWithRowRangeNoMainDiagonal(Dudley_IndexList * index_list, index_t firstRow,
48
index_t lastRow, Dudley_ElementFile * elements,
49
index_t * row_map, index_t * col_map);
51
#endif /* #ifndef INC_DUDLEY_INDEXLIST */