MueLu Version of the Day
Loading...
Searching...
No Matches
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
47#include "MueLu_Exceptions.hpp"
48#include "MueLu_Utilities.hpp"
49#include <string>
50#include <locale>
51
52namespace 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.
@ 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.