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 == "number of equations") { ss << "<Parameter name=\"number of equations\" type=\"int\" value=" << value << "/>"; return ss.str(); }
123  if (name == "max levels") { ss << "<Parameter name=\"max levels\" type=\"int\" value=" << value << "/>"; return ss.str(); }
124  if (name == "coarse grid correction scaling factor") { ss << "<Parameter name=\"coarse grid correction scaling factor\" type=\"double\" value=" << value << "/>"; return ss.str(); }
125  if (name == "problem: symmetric") { ss << "<Parameter name=\"problem: symmetric\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
126  if (name == "hierarchy label") { ss << "<Parameter name=\"hierarchy label\" type=\"string\" value=" << value << "/>"; return ss.str(); }
127  if (name == "aggregation: drop tol") { ss << "<Parameter name=\"aggregation: drop tol\" type=\"double\" value=" << value << "/>"; return ss.str(); }
128  if (name == "print initial parameters") { ss << "<Parameter name=\"print initial parameters\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
129  if (name == "print unused parameters") { ss << "<Parameter name=\"print unused parameters\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
130  if (name == "sa: damping factor") { ss << "<Parameter name=\"sa: damping factor\" type=\"double\" value=" << value << "/>"; return ss.str(); }
131  if (name == "sa: eigenvalue estimate num iterations") { ss << "<Parameter name=\"sa: eigenvalue estimate num iterations\" type=\"int\" value=" << value << "/>"; return ss.str(); }
132  if (name == "pcoarsen: element") { ss << "<Parameter name=\"pcoarsen: element\" type=\"string\" value=" << value << "/>"; return ss.str(); }
133  if (name == "pcoarsen: schedule") { ss << "<Parameter name=\"pcoarsen: schedule\" type=\"string\" value=" << value << "/>"; return ss.str(); }
134  if (name == "pcoarsen: hi basis") { ss << "<Parameter name=\"pcoarsen: hi basis\" type=\"string\" value=" << value << "/>"; return ss.str(); }
135  if (name == "pcoarsen: lo basis") { ss << "<Parameter name=\"pcoarsen: lo basis\" type=\"string\" value=" << value << "/>"; return ss.str(); }
136  if (name == "smoother: neighborhood type") { ss << "<Parameter name=\"smoother: neighborhood type\" type=\"string\" value=" << value << "/>"; return ss.str(); }
137  if (name == "tentative: calculate qr") { ss << "<Parameter name=\"tentative: calculate qr\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
138  if (name == "repartition: enable") { ss << "<Parameter name=\"repartition: enable\" type=\"bool\" value=" << value << "/>"; return ss.str(); }
139  if (name == "repartition: start level") { ss << "<Parameter name=\"repartition: start level\" type=\"int\" value=" << value << "/>"; return ss.str(); }
140  if (name == "repartition: node repartition level") { ss << "<Parameter name=\"repartition: node repartition level\" type=\"int\" value=" << value << "/>"; return ss.str(); }
141  if (name == "repartition: node id") { ss << "<Parameter name=\"repartition: node id\" type=\"int\" value=" << value << "/>"; return ss.str(); }
142  if (name == "repartition: min rows per proc") { ss << "<Parameter name=\"repartition: min rows per proc\" type=\"int\" value=" << value << "/>"; return ss.str(); }
143  if (name == "repartition: max imbalance") { ss << "<Parameter name=\"repartition: max imbalance\" type=\"double\" value=" << value << "/>"; return ss.str(); }
144  if (name == "use external multigrid package") { ss << "<Parameter name=\"use external multigrid package\" type=\"string\" value=" << value << "/>"; return ss.str(); }
145  return "";
146  }
147 
150  std::string MasterList::problemType_ = "unknown";
151  const std::string MasterList::stringList_ =
152 "<ParameterList name=\"MueLu\">"
153  "<Parameter name=\"problem: type\" type=\"string\" value=\"unknown\"/>"
154  "<Parameter name=\"verbosity\" type=\"string\" value=\"high\"/>"
155  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
156  "<Parameter name=\"max levels\" type=\"int\" value=\"10\"/>"
157  "<Parameter name=\"cycle type\" type=\"string\" value=\"V\"/>"
158  "<Parameter name=\"coarse grid correction scaling factor\" type=\"double\" value=\"1.0\"/>"
159  "<Parameter name=\"problem: symmetric\" type=\"bool\" value=\"true\"/>"
160  "<Parameter name=\"xml parameter file\" type=\"string\" value=\"\"/>"
161  "<Parameter name=\"parameterlist: syntax\" type=\"string\" value=\"muelu\"/>"
162  "<Parameter name=\"hierarchy label\" type=\"string\" value=\"\"/>"
163  "<Parameter name=\"smoother: pre or post\" type=\"string\" value=\"both\"/>"
164  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
165  "<Parameter name=\"smoother: pre type\" type=\"string\" value=\"RELAXATION\"/>"
166  "<Parameter name=\"smoother: post type\" type=\"string\" value=\"RELAXATION\"/>"
167  "<ParameterList name=\"smoother: params\"/>"
168  "<ParameterList name=\"smoother: pre params\"/>"
169  "<ParameterList name=\"smoother: post params\"/>"
170  "<Parameter name=\"smoother: overlap\" type=\"int\" value=\"0\"/>"
171  "<Parameter name=\"smoother: pre overlap\" type=\"int\" value=\"0\"/>"
172  "<Parameter name=\"smoother: post overlap\" type=\"int\" value=\"0\"/>"
173  "<Parameter name=\"coarse: max size\" type=\"int\" value=\"2000\"/>"
174  "<Parameter name=\"coarse: type\" type=\"string\" value=\"SuperLU\"/>"
175  "<ParameterList name=\"coarse: params\"/>"
176  "<Parameter name=\"coarse: overlap\" type=\"int\" value=\"0\"/>"
177  "<Parameter name=\"aggregation: type\" type=\"string\" value=\"uncoupled\"/>"
178  "<Parameter name=\"aggregation: mode\" type=\"string\" value=\"uncoupled\"/>"
179  "<Parameter name=\"aggregation: ordering\" type=\"string\" value=\"natural\"/>"
180  "<Parameter name=\"aggregation: drop scheme\" type=\"string\" value=\"classical\"/>"
181  "<Parameter name=\"aggregation: drop tol\" type=\"double\" value=\"0.0\"/>"
182  "<Parameter name=\"aggregation: min agg size\" type=\"int\" value=\"2\"/>"
183  "<Parameter name=\"aggregation: max agg size\" type=\"int\" value=\"-1\"/>"
184  "<Parameter name=\"aggregation: brick x size\" type=\"int\" value=\"2\"/>"
185  "<Parameter name=\"aggregation: brick y size\" type=\"int\" value=\"2\"/>"
186  "<Parameter name=\"aggregation: brick z size\" type=\"int\" value=\"2\"/>"
187  "<Parameter name=\"aggregation: max selected neighbors\" type=\"int\" value=\"0\"/>"
188  "<Parameter name=\"aggregation: Dirichlet threshold\" type=\"double\" value=\"0.0\"/>"
189  "<Parameter name=\"aggregation: phase 1 algorithm\" type=\"string\" value=\"Serial\"/>"
190  "<Parameter name=\"aggregation: enable phase 1\" type=\"bool\" value=\"true\"/>"
191  "<Parameter name=\"aggregation: enable phase 2a\" type=\"bool\" value=\"true\"/>"
192  "<Parameter name=\"aggregation: enable phase 2b\" type=\"bool\" value=\"true\"/>"
193  "<Parameter name=\"aggregation: enable phase 3\" type=\"bool\" value=\"true\"/>"
194  "<Parameter name=\"aggregation: error on nodes with no on-rank neighbors\" type=\"bool\" value=\"false\"/>"
195  "<Parameter name=\"aggregation: phase3 avoid singletons\" type=\"bool\" value=\"false\"/>"
196  "<Parameter name=\"aggregation: allow empty prolongator columns\" type=\"bool\" value=\"false\"/>"
197  "<Parameter name=\"aggregation: preserve Dirichlet points\" type=\"bool\" value=\"false\"/>"
198  "<Parameter name=\"aggregation: allow user-specified singletons\" type=\"bool\" value=\"false\"/>"
199  "<Parameter name=\"aggregation: use interface aggregation\" type=\"bool\" value=\"false\"/>"
200  "<Parameter name=\"aggregation: export visualization data\" type=\"bool\" value=\"false\"/>"
201  "<Parameter name=\"aggregation: output filename\" type=\"string\" value=\"\"/>"
202  "<Parameter name=\"aggregation: output file: time step\" type=\"int\" value=\"0\"/>"
203  "<Parameter name=\"aggregation: output file: iter\" type=\"int\" value=\"0\"/>"
204  "<Parameter name=\"aggregation: output file: agg style\" type=\"string\" value=\"Point Cloud\"/>"
205  "<Parameter name=\"aggregation: output file: fine graph edges\" type=\"bool\" value=\"false\"/>"
206  "<Parameter name=\"aggregation: output file: coarse graph edges\" type=\"bool\" value=\"false\"/>"
207  "<Parameter name=\"aggregation: output file: build colormap\" type=\"bool\" value=\"false\"/>"
208  "<ParameterList name=\"aggregation: params\"/>"
209  "<ParameterList name=\"strength-of-connection: params\"/>"
210  "<Parameter name=\"aggregation: mesh layout\" type=\"string\" value=\"Global Lexicographic\"/>"
211  "<Parameter name=\"aggregation: output type\" type=\"string\" value=\"Aggregates\"/>"
212  "<Parameter name=\"aggregation: coarsening rate\" type=\"string\" value=\"{3}\"/>"
213  "<Parameter name=\"aggregation: number of spatial dimensions\" type=\"int\" value=\"3\"/>"
214  "<Parameter name=\"aggregation: coarsening order\" type=\"int\" value=\"0\"/>"
215  "<ParameterList name=\"export data\"/>"
216  "<Parameter name=\"print initial parameters\" type=\"bool\" value=\"true\"/>"
217  "<Parameter name=\"print unused parameters\" type=\"bool\" value=\"true\"/>"
218  "<Parameter name=\"transpose: use implicit\" type=\"bool\" value=\"false\"/>"
219  "<Parameter name=\"use kokkos refactor\" type=\"bool\" value=\"false\"/>"
220  "<Parameter name=\"synchronize factory timers\" type=\"bool\" value=\"false\"/>"
221  "<Parameter name=\"rap: triple product\" type=\"bool\" value=\"false\"/>"
222  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
223  "<Parameter name=\"toggle: mode\" type=\"string\" value=\"semicoarsen\"/>"
224  "<Parameter name=\"semicoarsen: coarsen rate\" type=\"int\" value=\"3\"/>"
225  "<Parameter name=\"semicoarsen: number of levels\" type=\"int\" value=\"3\"/>"
226  "<Parameter name=\"linedetection: orientation\" type=\"string\" value=\"vertical\"/>"
227  "<Parameter name=\"linedetection: num layers\" type=\"int\" value=\"-1\"/>"
228  "<Parameter name=\"sa: damping factor\" type=\"double\" value=\"1.33\"/>"
229  "<Parameter name=\"sa: use filtered matrix\" type=\"bool\" value=\"true\"/>"
230  "<Parameter name=\"sa: calculate eigenvalue estimate\" type=\"bool\" value=\"false\"/>"
231  "<Parameter name=\"sa: eigenvalue estimate num iterations\" type=\"int\" value=\"10\"/>"
232  "<Parameter name=\"interp: interpolation order\" type=\"int\" value=\"1\"/>"
233  "<Parameter name=\"interp: build coarse coordinates\" type=\"bool\" value=\"true\"/>"
234  "<ParameterList name=\"transfer: params\"/>"
235  "<Parameter name=\"pcoarsen: element\" type=\"string\" value=\"\"/>"
236  "<Parameter name=\"pcoarsen: schedule\" type=\"string\" value=\"\"/>"
237  "<Parameter name=\"pcoarsen: hi basis\" type=\"string\" value=\"\"/>"
238  "<Parameter name=\"pcoarsen: lo basis\" type=\"string\" value=\"\"/>"
239  "<Parameter name=\"smoother: neighborhood type\" type=\"string\" value=\"\"/>"
240  "<Parameter name=\"filtered matrix: use lumping\" type=\"bool\" value=\"true\"/>"
241  "<Parameter name=\"filtered matrix: reuse eigenvalue\" type=\"bool\" value=\"true\"/>"
242  "<Parameter name=\"filtered matrix: reuse graph\" type=\"bool\" value=\"true\"/>"
243  "<Parameter name=\"emin: iterative method\" type=\"string\" value=\"cg\"/>"
244  "<Parameter name=\"emin: num iterations\" type=\"int\" value=\"2\"/>"
245  "<Parameter name=\"emin: num reuse iterations\" type=\"int\" value=\"1\"/>"
246  "<Parameter name=\"emin: pattern\" type=\"string\" value=\"AkPtent\"/>"
247  "<Parameter name=\"emin: pattern order\" type=\"int\" value=\"1\"/>"
248  "<Parameter name=\"tentative: calculate qr\" type=\"bool\" value=\"true\"/>"
249  "<Parameter name=\"tentative: build coarse coordinates\" type=\"bool\" value=\"true\"/>"
250  "<Parameter name=\"repartition: enable\" type=\"bool\" value=\"false\"/>"
251  "<Parameter name=\"repartition: partitioner\" type=\"string\" value=\"zoltan2\"/>"
252  "<ParameterList name=\"repartition: params\"/>"
253  "<Parameter name=\"repartition: start level\" type=\"int\" value=\"2\"/>"
254  "<Parameter name=\"repartition: node repartition level\" type=\"int\" value=\"-1\"/>"
255  "<Parameter name=\"repartition: node id\" type=\"int\" value=\"-1\"/>"
256  "<Parameter name=\"repartition: min rows per proc\" type=\"int\" value=\"800\"/>"
257  "<Parameter name=\"repartition: target rows per proc\" type=\"int\" value=\"0\"/>"
258  "<Parameter name=\"repartition: min rows per thread\" type=\"int\" value=\"0\"/>"
259  "<Parameter name=\"repartition: target rows per thread\" type=\"int\" value=\"0\"/>"
260  "<Parameter name=\"repartition: max imbalance\" type=\"double\" value=\"1.2\"/>"
261  "<Parameter name=\"repartition: remap parts\" type=\"bool\" value=\"true\"/>"
262  "<Parameter name=\"repartition: remap num values\" type=\"int\" value=\"4\"/>"
263  "<Parameter name=\"repartition: remap accept partition\" type=\"bool\" value=\"true\"/>"
264  "<Parameter name=\"repartition: print partition distribution\" type=\"bool\" value=\"false\"/>"
265  "<Parameter name=\"repartition: rebalance P and R\" type=\"bool\" value=\"false\"/>"
266  "<Parameter name=\"repartition: rebalance Nullspace\" type=\"bool\" value=\"true\"/>"
267  "<Parameter name=\"repartition: use subcommunicators\" type=\"bool\" value=\"true\"/>"
268  "<Parameter name=\"rap: fix zero diagonals\" type=\"bool\" value=\"false\"/>"
269  "<Parameter name=\"rap: fix zero diagonals threshold\" type=\"double\" value=\"0.\"/>"
270  "<Parameter name=\"rap: shift\" type=\"double\" value=\"0.0\"/>"
271  "<Parameter name=\"rap: shift diagonal M\" type=\"bool\" value=\"false\"/>"
272  "<Parameter name=\"rap: shift low storage\" type=\"bool\" value=\"false\"/>"
273  "<Parameter name=\"rap: shift array\" type=\"Array(double)\" value=\"{}\"/>"
274  "<Parameter name=\"rap: cfl array\" type=\"Array(double)\" value=\"{}\"/>"
275  "<Parameter name=\"rap: algorithm\" type=\"string\" value=\"galerkin\"/>"
276  "<ParameterList name=\"matrixmatrix: kernel params\"/>"
277  "<Parameter name=\"matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount \" type=\"int\" value=\"3000 \"/>"
278  "<Parameter name=\"isMatrixMatrix_TransferAndFillComplete \" type=\"bool\" value=\"false\"/>"
279  "<Parameter name=\"reuse: type\" type=\"string\" value=\"none\"/>"
280  "<Parameter name=\"use external multigrid package\" type=\"string\" value=\"none\"/>"
281  "<ParameterList name=\"amgx:params\"/>"
282  "<Parameter name=\"debug: graph level\" type=\"int\" value=\"-1\"/>"
283 "</ParameterList>"
284 ;
286 ("Poisson-2D",
287 
288  "<ParameterList name=\"MueLu\">"
289 
290  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
291 
292  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
293 
294  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
295 
296  "</ParameterList>"
297  )
298 ("Poisson-2D-complex",
299 
300  "<ParameterList name=\"MueLu\">"
301 
302  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
303 
304  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
305 
306  "<ParameterList name=\"smoother: params\">"
307 
308  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
309 
310  "</ParameterList>"
311 
312  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
313 
314  "</ParameterList>"
315  )
316 ("Poisson-3D",
317 
318  "<ParameterList name=\"MueLu\">"
319 
320  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
321 
322  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
323 
324  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
325 
326  "</ParameterList>"
327  )
328 ("Poisson-3D-complex",
329 
330  "<ParameterList name=\"MueLu\">"
331 
332  "<Parameter name=\"number of equations\" type=\"int\" value=\"1\"/>"
333 
334  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
335 
336  "<ParameterList name=\"smoother: params\">"
337 
338  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
339 
340  "</ParameterList>"
341 
342  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
343 
344  "</ParameterList>"
345  )
346 ("Elasticity-2D",
347 
348  "<ParameterList name=\"MueLu\">"
349 
350  "<Parameter name=\"number of equations\" type=\"int\" value=\"2\"/>"
351 
352  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
353 
354  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
355 
356  "</ParameterList>"
357  )
358 ("Elasticity-2D-complex",
359 
360  "<ParameterList name=\"MueLu\">"
361 
362  "<Parameter name=\"number of equations\" type=\"int\" value=\"2\"/>"
363 
364  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
365 
366  "<ParameterList name=\"smoother: params\">"
367 
368  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
369 
370  "</ParameterList>"
371 
372  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
373 
374  "</ParameterList>"
375  )
376 ("Elasticity-3D",
377 
378  "<ParameterList name=\"MueLu\">"
379 
380  "<Parameter name=\"number of equations\" type=\"int\" value=\"3\"/>"
381 
382  "<Parameter name=\"smoother: type\" type=\"string\" value=\"CHEBYSHEV\"/>"
383 
384  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
385 
386  "</ParameterList>"
387  )
388 ("Elasticity-3D-complex",
389 
390  "<ParameterList name=\"MueLu\">"
391 
392  "<Parameter name=\"number of equations\" type=\"int\" value=\"3\"/>"
393 
394  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
395 
396  "<ParameterList name=\"smoother: params\">"
397 
398  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Symmetric Gauss-Seidel\"/>"
399 
400  "</ParameterList>"
401 
402  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"sa\"/>"
403 
404  "</ParameterList>"
405  )
406 ("MHD",
407 
408  "<ParameterList name=\"MueLu\">"
409 
410  "<Parameter name=\"smoother: type\" type=\"string\" value=\"SCHWARZ\"/>"
411 
412  "<ParameterList name=\"smoother: params\">"
413 
414  "<Parameter name=\"schwarz: overlap level\" type=\"int\" value=\"1\"/>"
415 
416  "<Parameter name=\"schwarz: combine mode\" type=\"string\" value=\"Zero\"/>"
417 
418  "<Parameter name=\"schwarz: use reordering\" type=\"bool\" value=\"false\"/>"
419 
420  "<Parameter name=\"subdomain solver name\" type=\"string\" value=\"RILUK\"/>"
421 
422  "<ParameterList name=\"subdomain solver parameters\">"
423 
424  "<Parameter name=\"fact: iluk level-of-fill\" type=\"int\" value=\"0\"/>"
425 
426  "<Parameter name=\"fact: absolute threshold\" type=\"double\" value=\"0.\"/>"
427 
428  "<Parameter name=\"fact: relative threshold\" type=\"double\" value=\"1.\"/>"
429 
430  "<Parameter name=\"fact: relax value\" type=\"double\" value=\"0.\"/>"
431 
432  "</ParameterList>"
433 
434  "</ParameterList>"
435 
436  "<Parameter name=\"transpose: use implicit\" type=\"bool\" value=\"true\"/>"
437 
438  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"unsmoothed\"/>"
439 
440  "</ParameterList>"
441  )
442 ("ConvectionDiffusion",
443 
444  "<ParameterList name=\"MueLu\">"
445 
446  "<Parameter name=\"problem: symmetric\" type=\"bool\" value=\"false\"/>"
447 
448  "<Parameter name=\"smoother: type\" type=\"string\" value=\"RELAXATION\"/>"
449 
450  "<ParameterList name=\"smoother: params\">"
451 
452  "<Parameter name=\"relaxation: type\" type=\"string\" value=\"Gauss-Seidel\"/>"
453 
454  "</ParameterList>"
455 
456  "<Parameter name=\"multigrid algorithm\" type=\"string\" value=\"pg\"/>"
457 
458  "<Parameter name=\"sa: use filtered matrix\" type=\"bool\" value=\"true\"/>"
459 
460  "</ParameterList>"
461  )
462 ;
464 
465  ("default values","problem: type")
466 
467  ("ML output","verbosity")
468 
469  ("PDE equations","number of equations")
470 
471  ("max levels","max levels")
472 
473  ("prec type","cycle type")
474 
475  ("coarse grid correction scaling factor","coarse grid correction scaling factor")
476 
477  ("problem: symmetric","problem: symmetric")
478 
479  ("xml parameter file","xml parameter file")
480 
481  ("parameterlist: syntax","parameterlist: syntax")
482 
483  ("hierarchy label","hierarchy label")
484 
485  ("smoother: pre or post","smoother: pre or post")
486 
487  ("smoother: type","smoother: type")
488 
489  ("smoother: pre type","smoother: pre type")
490 
491  ("smoother: post type","smoother: post type")
492 
493  ("smoother: params","smoother: params")
494 
495  ("smoother: pre params","smoother: pre params")
496 
497  ("smoother: post params","smoother: post params")
498 
499  ("smoother: overlap","smoother: overlap")
500 
501  ("smoother: pre overlap","smoother: pre overlap")
502 
503  ("smoother: post overlap","smoother: post overlap")
504 
505  ("max size","coarse: max size")
506 
507  ("coarse: type","coarse: type")
508 
509  ("coarse: params","coarse: params")
510 
511  ("coarse: overlap","coarse: overlap")
512 
513  ("aggregation: type","aggregation: type")
514 
515  ("aggregation: mode","aggregation: mode")
516 
517  ("aggregation: ordering","aggregation: ordering")
518 
519  ("aggregation: drop scheme","aggregation: drop scheme")
520 
521  ("aggregation: threshold","aggregation: drop tol")
522 
523  ("aggregation: min agg size","aggregation: min agg size")
524 
525  ("aggregation: max agg size","aggregation: max agg size")
526 
527  ("aggregation: brick x size","aggregation: brick x size")
528 
529  ("aggregation: brick y size","aggregation: brick y size")
530 
531  ("aggregation: brick z size","aggregation: brick z size")
532 
533  ("aggregation: max selected neighbors","aggregation: max selected neighbors")
534 
535  ("aggregation: Dirichlet threshold","aggregation: Dirichlet threshold")
536 
537  ("aggregation: phase 1 algorithm","aggregation: phase 1 algorithm")
538 
539  ("aggregation: enable phase 1","aggregation: enable phase 1")
540 
541  ("aggregation: enable phase 2a","aggregation: enable phase 2a")
542 
543  ("aggregation: enable phase 2b","aggregation: enable phase 2b")
544 
545  ("aggregation: enable phase 3","aggregation: enable phase 3")
546 
547  ("aggregation: error on nodes with no on-rank neighbors","aggregation: error on nodes with no on-rank neighbors")
548 
549  ("aggregation: phase3 avoid singletons","aggregation: phase3 avoid singletons")
550 
551  ("aggregation: allow empty prolongator columns","aggregation: allow empty prolongator columns")
552 
553  ("aggregation: preserve Dirichlet points","aggregation: preserve Dirichlet points")
554 
555  ("aggregation: allow user-specified singletons","aggregation: allow user-specified singletons")
556 
557  ("aggregation: use interface aggregation","aggregation: use interface aggregation")
558 
559  ("aggregation: export visualization data","aggregation: export visualization data")
560 
561  ("aggregation: output filename","aggregation: output filename")
562 
563  ("aggregation: output file: time step","aggregation: output file: time step")
564 
565  ("aggregation: output file: iter","aggregation: output file: iter")
566 
567  ("aggregation: output file: agg style","aggregation: output file: agg style")
568 
569  ("aggregation: output file: fine graph edges","aggregation: output file: fine graph edges")
570 
571  ("aggregation: output file: coarse graph edges","aggregation: output file: coarse graph edges")
572 
573  ("aggregation: output file: build colormap","aggregation: output file: build colormap")
574 
575  ("aggregation: params","aggregation: params")
576 
577  ("strength-of-connection: params","strength-of-connection: params")
578 
579  ("aggregation: mesh layout","aggregation: mesh layout")
580 
581  ("aggregation: output type","aggregation: output type")
582 
583  ("aggregation: coarsening rate","aggregation: coarsening rate")
584 
585  ("aggregation: number of spatial dimensions","aggregation: number of spatial dimensions")
586 
587  ("aggregation: coarsening order","aggregation: coarsening order")
588 
589  ("export data","export data")
590 
591  ("ML print initial list","print initial parameters")
592 
593  ("print unused","print unused parameters")
594 
595  ("transpose: use implicit","transpose: use implicit")
596 
597  ("use kokkos refactor","use kokkos refactor")
598 
599  ("synchronize factory timers","synchronize factory timers")
600 
601  ("rap: triple product","rap: triple product")
602 
603  ("energy minimization: enable","multigrid algorithm")
604 
605  ("toggle: mode","toggle: mode")
606 
607  ("semicoarsen: coarsen rate","semicoarsen: coarsen rate")
608 
609  ("semicoarsen: number of levels","semicoarsen: number of levels")
610 
611  ("linedetection: orientation","linedetection: orientation")
612 
613  ("linedetection: num layers","linedetection: num layers")
614 
615  ("aggregation: damping factor","sa: damping factor")
616 
617  ("sa: use filtered matrix","sa: use filtered matrix")
618 
619  ("sa: calculate eigenvalue estimate","sa: calculate eigenvalue estimate")
620 
621  ("eigen-analysis: iterations","sa: eigenvalue estimate num iterations")
622 
623  ("interp: interpolation order","interp: interpolation order")
624 
625  ("interp: build coarse coordinates","interp: build coarse coordinates")
626 
627  ("transfer: params","transfer: params")
628 
629  ("pcoarsen: element","pcoarsen: element")
630 
631  ("pcoarsen: schedule","pcoarsen: schedule")
632 
633  ("pcoarsen: hi basis","pcoarsen: hi basis")
634 
635  ("pcoarsen: lo basis","pcoarsen: lo basis")
636 
637  ("smoother: neighborhood type","smoother: neighborhood type")
638 
639  ("filtered matrix: use lumping","filtered matrix: use lumping")
640 
641  ("filtered matrix: reuse eigenvalue","filtered matrix: reuse eigenvalue")
642 
643  ("filtered matrix: reuse graph","filtered matrix: reuse graph")
644 
645  ("emin: iterative method","emin: iterative method")
646 
647  ("emin: num iterations","emin: num iterations")
648 
649  ("emin: num reuse iterations","emin: num reuse iterations")
650 
651  ("emin: pattern","emin: pattern")
652 
653  ("emin: pattern order","emin: pattern order")
654 
655  ("tentative: calculate qr","tentative: calculate qr")
656 
657  ("tentative: build coarse coordinates","tentative: build coarse coordinates")
658 
659  ("repartition: enable","repartition: enable")
660 
661  ("repartition: partitioner","repartition: partitioner")
662 
663  ("repartition: params","repartition: params")
664 
665  ("repartition: start level","repartition: start level")
666 
667  ("repartition: node repartition level","repartition: node repartition level")
668 
669  ("repartition: node id","repartition: node id")
670 
671  ("repartition: min per proc","repartition: min rows per proc")
672 
673  ("repartition: target rows per proc","repartition: target rows per proc")
674 
675  ("repartition: min rows per thread","repartition: min rows per thread")
676 
677  ("repartition: target rows per thread","repartition: target rows per thread")
678 
679  ("repartition: max min ratio","repartition: max imbalance")
680 
681  ("repartition: remap parts","repartition: remap parts")
682 
683  ("repartition: remap num values","repartition: remap num values")
684 
685  ("repartition: remap accept partition","repartition: remap accept partition")
686 
687  ("repartition: print partition distribution","repartition: print partition distribution")
688 
689  ("repartition: rebalance P and R","repartition: rebalance P and R")
690 
691  ("repartition: rebalance Nullspace","repartition: rebalance Nullspace")
692 
693  ("repartition: use subcommunicators","repartition: use subcommunicators")
694 
695  ("rap: fix zero diagonals","rap: fix zero diagonals")
696 
697  ("rap: fix zero diagonals threshold","rap: fix zero diagonals threshold")
698 
699  ("rap: shift","rap: shift")
700 
701  ("rap: shift diagonal M","rap: shift diagonal M")
702 
703  ("rap: shift low storage","rap: shift low storage")
704 
705  ("rap: shift array","rap: shift array")
706 
707  ("rap: cfl array","rap: cfl array")
708 
709  ("rap: algorithm","rap: algorithm")
710 
711  ("matrixmatrix: kernel params","matrixmatrix: kernel params")
712 
713  ("matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount ","matrixmatrix: kernel params:MM_TAFC_OptimizationCoreCount ")
714 
715  ("isMatrixMatrix_TransferAndFillComplete ","isMatrixMatrix_TransferAndFillComplete ")
716 
717  ("reuse: type","reuse: type")
718 
719  ("use external multigrid package","use external multigrid package")
720 
721  ("amgx:params","amgx:params")
722 
723  ("debug: graph level","debug: graph level")
724  ;
725 
726 }
727 
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