Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
operator_vector
client_support
Thyra_UniversalMultiVectorRandomizer.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4
//
5
// Copyright 2004 NTESS and the Thyra contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef THYRA_UNIVERSAL_MULTI_VECTOR_RANDOMIZER_HPP
11
#define THYRA_UNIVERSAL_MULTI_VECTOR_RANDOMIZER_HPP
12
13
14
#include "Thyra_MultiVectorRandomizerBase.hpp"
15
#include "Thyra_MultiVectorStdOps.hpp"
16
17
18
namespace
Thyra {
19
20
29
template
<
class
Scalar>
30
class
UniversalMultiVectorRandomizer
:
public
MultiVectorRandomizerBase
<Scalar> {
31
public
:
32
35
37
bool
isCompatible
(
const
VectorSpaceBase<Scalar>
&space )
const
;
38
40
41
private
:
42
45
47
void
randomizeImpl(
const
Ptr
<
MultiVectorBase<Scalar>
> &mv);
48
50
51
};
52
53
58
template
<
class
Scalar>
59
RCP<UniversalMultiVectorRandomizer<Scalar>
>
60
universalMultiVectorRandomizer
()
61
{
62
return
Teuchos::rcp
(
new
UniversalMultiVectorRandomizer<Scalar>
());
63
}
64
65
66
// //////////////////////////////
67
// Definitions
68
69
70
template
<
class
Scalar>
71
bool
UniversalMultiVectorRandomizer<Scalar>::isCompatible
(
const
VectorSpaceBase<Scalar>
&
/* space */
)
const
72
{
73
return
true
;
74
}
75
76
77
// Overridded private functions
78
79
80
template
<
class
Scalar>
81
void
UniversalMultiVectorRandomizer<Scalar>::randomizeImpl(
82
const
Ptr
<
MultiVectorBase<Scalar>
> &mv )
83
{
84
using
Teuchos::as
;
85
typedef
Teuchos::ScalarTraits<Scalar>
ST;
86
Thyra::randomize
(as<Scalar>(-ST::one()), as<Scalar>(+ST::one()), mv);
87
}
88
89
90
}
// namespace Thyra
91
92
93
#endif
// THYRA_UNIVERSAL_MULTI_VECTOR_RANDOMIZER_HPP
Teuchos::Ptr
Teuchos::RCP
Thyra::MultiVectorBase
Interface for a collection of column vectors called a multi-vector.
Definition
Thyra_MultiVectorBase_decl.hpp:464
Thyra::MultiVectorBase::randomize
void randomize(Scalar l, Scalar u, const Ptr< MultiVectorBase< Scalar > > &V)
Generate a random multi-vector with elements uniformly distributed elements.
Definition
Thyra_MultiVectorStdOps_def.hpp:200
Thyra::MultiVectorRandomizerBase
Base interface for a strategy object for randomizing a multi-vector.
Definition
Thyra_MultiVectorRandomizerBase.hpp:32
Thyra::UniversalMultiVectorRandomizer
Univeral MultiVectorRandomizerBase subclass that is compatible with all MultiVectorBase objects.
Definition
Thyra_UniversalMultiVectorRandomizer.hpp:30
Thyra::UniversalMultiVectorRandomizer::isCompatible
bool isCompatible(const VectorSpaceBase< Scalar > &space) const
Definition
Thyra_UniversalMultiVectorRandomizer.hpp:71
Thyra::UniversalMultiVectorRandomizer::universalMultiVectorRandomizer
RCP< UniversalMultiVectorRandomizer< Scalar > > universalMultiVectorRandomizer()
Nonmember constructor.
Definition
Thyra_UniversalMultiVectorRandomizer.hpp:60
Thyra::VectorSpaceBase
Abstract interface for objects that represent a space for vectors.
Definition
Thyra_VectorSpaceBase_decl.hpp:267
Teuchos::as
TypeTo as(const TypeFrom &t)
Teuchos::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Teuchos::ScalarTraits
Generated by
1.17.0