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

Classes | |
| struct | FieldMultTag |
This empty struct allows us to optimize operator()() depending on the number of field multipliers. More... | |
Public Member Functions | |
| Integrator_BasisTimesScalar (const panzer::EvaluatorStyle &evalStyle, const std::string &resName, const std::string &valName, const panzer::BasisIRLayout &basis, const panzer::IntegrationRule &ir, const double &multiplier=1, const std::vector< std::string > &fmNames=std::vector< std::string >()) | |
| Main Constructor. | |
| Integrator_BasisTimesScalar (const Teuchos::ParameterList &p, const panzer::EvaluatorStyle=panzer::EvaluatorStyle::EVALUATES) | |
ParameterList Constructor. | |
| void | postRegistrationSetup (typename Traits::SetupData sd, PHX::FieldManager< Traits > &fm) |
| Post-Registration Setup. | |
| void | evaluateFields (typename Traits::EvalData workset) |
| Evaluate Fields. | |
| template<int NUM_FIELD_MULT> | |
| KOKKOS_INLINE_FUNCTION void | operator() (const FieldMultTag< NUM_FIELD_MULT > &tag, const std::size_t &cell) const |
| Perform the integration. | |
| template<int NUM_FIELD_MULT> | |
| KOKKOS_INLINE_FUNCTION void | operator() (const FieldMultTag< NUM_FIELD_MULT > &, const size_t &cell) const |
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. | |
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 > | scalar_ |
| A field representing the scalar function we're integrating ( | |
| double | multiplier_ |
| The scalar multiplier out in front of the integral ( | |
| std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::IP > > | fieldMults_ |
| The (possibly empty) list of fields that are multipliers out in front of the integral ( | |
| PHX::View< Kokkos::View< const ScalarT **, typename PHX::DevLayout< ScalarT >::type, Kokkos::MemoryUnmanaged > * > | kokkosFieldMults_ |
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front of the integral ( | |
| int | numQP_ |
| The number of quadrature points for each cell. | |
| 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 > | basis_ |
| The scalar basis information necessary for integration. | |
| PHX::View< ScalarT * > | tmp_ |
| For storing temporaries, one value per thread. | |
| PHX::View< ScalarT * > | tmp2_ |
| For storing temporaries, one value per thread. | |
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
![\[
Ma(x)b(x)\cdots\int s(x)\phi(x)\,dx,
\]](form_6.png)
where 




Definition at line 48 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The scalar type.
Definition at line 222 of file Panzer_Integrator_BasisTimesScalar.hpp.
| panzer::Integrator_BasisTimesScalar< EvalT, Traits >::Integrator_BasisTimesScalar | ( | const panzer::EvaluatorStyle & | evalStyle, |
| const std::string & | resName, | ||
| const std::string & | valName, | ||
| const panzer::BasisIRLayout & | basis, | ||
| const panzer::IntegrationRule & | ir, | ||
| const double & | multiplier = 1, |
||
| const std::vector< std::string > & | fmNames = std::vector<std::string>() |
||
| ) |
Main Constructor.
Creates an Evaluator to evaluate the integral
![\[
Ma(x)b(x)\cdots\int s(x)\phi(x)\,dx,
\]](form_6.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] | valName | The name of the scalar value being integrated ( |
| [in] | basis | The scalar basis that you'd like to use ( |
| [in] | ir | The integration rule that you'd like to use. |
| [in] | multiplier | The scalar multiplier out in front of the integral you're computing ( |
| [in] | fmNames | A list of names of fields that are multipliers out in front of the integral you're computing ( vector. |
| std::invalid_argument | If any of the inputs are invalid. |
| std::logic_error | If the basis supplied is not a scalar basis. |
Definition at line 33 of file Panzer_Integrator_BasisTimesScalar_impl.hpp.
| panzer::Integrator_BasisTimesScalar< EvalT, Traits >::Integrator_BasisTimesScalar | ( | const Teuchos::ParameterList & | p, |
| const panzer::EvaluatorStyle | es = panzer::EvaluatorStyle::EVALUATES |
||
| ) |
ParameterList Constructor.
Creates an Evaluator to evaluate the integral
![\[
Ma(x)b(x)\cdots\int s(x)\phi(x)\,dx,
\]](form_6.png)
where 




Evaluator with a ParameterList; however, it is strongly advised that you not use this ParameterList Constructor, but rather that you favor the Main Constructor with its compile-time argument checking instead.| [in] | p | A ParameterList of the form <ParameterList>
<Parameter name = "Residual Name" type = "std::string" value = (required) />
<Parameter name = "Value 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 = "Multiplier" type = "double" value = (required) />
<Parameter name = "Field Multipliers" type = "RCP<const std::vector<std::string>>" value = null (default)/>
</ParameterList>
|
Definition at line 110 of file Panzer_Integrator_BasisTimesScalar_impl.hpp.
| void panzer::Integrator_BasisTimesScalar< EvalT, Traits >::postRegistrationSetup | ( | typename Traits::SetupData | sd, |
| PHX::FieldManager< Traits > & | fm | ||
| ) |
Post-Registration Setup.
Get the PHX::Views of the field multipliers, and determine the index in the Workset bases for our particular basis name.
| [in] | sd | Essentially a list of Worksets, which are collections of cells (elements) that all live on a single process. |
| [in] | fm | This is unused, though part of the interface. |
Definition at line 140 of file Panzer_Integrator_BasisTimesScalar_impl.hpp.
| void panzer::Integrator_BasisTimesScalar< EvalT, Traits >::evaluateFields | ( | typename Traits::EvalData | workset | ) |
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 246 of file Panzer_Integrator_BasisTimesScalar_impl.hpp.
| KOKKOS_INLINE_FUNCTION void panzer::Integrator_BasisTimesScalar< EvalT, Traits >::operator() | ( | const FieldMultTag< NUM_FIELD_MULT > & | tag, |
| const std::size_t & | cell | ||
| ) | const |
Perform the integration.
Generally speaking, for a given cell in the Workset, this routine loops over quadrature points 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. |
|
private |
Get Valid Parameters.
Get all the parameters that we support such that the ParameterList Constructor can do some validation of the input ParameterList.
ParameterList with all the valid parameters (keys) in it. The values tied to those keys are meaningless default values. Definition at line 274 of file Panzer_Integrator_BasisTimesScalar_impl.hpp.
| KOKKOS_INLINE_FUNCTION void panzer::Integrator_BasisTimesScalar< EvalT, Traits >::operator() | ( | const FieldMultTag< NUM_FIELD_MULT > & | , |
| const size_t & | cell | ||
| ) | const |
Definition at line 181 of file Panzer_Integrator_BasisTimesScalar_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 232 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
Definition at line 238 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
A field representing the scalar function we're integrating ( 
Definition at line 244 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The scalar multiplier out in front of the integral ( 
Definition at line 250 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The (possibly empty) list of fields that are multipliers out in front of the integral ( 

Definition at line 256 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front of the integral ( 

Definition at line 263 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The number of quadrature points for each cell.
Definition at line 268 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The name of the basis we're using.
Definition at line 273 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The index in the Workset bases for our particular BasisIRLayout name.
Definition at line 279 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
The scalar basis information necessary for integration.
Definition at line 284 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
For storing temporaries, one value per thread.
Definition at line 287 of file Panzer_Integrator_BasisTimesScalar.hpp.
|
private |
For storing temporaries, one value per thread.
Definition at line 289 of file Panzer_Integrator_BasisTimesScalar.hpp.