MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_VerbosityLevel.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
46 #include "MueLu_VerbosityLevel.hpp"
47 #include "MueLu_Exceptions.hpp"
48 #include "MueLu_Utilities.hpp"
49 #include <string>
50 #include <locale>
51 
52 namespace MueLu {
53 
55  switch (verbLevel) {
56  case Teuchos::VERB_NONE:
57  return None;
59  return Default;
60  case Teuchos::VERB_LOW:
61  return Low;
63  return Medium;
64  case Teuchos::VERB_HIGH:
65  return High;
67  return Extreme;
68  default:
69  TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "Unknown enum value found.");
70  }
71 }
72 
73 std::string
74 lowerCase(const std::string& s) {
75  typedef std::string::value_type char_t;
76  typedef std::ctype<char_t> facet_type;
77  const facet_type& facet = std::use_facet<facet_type>(std::locale());
78 
79  const std::string::size_type len = s.size();
80  std::string s_lc(s);
81  for (std::string::size_type k = 0; k < len; ++k) {
82  s_lc[k] = facet.tolower(s[k]);
83  }
84 
85  return s_lc;
86 }
87 
88 MsgType toVerbLevel(const std::string& verbLevelStr) {
89  std::map<std::string, MsgType> verbMap;
90  // for developers
91  verbMap["errors"] = Errors;
92  verbMap["warnings0"] = Warnings0;
93  verbMap["warnings00"] = Warnings00;
94  verbMap["warnings1"] = Warnings1;
95  verbMap["perfWarnings"] = PerfWarnings;
96  verbMap["runtime0"] = Runtime0;
97  verbMap["runtime1"] = Runtime1;
98  verbMap["runtimeTimings"] = RuntimeTimings;
99  verbMap["noTimeReport"] = NoTimeReport;
100  verbMap["parameters0"] = Parameters0;
101  verbMap["parameters1"] = Parameters1;
102  verbMap["statistics0"] = Statistics0;
103  verbMap["statistics1"] = Statistics1;
104  verbMap["timings0"] = Timings0;
105  verbMap["timings1"] = Timings1;
106  verbMap["timingsByLevel"] = TimingsByLevel;
107  verbMap["external"] = External;
108  verbMap["developer"] = Developer;
109  verbMap["debug"] = Debug;
110  verbMap["test"] = Test;
111 
112  verbMap["warnings"] = Warnings;
113  verbMap["runtime"] = Runtime;
114  verbMap["parameters"] = Parameters;
115  verbMap["statistics"] = Statistics;
116  verbMap["timings"] = Timings;
117  verbMap["test"] = Test;
118  verbMap["interfacetest"] = InterfaceTest;
119  // for users and developers
120  verbMap["none"] = None;
121  verbMap["low"] = Low;
122  verbMap["medium"] = Medium;
123  verbMap["high"] = High;
124  verbMap["extreme"] = Extreme;
125 
126  std::string lcVerb = lowerCase(verbLevelStr);
127  if (verbMap.find(lcVerb) != verbMap.end())
128  return verbMap[lcVerb];
129  else
130  TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "MueLu::ParameterListInterpreter():: invalid verbosity level: " << verbLevelStr);
131 }
132 
133 } // namespace MueLu
Important warning messages (one line)
High level timing information (use Teuchos::TimeMonitor::summarize() to print)
Print external lib objects.
Print parameters.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Print more statistics.
Print information primarily of interest to developers.
VerbLevel toMueLuVerbLevel(const Teuchos::EVerbosityLevel verbLevel)
Translate Teuchos verbosity level to MueLu verbosity level.
Print additional debugging information.
One-liner description of what is happening.
MsgType toVerbLevel(const std::string &verbLevelStr)
Print all statistics.
Additional warnings.
Important warning messages (more verbose)
Print statistics that do not involve significant additional computation.
Detailed timing information (use Teuchos::TimeMonitor::summarize() to print)
By default, enabled timers appears in the teuchos time monitor summary. Use this option if you do not...
Print all timing information.
Print class parameters.
Timers that are enabled (using Timings0/Timings1) will be printed during the execution.
std::string lowerCase(const std::string &s)
Performance warnings.
Record timing information level by level. Must be used in combinaison with Timings0/Timings1.
Print description of what is going on.
Print class parameters (more parameters, more verbose)
Exception throws to report errors in the internal logical of the program.
Print all warning messages.
Description of what is happening (more verbose)