Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
responses
Panzer_ResponseMESupportBase.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_ResponseMESupportBase_hpp__
44
#define __Panzer_ResponseMESupportBase_hpp__
45
46
#include <string>
47
48
#include "Teuchos_RCP.hpp"
49
50
#include "PanzerDiscFE_config.hpp"
51
#ifdef PANZER_HAVE_EPETRA_STACK
52
#include "Epetra_Map.h"
53
#include "Epetra_Vector.h"
54
#include "Epetra_MultiVector.h"
55
#include "Epetra_Operator.h"
56
#endif
57
58
#include "Thyra_VectorSpaceBase.hpp"
59
#include "Thyra_VectorBase.hpp"
60
#include "Thyra_MultiVectorBase.hpp"
61
#include "Thyra_LinearOpBase.hpp"
62
63
#include "
Panzer_ResponseBase.hpp
"
64
65
namespace
panzer
{
66
67
template
<
typename
EvalT>
68
class
ResponseMESupportBase
:
public
ResponseBase
{
69
public
:
70
ResponseMESupportBase
(
const
std::string & responseName)
71
:
ResponseBase
(responseName) {}
72
73
virtual
~ResponseMESupportBase
() {}
74
75
#ifdef PANZER_HAVE_EPETRA_STACK
76
// This is the epetra view of the world
78
80
virtual
Teuchos::RCP<const Epetra_Map> getMap()
const
= 0;
81
85
virtual
void
setVector
(
const
Teuchos::RCP<Epetra_Vector> & destVec) = 0;
86
#endif
87
88
// This is the Thyra view of the world
90
92
virtual
Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
getVectorSpace
()
const
= 0;
93
97
virtual
void
setVector
(
const
Teuchos::RCP<
Thyra::VectorBase<double>
> & destVec) = 0;
98
99
private
:
100
// hide these methods
101
ResponseMESupportBase
();
102
ResponseMESupportBase
(
const
ResponseMESupportBase<EvalT>
&);
103
};
104
105
template
< >
106
class
ResponseMESupportBase
<
panzer
::
Traits::Jacobian
> :
public
ResponseBase
{
107
public
:
108
ResponseMESupportBase
(
const
std::string & responseName)
109
:
ResponseBase
(responseName) {}
110
111
virtual
~ResponseMESupportBase
() {}
112
114
virtual
bool
supportsDerivative
()
const
= 0;
115
116
#ifdef PANZER_HAVE_EPETRA_STACK
117
// This is the epetra view of the world
119
121
virtual
Teuchos::RCP<Epetra_MultiVector> buildEpetraDerivative()
const
= 0;
122
125
virtual
void
setDerivative
(
const
Teuchos::RCP<Epetra_MultiVector> & derivative) = 0;
126
#endif
127
128
// This is the Thyra view of the world
130
132
virtual
Teuchos::RCP<Thyra::MultiVectorBase<double> >
buildDerivative
()
const
= 0;
133
137
virtual
void
setDerivative
(
const
Teuchos::RCP<
Thyra::MultiVectorBase<double>
> & derivative) = 0;
138
139
private
:
140
// hide these methods
141
ResponseMESupportBase
();
142
ResponseMESupportBase
(
const
ResponseMESupportBase<panzer::Traits::Jacobian>
&);
143
};
144
145
template
< >
146
class
ResponseMESupportBase
<
panzer
::
Traits::Tangent
> :
public
ResponseBase
{
147
public
:
148
ResponseMESupportBase
(
const
std::string & responseName)
149
:
ResponseBase
(responseName) {}
150
151
virtual
~ResponseMESupportBase
() {}
152
153
#ifdef PANZER_HAVE_EPETRA_STACK
154
// This is the epetra view of the world
156
158
virtual
Teuchos::RCP<const Epetra_Map> getMap()
const
= 0;
159
163
virtual
void
setVector
(
const
Teuchos::RCP<Epetra_MultiVector> & destVec) = 0;
164
#endif
165
166
// This is the Thyra view of the world
168
170
virtual
Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
getVectorSpace
()
const
= 0;
171
175
virtual
void
setVector
(
const
Teuchos::RCP<
Thyra::MultiVectorBase<double>
> & destVec) = 0;
176
177
private
:
178
// hide these methods
179
ResponseMESupportBase
();
180
ResponseMESupportBase
(
const
ResponseMESupportBase<panzer::Traits::Tangent>
&);
181
};
182
183
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
184
template
< >
185
class
ResponseMESupportBase
<
panzer
::
Traits::Hessian
> :
public
ResponseBase
{
186
public
:
187
ResponseMESupportBase
(
const
std::string & responseName)
188
:
ResponseBase
(responseName) {}
189
190
virtual
~ResponseMESupportBase
() {}
191
193
virtual
bool
supportsDerivative
()
const
= 0;
194
195
// This is the Thyra view of the world
197
199
virtual
Teuchos::RCP<Thyra::MultiVectorBase<double> >
buildDerivative
()
const
= 0;
200
204
virtual
void
setDerivative
(
const
Teuchos::RCP<
Thyra::MultiVectorBase<double>
> & derivative) = 0;
205
206
private
:
207
// hide these methods
208
ResponseMESupportBase
();
209
ResponseMESupportBase
(
const
ResponseMESupportBase<panzer::Traits::Hessian>
&);
210
};
211
212
#endif
213
214
}
215
216
#endif
Panzer_ResponseBase.hpp
Thyra::MultiVectorBase
Thyra::VectorBase
panzer::ResponseBase::ResponseBase
ResponseBase(const std::string &responseName)
Definition
Panzer_ResponseBase.hpp:67
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::ResponseMESupportBase
ResponseMESupportBase()
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::setDerivative
virtual void setDerivative(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &derivative)=0
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::supportsDerivative
virtual bool supportsDerivative() const =0
Does this response support derivative evaluation?
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::~ResponseMESupportBase
virtual ~ResponseMESupportBase()
Definition
Panzer_ResponseMESupportBase.hpp:190
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::ResponseMESupportBase
ResponseMESupportBase(const std::string &responseName)
Definition
Panzer_ResponseMESupportBase.hpp:187
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::buildDerivative
virtual Teuchos::RCP< Thyra::MultiVectorBase< double > > buildDerivative() const =0
Get an Epetra_Operator for this response, map is constructed lazily.
panzer::ResponseMESupportBase< panzer::Traits::Hessian >::ResponseMESupportBase
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Hessian > &)
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::ResponseMESupportBase
ResponseMESupportBase()
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::ResponseMESupportBase
ResponseMESupportBase(const std::string &responseName)
Definition
Panzer_ResponseMESupportBase.hpp:108
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::supportsDerivative
virtual bool supportsDerivative() const =0
Does this response support derivative evaluation?
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::buildDerivative
virtual Teuchos::RCP< Thyra::MultiVectorBase< double > > buildDerivative() const =0
Get an Epetra_Operator for this response, map is constructed lazily.
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::~ResponseMESupportBase
virtual ~ResponseMESupportBase()
Definition
Panzer_ResponseMESupportBase.hpp:111
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::ResponseMESupportBase
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Jacobian > &)
panzer::ResponseMESupportBase< panzer::Traits::Jacobian >::setDerivative
virtual void setDerivative(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &derivative)=0
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::ResponseMESupportBase
ResponseMESupportBase(const std::string &responseName)
Definition
Panzer_ResponseMESupportBase.hpp:148
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::setVector
virtual void setVector(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &destVec)=0
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::ResponseMESupportBase
ResponseMESupportBase()
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::getVectorSpace
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< double > > getVectorSpace() const =0
Get the vector space for this response, vector space is constructed lazily.
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::~ResponseMESupportBase
virtual ~ResponseMESupportBase()
Definition
Panzer_ResponseMESupportBase.hpp:151
panzer::ResponseMESupportBase< panzer::Traits::Tangent >::ResponseMESupportBase
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Tangent > &)
panzer::ResponseMESupportBase::getVectorSpace
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< double > > getVectorSpace() const =0
Get the vector space for this response, vector space is constructed lazily.
panzer::ResponseMESupportBase::ResponseMESupportBase
ResponseMESupportBase(const ResponseMESupportBase< EvalT > &)
panzer::ResponseMESupportBase::ResponseMESupportBase
ResponseMESupportBase(const std::string &responseName)
Definition
Panzer_ResponseMESupportBase.hpp:70
panzer::ResponseMESupportBase::setVector
virtual void setVector(const Teuchos::RCP< Thyra::VectorBase< double > > &destVec)=0
panzer::ResponseMESupportBase::~ResponseMESupportBase
virtual ~ResponseMESupportBase()
Definition
Panzer_ResponseMESupportBase.hpp:73
panzer::ResponseMESupportBase::ResponseMESupportBase
ResponseMESupportBase()
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
panzer::Traits::Hessian
Definition
Panzer_Traits.hpp:108
panzer::Traits::Jacobian
Definition
Panzer_Traits.hpp:104
panzer::Traits::Tangent
Definition
Panzer_Traits.hpp:105
Generated by
1.17.0