|
Panzer Version of the Day
|
Computes 
#include <Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp>

Classes | |
| struct | FieldMultTag |
| This empty struct allows us to optimize operator()() depending on the number of field multipliers. This is the version that does not use shared memory. More... | |
| struct | SharedFieldMultTag |
| This empty struct allows us to optimize operator()() depending on the number of field multipliers. This is the shared memory version. More... | |
Public Member Functions | |
| Integrator_GradBasisDotTensorTimesVector (const panzer::EvaluatorStyle &evalStyle, const std::string &resName, const std::string &fluxName, const panzer::BasisIRLayout &basis, const panzer::IntegrationRule &ir, const std::string &tensorName, const Teuchos::RCP< PHX::DataLayout > &vecDL=Teuchos::null) | |
| Main Constructor. | |
| Integrator_GradBasisDotTensorTimesVector (const Teuchos::ParameterList &p) | |
| ParameterList Constructor. | |
| void | postRegistrationSetup (typename Traits::SetupData d, PHX::FieldManager< Traits > &fm) |
| Post-Registration Setup. | |
| void | evaluateFields (typename Traits::EvalData d) |
| Evaluate Fields. | |
| KOKKOS_INLINE_FUNCTION void | operator() (const FieldMultTag &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const |
| Perform the integration. | |
| KOKKOS_INLINE_FUNCTION void | operator() (const SharedFieldMultTag &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const |
| Perform the integration. | |
| Public Member Functions inherited from panzer::EvaluatorWithBaseImpl< Traits > | |
| void | setDetailsIndex (const int di) |
| An evaluator builder sets the details index. | |
| Public Member Functions inherited from panzer::DomainEvaluator | |
| DomainEvaluator (DomainType domain=ALL) | |
| Constructor. | |
| virtual | ~DomainEvaluator ()=default |
| Default destructor. | |
| void | setDomain (const DomainType domain) |
| Set the domain for the evaluator. | |
| DomainType | getDomain () |
| Get the domain for the evaluator. | |
| virtual int | cellStartIndex (const panzer::Workset &workset) const |
| Returns the starting cell for the specified domain for a given workset. | |
| virtual int | cellEndIndex (const panzer::Workset &workset) const |
| Returns the non-inclusive end cell for the specified domain for a given workset. | |
Private Types | |
| using | ScalarT = typename EvalT::ScalarT |
| The scalar type. | |
| using | scratch_view = Kokkos::View<ScalarT* ,typename PHX::DevLayout<ScalarT>::type,typename PHX::exec_space::scratch_memory_space,Kokkos::MemoryUnmanaged> |
| Type for shared memory. | |
Private Member Functions | |
| Teuchos::RCP< Teuchos::ParameterList > | getValidParameters () const |
| Get Valid Parameters. | |
Private Attributes | |
| const panzer::EvaluatorStyle | evalStyle_ |
| An enum determining the behavior of this Evaluator. | |
| PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > | field_ |
| A field to which we'll contribute, or in which we'll store, the result of computing this integral. | |
| PHX::MDField< const ScalarT, panzer::Cell, panzer::IP, panzer::Dim > | vector_ |
A field representing the vector-valued function we're integrating ( ![]() | |
| PHX::MDField< const ScalarT, panzer::Cell, panzer::IP, panzer::Dim, panzer::Dim > | tensor_ |
The tensor field( ![]() | |
| PHX::View< const ScalarT **** > | kokkosTensor_ |
The PHX::View representation of the tensor fields that are multiplied out in front of the integral ( ![]() | |
| std::string | basisName_ |
| The name of the basis we're using. | |
| std::size_t | basisIndex_ |
| The index in the Workset bases for our particular BasisIRLayout name. | |
| PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim > | basis_ |
| The gradient vector basis information necessary for integration. | |
| PHX::View< ScalarT * > | tmp_ |
| Temporary used when shared memory is disabled. | |
Additional Inherited Members | |
| Public Types inherited from panzer::DomainEvaluator | |
| enum | DomainType : int { OWNED =0 , GHOST =1 , REAL =2 , VIRTUAL =3 , EXTERNAL =4 , ALL =5 } |
| Domain types supported by worksets. More... | |
| Protected Attributes inherited from panzer::EvaluatorWithBaseImpl< Traits > | |
| WorksetDetailsAccessor | wda |
Computes 
Evaluates the integral
![\[ \int (a(x)\cdots\vec{s}(x)) \cdot \nabla\phi(x)\,dx,
\]](form_33.png)
where 


Definition at line 78 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The scalar type.
Definition at line 278 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
Type for shared memory.
Definition at line 281 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
| panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::Integrator_GradBasisDotTensorTimesVector | ( | const panzer::EvaluatorStyle & | evalStyle, |
| const std::string & | resName, | ||
| const std::string & | fluxName, | ||
| const panzer::BasisIRLayout & | basis, | ||
| const panzer::IntegrationRule & | ir, | ||
| const std::string & | tensorName, | ||
| const Teuchos::RCP< PHX::DataLayout > & | vecDL = Teuchos::null ) |
Main Constructor.
Creates an Evaluator to evaluate the integral
![\[ \int (a(x)\cdots\vec{s}(x)) \cdot \nabla\phi(x)\,dx,
\]](form_33.png)
where 


| [in] | evalStyle | An enum declaring the behavior of this Evaluator, which is to either:
|
| [in] | resName | The name of either the contributed or evaluated field, depending on evalStyle. |
| [in] | fluxName | The name of the vector-valued function being integrated ( ![]() |
| [in] | basis | The basis that you'd like to use ( ![]() |
| [in] | ir | The integration rule that you'd like to use. |
| [in] | tensorName | The tensors name ( ![]() |
| [in] | vecDL | The vector data layout that you'd like to use. If not specified, this defaults to Teuchos::null and the vector data layout from the given ir is used. |
| std::invalid_argument | If any of the inputs are invalid. |
| std::logic_error | If the basis supplied does not support the gradient operator, or if the dimension of the space exceeds the dimension of the vector data layout. |
Definition at line 66 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
| panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::Integrator_GradBasisDotTensorTimesVector | ( | const Teuchos::ParameterList & | p | ) |
ParameterList Constructor.
Creates an Evaluator to evaluate the integral
![\[ Ma(x)b(x)\cdots\int\vec{s}(x)\cdot\nabla\phi(x)\,dx,
\]](form_34.png)
where 




| [in] | p | A ParameterList of the form <ParameterList>
<Parameter name = "Residual Name" type = "std::string" value = (required) />
<Parameter name = "Flux Name" type = "std::string" value = (required) />
<Parameter name = "Basis" type = "RCP<panzer::BasisIRLayout>" value = (required) />
<Parameter name = "IR" type = "RCP<panzer::IntegrationRule>" value = (required) />
<Parameter name = "Tensor Name" type = "std::string" value = (required) />
<Parameter name = "Vector Data Layout" type = "RCP<PHX::DataLayout>" value = null (default)/>
</ParameterList>
|
Definition at line 142 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
| void panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::postRegistrationSetup | ( | typename Traits::SetupData | d, |
| PHX::FieldManager< Traits > & | fm ) |
Post-Registration Setup.
Sets the basis index, and gets the PHX::View versions of the field multiplier, if there are any.
| [in] | sd | Essentially a list of Worksets, which are collections of cells (elements) that all live on a single process. |
| [in] | fm | This is an unused part of the Evaluator interface. |
Definition at line 172 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
| void panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::evaluateFields | ( | typename Traits::EvalData | d | ) |
Evaluate Fields.
This actually performs the integration by calling operator()() in a Kokkos::parallel_for over the cells in the Workset.
| [in] | workset | The Workset on which you're going to do the integration. |
Definition at line 316 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
| KOKKOS_INLINE_FUNCTION void panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::operator() | ( | const FieldMultTag & | tag, |
| const Kokkos::TeamPolicy< PHX::exec_space >::member_type & | team ) const |
Perform the integration.
Generally speaking, for a given cell in the Workset, this routine loops over quadrature points, vector dimensions, and bases to perform the integration, scaling the vector field to be integrated by the multiplier ( 


| [in] | tag | An indication of the number of field multipliers we have; either 0, 1, or something else. |
| [in] | cell | The cell in the Workset over which to integrate. |
Definition at line 206 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
| KOKKOS_INLINE_FUNCTION void panzer::Integrator_GradBasisDotTensorTimesVector< EvalT, Traits >::operator() | ( | const SharedFieldMultTag & | tag, |
| const Kokkos::TeamPolicy< PHX::exec_space >::member_type & | team ) const |
Perform the integration.
Generally speaking, for a given cell in the Workset, this routine loops over quadrature points, vector dimensions, and bases to perform the integration, scaling the vector field to be integrated by the multiplier ( 


| [in] | tag | An indication of the number of field multipliers we have; either 0, 1, or something else. |
| [in] | cell | The cell in the Workset over which to integrate. |
Definition at line 249 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
|
private |
Get Valid Parameters.
Get all the parameters that we support such that the ParameterList Constructor can do some validation of the input ParameterList.
Definition at line 352 of file Panzer_Integrator_GradBasisDotTensorTimesVector_impl.hpp.
|
private |
An enum determining the behavior of this Evaluator.
This Evaluator will compute the result of its integration and then:
Definition at line 292 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
Definition at line 298 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
A field representing the vector-valued function we're integrating ( 
Definition at line 305 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The tensor field( 
Definition at line 311 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The PHX::View representation of the tensor fields that are multiplied out in front of the integral ( 
Definition at line 317 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The name of the basis we're using.
Definition at line 322 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The index in the Workset bases for our particular BasisIRLayout name.
Definition at line 328 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
The gradient vector basis information necessary for integration.
Definition at line 335 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.
|
private |
Temporary used when shared memory is disabled.
Definition at line 338 of file Panzer_Integrator_GradBasisDotTensorTimesVector_decl.hpp.