Panzer
Version of the Day
|
Computes . More...
#include <Panzer_Integrator_DivBasisTimesScalar.hpp>
Classes | |
struct | FieldMultTag |
This empty struct allows us to optimize operator()() depending on the number of field multipliers. More... | |
struct | SharedFieldMultTag |
This empty struct allows us to optimize operator()() depending on the number of field multipliers. More... | |
Public Member Functions | |
Integrator_DivBasisTimesScalar (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. More... | |
Integrator_DivBasisTimesScalar (const Teuchos::ParameterList &p) | |
ParameterList Constructor. More... | |
void | postRegistrationSetup (typename Traits::SetupData d, PHX::FieldManager< Traits > &fm) |
Post-Registration Setup. More... | |
void | evaluateFields (typename Traits::EvalData d) |
Evaluate Fields. More... | |
template<int NUM_FIELD_MULT> | |
KOKKOS_INLINE_FUNCTION void | operator() (const FieldMultTag< NUM_FIELD_MULT > &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const |
Perform the integration. Main memory version. More... | |
template<int NUM_FIELD_MULT> | |
KOKKOS_INLINE_FUNCTION void | operator() (const SharedFieldMultTag< NUM_FIELD_MULT > &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const |
Perform the integration. Shared memory version. More... | |
Public Member Functions inherited from panzer::EvaluatorWithBaseImpl< Traits > | |
void | setDetailsIndex (const int di) |
An evaluator builder sets the details index. More... | |
Public Member Functions inherited from PHX::EvaluatorWithBaseImpl< Traits > | |
virtual void | evaluateFields (typename Traits::EvalData d) override=0 |
Public Member Functions inherited from PHX::Evaluator< Traits > | |
Evaluator () | |
virtual | ~Evaluator () |
virtual void | postRegistrationSetup (typename Traits::SetupData d, PHX::FieldManager< Traits > &vm)=0 |
virtual const std::vector < Teuchos::RCP< FieldTag > > & | evaluatedFields () const =0 |
virtual const std::vector < Teuchos::RCP< FieldTag > > & | contributedFields () const =0 |
virtual const std::vector < Teuchos::RCP< FieldTag > > & | dependentFields () const =0 |
virtual const std::vector < Teuchos::RCP< FieldTag > > & | unsharedFields () const =0 |
virtual void | preEvaluate (typename Traits::PreEvalData d)=0 |
virtual void | postEvaluate (typename Traits::PostEvalData d)=0 |
virtual const std::string & | getName () const =0 |
virtual void | bindField (const PHX::FieldTag &ft, const std::any &f)=0 |
virtual PHX::DeviceEvaluator < Traits > * | createDeviceEvaluator () const =0 |
virtual void | rebuildDeviceEvaluator (PHX::DeviceEvaluator< Traits > *e) const =0 |
virtual void | deleteDeviceEvaluator (PHX::DeviceEvaluator< Traits > *e) const =0 |
virtual void | printFieldValues (std::ostream &os) const =0 |
Public Member Functions inherited from panzer::DomainEvaluator | |
DomainEvaluator (DomainType domain=ALL) | |
Constructor. More... | |
virtual | ~DomainEvaluator ()=default |
Default destructor. More... | |
void | setDomain (const DomainType domain) |
Set the domain for the evaluator. More... | |
DomainType | getDomain () |
Get the domain for the evaluator. More... | |
virtual int | cellStartIndex (const panzer::Workset &workset) const |
Returns the starting cell for the specified domain for a given workset. More... | |
virtual int | cellEndIndex (const panzer::Workset &workset) const |
Returns the non-inclusive end cell for the specified domain for a given workset. More... | |
Private Types | |
using | ScalarT = typename EvalT::ScalarT |
The scalar type. More... | |
using | scratch_view = Kokkos::View< ScalarT *,typename PHX::DevLayout< ScalarT >::type, typename PHX::exec_space::scratch_memory_space, Kokkos::MemoryUnmanaged > |
Type for shared memory. More... | |
Private Member Functions | |
Teuchos::RCP < Teuchos::ParameterList > | getValidParameters () const |
Get Valid Parameters. More... | |
Private Attributes | |
const panzer::EvaluatorStyle | evalStyle_ |
An enum determining the behavior of this Evaluator . More... | |
PHX::MDField< ScalarT, Cell, BASIS > | field_ |
A field to which we'll contribute, or in which we'll store, the result of computing this integral. More... | |
PHX::MDField< const ScalarT, Cell, IP > | scalar_ |
A field representing the scalar function we're integrating ( ). More... | |
double | multiplier_ |
The scalar multiplier out in front of the integral ( ). More... | |
std::vector< PHX::MDField < const ScalarT, Cell, IP > > | fieldMults_ |
The (possibly empty) list of fields that are multipliers out in front of the integral ( , , etc.). More... | |
PHX::View< PHX::UnmanagedView < const ScalarT ** > * > | kokkosFieldMults_ |
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front of the integral ( , , etc.). More... | |
std::size_t | numQP_ |
The number of quadrature points for each cell. More... | |
std::string | basisName_ |
The name of the basis we're using. More... | |
std::size_t | basisIndex_ |
The index in the Workset bases for our particular BasisIRLayout name. More... | |
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP > | basis_ |
The scalar basis information necessary for integration. More... | |
PHX::View< ScalarT * > | tmp_ |
Temporary for non-shared calculations. More... | |
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
where is some constant, , , etc., are some fields that depend on position, is some scalar function, and is some H-div basis.
Definition at line 49 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The scalar type.
Definition at line 253 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
Type for shared memory.
Definition at line 256 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
panzer::Integrator_DivBasisTimesScalar< EvalT, Traits >::Integrator_DivBasisTimesScalar | ( | 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
where is some constant, , , etc., are some fields that depend on position, is some scalar function, and is some H-div basis.
[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 H-div 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 ( ). If not specified, this defaults to 1. |
[in] | fmNames | A list of names of fields that are multipliers out in front of the integral you're computing ( , , etc.). If not specified, this defaults to an empty vector . |
std::invalid_argument | If any of the inputs are invalid. |
std::logic_error | If the basis supplied is not an H-div basis. |
Definition at line 41 of file Panzer_Integrator_DivBasisTimesScalar_impl.hpp.
panzer::Integrator_DivBasisTimesScalar< EvalT, Traits >::Integrator_DivBasisTimesScalar | ( | const Teuchos::ParameterList & | p | ) |
ParameterList
Constructor.
Creates an Evaluator
to evaluate the integral
where is some constant, , , etc., are some fields that depend on position, is some scalar function, and is some H-div basis.
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 121 of file Panzer_Integrator_DivBasisTimesScalar_impl.hpp.
void panzer::Integrator_DivBasisTimesScalar< EvalT, Traits >::postRegistrationSetup | ( | typename Traits::SetupData | d, |
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 Workset s, 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 152 of file Panzer_Integrator_DivBasisTimesScalar_impl.hpp.
void panzer::Integrator_DivBasisTimesScalar< 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 361 of file Panzer_Integrator_DivBasisTimesScalar_impl.hpp.
KOKKOS_INLINE_FUNCTION void panzer::Integrator_DivBasisTimesScalar< EvalT, Traits >::operator() | ( | const FieldMultTag< NUM_FIELD_MULT > & | tag, |
const Kokkos::TeamPolicy< PHX::exec_space >::member_type & | team | ||
) | const |
Perform the integration. Main memory version.
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 ( ) and any field multipliers ( , , etc.).
[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 192 of file Panzer_Integrator_DivBasisTimesScalar_impl.hpp.
KOKKOS_INLINE_FUNCTION void panzer::Integrator_DivBasisTimesScalar< EvalT, Traits >::operator() | ( | const SharedFieldMultTag< NUM_FIELD_MULT > & | tag, |
const Kokkos::TeamPolicy< PHX::exec_space >::member_type & | team | ||
) | const |
Perform the integration. Shared memory version.
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 ( ) and any field multipliers ( , , etc.).
[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 263 of file Panzer_Integrator_DivBasisTimesScalar_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
.
ParameterList
with all the valid parameters (keys) in it. The values tied to those keys are meaningless default values. Definition at line 419 of file Panzer_Integrator_DivBasisTimesScalar_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 266 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
Definition at line 272 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
A field representing the scalar function we're integrating ( ).
Definition at line 278 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The scalar multiplier out in front of the integral ( ).
Definition at line 284 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The (possibly empty) list of fields that are multipliers out in front of the integral ( , , etc.).
Definition at line 290 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The PHX::View
representation of the (possibly empty) list of fields that are multipliers out in front of the integral ( , , etc.).
Definition at line 297 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The number of quadrature points for each cell.
Definition at line 302 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The name of the basis we're using.
Definition at line 307 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The index in the Workset
bases for our particular BasisIRLayout
name.
Definition at line 313 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
The scalar basis information necessary for integration.
Definition at line 318 of file Panzer_Integrator_DivBasisTimesScalar.hpp.
|
private |
Temporary for non-shared calculations.
Definition at line 321 of file Panzer_Integrator_DivBasisTimesScalar.hpp.