Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
lof
Panzer_BlockedEpetraLinearObjContainer.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_BlockedEpetraLinearObjContainer_hpp__
44
#define __Panzer_BlockedEpetraLinearObjContainer_hpp__
45
46
#include "PanzerDiscFE_config.hpp"
47
48
#include "Teuchos_RCP.hpp"
49
#include "
Panzer_LinearObjContainer.hpp
"
50
#include "
Panzer_ThyraObjContainer.hpp
"
51
52
#include "Thyra_PhysicallyBlockedLinearOpBase.hpp"
53
#include "Thyra_ProductVectorBase.hpp"
54
55
#include "Epetra_Map.h"
56
57
#include <unordered_map>
58
59
namespace
panzer
{
60
64
class
BlockedEpetraLinearObjContainer
:
public
LinearObjContainer
65
,
public
ThyraObjContainer
<double> {
66
public
:
67
typedef
Thyra::VectorBase<double>
VectorType
;
68
typedef
Thyra::LinearOpBase<double>
CrsMatrixType
;
69
71
bool
checkCompatibility
()
const
;
72
73
virtual
void
clear
();
74
76
void
initializeMatrix
(
double
value);
77
78
void
setMapsForBlocks
(
const
std::vector<Teuchos::RCP<const Epetra_Map> > & blockMaps)
79
{
blockMaps_
= blockMaps; }
80
81
Teuchos::RCP<const Epetra_Map>
getMapForBlock
(std::size_t i)
const
82
{
return
blockMaps_
[i]; }
83
84
inline
void
set_x
(
const
Teuchos::RCP<VectorType> & in) {
set_x_th
(in); }
85
inline
Teuchos::RCP<VectorType>
get_x
()
const
{
return
get_x_th
(); }
86
87
inline
void
set_dxdt
(
const
Teuchos::RCP<VectorType> & in) {
set_dxdt_th
(in); }
88
inline
Teuchos::RCP<VectorType>
get_dxdt
()
const
{
return
get_dxdt_th
(); }
89
90
inline
void
set_f
(
const
Teuchos::RCP<VectorType> & in) {
set_f_th
(in); }
91
inline
Teuchos::RCP<VectorType>
get_f
()
const
{
return
get_f_th
(); }
92
93
inline
void
set_A
(
const
Teuchos::RCP<CrsMatrixType> & in) {
set_A_th
(in); }
94
inline
Teuchos::RCP<CrsMatrixType>
get_A
()
const
{
return
get_A_th
(); }
95
96
// Inherited from LinearObjContainer
97
virtual
void
initialize
();
98
99
// Inherited from ThyraObjContainer
100
101
void
set_x_th
(
const
Teuchos::RCP<VectorType> & in) {
x
= in; }
102
Teuchos::RCP<VectorType>
get_x_th
()
const
{
return
x
; }
103
104
void
set_dxdt_th
(
const
Teuchos::RCP<VectorType> & in) {
dxdt
= in; }
105
Teuchos::RCP<VectorType>
get_dxdt_th
()
const
{
return
dxdt
; }
106
107
void
set_f_th
(
const
Teuchos::RCP<VectorType> & in) {
f
= in; }
108
Teuchos::RCP<VectorType>
get_f_th
()
const
{
return
f
; }
109
110
void
set_A_th
(
const
Teuchos::RCP<CrsMatrixType> & in) {
A
= in; }
111
Teuchos::RCP<CrsMatrixType>
get_A_th
()
const
{
return
A
; }
112
113
private
:
114
Teuchos::RCP<VectorType>
x
,
dxdt
,
f
;
115
Teuchos::RCP<CrsMatrixType>
A
;
116
117
std::vector<Teuchos::RCP<const Epetra_Map> >
blockMaps_
;
118
};
119
120
}
121
122
#endif
Panzer_LinearObjContainer.hpp
Panzer_ThyraObjContainer.hpp
Thyra::LinearOpBase
Thyra::VectorBase
panzer::BlockedEpetraLinearObjContainer
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:65
panzer::BlockedEpetraLinearObjContainer::set_A_th
void set_A_th(const Teuchos::RCP< CrsMatrixType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:110
panzer::BlockedEpetraLinearObjContainer::get_f
Teuchos::RCP< VectorType > get_f() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:91
panzer::BlockedEpetraLinearObjContainer::set_dxdt_th
void set_dxdt_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:104
panzer::BlockedEpetraLinearObjContainer::set_dxdt
void set_dxdt(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:87
panzer::BlockedEpetraLinearObjContainer::VectorType
Thyra::VectorBase< double > VectorType
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:67
panzer::BlockedEpetraLinearObjContainer::get_x_th
Teuchos::RCP< VectorType > get_x_th() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:102
panzer::BlockedEpetraLinearObjContainer::initialize
virtual void initialize()
Definition
Panzer_BlockedEpetraLinearObjContainer.cpp:96
panzer::BlockedEpetraLinearObjContainer::dxdt
Teuchos::RCP< VectorType > dxdt
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:114
panzer::BlockedEpetraLinearObjContainer::blockMaps_
std::vector< Teuchos::RCP< const Epetra_Map > > blockMaps_
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:117
panzer::BlockedEpetraLinearObjContainer::set_x_th
void set_x_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:101
panzer::BlockedEpetraLinearObjContainer::x
Teuchos::RCP< VectorType > x
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:114
panzer::BlockedEpetraLinearObjContainer::get_A_th
Teuchos::RCP< CrsMatrixType > get_A_th() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:111
panzer::BlockedEpetraLinearObjContainer::get_A
Teuchos::RCP< CrsMatrixType > get_A() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:94
panzer::BlockedEpetraLinearObjContainer::set_f_th
void set_f_th(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:107
panzer::BlockedEpetraLinearObjContainer::setMapsForBlocks
void setMapsForBlocks(const std::vector< Teuchos::RCP< const Epetra_Map > > &blockMaps)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:78
panzer::BlockedEpetraLinearObjContainer::set_A
void set_A(const Teuchos::RCP< CrsMatrixType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:93
panzer::BlockedEpetraLinearObjContainer::checkCompatibility
bool checkCompatibility() const
Make sure row and column spaces match up.
Definition
Panzer_BlockedEpetraLinearObjContainer.cpp:56
panzer::BlockedEpetraLinearObjContainer::get_dxdt
Teuchos::RCP< VectorType > get_dxdt() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:88
panzer::BlockedEpetraLinearObjContainer::CrsMatrixType
Thyra::LinearOpBase< double > CrsMatrixType
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:68
panzer::BlockedEpetraLinearObjContainer::set_x
void set_x(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:84
panzer::BlockedEpetraLinearObjContainer::f
Teuchos::RCP< VectorType > f
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:114
panzer::BlockedEpetraLinearObjContainer::set_f
void set_f(const Teuchos::RCP< VectorType > &in)
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:90
panzer::BlockedEpetraLinearObjContainer::get_x
Teuchos::RCP< VectorType > get_x() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:85
panzer::BlockedEpetraLinearObjContainer::initializeMatrix
void initializeMatrix(double value)
Put a particular scalar in the matrix.
Definition
Panzer_BlockedEpetraLinearObjContainer.cpp:127
panzer::BlockedEpetraLinearObjContainer::get_f_th
Teuchos::RCP< VectorType > get_f_th() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:108
panzer::BlockedEpetraLinearObjContainer::get_dxdt_th
Teuchos::RCP< VectorType > get_dxdt_th() const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:105
panzer::BlockedEpetraLinearObjContainer::clear
virtual void clear()
Definition
Panzer_BlockedEpetraLinearObjContainer.cpp:155
panzer::BlockedEpetraLinearObjContainer::A
Teuchos::RCP< CrsMatrixType > A
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:115
panzer::BlockedEpetraLinearObjContainer::getMapForBlock
Teuchos::RCP< const Epetra_Map > getMapForBlock(std::size_t i) const
Definition
Panzer_BlockedEpetraLinearObjContainer.hpp:81
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