Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Tpetra_CombineMode.cpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Tpetra: Templated Linear Algebra Services Package
5
// Copyright (2008) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ************************************************************************
40
// @HEADER
41
42
#include <
Tpetra_CombineMode.hpp
>
43
#include <Teuchos_StandardParameterEntryValidators.hpp>
44
45
namespace
Tpetra
{
46
47
void
48
setCombineModeParameter
(Teuchos::ParameterList& plist,
49
const
std::string& paramName)
50
{
51
typedef
Tpetra::CombineMode
enum_type;
52
typedef
Teuchos::StringToIntegralParameterEntryValidator<enum_type>
53
validator_type;
54
55
const
std::string docString =
"Tpetra::CombineMode: rule for combining "
56
"entries that overlap across processes, when redistributing data via a "
57
"Tpetra::Import or Tpetra::Export"
;
58
const
std::string defaultVal =
"ADD"
;
59
const
bool
caseSensitive =
false
;
60
61
const
Teuchos::Array<std::string>::size_type numParams = 6;
62
Teuchos::Array<std::string> strs (numParams);
63
Teuchos::Array<std::string> docs (numParams);
64
Teuchos::Array<enum_type> vals (numParams);
65
66
strs[0] =
"ADD"
;
67
strs[1] =
"INSERT"
;
68
strs[2] =
"REPLACE"
;
69
strs[3] =
"ABSMAX"
;
70
strs[4] =
"ZERO"
;
71
strs[5] =
"ADD_ASSIGN"
;
72
73
docs[0] =
"Sum new values"
;
74
docs[1] =
"Insert new values that don't currently exist"
;
75
docs[2] =
"Replace existing values with new values"
;
76
docs[3] =
"Replace old value with maximum of magnitudes of old and new values"
;
77
docs[4] =
"Replace old values with zero"
;
78
docs[5] =
"Do addition assignment (+=) of new values into existing value; "
79
"may not be supported by all classes"
;
80
81
vals[0] =
ADD
;
82
vals[1] =
INSERT
;
83
vals[2] =
REPLACE
;
84
vals[3] =
ABSMAX
;
85
vals[4] =
ZERO
;
86
vals[5] =
ADD_ASSIGN
;
87
88
plist.set (paramName, defaultVal, docString,
89
Teuchos::rcp (
new
validator_type (strs (), docs (), vals (),
90
defaultVal, caseSensitive)));
91
}
92
93
std::string
combineModeToString
(
const
CombineMode
combineMode)
94
{
95
std::string combineModeStr;
96
switch
(combineMode) {
97
case
ADD
:
98
combineModeStr =
"ADD"
;
99
break
;
100
case
REPLACE
:
101
combineModeStr =
"REPLACE"
;
102
break
;
103
case
ABSMAX
:
104
combineModeStr =
"ABSMAX"
;
105
break
;
106
case
INSERT
:
107
combineModeStr =
"INSERT"
;
108
break
;
109
case
ZERO
:
110
combineModeStr =
"ZERO"
;
111
break
;
112
case
ADD_ASSIGN
:
113
combineModeStr =
"ADD_ASSIGN"
;
114
break
;
115
default
:
116
combineModeStr =
"INVALID"
;
117
}
118
return
combineModeStr;
119
}
120
121
}
// namespace Tpetra
Tpetra_CombineMode.hpp
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Tpetra::combineModeToString
std::string combineModeToString(const CombineMode combineMode)
Human-readable string representation of the given CombineMode.
Definition
Tpetra_CombineMode.cpp:93
Tpetra::setCombineModeParameter
void setCombineModeParameter(Teuchos::ParameterList &plist, const std::string ¶mName)
Set CombineMode parameter in a Teuchos::ParameterList.
Definition
Tpetra_CombineMode.cpp:48
Tpetra::CombineMode
CombineMode
Rule for combining data in an Import or Export.
Definition
Tpetra_CombineMode.hpp:97
Tpetra::REPLACE
@ REPLACE
Replace existing values with new values.
Definition
Tpetra_CombineMode.hpp:100
Tpetra::ADD
@ ADD
Sum new values.
Definition
Tpetra_CombineMode.hpp:98
Tpetra::ABSMAX
@ ABSMAX
Replace old value with maximum of magnitudes of old and new values.
Definition
Tpetra_CombineMode.hpp:101
Tpetra::ADD_ASSIGN
@ ADD_ASSIGN
Accumulate new values into existing values (may not be supported in all classes).
Definition
Tpetra_CombineMode.hpp:103
Tpetra::INSERT
@ INSERT
Insert new values that don't currently exist.
Definition
Tpetra_CombineMode.hpp:99
Tpetra::ZERO
@ ZERO
Replace old values with zero.
Definition
Tpetra_CombineMode.hpp:102
Generated by
1.17.0