MueLu
Version of the Day
MueLu_PreDropFunctionConstVal_def.hpp
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
#ifndef MUELU_PREDROPFUNCTIONCONSTVAL_DEF_HPP
47
#define MUELU_PREDROPFUNCTIONCONSTVAL_DEF_HPP
48
49
#include <Xpetra_CrsGraphFactory.hpp>
50
51
#include "
MueLu_PreDropFunctionConstVal_decl.hpp
"
52
#include "MueLu_Graph.hpp"
53
#include "Teuchos_ScalarTraits.hpp"
54
55
namespace
MueLu
{
56
57
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
58
PreDropFunctionConstVal<Scalar, LocalOrdinal, GlobalOrdinal, Node>::PreDropFunctionConstVal
(
const
Scalar threshold)
59
: threshold_(threshold) { }
60
61
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
62
bool
PreDropFunctionConstVal<Scalar, LocalOrdinal, GlobalOrdinal, Node>::Drop
(
size_t
lrow, GlobalOrdinal grow,
size_t
k, LocalOrdinal lcid, GlobalOrdinal gcid,
const
Teuchos::ArrayView<const LocalOrdinal> & indices,
const
Teuchos::ArrayView<const Scalar> & vals) {
63
if
(Teuchos::ScalarTraits<Scalar>::magnitude(vals[k]) > Teuchos::ScalarTraits<Scalar>::magnitude(threshold_) || grow == gcid ) {
64
return
false
;
// keep values
65
}
66
return
true
;
// values too small -> drop them
67
}
68
69
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
70
Scalar
PreDropFunctionConstVal<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetThreshold
()
const
{
71
return
threshold_;
72
}
73
74
75
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
76
std::string
PreDropFunctionConstVal<Scalar, LocalOrdinal, GlobalOrdinal, Node>::description
()
const
{
77
std::ostringstream out;
78
out <<
"PreDropFunctionConstVal: threshold = "
<< threshold_ << std::endl;
79
return
out.str();
80
}
81
82
/*template <class Scalar,class LocalOrdinal, class GlobalOrdinal, class Node>
83
void PreDropFunctionConstVal<Scalar, LocalOrdinal, GlobalOrdinal, Node>::describe(Teuchos::FancyOStream &out, const VerbLevel verbLevel) const {
84
MUELU_DESCRIBE;
85
if (verbLevel & Parameters0) {
86
out0 << "PreDropFunctionConstVal: threshold = " << threshold_ << std::endl;
87
}
88
}*/
89
90
}
91
92
#define MUELU_PREDROPFUNCTIONCONSTVAL_SHORT
93
#endif // MUELU_PREDROPFUNCTIONCONSTVAL_DEF_HPP
MueLu::PreDropFunctionConstVal::Drop
bool Drop(size_t lrow, GlobalOrdinal grow, size_t k, LocalOrdinal lcid, GlobalOrdinal gcid, const Teuchos::ArrayView< const LocalOrdinal > &indices, const Teuchos::ArrayView< const Scalar > &vals)
Definition:
MueLu_PreDropFunctionConstVal_def.hpp:62
MueLu::PreDropFunctionConstVal::PreDropFunctionConstVal
PreDropFunctionConstVal(const Scalar threshold=0.0)
Constructor.
Definition:
MueLu_PreDropFunctionConstVal_def.hpp:58
MueLu
Namespace for MueLu classes and methods.
Definition:
MueLu_BrickAggregationFactory_decl.hpp:76
MueLu::PreDropFunctionConstVal::description
std::string description() const
Return a simple one-line description of this object.
Definition:
MueLu_PreDropFunctionConstVal_def.hpp:76
MueLu_PreDropFunctionConstVal_decl.hpp
MueLu::PreDropFunctionConstVal::GetThreshold
Scalar GetThreshold() const
Return threshold value.
Definition:
MueLu_PreDropFunctionConstVal_def.hpp:70
src
Graph
MueLu_PreDropFunctionConstVal_def.hpp
Generated on Thu Feb 27 2020 16:06:46 for MueLu by
1.8.16