Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
lof
Panzer_BlockedTpetraLinearObjContainer.hpp
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
43
#ifndef __Panzer_BlockedTpetraLinearObjContainer_hpp__
44
#define __Panzer_BlockedTpetraLinearObjContainer_hpp__
45
46
#include "PanzerDiscFE_config.hpp"
47
48
// Tpetra includes
49
#include "Tpetra_Vector.hpp"
50
#include "Tpetra_CrsMatrix.hpp"
51
52
#include "Teuchos_RCP.hpp"
53
54
#include "
Panzer_LinearObjContainer.hpp
"
55
#include "
Panzer_ThyraObjContainer.hpp
"
56
#include "
Panzer_NodeType.hpp
"
57
58
#include "Thyra_PhysicallyBlockedLinearOpBase.hpp"
59
#include "Thyra_ProductVectorBase.hpp"
60
#include "Thyra_TpetraThyraWrappers.hpp"
61
62
#include <unordered_map>
63
64
namespace
panzer
{
65
69
template
<
typename
ScalarT,
typename
LocalOrdinalT,
typename
GlobalOrdinalT,
typename
NodeT=panzer::TpetraNodeType>
70
class
BlockedTpetraLinearObjContainer
:
public
LinearObjContainer
71
,
public
ThyraObjContainer
<ScalarT> {
72
public
:
73
typedef
Thyra::VectorBase<ScalarT>
VectorType
;
74
typedef
Thyra::LinearOpBase<ScalarT>
CrsMatrixType
;
75
76
typedef
Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT>
MapType
;
77
79
bool
checkCompatibility
()
const
;
80
81
virtual
void
clear
();
82
84
void
initializeMatrix
(ScalarT value);
85
86
void
setMapsForBlocks
(
const
std::vector<Teuchos::RCP<const MapType> > & blockMaps)
87
{
blockMaps_
= blockMaps; }
88
89
Teuchos::RCP<const MapType>
getMapForBlock
(std::size_t i)
const
90
{
return
blockMaps_
[i]; }
91
92
inline
void
set_x
(
const
Teuchos::RCP<VectorType> & in) {
set_x_th
(in); }
93
inline
Teuchos::RCP<VectorType>
get_x
()
const
{
return
get_x_th
(); }
94
95
inline
void
set_dxdt
(
const
Teuchos::RCP<VectorType> & in) {
set_dxdt_th
(in); }
96
inline
Teuchos::RCP<VectorType>
get_dxdt
()
const
{
return
get_dxdt_th
(); }
97
98
inline
void
set_f
(
const
Teuchos::RCP<VectorType> & in) {
set_f_th
(in); }
99
inline
Teuchos::RCP<VectorType>
get_f
()
const
{
return
get_f_th
(); }
100
101
inline
void
set_A
(
const
Teuchos::RCP<CrsMatrixType> & in) {
set_A_th
(in); }
102
inline
Teuchos::RCP<CrsMatrixType>
get_A
()
const
{
return
get_A_th
(); }
103
104
// Inherited from LinearObjContainer
105
virtual
void
initialize
();
106
107
// Inherited from ThyraObjContainer
108
109
void
set_x_th
(
const
Teuchos::RCP<VectorType> & in) {
x
= in; }
110
Teuchos::RCP<VectorType>
get_x_th
()
const
{
return
x
; }
111
112
void
set_dxdt_th
(
const
Teuchos::RCP<VectorType> & in) {
dxdt
= in; }
113
Teuchos::RCP<VectorType>
get_dxdt_th
()
const
{
return
dxdt
; }
114
115
void
set_f_th
(
const
Teuchos::RCP<VectorType> & in) {
f
= in; }
116
Teuchos::RCP<VectorType>
get_f_th
()
const
{
return
f
; }
117
118
void
set_A_th
(
const
Teuchos::RCP<CrsMatrixType> & in) {
A
= in; }
119
Teuchos::RCP<CrsMatrixType>
get_A_th
()
const
{
return
A
; }
120
121
void
beginFill
();
122
void
endFill
();
123
124
private
:
125
Teuchos::RCP<VectorType>
x
,
dxdt
,
f
;
126
Teuchos::RCP<CrsMatrixType>
A
;
127
128
std::vector<Teuchos::RCP<const MapType> >
blockMaps_
;
129
};
130
131
}
132
133
#include "
Panzer_BlockedTpetraLinearObjContainer_impl.hpp
"
134
135
#endif
Panzer_BlockedTpetraLinearObjContainer_impl.hpp
Panzer_LinearObjContainer.hpp
Panzer_NodeType.hpp
Panzer_ThyraObjContainer.hpp
Thyra::LinearOpBase
Thyra::VectorBase
panzer::BlockedTpetraLinearObjContainer
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:71
panzer::BlockedTpetraLinearObjContainer::set_dxdt_th
void set_dxdt_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:112
panzer::BlockedTpetraLinearObjContainer::get_dxdt_th
Teuchos::RCP< VectorType > get_dxdt_th() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:113
panzer::BlockedTpetraLinearObjContainer::initialize
virtual void initialize()
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:95
panzer::BlockedTpetraLinearObjContainer::endFill
void endFill()
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:221
panzer::BlockedTpetraLinearObjContainer::checkCompatibility
bool checkCompatibility() const
Make sure row and column spaces match up.
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:54
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::x
Teuchos::RCP< VectorType > x
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:125
panzer::BlockedTpetraLinearObjContainer::set_A_th
void set_A_th(const Teuchos::RCP< CrsMatrixType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:118
panzer::BlockedTpetraLinearObjContainer::get_x_th
Teuchos::RCP< VectorType > get_x_th() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:110
panzer::BlockedTpetraLinearObjContainer::get_A_th
Teuchos::RCP< CrsMatrixType > get_A_th() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:119
panzer::BlockedTpetraLinearObjContainer::get_A
Teuchos::RCP< CrsMatrixType > get_A() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:102
panzer::BlockedTpetraLinearObjContainer::get_f
Teuchos::RCP< VectorType > get_f() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:99
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::A
Teuchos::RCP< CrsMatrixType > A
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:126
panzer::BlockedTpetraLinearObjContainer::setMapsForBlocks
void setMapsForBlocks(const std::vector< Teuchos::RCP< const MapType > > &blockMaps)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:86
panzer::BlockedTpetraLinearObjContainer::getMapForBlock
Teuchos::RCP< const MapType > getMapForBlock(std::size_t i) const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:89
panzer::BlockedTpetraLinearObjContainer::clear
virtual void clear()
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:177
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::f
Teuchos::RCP< VectorType > f
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:125
panzer::BlockedTpetraLinearObjContainer::set_A
void set_A(const Teuchos::RCP< CrsMatrixType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:101
panzer::BlockedTpetraLinearObjContainer::set_f
void set_f(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:98
panzer::BlockedTpetraLinearObjContainer::initializeMatrix
void initializeMatrix(ScalarT value)
Put a particular scalar in the matrix.
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:137
panzer::BlockedTpetraLinearObjContainer::set_x
void set_x(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:92
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::VectorType
Thyra::VectorBase< S > VectorType
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:73
panzer::BlockedTpetraLinearObjContainer::get_x
Teuchos::RCP< VectorType > get_x() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:93
panzer::BlockedTpetraLinearObjContainer::set_x_th
void set_x_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:109
panzer::BlockedTpetraLinearObjContainer::get_dxdt
Teuchos::RCP< VectorType > get_dxdt() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:96
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::MapType
Tpetra::Map< LO, GO, NodeT > MapType
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:76
panzer::BlockedTpetraLinearObjContainer::beginFill
void beginFill()
Definition
Panzer_BlockedTpetraLinearObjContainer_impl.hpp:187
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::blockMaps_
std::vector< Teuchos::RCP< const MapType > > blockMaps_
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:128
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::dxdt
Teuchos::RCP< VectorType > dxdt
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:125
panzer::BlockedTpetraLinearObjContainer::get_f_th
Teuchos::RCP< VectorType > get_f_th() const
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:116
panzer::BlockedTpetraLinearObjContainer::set_f_th
void set_f_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:115
panzer::BlockedTpetraLinearObjContainer::set_dxdt
void set_dxdt(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:95
panzer::BlockedTpetraLinearObjContainer< S, LO, GO, NodeT >::CrsMatrixType
Thyra::LinearOpBase< S > CrsMatrixType
Definition
Panzer_BlockedTpetraLinearObjContainer.hpp:74
panzer::LinearObjContainer
Definition
Panzer_LinearObjContainer.hpp:59
panzer::ThyraObjContainer
Definition
Panzer_ThyraObjContainer.hpp:59
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
Generated by
1.17.0