11#ifndef PANZER_TRAITS_HPP
12#define PANZER_TRAITS_HPP
14#include "PanzerDiscFE_config.hpp"
17#include "Teuchos_RCP.hpp"
20#include "Sacado_mpl_vector.hpp"
21#include "Sacado_mpl_find.hpp"
29#include "Phalanx_Traits.hpp"
46 class GlobalEvaluationDataContainer;
79#ifdef Panzer_BUILD_HESSIAN_SUPPORT
82 typedef Sacado::Fad::DFad<Sacado::Fad::SFad<RealType,1> >
HessianType;
96#ifdef Panzer_BUILD_HESSIAN_SUPPORT
102 typedef Sacado::mpl::vector<
Residual
105#ifdef Panzer_BUILD_HESSIAN_SUPPORT
125 Teuchos::RCP<const std::vector<panzer::Workset>>
worksets_;
143 Teuchos::RCP<GlobalEvaluationDataContainer>
gedc;
170 struct eval_scalar_types<
panzer::Traits::Residual>
171 {
typedef Sacado::mpl::vector<panzer::Traits::RealType,bool>
type; };
175 struct eval_scalar_types<
panzer::Traits::Jacobian>
176 {
typedef Sacado::mpl::vector<panzer::Traits::FadType,panzer::Traits::RealType,bool>
type; };
180 struct eval_scalar_types<
panzer::Traits::Tangent>
181 {
typedef Sacado::mpl::vector<panzer::Traits::FadType,panzer::Traits::RealType,bool>
type; };
183#ifdef Panzer_BUILD_HESSIAN_SUPPORT
186 struct eval_scalar_types<
panzer::Traits::Hessian>
187 {
typedef Sacado::mpl::vector<panzer::Traits::HessianType,bool>
type; };
Sacado::mpl::vector< panzer::Traits::HessianType, bool > type
Sacado::mpl::vector< panzer::Traits::FadType, panzer::Traits::RealType, bool > type
Sacado::mpl::vector< panzer::Traits::RealType, bool > type
Sacado::mpl::vector< panzer::Traits::FadType, panzer::Traits::RealType, bool > type
Evaluation type for computing second derivatives, using HessianType as the scalar type....
Evaluation type for computing the residual and its Jacobian, using FadType as the scalar type.
User-defined data passed to PHX::Evaluator::preEvaluate(), called once before each residual/Jacobian ...
Teuchos::RCP< GlobalEvaluationDataContainer > gedc
Container of global (non-cell-local) data, e.g. distributed vectors needed by gather/scatter evaluato...
PED()
Default constructor. Allocates gedc.
std::string second_sensitivities_name
Name under which second-order sensitivity data is registered in gedc, if any.
std::string first_sensitivities_name
Name under which first-order sensitivity data is registered in gedc, if any.
Evaluation type for computing the residual only, using RealType as the scalar type.
User-defined data passed to PHX::Evaluator::postRegistrationSetup() during the one-time setup phase.
Teuchos::RCP< const std::vector< panzer::Workset > > worksets_
All worksets that will be evaluated over the lifetime of this evaluator.
Teuchos::RCP< const std::vector< Intrepid2::Orientation > > orientations_
Cell orientations corresponding to the worksets above.
Evaluation type for computing directional derivatives (e.g. parameter sensitivities),...
Panzer's specialization of the Phalanx traits class.
double RealType
Scalar type used for the Residual evaluation type (plain double).
PANZER_FADTYPE FadType
Sacado forward-mode AD scalar type used for the Jacobian and Tangent evaluation types.
Sacado::mpl::vector< Residual, Jacobian, Tangent, Hessian > EvalTypes
Sacado::mpl::vector enumerating all evaluation types supported by this build (Residual,...
Sacado::Fad::DFad< Sacado::Fad::SFad< RealType, 1 > > HessianType
Nested Sacado AD scalar type (FAD-over-FAD) used for the Hessian evaluation type. Only defined when b...
void * PostEvalData
Data type passed to PHX::Evaluator::postEvaluate(), called once after each residual/Jacobian fill....