Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Panzer: A partial differential equation assembly
5
// engine for strongly coupled complex multiphysics systems
6
// Copyright (2011) 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 Roger P. Pawlowski (rppawlo@sandia.gov) and
39
// Eric C. Cyr (eccyr@sandia.gov)
40
// ***********************************************************************
41
// @HEADER
42
44
//
45
// Include Files
46
//
48
49
// Panzer
50
#include "
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp
"
51
#include "
Panzer_GlobalEvaluationData.hpp
"
52
53
// Thyra
54
#include "Thyra_DefaultProductVector.hpp"
55
#include "Thyra_DefaultProductVectorSpace.hpp"
56
#include "Thyra_VectorBase.hpp"
57
58
namespace
panzer
59
{
61
//
62
// Default Constructor
63
//
65
BlockedVector_Write_GlobalEvaluationData::
66
BlockedVector_Write_GlobalEvaluationData
()
67
:
isInitialized_
(false)
68
{
69
}
// end of Default Constructor
70
72
//
73
// Copy Constructor
74
//
76
BlockedVector_Write_GlobalEvaluationData::
77
BlockedVector_Write_GlobalEvaluationData
(
78
const
BlockedVector_Write_GlobalEvaluationData
& src)
79
:
80
isInitialized_
(false)
81
{
82
initialize
(src.
ghostedSpace_
, Teuchos::null, src.
gedBlocks_
);
83
}
// end of Copy Constructor
84
86
//
87
// Initializing Constructor
88
//
90
BlockedVector_Write_GlobalEvaluationData::
91
BlockedVector_Write_GlobalEvaluationData
(
92
const
Teuchos::RCP<
const
Thyra::VectorSpaceBase<double>
> ghostedSpace,
93
const
Teuchos::RCP<
const
Thyra::VectorSpaceBase<double>
> ownedSpace,
94
const
std::vector<Teuchos::RCP<WriteVector_GlobalEvaluationData>>&
95
gedBlocks)
96
:
97
isInitialized_
(false)
98
{
99
initialize
(ghostedSpace, ownedSpace, gedBlocks);
100
}
// end of Initializing Constructor
101
103
//
104
// initialize()
105
//
107
void
108
BlockedVector_Write_GlobalEvaluationData::
109
initialize
(
110
const
Teuchos::RCP<
const
Thyra::VectorSpaceBase<double>
>& ghostedSpace,
111
const
Teuchos::RCP<
const
Thyra::VectorSpaceBase<double>
>&
/* ownedSpace */
,
112
const
std::vector<Teuchos::RCP<WriteVector_GlobalEvaluationData>>&
113
gedBlocks)
114
{
115
using
std::logic_error;
116
using
std::size_t;
117
using
Teuchos::rcp_dynamic_cast;
118
using
Thyra::DefaultProductVectorSpace
;
119
120
// Assert that all the gedBlocks are initialized.
121
for
(
size_t
i(0); i < gedBlocks.size(); ++i)
122
TEUCHOS_TEST_FOR_EXCEPTION(not gedBlocks[i]->
isInitialized
(),
123
logic_error,
"BlockedVector_Write_GlobalEvaluationData::"
\
124
"initialize: GED block "
<< i <<
" is not initialized."
)
125
gedBlocks_
= gedBlocks;
126
ghostedSpace_
=
127
rcp_dynamic_cast<const DefaultProductVectorSpace<double>>(ghostedSpace);
128
TEUCHOS_TEST_FOR_EXCEPTION(
ghostedSpace_
.is_null(), logic_error,
129
"BlockedVector_Write_GlobalEvaluationData::initialize(): Ghosted "
\
130
"space must be a Thyra::DefaultProductVectorSpace"
);
131
isInitialized_
=
true
;
132
}
// end of initialize()
133
135
//
136
// ghostToGlobal()
137
//
139
void
140
BlockedVector_Write_GlobalEvaluationData::
141
ghostToGlobal
(
142
int
mem)
143
{
144
using
std::logic_error;
145
using
std::size_t;
146
TEUCHOS_TEST_FOR_EXCEPTION(not
isInitialized_
, logic_error,
147
"BlockedVector_Write_GlobalEvaluationData has not been "
\
148
"initialized; cannot call \"ghostToGlobal()\"!"
);
149
for
(
size_t
i(0); i <
gedBlocks_
.size(); ++i)
150
gedBlocks_
[i]->
ghostToGlobal
(mem);
151
}
// end of ghostToGlobal()
152
154
//
155
// initializeData()
156
//
158
void
159
BlockedVector_Write_GlobalEvaluationData::
160
initializeData
()
161
{
162
using
std::logic_error;
163
using
std::size_t;
164
TEUCHOS_TEST_FOR_EXCEPTION(not
isInitialized_
, logic_error,
165
"BlockedVector_Write_GlobalEvaluationData has not been "
\
166
"initialized; cannot call \"initializeData()\"!"
);
167
for
(
size_t
i(0); i <
gedBlocks_
.size(); ++i)
168
gedBlocks_
[i]->
initializeData
();
169
}
// end of initializeData()
170
172
//
173
// setOwnedVector()
174
//
176
void
177
BlockedVector_Write_GlobalEvaluationData::
178
setOwnedVector
(
179
const
Teuchos::RCP<
Thyra::VectorBase<double>
>& ownedVector)
180
{
181
using
std::logic_error;
182
using
std::size_t;
183
using
Teuchos::as;
184
using
Teuchos::RCP;
185
using
Thyra::castOrCreateNonconstProductVectorBase;
186
using
Thyra::ProductVectorBase
;
187
ownedVector_
= ownedVector;
188
RCP<ProductVectorBase<double>> blocks =
189
castOrCreateNonconstProductVectorBase(
ownedVector_
);
190
TEUCHOS_TEST_FOR_EXCEPTION(blocks->productSpace()->numBlocks() !=
191
as<int>(
gedBlocks_
.size()), logic_error,
192
"BlockedVector_Write_GlobalEvaluationData owned vector has the "
\
193
"wrong number of blocks!"
);
194
for
(
size_t
i(0); i <
gedBlocks_
.size(); ++i)
195
gedBlocks_
[i]->
setOwnedVector
(blocks->getNonconstVectorBlock(i));
196
}
// end of setOwnedVector()
197
199
//
200
// getOwnedVector()
201
//
203
Teuchos::RCP<Thyra::VectorBase<double>>
204
BlockedVector_Write_GlobalEvaluationData::
205
getOwnedVector
()
const
206
{
207
return
ownedVector_
;
208
}
// end of getOwnedVector()
209
211
//
212
// getGhostedVector()
213
//
215
Teuchos::RCP<Thyra::VectorBase<double>>
216
BlockedVector_Write_GlobalEvaluationData::
217
getGhostedVector
()
const
218
{
219
using
std::logic_error;
220
using
std::size_t;
221
using
std::vector;
222
using
Teuchos::arrayViewFromVector;
223
using
Teuchos::RCP;
224
using
Thyra::defaultProductVector;
225
using
Thyra::VectorBase
;
226
TEUCHOS_TEST_FOR_EXCEPTION(not
isInitialized_
, logic_error,
227
"BlockedVector_Write_GlobalEvaluationData has not been "
\
228
"initialized; cannot call \"getGhostedVector()\"!"
);
229
vector<RCP<VectorBase<double>>> blocks;
230
for
(
size_t
i(0); i <
gedBlocks_
.size(); ++i)
231
blocks.push_back(
gedBlocks_
[i]->getGhostedVector());
232
const
vector<RCP<VectorBase<double>>>& constBlocks = blocks;
233
return
defaultProductVector(
ghostedSpace_
,
234
arrayViewFromVector(constBlocks));
235
}
// end of getGhostedVector()
236
237
}
// end of namespace panzer
238
239
// end of Panzer_BlockedVector_Write_GlobalEvaluationData.cpp
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp
Panzer_GlobalEvaluationData.hpp
Thyra::DefaultProductVectorSpace
Definition
Panzer_BlockedVector_ReadOnly_GlobalEvaluationData.hpp:63
Thyra::ProductVectorBase
Definition
Panzer_GatherSolution_BlockedEpetra_decl.hpp:80
Thyra::VectorBase
Thyra::VectorSpaceBase
Definition
Panzer_ThyraObjFactory.hpp:52
panzer::BlockedVector_Write_GlobalEvaluationData::isInitialized_
bool isInitialized_
A flag indicating whether or not the object has been initialized.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp:248
panzer::BlockedVector_Write_GlobalEvaluationData::getGhostedVector
virtual Teuchos::RCP< Thyra::VectorBase< double > > getGhostedVector() const
Get the ghosted vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:217
panzer::BlockedVector_Write_GlobalEvaluationData::ghostToGlobal
virtual void ghostToGlobal(int mem)
Communicate the ghosted data to the owned vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:141
panzer::BlockedVector_Write_GlobalEvaluationData::gedBlocks_
std::vector< Teuchos::RCP< WriteVector_GlobalEvaluationData > > gedBlocks_
A vector of the GlobalEvaluationData blocks.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp:253
panzer::BlockedVector_Write_GlobalEvaluationData::BlockedVector_Write_GlobalEvaluationData
BlockedVector_Write_GlobalEvaluationData()
Default Constructor.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:66
panzer::BlockedVector_Write_GlobalEvaluationData::initialize
void initialize(const Teuchos::RCP< const Thyra::VectorSpaceBase< double > > &ghostedSpace, const Teuchos::RCP< const Thyra::VectorSpaceBase< double > > &ownedSpace, const std::vector< Teuchos::RCP< WriteVector_GlobalEvaluationData > > &gedBlocks)
Initialize this object using the sub-GlobalEvaluationData objects.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:109
panzer::BlockedVector_Write_GlobalEvaluationData::isInitialized
virtual bool isInitialized() const
Is this object initialized?
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp:143
panzer::BlockedVector_Write_GlobalEvaluationData::initializeData
virtual void initializeData()
Initialize internal data for communication.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:160
panzer::BlockedVector_Write_GlobalEvaluationData::ghostedSpace_
Teuchos::RCP< const Thyra::DefaultProductVectorSpace< double > > ghostedSpace_
The vector space corresponding to the ghosted vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp:264
panzer::BlockedVector_Write_GlobalEvaluationData::setOwnedVector
virtual void setOwnedVector(const Teuchos::RCP< Thyra::VectorBase< double > > &ownedVector)
Set the owned vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:178
panzer::BlockedVector_Write_GlobalEvaluationData::getOwnedVector
virtual Teuchos::RCP< Thyra::VectorBase< double > > getOwnedVector() const
Get the owned vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.cpp:205
panzer::BlockedVector_Write_GlobalEvaluationData::ownedVector_
Teuchos::RCP< Thyra::VectorBase< double > > ownedVector_
The owned vector.
Definition
Panzer_BlockedVector_Write_GlobalEvaluationData.hpp:258
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
Generated by
1.17.0