MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_MasterList.cpp
Go to the documentation of this file.
1 // @HEADER
2 //
3 // ***********************************************************************
4 //
5 // MueLu: A package for multigrid based preconditioning
6 // Copyright 2012 Sandia Corporation
7 //
8 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9 // the U.S. Government retains certain rights in this software.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact
39 // Jonathan Hu (jhu@sandia.gov)
40 // Andrey Prokopenko (aprokop@sandia.gov)
41 // Ray Tuminaro (rstumin@sandia.gov)
42 //
43 // ***********************************************************************
44 //
45 // @HEADER
47 
48 #include "MueLu_Exceptions.hpp"
49 #include "MueLu_MasterList.hpp"
50 
51 namespace MueLu {
52 
54  if (masterList_.is_null()) {
55  masterList_ = Teuchos::getParametersFromXmlString(stringList_);
56  }
57 
58  return masterList_;
59  }
60 
62 
63  if ( (problemType != problemType_) || problemSpecificList_.is_null() ) {
64  if (DefaultProblemTypeLists_.find(problemType) != DefaultProblemTypeLists_.end()) {
65  problemType_ = problemType;
66  problemSpecificList_ = Teuchos::getParametersFromXmlString(DefaultProblemTypeLists_[problemType]);
67  } else {
68  //TODO provide valid problem types
69  TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::RuntimeError, "Invalid problem type " << problemType << ".");
70  }
71  }
72  return problemSpecificList_;
73  }
74 
75  std::string MasterList::interpretParameterName(const std::string& name, const std::string& value) {
76 
77  // used to concatenate the return string
78  std::stringstream ss;
79 
80  // put in short cuts here!
81 
82  if (name == "verbosity") {
83  std::string verb = "none";
84  if (value == "\"0\"") verb = "none";
85  if (value == "\"1\"" || value == "\"2\"" || value == "\"3\"") verb = "low";
86  if (value == "\"4\"" || value == "\"5\"" || value == "\"6\"") verb = "medium";
87  if (value == "\"7\"" || value == "\"8\"") verb = "high";
88  if (value == "\"9\"") verb = "extreme";
89  if (value == "\"10\"") verb = "test";
90  verb = "\"" + verb + "\"";
91  ss << "<Parameter name=\"verbosity\" type=\"string\" value=" << verb << "/>";
92  return ss.str();
93  }
94 
95  if (name == "cycle type") {
96  std::stringstream temp1; temp1 << "\"" << "MGV" << "\"";
97  std::stringstream temp2; temp2 << "\"" << "MGV" << "\"";
98  if (value == temp1.str() ) { ss << "<Parameter name=\"cycle type\" type=\"string\" value=\"V\"/>"; }
99  else if (value == temp2.str()) { ss << "<Parameter name=\"cycle type\" type=\"string\" value=\"W\"/>"; }
100  else TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::RuntimeError, "MasterList::interpretParameterName, Line " << __LINE__ << ". "
101  << "The parameter " << value << " is not supported by MueLu.");
102  return ss.str();
103  }
104 
105  // energy minimization is enabled
106  if (name == "multigrid algorithm") {
107  std::stringstream temp; temp << "\"" << "1" << "\"";
108  if (value == temp.str() ) { ss << "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"pg\"/>"; return ss.str(); }
109  }
110 
111  if (name == "repartition: enable") {
112  std::stringstream temp1; temp1 << "\"" << "1" << "\"";
113  if (value == temp1.str()) {
114  RCP<Teuchos::FancyOStream> out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout));
115  *out << "WARNING: repartitioning in MueLu is different to MLs. Please refer to the MueLu users Manual for more information." << std::endl;
116  }
117  }
118 
119  // put in auto-generated code here
120 
121 
122  if (name == "output filename") { ss << "<Parameter name=\"output filename\" type=\"string\" value=" << value << "/>"; return ss.str(); }
123  if (name == "number of equations") { ss << "<Parameter name=\"number of equations\" type=\"int\" value=" << value << "/>"; return ss.str(); }
124  if (name == "max levels") { ss << "<Parameter name=\"max levels\" type=\"int\" value=" << value << "/>"; return ss.str(); }
125  if (name == "W cycle start level") { ss << "<Parameter name=\"W cycle start level\" type=\"int\" value=" << value << "/>"; return ss.str(); }
126  if (name == "coarse grid correction scaling factor") { ss << "<Parameter name=\"coarse grid correction scaling factor\" type=\"double\" value=" << value << "/>"; return ss.str(); }
127  if (name == "fuse prolongation and update") { ss << "<Parameter name=\"fuse prolongation and update\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
128  if (name == "number of vectors") { ss << "<Parameter name=\"number of vectors\" type=\"int\" value=" << value << "/>"; return ss.str(); }
129  if (name == "problem: symmetric") { ss << "<Parameter name=\"problem: symmetric\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
130  if (name == "hierarchy label") { ss << "<Parameter name=\"hierarchy label\" type=\"string\" value=" << value << "/>"; return ss.str(); }
131  if (name == "aggregation: drop tol") { ss << "<Parameter name=\"aggregation: drop tol\" type=\"double\" value=" << value << "/>"; return ss.str(); }
132  if (name == "print initial parameters") { ss << "<Parameter name=\"print initial parameters\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
133  if (name == "print unused parameters") { ss << "<Parameter name=\"print unused parameters\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
134  if (name == "sa: damping factor") { ss << "<Parameter name=\"sa: damping factor\" type=\"double\" value=" << value << "/>"; return ss.str(); }
135  if (name == "sa: eigenvalue estimate num iterations") { ss << "<Parameter name=\"sa: eigenvalue estimate num iterations\" type=\"int\" value=" << value << "/>"; return ss.str(); }
136  if (name == "pcoarsen: element") { ss << "<Parameter name=\"pcoarsen: element\" type=\"string\" value=" << value << "/>"; return ss.str(); }
137  if (name == "pcoarsen: schedule") { ss << "<Parameter name=\"pcoarsen: schedule\" type=\"string\" value=" << value << "/>"; return ss.str(); }
138  if (name == "pcoarsen: hi basis") { ss << "<Parameter name=\"pcoarsen: hi basis\" type=\"string\" value=" << value << "/>"; return ss.str(); }
139  if (name == "pcoarsen: lo basis") { ss << "<Parameter name=\"pcoarsen: lo basis\" type=\"string\" value=" << value << "/>"; return ss.str(); }
140  if (name == "smoother: neighborhood type") { ss << "<Parameter name=\"smoother: neighborhood type\" type=\"string\" value=" << value << "/>"; return ss.str(); }
141  if (name == "tentative: calculate qr") { ss << "<Parameter name=\"tentative: calculate qr\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
142  if (name == "tentative: constant column sums") { ss << "<Parameter name=\"tentative: constant column sums\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
143  if (name == "repartition: enable") { ss << "<Parameter name=\"repartition: enable\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
144  if (name == "repartition: start level") { ss << "<Parameter name=\"repartition: start level\" type=\"int\" value=" << value << "/>"; return ss.str(); }
145  if (name == "repartition: use map") { ss << "<Parameter name=\"repartition: use map\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
146  if (name == "repartition: node repartition level") { ss << "<Parameter name=\"repartition: node repartition level\" type=\"int\" value=" << value << "/>"; return ss.str(); }
147  if (name == "repartition: node id") { ss << "<Parameter name=\"repartition: node id\" type=\"int\" value=" << value << "/>"; return ss.str(); }
148  if (name == "repartition: min rows per proc") { ss << "<Parameter name=\"repartition: min rows per proc\" type=\"int\" value=" << value << "/>"; return ss.str(); }
149  if (name == "repartition: max imbalance") { ss << "<Parameter name=\"repartition: max imbalance\" type=\"double\" value=" << value << "/>"; return ss.str(); }
150  if (name == "use external multigrid package") { ss << "<Parameter name=\"use external multigrid package\" type=\"string\" value=" << value << "/>"; return ss.str(); }
151  if (name == "refmaxwell: mode") { ss << "<Parameter name=\"refmaxwell: mode\" type=\"string\" value=" << value << "/>"; return ss.str(); }
152  if (name == "refmaxwell: disable addon") { ss << "<Parameter name=\"refmaxwell: disable addon\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
153  if (name == "refmaxwell: use as preconditioner") { ss << "<Parameter name=\"refmaxwell: use as preconditioner\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
154  if (name == "refmaxwell: dump matrices") { ss << "<Parameter name=\"refmaxwell: dump matrices\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
155  if (name == "refmaxwell: subsolves on subcommunicators") { ss << "<Parameter name=\"refmaxwell: subsolves on subcommunicators\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
156  if (name == "refmaxwell: ratio AH / A22 subcommunicators") { ss << "<Parameter name=\"refmaxwell: ratio AH / A22 subcommunicators\" type=\"double\" value=" << value << "/>"; return ss.str(); }
157  return "";
158  }
159 
162  std::string MasterList::problemType_ = "unknown";
163  const std::string MasterList::stringList_ =
164 "<ParameterList name=\"MueLu\">"
165  "<Parameter name=\"problem: type\" type=\"string\" value=\"unknown\"/>"
166  "<Parameter name=\"verbosity\" type=\"string\" value=\"high\"/>"
167  "<Parameter name=\"output filename\" type=\"string\" value=\"\"/>"
168  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
169  "<Parameter name=\"max levels\" type=\"int\" value=\"10\"/>"
170  "<Parameter name=\"cycle type\" type=\"string\" value=\"V\"/>"
171  "<Parameter name=\"W cycle start level\" type=\"int\" value=\"0\"/>"
172  "<Parameter name=\"coarse grid correction scaling factor\" type=\"double\" value=\"1.0\"/>"
173  "<Parameter name=\"fuse prolongation and update\" type=\"bool\" value=\"false\"/>"
174  "<Parameter name=\"number of vectors\" type=\"int\" value=\"1\"/>"
175  "<Parameter name=\"problem: symmetric\" type=\"bool\" value=\"true\"/>"
176  "<Parameter name=\"xml parameter file\" type=\"string\" value=\"\"/>"
177  "<Parameter name=\"parameterlist: syntax\" type=\"string\" value=\"muelu\"/>"
178  "<Parameter name=\"hierarchy label\" type=\"string\" value=\"\"/>"
179  "<ParameterList name=\"matvec params\"/>"
180  "<Parameter name=\"smoother: pre or post\" type=\"string\" value=\"both\"/>"
181  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
182  "<Parameter name=\"smoother: pre type\" type=\"string\" value=\"RELAXATION\"/>"
183  "<Parameter name=\"smoother: post type\" type=\"string\" value=\"RELAXATION\"/>"
184  "<ParameterList name=\"smoother: params\"/>"
185  "<ParameterList name=\"smoother: pre params\"/>"
186  "<ParameterList name=\"smoother: post params\"/>"
187  "<Parameter name=\"smoother: overlap\" type=\"int\" value=\"0\"/>"
188  "<Parameter name=\"smoother: pre overlap\" type=\"int\" value=\"0\"/>"
189  "<Parameter name=\"smoother: post overlap\" type=\"int\" value=\"0\"/>"
190  "<Parameter name=\"coarse: max size\" type=\"int\" value=\"2000\"/>"
191  "<Parameter name=\"coarse: type\" type=\"string\" value=\"SuperLU\"/>"
192  "<ParameterList name=\"coarse: params\"/>"
193  "<Parameter name=\"coarse: overlap\" type=\"int\" value=\"0\"/>"
194  "<Parameter name=\"aggregation: type\" type=\"string\" value=\"uncoupled\"/>"
195  "<Parameter name=\"aggregation: mode\" type=\"string\" value=\"uncoupled\"/>"
196  "<Parameter name=\"aggregation: ordering\" type=\"string\" value=\"natural\"/>"
197  "<Parameter name=\"aggregation: drop scheme\" type=\"string\" value=\"classical\"/>"
198  "<Parameter name=\"aggregation: number of random vectors\" type=\"int\" value=\"10\"/>"
199  "<Parameter name=\"aggregation: number of times to pre or post smooth\" type=\"int\" value=\"10\"/>"
200  "<Parameter name=\"aggregation: penalty parameters\" type=\"Array(double)\" value=\"{12.,-.2,0,0,0} \"/>"
201  "<Parameter name=\"aggregation: distance laplacian algo\" type=\"string\" value=\"default\"/>"
202  "<Parameter name=\"aggregation: classical algo\" type=\"string\" value=\"default\"/>"
203  "<Parameter name=\"aggregation: drop tol\" type=\"double\" value=\"0.0\"/>"
204  "<Parameter name=\"aggregation: min agg size\" type=\"int\" value=\"2\"/>"
205  "<Parameter name=\"aggregation: max agg size\" type=\"int\" value=\"-1\"/>"
206  "<Parameter name=\"aggregation: compute aggregate qualities\" type=\"bool\" value=\"false\"/>"
207  "<Parameter name=\"aggregation: brick x size\" type=\"int\" value=\"2\"/>"
208  "<Parameter name=\"aggregation: brick y size\" type=\"int\" value=\"2\"/>"
209  "<Parameter name=\"aggregation: brick z size\" type=\"int\" value=\"2\"/>"
210  "<Parameter name=\"aggregation: brick x Dirichlet\" type=\"bool\" value=\"false\"/>"
211  "<Parameter name=\"aggregation: brick y Dirichlet\" type=\"bool\" value=\"false\"/>"
212  "<Parameter name=\"aggregation: brick z Dirichlet\" type=\"bool\" value=\"false\"/>"
213  "<Parameter name=\"aggregation: max selected neighbors\" type=\"int\" value=\"0\"/>"
214  "<Parameter name=\"aggregation: Dirichlet threshold\" type=\"double\" value=\"0.0\"/>"
215  "<Parameter name=\"aggregation: deterministic\" type=\"bool\" value=\"false\"/>"
216  "<Parameter name=\"aggregation: coloring algorithm\" type=\"string\" value=\"serial\"/>"
217  "<Parameter name=\"aggregation: enable phase 1\" type=\"bool\" value=\"true\"/>"
218  "<Parameter name=\"aggregation: enable phase 2a\" type=\"bool\" value=\"true\"/>"
219  "<Parameter name=\"aggregation: enable phase 2b\" type=\"bool\" value=\"true\"/>"
220  "<Parameter name=\"aggregation: enable phase 3\" type=\"bool\" value=\"true\"/>"
221  "<Parameter name=\"aggregation: phase2a include root\" type=\"bool\" value=\"true\"/>"
222  "<Parameter name=\"aggregation: error on nodes with no on-rank neighbors\" type=\"bool\" value=\"false\"/>"
223  "<Parameter name=\"aggregation: phase3 avoid singletons\" type=\"bool\" value=\"false\"/>"
224  "<Parameter name=\"aggregation: allow empty prolongator columns\" type=\"bool\" value=\"false\"/>"
225  "<Parameter name=\"aggregation: preserve Dirichlet points\" type=\"bool\" value=\"false\"/>"
226  "<Parameter name=\"aggregation: allow user-specified singletons\" type=\"bool\" value=\"false\"/>"
227  "<Parameter name=\"aggregation: use interface aggregation\" type=\"bool\" value=\"false\"/>"
228  "<Parameter name=\"aggregation: export visualization data\" type=\"bool\" value=\"false\"/>"
229  "<Parameter name=\"aggregation: output filename\" type=\"string\" value=\"\"/>"
230  "<Parameter name=\"aggregation: output file: time step\" type=\"int\" value=\"0\"/>"
231  "<Parameter name=\"aggregation: output file: iter\" type=\"int\" value=\"0\"/>"
232  "<Parameter name=\"aggregation: output file: agg style\" type=\"string\" value=\"Point Cloud\"/>"
233  "<Parameter name=\"aggregation: output file: fine graph edges\" type=\"bool\" value=\"false\"/>"
234  "<Parameter name=\"aggregation: output file: coarse graph edges\" type=\"bool\" value=\"false\"/>"
235  "<Parameter name=\"aggregation: output file: build colormap\" type=\"bool\" value=\"false\"/>"
236  "<ParameterList name=\"aggregation: params\"/>"
237  "<ParameterList name=\"strength-of-connection: params\"/>"
238  "<Parameter name=\"aggregation: mesh layout\" type=\"string\" value=\"Global Lexicographic\"/>"
239  "<Parameter name=\"aggregation: output type\" type=\"string\" value=\"Aggregates\"/>"
240  "<Parameter name=\"aggregation: coarsening rate\" type=\"string\" value=\"{3}\"/>"
241  "<Parameter name=\"aggregation: number of spatial dimensions\" type=\"int\" value=\"3\"/>"
242  "<Parameter name=\"aggregation: coarsening order\" type=\"int\" value=\"0\"/>"
243  "<Parameter name=\"aggregation: pairwise: size\" type=\"int\" value=\"8\"/>"
244  "<Parameter name=\"aggregation: pairwise: tie threshold\" type=\"double\" value=\"1e-6\"/>"
245  "<Parameter name=\"aggregate qualities: check symmetry\" type=\"bool\" value=\"false\"/>"
246  "<Parameter name=\"aggregate qualities: good aggregate threshold\" type=\"double\" value=\"100.0\"/>"
247  "<Parameter name=\"aggregate qualities: file output\" type=\"bool\" value=\"false\"/>"
248  "<Parameter name=\"aggregate qualities: file base\" type=\"string\" value=\"agg_qualities\"/>"
249  "<Parameter name=\"aggregate qualities: algorithm\" type=\"string\" value=\"forward\"/>"
250  "<Parameter name=\"aggregate qualities: zero threshold\" type=\"double\" value=\"1e-12\"/>"
251  "<Parameter name=\"aggregate qualities: percentiles\" type=\"Array(double)\" value=\"{}\"/>"
252  "<ParameterList name=\"export data\"/>"
253  "<Parameter name=\"print initial parameters\" type=\"bool\" value=\"true\"/>"
254  "<Parameter name=\"print unused parameters\" type=\"bool\" value=\"true\"/>"
255  "<Parameter name=\"transpose: use implicit\" type=\"bool\" value=\"false\"/>"
256  "<Parameter name=\"restriction: scale nullspace\" type=\"bool\" value=\"false\"/>"
257  "<Parameter name=\"use kokkos refactor\" type=\"bool\" value=\"false\"/>"
258  "<Parameter name=\"synchronize factory timers\" type=\"bool\" value=\"false\"/>"
259  "<Parameter name=\"rap: triple product\" type=\"bool\" value=\"false\"/>"
260  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
261  "<Parameter name=\"toggle: mode\" type=\"string\" value=\"semicoarsen\"/>"
262  "<Parameter name=\"semicoarsen: coarsen rate\" type=\"int\" value=\"3\"/>"
263  "<Parameter name=\"semicoarsen: number of levels\" type=\"int\" value=\"3\"/>"
264  "<Parameter name=\"linedetection: orientation\" type=\"string\" value=\"vertical\"/>"
265  "<Parameter name=\"linedetection: num layers\" type=\"int\" value=\"-1\"/>"
266  "<Parameter name=\"sa: damping factor\" type=\"double\" value=\"1.33\"/>"
267  "<Parameter name=\"sa: use filtered matrix\" type=\"bool\" value=\"true\"/>"
268  "<Parameter name=\"sa: calculate eigenvalue estimate\" type=\"bool\" value=\"false\"/>"
269  "<Parameter name=\"sa: eigenvalue estimate num iterations\" type=\"int\" value=\"10\"/>"
270  "<Parameter name=\"interp: interpolation order\" type=\"int\" value=\"1\"/>"
271  "<Parameter name=\"interp: build coarse coordinates\" type=\"bool\" value=\"true\"/>"
272  "<ParameterList name=\"transfer: params\"/>"
273  "<Parameter name=\"pcoarsen: element\" type=\"string\" value=\"\"/>"
274  "<Parameter name=\"pcoarsen: schedule\" type=\"string\" value=\"\"/>"
275  "<Parameter name=\"pcoarsen: hi basis\" type=\"string\" value=\"\"/>"
276  "<Parameter name=\"pcoarsen: lo basis\" type=\"string\" value=\"\"/>"
277  "<Parameter name=\"smoother: neighborhood type\" type=\"string\" value=\"\"/>"
278  "<Parameter name=\"filtered matrix: use lumping\" type=\"bool\" value=\"true\"/>"
279  "<Parameter name=\"filtered matrix: reuse eigenvalue\" type=\"bool\" value=\"true\"/>"
280  "<Parameter name=\"filtered matrix: reuse graph\" type=\"bool\" value=\"true\"/>"
281  "<Parameter name=\"emin: iterative method\" type=\"string\" value=\"cg\"/>"
282  "<Parameter name=\"emin: num iterations\" type=\"int\" value=\"2\"/>"
283  "<Parameter name=\"emin: num reuse iterations\" type=\"int\" value=\"1\"/>"
284  "<Parameter name=\"emin: pattern\" type=\"string\" value=\"AkPtent\"/>"
285  "<Parameter name=\"emin: pattern order\" type=\"int\" value=\"1\"/>"
286  "<Parameter name=\"emin: use filtered matrix\" type=\"bool\" value=\"true\"/>"
287  "<Parameter name=\"tentative: calculate qr\" type=\"bool\" value=\"true\"/>"
288  "<Parameter name=\"tentative: constant column sums\" type=\"bool\" value=\"false\"/>"
289  "<Parameter name=\"tentative: build coarse coordinates\" type=\"bool\" value=\"true\"/>"
290  "<Parameter name=\"repartition: enable\" type=\"bool\" value=\"false\"/>"
291  "<Parameter name=\"repartition: partitioner\" type=\"string\" value=\"zoltan2\"/>"
292  "<ParameterList name=\"repartition: params\"/>"
293  "<Parameter name=\"repartition: start level\" type=\"int\" value=\"2\"/>"
294  "<Parameter name=\"repartition: use map\" type=\"bool\" value=\"false\"/>"
295  "<Parameter name=\"repartition: node repartition level\" type=\"int\" value=\"-1\"/>"
296  "<Parameter name=\"repartition: node id\" type=\"int\" value=\"-1\"/>"
297  "<Parameter name=\"repartition: min rows per proc\" type=\"int\" value=\"800\"/>"
298  "<Parameter name=\"repartition: target rows per proc\" type=\"int\" value=\"0\"/>"
299  "<Parameter name=\"repartition: min rows per thread\" type=\"int\" value=\"0\"/>"
300  "<Parameter name=\"repartition: target rows per thread\" type=\"int\" value=\"0\"/>"
301  "<Parameter name=\"repartition: max imbalance\" type=\"double\" value=\"1.2\"/>"
302  "<Parameter name=\"repartition: remap parts\" type=\"bool\" value=\"true\"/>"
303  "<Parameter name=\"repartition: remap num values\" type=\"int\" value=\"4\"/>"
304  "<Parameter name=\"repartition: remap accept partition\" type=\"bool\" value=\"true\"/>"
305  "<Parameter name=\"repartition: print partition distribution\" type=\"bool\" value=\"false\"/>"
306  "<Parameter name=\"repartition: rebalance P and R\" type=\"bool\" value=\"false\"/>"
307  "<Parameter name=\"repartition: rebalance Nullspace\" type=\"bool\" value=\"true\"/>"
308  "<Parameter name=\"repartition: use subcommunicators\" type=\"bool\" value=\"true\"/>"
309  "<Parameter name=\"rap: relative diagonal floor\" type=\"Array(double)\" value=\"{}\"/>"
310  "<Parameter name=\"rap: fix zero diagonals\" type=\"bool\" value=\"false\"/>"
311  "<Parameter name=\"rap: fix zero diagonals threshold\" type=\"double\" value=\"0.\"/>"
312  "<Parameter name=\"rap: shift\" type=\"double\" value=\"0.0\"/>"
313  "<Parameter name=\"rap: shift diagonal M\" type=\"bool\" value=\"false\"/>"
314  "<Parameter name=\"rap: shift low storage\" type=\"bool\" value=\"false\"/>"
315  "<Parameter name=\"rap: shift array\" type=\"Array(double)\" value=\"{}\"/>"
316  "<Parameter name=\"rap: cfl array\" type=\"Array(double)\" value=\"{}\"/>"
317  "<Parameter name=\"rap: algorithm\" type=\"string\" value=\"galerkin\"/>"
318  "<ParameterList name=\"matrixmatrix: kernel params\"/>"
319  "<Parameter name=\"matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount \" type=\"int\" value=\"3000 \"/>"
320  "<Parameter name=\"isMatrixMatrix_TransferAndFillComplete \" type=\"bool\" value=\"false\"/>"
321  "<Parameter name=\"reuse: type\" type=\"string\" value=\"none\"/>"
322  "<Parameter name=\"use external multigrid package\" type=\"string\" value=\"none\"/>"
323  "<ParameterList name=\"amgx:params\"/>"
324  "<Parameter name=\"debug: graph level\" type=\"int\" value=\"-1\"/>"
325  "<Parameter name=\"refmaxwell: mode\" type=\"string\" value=\"additive\"/>"
326  "<Parameter name=\"refmaxwell: disable addon\" type=\"bool\" value=\"true\"/>"
327  "<ParameterList name=\"refmaxwell: 11list\"/>"
328  "<ParameterList name=\"refmaxwell: 22list\"/>"
329  "<Parameter name=\"refmaxwell: use as preconditioner\" type=\"bool\" value=\"false\"/>"
330  "<Parameter name=\"refmaxwell: dump matrices\" type=\"bool\" value=\"false\"/>"
331  "<Parameter name=\"refmaxwell: subsolves on subcommunicators\" type=\"bool\" value=\"false\"/>"
332  "<Parameter name=\"refmaxwell: ratio AH / A22 subcommunicators\" type=\"double\" value=\"1.0\"/>"
333 "</ParameterList>"
334 ;
336 ("Poisson-2D",
337 
338  "<ParameterList name=\"MueLu\">"
339 
340  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
341 
342  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
343 
344  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
345 
346  "</ParameterList>"
347  )
348 ("Poisson-2D-complex",
349 
350  "<ParameterList name=\"MueLu\">"
351 
352  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
353 
354  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
355 
356  "<ParameterList name=\"smoother: params\">"
357 
358  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
359 
360  "</ParameterList>"
361 
362  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
363 
364  "</ParameterList>"
365  )
366 ("Poisson-3D",
367 
368  "<ParameterList name=\"MueLu\">"
369 
370  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
371 
372  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
373 
374  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
375 
376  "</ParameterList>"
377  )
378 ("Poisson-3D-complex",
379 
380  "<ParameterList name=\"MueLu\">"
381 
382  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
383 
384  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
385 
386  "<ParameterList name=\"smoother: params\">"
387 
388  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
389 
390  "</ParameterList>"
391 
392  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
393 
394  "</ParameterList>"
395  )
396 ("Elasticity-2D",
397 
398  "<ParameterList name=\"MueLu\">"
399 
400  "<Parameter name=\"number of equations\" type=\"int\" value=\"2\"/>"
401 
402  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
403 
404  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
405 
406  "</ParameterList>"
407  )
408 ("Elasticity-2D-complex",
409 
410  "<ParameterList name=\"MueLu\">"
411 
412  "<Parameter name=\"number of equations\" type=\"int\" value=\"2\"/>"
413 
414  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
415 
416  "<ParameterList name=\"smoother: params\">"
417 
418  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
419 
420  "</ParameterList>"
421 
422  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
423 
424  "</ParameterList>"
425  )
426 ("Elasticity-3D",
427 
428  "<ParameterList name=\"MueLu\">"
429 
430  "<Parameter name=\"number of equations\" type=\"int\" value=\"3\"/>"
431 
432  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
433 
434  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
435 
436  "</ParameterList>"
437  )
438 ("Elasticity-3D-complex",
439 
440  "<ParameterList name=\"MueLu\">"
441 
442  "<Parameter name=\"number of equations\" type=\"int\" value=\"3\"/>"
443 
444  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
445 
446  "<ParameterList name=\"smoother: params\">"
447 
448  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
449 
450  "</ParameterList>"
451 
452  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
453 
454  "</ParameterList>"
455  )
456 ("MHD",
457 
458  "<ParameterList name=\"MueLu\">"
459 
460  "<Parameter name=\"smoother: type\" type=\"string\" value=\"SCHWARZ\"/>"
461 
462  "<ParameterList name=\"smoother: params\">"
463 
464  "<Parameter name=\"schwarz: overlap level\" type=\"int\" value=\"1\"/>"
465 
466  "<Parameter name=\"schwarz: combine mode\" type=\"string\" value=\"Zero\"/>"
467 
468  "<Parameter name=\"schwarz: use reordering\" type=\"bool\" value=\"false\"/>"
469 
470  "<Parameter name=\"subdomain solver name\" type=\"string\" value=\"RILUK\"/>"
471 
472  "<ParameterList name=\"subdomain solver parameters\">"
473 
474  "<Parameter name=\"fact: iluk level-of-fill\" type=\"int\" value=\"0\"/>"
475 
476  "<Parameter name=\"fact: absolute threshold\" type=\"double\" value=\"0.\"/>"
477 
478  "<Parameter name=\"fact: relative threshold\" type=\"double\" value=\"1.\"/>"
479 
480  "<Parameter name=\"fact: relax value\" type=\"double\" value=\"0.\"/>"
481 
482  "</ParameterList>"
483 
484  "</ParameterList>"
485 
486  "<Parameter name=\"transpose: use implicit\" type=\"bool\" value=\"true\"/>"
487 
488  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"unsmoothed\"/>"
489 
490  "</ParameterList>"
491  )
492 ("ConvectionDiffusion",
493 
494  "<ParameterList name=\"MueLu\">"
495 
496  "<Parameter name=\"problem: symmetric\" type=\"bool\" value=\"false\"/>"
497 
498  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
499 
500  "<ParameterList name=\"smoother: params\">"
501 
502  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Gauss-Seidel\"/>"
503 
504  "</ParameterList>"
505 
506  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"pg\"/>"
507 
508  "<Parameter name=\"sa: use filtered matrix\" type=\"bool\" value=\"true\"/>"
509 
510  "<Parameter name=\"emin: use filtered matrix\" type=\"bool\" value=\"true\"/>"
511 
512  "</ParameterList>"
513  )
514 ;
516 
517  ("default values","problem: type")
518 
519  ("ML output","verbosity")
520 
521  ("output filename","output filename")
522 
523  ("PDE equations","number of equations")
524 
525  ("max levels","max levels")
526 
527  ("prec type","cycle type")
528 
529  ("W cycle start level","W cycle start level")
530 
531  ("coarse grid correction scaling factor","coarse grid correction scaling factor")
532 
533  ("fuse prolongation and update","fuse prolongation and update")
534 
535  ("number of vectors","number of vectors")
536 
537  ("problem: symmetric","problem: symmetric")
538 
539  ("xml parameter file","xml parameter file")
540 
541  ("parameterlist: syntax","parameterlist: syntax")
542 
543  ("hierarchy label","hierarchy label")
544 
545  ("matvec params","matvec params")
546 
547  ("smoother: pre or post","smoother: pre or post")
548 
549  ("smoother: type","smoother: type")
550 
551  ("smoother: pre type","smoother: pre type")
552 
553  ("smoother: post type","smoother: post type")
554 
555  ("smoother: params","smoother: params")
556 
557  ("smoother: pre params","smoother: pre params")
558 
559  ("smoother: post params","smoother: post params")
560 
561  ("smoother: overlap","smoother: overlap")
562 
563  ("smoother: pre overlap","smoother: pre overlap")
564 
565  ("smoother: post overlap","smoother: post overlap")
566 
567  ("max size","coarse: max size")
568 
569  ("coarse: type","coarse: type")
570 
571  ("coarse: params","coarse: params")
572 
573  ("coarse: overlap","coarse: overlap")
574 
575  ("aggregation: type","aggregation: type")
576 
577  ("aggregation: mode","aggregation: mode")
578 
579  ("aggregation: ordering","aggregation: ordering")
580 
581  ("aggregation: drop scheme","aggregation: drop scheme")
582 
583  ("aggregation: number of random vectors","aggregation: number of random vectors")
584 
585  ("aggregation: number of times to pre or post smooth","aggregation: number of times to pre or post smooth")
586 
587  ("aggregation: penalty parameters","aggregation: penalty parameters")
588 
589  ("aggregation: distance laplacian algo","aggregation: distance laplacian algo")
590 
591  ("aggregation: classical algo","aggregation: classical algo")
592 
593  ("aggregation: threshold","aggregation: drop tol")
594 
595  ("aggregation: min agg size","aggregation: min agg size")
596 
597  ("aggregation: max agg size","aggregation: max agg size")
598 
599  ("aggregation: compute aggregate qualities","aggregation: compute aggregate qualities")
600 
601  ("aggregation: brick x size","aggregation: brick x size")
602 
603  ("aggregation: brick y size","aggregation: brick y size")
604 
605  ("aggregation: brick z size","aggregation: brick z size")
606 
607  ("aggregation: brick x Dirichlet","aggregation: brick x Dirichlet")
608 
609  ("aggregation: brick y Dirichlet","aggregation: brick y Dirichlet")
610 
611  ("aggregation: brick z Dirichlet","aggregation: brick z Dirichlet")
612 
613  ("aggregation: max selected neighbors","aggregation: max selected neighbors")
614 
615  ("aggregation: Dirichlet threshold","aggregation: Dirichlet threshold")
616 
617  ("aggregation: deterministic","aggregation: deterministic")
618 
619  ("aggregation: coloring algorithm","aggregation: coloring algorithm")
620 
621  ("aggregation: enable phase 1","aggregation: enable phase 1")
622 
623  ("aggregation: enable phase 2a","aggregation: enable phase 2a")
624 
625  ("aggregation: enable phase 2b","aggregation: enable phase 2b")
626 
627  ("aggregation: enable phase 3","aggregation: enable phase 3")
628 
629  ("aggregation: phase2a include root","aggregation: phase2a include root")
630 
631  ("aggregation: error on nodes with no on-rank neighbors","aggregation: error on nodes with no on-rank neighbors")
632 
633  ("aggregation: phase3 avoid singletons","aggregation: phase3 avoid singletons")
634 
635  ("aggregation: allow empty prolongator columns","aggregation: allow empty prolongator columns")
636 
637  ("aggregation: preserve Dirichlet points","aggregation: preserve Dirichlet points")
638 
639  ("aggregation: allow user-specified singletons","aggregation: allow user-specified singletons")
640 
641  ("aggregation: use interface aggregation","aggregation: use interface aggregation")
642 
643  ("aggregation: export visualization data","aggregation: export visualization data")
644 
645  ("aggregation: output filename","aggregation: output filename")
646 
647  ("aggregation: output file: time step","aggregation: output file: time step")
648 
649  ("aggregation: output file: iter","aggregation: output file: iter")
650 
651  ("aggregation: output file: agg style","aggregation: output file: agg style")
652 
653  ("aggregation: output file: fine graph edges","aggregation: output file: fine graph edges")
654 
655  ("aggregation: output file: coarse graph edges","aggregation: output file: coarse graph edges")
656 
657  ("aggregation: output file: build colormap","aggregation: output file: build colormap")
658 
659  ("aggregation: params","aggregation: params")
660 
661  ("strength-of-connection: params","strength-of-connection: params")
662 
663  ("aggregation: mesh layout","aggregation: mesh layout")
664 
665  ("aggregation: output type","aggregation: output type")
666 
667  ("aggregation: coarsening rate","aggregation: coarsening rate")
668 
669  ("aggregation: number of spatial dimensions","aggregation: number of spatial dimensions")
670 
671  ("aggregation: coarsening order","aggregation: coarsening order")
672 
673  ("aggregation: pairwise: size","aggregation: pairwise: size")
674 
675  ("aggregation: pairwise: tie threshold","aggregation: pairwise: tie threshold")
676 
677  ("aggregate qualities: check symmetry","aggregate qualities: check symmetry")
678 
679  ("aggregate qualities: good aggregate threshold","aggregate qualities: good aggregate threshold")
680 
681  ("aggregate qualities: file output","aggregate qualities: file output")
682 
683  ("aggregate qualities: file base","aggregate qualities: file base")
684 
685  ("aggregate qualities: algorithm","aggregate qualities: algorithm")
686 
687  ("aggregate qualities: zero threshold","aggregate qualities: zero threshold")
688 
689  ("aggregate qualities: percentiles","aggregate qualities: percentiles")
690 
691  ("export data","export data")
692 
693  ("ML print initial list","print initial parameters")
694 
695  ("print unused","print unused parameters")
696 
697  ("transpose: use implicit","transpose: use implicit")
698 
699  ("restriction: scale nullspace","restriction: scale nullspace")
700 
701  ("use kokkos refactor","use kokkos refactor")
702 
703  ("synchronize factory timers","synchronize factory timers")
704 
705  ("rap: triple product","rap: triple product")
706 
707  ("energy minimization: enable","multigrid algorithm")
708 
709  ("toggle: mode","toggle: mode")
710 
711  ("semicoarsen: coarsen rate","semicoarsen: coarsen rate")
712 
713  ("semicoarsen: number of levels","semicoarsen: number of levels")
714 
715  ("linedetection: orientation","linedetection: orientation")
716 
717  ("linedetection: num layers","linedetection: num layers")
718 
719  ("aggregation: damping factor","sa: damping factor")
720 
721  ("sa: use filtered matrix","sa: use filtered matrix")
722 
723  ("sa: calculate eigenvalue estimate","sa: calculate eigenvalue estimate")
724 
725  ("eigen-analysis: iterations","sa: eigenvalue estimate num iterations")
726 
727  ("interp: interpolation order","interp: interpolation order")
728 
729  ("interp: build coarse coordinates","interp: build coarse coordinates")
730 
731  ("transfer: params","transfer: params")
732 
733  ("pcoarsen: element","pcoarsen: element")
734 
735  ("pcoarsen: schedule","pcoarsen: schedule")
736 
737  ("pcoarsen: hi basis","pcoarsen: hi basis")
738 
739  ("pcoarsen: lo basis","pcoarsen: lo basis")
740 
741  ("smoother: neighborhood type","smoother: neighborhood type")
742 
743  ("filtered matrix: use lumping","filtered matrix: use lumping")
744 
745  ("filtered matrix: reuse eigenvalue","filtered matrix: reuse eigenvalue")
746 
747  ("filtered matrix: reuse graph","filtered matrix: reuse graph")
748 
749  ("emin: iterative method","emin: iterative method")
750 
751  ("emin: num iterations","emin: num iterations")
752 
753  ("emin: num reuse iterations","emin: num reuse iterations")
754 
755  ("emin: pattern","emin: pattern")
756 
757  ("emin: pattern order","emin: pattern order")
758 
759  ("emin: use filtered matrix","emin: use filtered matrix")
760 
761  ("tentative: calculate qr","tentative: calculate qr")
762 
763  ("tentative: constant column sums","tentative: constant column sums")
764 
765  ("tentative: build coarse coordinates","tentative: build coarse coordinates")
766 
767  ("repartition: enable","repartition: enable")
768 
769  ("repartition: partitioner","repartition: partitioner")
770 
771  ("repartition: params","repartition: params")
772 
773  ("repartition: start level","repartition: start level")
774 
775  ("repartition: use map","repartition: use map")
776 
777  ("repartition: node repartition level","repartition: node repartition level")
778 
779  ("repartition: node id","repartition: node id")
780 
781  ("repartition: min per proc","repartition: min rows per proc")
782 
783  ("repartition: target rows per proc","repartition: target rows per proc")
784 
785  ("repartition: min rows per thread","repartition: min rows per thread")
786 
787  ("repartition: target rows per thread","repartition: target rows per thread")
788 
789  ("repartition: max min ratio","repartition: max imbalance")
790 
791  ("repartition: remap parts","repartition: remap parts")
792 
793  ("repartition: remap num values","repartition: remap num values")
794 
795  ("repartition: remap accept partition","repartition: remap accept partition")
796 
797  ("repartition: print partition distribution","repartition: print partition distribution")
798 
799  ("repartition: rebalance P and R","repartition: rebalance P and R")
800 
801  ("repartition: rebalance Nullspace","repartition: rebalance Nullspace")
802 
803  ("repartition: use subcommunicators","repartition: use subcommunicators")
804 
805  ("rap: relative diagonal floor","rap: relative diagonal floor")
806 
807  ("rap: fix zero diagonals","rap: fix zero diagonals")
808 
809  ("rap: fix zero diagonals threshold","rap: fix zero diagonals threshold")
810 
811  ("rap: shift","rap: shift")
812 
813  ("rap: shift diagonal M","rap: shift diagonal M")
814 
815  ("rap: shift low storage","rap: shift low storage")
816 
817  ("rap: shift array","rap: shift array")
818 
819  ("rap: cfl array","rap: cfl array")
820 
821  ("rap: algorithm","rap: algorithm")
822 
823  ("matrixmatrix: kernel params","matrixmatrix: kernel params")
824 
825  ("matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount ","matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount ")
826 
827  ("isMatrixMatrix_TransferAndFillComplete ","isMatrixMatrix_TransferAndFillComplete ")
828 
829  ("reuse: type","reuse: type")
830 
831  ("use external multigrid package","use external multigrid package")
832 
833  ("amgx:params","amgx:params")
834 
835  ("debug: graph level","debug: graph level")
836 
837  ("refmaxwell: mode","refmaxwell: mode")
838 
839  ("refmaxwell: disable addon","refmaxwell: disable addon")
840 
841  ("refmaxwell: 11list","refmaxwell: 11list")
842 
843  ("refmaxwell: 22list","refmaxwell: 22list")
844 
845  ("zero starting solution","refmaxwell: use as preconditioner")
846 
847  ("refmaxwell: dump matrices","refmaxwell: dump matrices")
848 
849  ("refmaxwell: subsolves on subcommunicators","refmaxwell: subsolves on subcommunicators")
850 
851  ("refmaxwell: ratio AH / A22 subcommunicators","refmaxwell: ratio AH / A22 subcommunicators")
852  ;
853 
854 }
855 
static std::map< std::string, std::string > ML2MueLuLists_
Map of ML parameter strings to corresponding MueLu parametes.
static const std::string stringList_
String equivalent of the masterList_.
static Teuchos::RCP< Teuchos::ParameterList > problemSpecificList_
A ParameterList that holds all valid parameters and their default values for a particular problem typ...
static std::string interpretParameterName(const std::string &name, const std::string &value)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
static Teuchos::RCP< Teuchos::ParameterList > masterList_
A ParameterList that holds all valid parameters and their default values.
static Teuchos::RCP< Teuchos::ParameterList > GetProblemSpecificList(std::string const &problemType)
Return default parameter settings for the specified problem type.
Exception throws to report errors in the internal logical of the program.
static Teuchos::RCP< const Teuchos::ParameterList > List()
Return a &quot;master&quot; list of all valid parameters and their default values.
Helper class to initialize DefaultProblemTypeLists_ in class MasterList.
static std::map< std::string, std::string > DefaultProblemTypeLists_
Map of string equivalents of the problemSpecificList_. The first entry is the problem type...
static std::string problemType_
The problem type associated with the current problem-specific ParameterList.
bool is_null() const