Stokhos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Stokhos_MeanBasedDivisionExpansionStrategy.hpp
Go to the documentation of this file.
1
// $Id$
2
// $Source$
3
// @HEADER
4
// ***********************************************************************
5
//
6
// Stokhos Package
7
// Copyright (2009) Sandia Corporation
8
//
9
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
10
// license for use of this work by or on behalf of the U.S. Government.
11
//
12
// Redistribution and use in source and binary forms, with or without
13
// modification, are permitted provided that the following conditions are
14
// met:
15
//
16
// 1. Redistributions of source code must retain the above copyright
17
// notice, this list of conditions and the following disclaimer.
18
//
19
// 2. Redistributions in binary form must reproduce the above copyright
20
// notice, this list of conditions and the following disclaimer in the
21
// documentation and/or other materials provided with the distribution.
22
//
23
// 3. Neither the name of the Corporation nor the names of the
24
// contributors may be used to endorse or promote products derived from
25
// this software without specific prior written permission.
26
//
27
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
28
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
31
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
//
39
// Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
40
//
41
// ***********************************************************************
42
// @HEADER
43
44
#ifndef STOKHOS_MEAN_BASED_DIVISION_EXPANSION_STRATEGY_HPP
45
#define STOKHOS_MEAN_BASED_DIVISION_EXPANSION_STRATEGY_HPP
46
47
#include "
Stokhos_DivisionExpansionStrategy.hpp
"
48
#include "Teuchos_TimeMonitor.hpp"
49
50
namespace
Stokhos
{
51
53
56
template
<
typename
ordinal_type,
typename
value_type,
typename
node_type>
57
class
MeanBasedDivisionExpansionStrategy
:
58
public
DivisionExpansionStrategy
<ordinal_type,value_type,node_type> {
59
public
:
60
62
MeanBasedDivisionExpansionStrategy
() {}
63
65
virtual
~MeanBasedDivisionExpansionStrategy
() {}
66
67
// Division operation: c = \alpha*(a/b) + beta*c
68
virtual
void
divide
(
69
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& c,
70
const
value_type
& alpha,
71
const
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& a,
72
const
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& b,
73
const
value_type
& beta);
74
75
private
:
76
77
// Prohibit copying
78
MeanBasedDivisionExpansionStrategy
(
79
const
MeanBasedDivisionExpansionStrategy
&);
80
81
// Prohibit Assignment
82
MeanBasedDivisionExpansionStrategy
&
operator=
(
83
const
MeanBasedDivisionExpansionStrategy
& b);
84
85
};
// class DivisionExpansionStrategy
86
87
}
// namespace Stokhos
88
89
template
<
typename
ordinal_type,
typename
value_type,
typename
node_type>
90
void
91
Stokhos::MeanBasedDivisionExpansionStrategy<ordinal_type,value_type,node_type>::
92
divide
(
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& c,
93
const
value_type
& alpha,
94
const
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& a,
95
const
Stokhos::OrthogPolyApprox<ordinal_type, value_type, node_type>
& b,
96
const
value_type
& beta)
97
{
98
#ifdef STOKHOS_TEUCHOS_TIME_MONITOR
99
TEUCHOS_FUNC_TIME_MONITOR(
"Stokhos::MeanBasedDivisionStrategy::divide()"
);
100
#endif
101
ordinal_type
pc = a.
size
();
102
if
(c.
size
() != pc)
103
c.
resize
(pc);
104
105
const
value_type
* ca = a.
coeff
();
106
const
value_type
* cb = b.
coeff
();
107
value_type
* cc = c.
coeff
();
108
109
for
(
ordinal_type
i=0; i<pc; i++)
110
cc[i] = alpha*ca[i]/cb[0] + beta*cc[i];
111
}
112
113
#endif
// STOKHOS_MEAN_BASED_DIVISION_EXPANSION_STRATEGY_HPP
Stokhos_DivisionExpansionStrategy.hpp
Stokhos::DivisionExpansionStrategy::DivisionExpansionStrategy
DivisionExpansionStrategy()
Constructor.
Definition
Stokhos_DivisionExpansionStrategy.hpp:58
Stokhos::MeanBasedDivisionExpansionStrategy::~MeanBasedDivisionExpansionStrategy
virtual ~MeanBasedDivisionExpansionStrategy()
Destructor.
Definition
Stokhos_MeanBasedDivisionExpansionStrategy.hpp:65
Stokhos::MeanBasedDivisionExpansionStrategy::MeanBasedDivisionExpansionStrategy
MeanBasedDivisionExpansionStrategy()
Constructor.
Definition
Stokhos_MeanBasedDivisionExpansionStrategy.hpp:62
Stokhos::MeanBasedDivisionExpansionStrategy::divide
virtual void divide(Stokhos::OrthogPolyApprox< ordinal_type, value_type, node_type > &c, const value_type &alpha, const Stokhos::OrthogPolyApprox< ordinal_type, value_type, node_type > &a, const Stokhos::OrthogPolyApprox< ordinal_type, value_type, node_type > &b, const value_type &beta)
Definition
Stokhos_MeanBasedDivisionExpansionStrategy.hpp:92
Stokhos::MeanBasedDivisionExpansionStrategy::operator=
MeanBasedDivisionExpansionStrategy & operator=(const MeanBasedDivisionExpansionStrategy &b)
Stokhos::MeanBasedDivisionExpansionStrategy::MeanBasedDivisionExpansionStrategy
MeanBasedDivisionExpansionStrategy(const MeanBasedDivisionExpansionStrategy &)
Stokhos::OrthogPolyApprox
Class to store coefficients of a projection onto an orthogonal polynomial basis.
Definition
Stokhos_OrthogPolyApprox.hpp:63
Stokhos::OrthogPolyApprox::resize
void resize(ordinal_type sz)
Resize coefficient array (coefficients are preserved).
Definition
Stokhos_OrthogPolyApproxImp.hpp:152
Stokhos::OrthogPolyApprox::coeff
pointer coeff()
Return coefficient array.
Definition
Stokhos_OrthogPolyApproxImp.hpp:168
Stokhos::OrthogPolyApprox::size
ordinal_type size() const
Return size.
Definition
Stokhos_OrthogPolyApproxImp.hpp:160
Stokhos::value_type
Stokhos
Top-level namespace for Stokhos classes and functions.
Definition
Stokhos_AbstractPreconditionerFactory.hpp:48
Generated by
1.17.0