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