ESScript  Revision_
Options.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2013 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development since 2012 by School of Earth Sciences
13 *
14 *****************************************************************************/
15 
16 
17 /************************************************************************************/
18 
19 /* Paso: Options */
20 
21 /************************************************************************************/
22 
23 /* Copyrights by ACcESS Australia 2003,2004,2005 */
24 /* Author: Lutz Gross, l.gross@uq.edu.au */
25 
26 /************************************************************************************/
27 
28 #ifndef INC_PASO_OPTIONS
29 #define INC_PASO_OPTIONS
30 
31 #include "esysUtils/Esys_MPI.h"
32 
33 /* solver options */
34 
35 #define PASO_DEFAULT 0
36 #define PASO_DIRECT 1
37 #define PASO_CHOLEVSKY 2
38 #define PASO_PCG 3
39 #define PASO_CR 4
40 #define PASO_CGS 5
41 #define PASO_BICGSTAB 6
42 #define PASO_ILU0 8
43 #define PASO_ILUT 9
44 #define PASO_JACOBI 10
45 #define PASO_GMRES 11
46 #define PASO_PRES20 12
47 #define PASO_LUMPING 13
48 #define PASO_NO_REORDERING 17
49 #define PASO_MINIMUM_FILL_IN 18
50 #define PASO_NESTED_DISSECTION 19
51 #define PASO_MKL 15
52 #define PASO_UMFPACK 16
53 #define PASO_ITERATIVE 20
54 #define PASO_PASO 21
55 #define PASO_AMG 22
56 #define PASO_REC_ILU 23
57 #define PASO_TRILINOS 24
58 #define PASO_NONLINEAR_GMRES 25
59 #define PASO_TFQMR 26
60 #define PASO_MINRES 27
61 #define PASO_GAUSS_SEIDEL 28
62 #define PASO_GS PASO_GAUSS_SEIDEL
63 #define PASO_RILU 29
64 #define PASO_DEFAULT_REORDERING 30
65 #define PASO_SUPER_LU 31
66 #define PASO_PASTIX 32
67 #define PASO_STANDARD_COARSENING 39
68 #define PASO_YAIR_SHAPIRA_COARSENING 33
69 #define PASO_RUGE_STUEBEN_COARSENING 34
70 #define PASO_AGGREGATION_COARSENING 35
71 #define PASO_NO_PRECONDITIONER 36
72 #define PASO_MIN_COARSE_MATRIX_SIZE 37
73 #define PASO_AMLI 38
74 #define PASO_CLASSIC_INTERPOLATION_WITH_FF_COUPLING 50
75 #define PASO_CLASSIC_INTERPOLATION 51
76 #define PASO_DIRECT_INTERPOLATION 52
77 #define PASO_BOOMERAMG 60
78 #define PASO_CIJP_FIXED_RANDOM_COARSENING 61
79 #define PASO_CIJP_COARSENING 62
80 #define PASO_FALGOUT_COARSENING 63
81 #define PASO_PMIS_COARSENING 64
82 #define PASO_HMIS_COARSENING 65
83 
84 #define PASO_LINEAR_CRANK_NICOLSON 66
85 #define PASO_CRANK_NICOLSON 67
86 #define PASO_BACKWARD_EULER 68
87 
88 
89 
90 
91 #define PASO_SMOOTHER 99999999
92 
93 typedef struct {
96  bool symmetric;
97  double tolerance;
101  bool verbose;
107  double drop_storage;
126  bool usePanel;
129 
130  /* diagnostic values */
134  double time;
135  double set_up_time;
138  double net_time;
140  bool converged;
141  double preconditioner_size; /* in Mbytes */
145 
146 } Paso_Options;
147 
148 /* interfaces: */
149 
150 
153 
155 void Paso_Options_show(const Paso_Options* options);
156 
158 void Paso_Options_showDiagnostics(const Paso_Options* options);
159 const char* Paso_Options_name(const index_t key);
160 index_t Paso_Options_getPackage(index_t solver,index_t package, bool symmetry, Esys_MPIInfo *mpi_info);
161 
162 index_t Paso_Options_getSolver(index_t solver,index_t package, bool symmetry, Esys_MPIInfo *mpi_info);
163 
164 #define Paso_Options_copy(in,out) memcpy((Paso_Options*)out,(Paso_Options*)in,sizeof(Paso_Options))
165 
166 #endif /* #ifndef INC_PASO_OPTIONS */