1 |
|
2 |
/******************************************************* |
3 |
* |
4 |
* Copyright (c) 2003-2010 by University of Queensland |
5 |
* Earth Systems Science Computational Center (ESSCC) |
6 |
* http://www.uq.edu.au/esscc |
7 |
* |
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 |
11 |
* |
12 |
*******************************************************/ |
13 |
|
14 |
|
15 |
/**************************************************************/ |
16 |
|
17 |
/* Paso: SystemMatrix and SystemVector */ |
18 |
|
19 |
/**************************************************************/ |
20 |
|
21 |
/* Copyrights by ACcESS Australia 2003,2004,2005 */ |
22 |
/* Author: Lutz Gross, l.gross@uq.edu.au */ |
23 |
|
24 |
/**************************************************************/ |
25 |
|
26 |
#ifndef INC_PASO_OPTIONS |
27 |
#define INC_PASO_OPTIONS |
28 |
|
29 |
#include "esysUtils/Esys_MPI.h" |
30 |
|
31 |
/* solver options */ |
32 |
|
33 |
#define PASO_DEFAULT 0 |
34 |
#define PASO_DIRECT 1 |
35 |
#define PASO_CHOLEVSKY 2 |
36 |
#define PASO_PCG 3 |
37 |
#define PASO_CR 4 |
38 |
#define PASO_CGS 5 |
39 |
#define PASO_BICGSTAB 6 |
40 |
#define PASO_ILU0 8 |
41 |
#define PASO_ILUT 9 |
42 |
#define PASO_JACOBI 10 |
43 |
#define PASO_GMRES 11 |
44 |
#define PASO_PRES20 12 |
45 |
#define PASO_LUMPING 13 |
46 |
#define PASO_NO_REORDERING 17 |
47 |
#define PASO_MINIMUM_FILL_IN 18 |
48 |
#define PASO_NESTED_DISSECTION 19 |
49 |
#define PASO_MKL 15 |
50 |
#define PASO_UMFPACK 16 |
51 |
#define PASO_ITERATIVE 20 |
52 |
#define PASO_PASO 21 |
53 |
#define PASO_AMG 22 |
54 |
#define PASO_REC_ILU 23 |
55 |
#define PASO_TRILINOS 24 |
56 |
#define PASO_NONLINEAR_GMRES 25 |
57 |
#define PASO_TFQMR 26 |
58 |
#define PASO_MINRES 27 |
59 |
#define PASO_GAUSS_SEIDEL 28 |
60 |
#define PASO_GS PASO_GAUSS_SEIDEL |
61 |
#define PASO_RILU 29 |
62 |
#define PASO_DEFAULT_REORDERING 30 |
63 |
#define PASO_SUPER_LU 31 |
64 |
#define PASO_PASTIX 32 |
65 |
#define PASO_STANDARD_COARSENING 39 |
66 |
#define PASO_YAIR_SHAPIRA_COARSENING 33 |
67 |
#define PASO_RUGE_STUEBEN_COARSENING 34 |
68 |
#define PASO_AGGREGATION_COARSENING 35 |
69 |
#define PASO_NO_PRECONDITIONER 36 |
70 |
#define PASO_MIN_COARSE_MATRIX_SIZE 37 |
71 |
#define PASO_AMLI 38 |
72 |
|
73 |
|
74 |
#define PASO_SMOOTHER 99999999 |
75 |
|
76 |
typedef struct { |
77 |
index_t method; |
78 |
index_t package; |
79 |
bool_t symmetric; |
80 |
double tolerance; |
81 |
double absolute_tolerance; |
82 |
double inner_tolerance; |
83 |
bool_t adapt_inner_tolerance; |
84 |
bool_t verbose; |
85 |
bool_t reordering; |
86 |
index_t preconditioner; |
87 |
dim_t iter_max; |
88 |
dim_t inner_iter_max; |
89 |
double drop_tolerance; |
90 |
double drop_storage; |
91 |
index_t truncation; |
92 |
index_t restart; |
93 |
dim_t sweeps; |
94 |
dim_t pre_sweeps; |
95 |
dim_t post_sweeps; |
96 |
dim_t level_max; |
97 |
dim_t min_coarse_matrix_size; |
98 |
dim_t smoother; |
99 |
double coarsening_threshold; |
100 |
bool_t accept_failed_convergence; |
101 |
index_t coarsening_method; |
102 |
double relaxation_factor; |
103 |
bool_t use_local_preconditioner; |
104 |
double min_coarse_sparsity; |
105 |
dim_t refinements; |
106 |
dim_t coarse_matrix_refinements; |
107 |
double diagonal_dominance_threshold; |
108 |
|
109 |
/* diagnostic values */ |
110 |
dim_t num_iter; |
111 |
dim_t num_level; |
112 |
dim_t num_inner_iter; |
113 |
double time; |
114 |
double set_up_time; |
115 |
double coarsening_selection_time; |
116 |
double coarsening_matrix_time; |
117 |
double net_time; |
118 |
double residual_norm; |
119 |
bool_t converged; |
120 |
double preconditioner_size; /* in Mbytes */ |
121 |
bool_t time_step_backtracking_used; |
122 |
|
123 |
} Paso_Options; |
124 |
|
125 |
/* interfaces: */ |
126 |
|
127 |
|
128 |
PASO_DLL_API |
129 |
void Paso_Options_setDefaults(Paso_Options* in); |
130 |
|
131 |
PASO_DLL_API |
132 |
void Paso_Options_show(const Paso_Options* options); |
133 |
|
134 |
PASO_DLL_API |
135 |
void Paso_Options_showDiagnostics(const Paso_Options* options); |
136 |
const char* Paso_Options_name(const index_t key); |
137 |
index_t Paso_Options_getPackage(index_t solver,index_t package, bool_t symmetry, Esys_MPIInfo *mpi_info); |
138 |
|
139 |
index_t Paso_Options_getSolver(index_t solver,index_t package, bool_t symmetry, Esys_MPIInfo *mpi_info); |
140 |
|
141 |
#define Paso_Options_copy(in,out) memcpy((Paso_Options*)out,(Paso_Options*)in,sizeof(Paso_Options)) |
142 |
|
143 |
#endif /* #ifndef INC_PASO_OPTIONS */ |