escript  Revision_4925
Options.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2014 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 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 
18 /****************************************************************************/
19 
20 /* Paso: Options */
21 
22 /****************************************************************************/
23 
24 /* Copyrights by ACcESS Australia 2003,2004,2005 */
25 /* Author: Lutz Gross, l.gross@uq.edu.au */
26 
27 /****************************************************************************/
28 
29 #ifndef __PASO_OPTIONS_H__
30 #define __PASO_OPTIONS_H__
31 
32 #include "esysUtils/types.h"
33 
34 // valid solver options
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_MKL 15
49 #define PASO_UMFPACK 16
50 #define PASO_NO_REORDERING 17
51 #define PASO_MINIMUM_FILL_IN 18
52 #define PASO_NESTED_DISSECTION 19
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_YAIR_SHAPIRA_COARSENING 33
68 #define PASO_RUGE_STUEBEN_COARSENING 34
69 #define PASO_AGGREGATION_COARSENING 35
70 #define PASO_NO_PRECONDITIONER 36
71 #define PASO_MIN_COARSE_MATRIX_SIZE 37
72 #define PASO_AMLI 38
73 #define PASO_STANDARD_COARSENING 39
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 #define PASO_LINEAR_CRANK_NICOLSON 66
84 #define PASO_CRANK_NICOLSON 67
85 #define PASO_BACKWARD_EULER 68
86 
87 #define PASO_SMOOTHER 99999999
88 
89 struct Esys_MPIInfo;
90 
91 namespace paso {
92 
94 struct Options
95 {
97 
99  void setDefaults();
100 
102  void show() const;
103 
105  void showDiagnostics() const;
106 
107  static const char* name(index_t key);
108 
109  static index_t getPackage(index_t solver, index_t package, bool symmetry,
110  Esys_MPIInfo* mpi_info);
111 
113  static index_t getSolver(index_t solver, index_t package, bool symmetry,
114  Esys_MPIInfo* mpi_info);
115 
118  bool symmetric;
119  double tolerance;
123  bool verbose;
129  double drop_storage;
148  bool usePanel;
151 
152  // diagnostic values
156  double time;
157  double set_up_time;
160  double net_time;
162  bool converged;
163  double preconditioner_size; // in Mbytes
167 };
168 
169 } // namespace paso
170 
171 #endif // __PASO_OPTIONS_H__
172 
index_t method
Definition: Options.h:116
void showDiagnostics() const
prints diagnostic data
Definition: Options.cpp:89
double residual_norm
Definition: Options.h:161
double relaxation_factor
Definition: Options.h:142
#define PASO_DLL_API
Definition: Paso.h:41
dim_t num_inner_iter
Definition: Options.h:155
double min_coarse_sparsity
Definition: Options.h:144
bool reordering
Definition: Options.h:124
bool symmetric
Definition: Options.h:118
double set_up_time
Definition: Options.h:157
double inner_tolerance
Definition: Options.h:121
Definition: Options.h:94
double coarse_level_sparsity
Definition: Options.h:165
void show() const
prints current option values
Definition: Options.cpp:106
bool converged
Definition: Options.h:162
Struct that holds MPI communicator, rank, size and a tag counter.
Definition: Esys_MPI.h:48
bool use_local_preconditioner
Definition: Options.h:143
double coarsening_selection_time
Definition: Options.h:158
dim_t level_max
Definition: Options.h:136
dim_t inner_iter_max
Definition: Options.h:127
dim_t pre_sweeps
Definition: Options.h:133
dim_t coarse_matrix_refinements
Definition: Options.h:146
index_t restart
Definition: Options.h:131
double drop_tolerance
Definition: Options.h:128
bool usePanel
Definition: Options.h:148
dim_t smoother
Definition: Options.h:138
dim_t num_level
Definition: Options.h:154
double absolute_tolerance
Definition: Options.h:120
double preconditioner_size
Definition: Options.h:163
double diagonal_dominance_threshold
Definition: Options.h:147
dim_t min_coarse_matrix_size
Definition: Options.h:137
index_t package
Definition: Options.h:117
dim_t num_iter
Definition: Options.h:153
double coarsening_matrix_time
Definition: Options.h:159
static index_t getSolver(index_t solver, index_t package, bool symmetry, Esys_MPIInfo *mpi_info)
returns the solver to be used with given combination
Definition: Options.cpp:241
bool accept_failed_convergence
Definition: Options.h:140
double tolerance
Definition: Options.h:119
bool time_step_backtracking_used
Definition: Options.h:164
index_t preconditioner
Definition: Options.h:125
dim_t num_coarse_unknowns
Definition: Options.h:166
index_t ode_solver
Definition: Options.h:150
void setDefaults()
sets the default values for solver options
Definition: Options.cpp:34
Options()
Definition: Options.h:96
dim_t sweeps
Definition: Options.h:132
int index_t
Definition: types.h:25
dim_t cycle_type
Definition: Options.h:135
static index_t getPackage(index_t solver, index_t package, bool symmetry, Esys_MPIInfo *mpi_info)
Definition: Options.cpp:332
double coarsening_threshold
Definition: Options.h:139
double time
Definition: Options.h:156
dim_t refinements
Definition: Options.h:145
double net_time
Definition: Options.h:160
index_t truncation
Definition: Options.h:130
static const char * name(index_t key)
Definition: Options.cpp:141
index_t interpolation_method
Definition: Options.h:149
double drop_storage
Definition: Options.h:129
int dim_t
Definition: types.h:24
dim_t post_sweeps
Definition: Options.h:134
index_t coarsening_method
Definition: Options.h:141
bool adapt_inner_tolerance
Definition: Options.h:122
dim_t iter_max
Definition: Options.h:126
bool verbose
Definition: Options.h:123