Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_ResponseMESupportBuilderBase.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Panzer: A partial differential equation assembly
4// engine for strongly coupled complex multiphysics systems
5//
6// Copyright 2011 NTESS and the Panzer contributors.
7// SPDX-License-Identifier: BSD-3-Clause
8// *****************************************************************************
9// @HEADER
10
11#ifndef __Panzer_ResponseMESupportBuilderBase_hpp__
12#define __Panzer_ResponseMESupportBuilderBase_hpp__
13
14#include "Teuchos_RCP.hpp"
15
16#include "PanzerDiscFE_config.hpp"
17
18#include "Panzer_Traits.hpp"
22
23namespace panzer {
24
30public:
32
37 virtual void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & linearObjFactory) = 0;
38
42 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildValueFactory() const = 0;
43
47 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildDerivativeFactory() const = 0;
48
52 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildTangentFactory() const {
53 return Teuchos::null;
54 }
55
56#ifdef Panzer_BUILD_HESSIAN_SUPPORT
60 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildHessianFactory() const = 0;
61#endif
62
66 template <typename T>
67 inline Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> build() const
68 { return Teuchos::null; }
69};
70
71template < >
72inline Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> ResponseMESupportBuilderBase::build<panzer::Traits::Residual>() const
73{ return buildValueFactory(); }
74
75template < >
76inline Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> ResponseMESupportBuilderBase::build<panzer::Traits::Jacobian>() const
77{ return buildDerivativeFactory(); }
78
79template < >
80inline Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> ResponseMESupportBuilderBase::build<panzer::Traits::Tangent>() const
81{ return buildTangentFactory(); }
82
83#ifdef Panzer_BUILD_HESSIAN_SUPPORT
84template < >
85inline Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> ResponseMESupportBuilderBase::build<panzer::Traits::Hessian>() const
86{ return buildHessianFactory(); }
87#endif
88
89}
90
91#endif
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildTangentFactory() const
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildHessianFactory() const =0
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildDerivativeFactory() const =0
virtual void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &linearObjFactory)=0
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildValueFactory() const =0
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > build() const