Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
evaluators
Panzer_Integrator_GradBasisTimesScalar_decl.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Panzer: A partial differential equation assembly
5
// engine for strongly coupled complex multiphysics systems
6
// Copyright (2011) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Roger P. Pawlowski (rppawlo@sandia.gov) and
39
// Eric C. Cyr (eccyr@sandia.gov)
40
// ***********************************************************************
41
// @HEADER
42
43
#ifndef PANZER_EVALUATOR_GRADBASISTIMESSCALAR_DECL_HPP
44
#define PANZER_EVALUATOR_GRADBASISTIMESSCALAR_DECL_HPP
45
47
//
48
// Include Files
49
//
51
52
// C++
53
#include <string>
54
55
// Kokkos
56
#include "Kokkos_DynRankView.hpp"
57
58
// Panzer
59
#include "
Panzer_EvaluatorStyle.hpp
"
60
#include "
Panzer_Evaluator_WithBaseImpl.hpp
"
61
62
// Phalanx
63
#include "Phalanx_Evaluator_Derived.hpp"
64
#include "Phalanx_MDField.hpp"
65
77
namespace
panzer
78
{
79
template
<
typename
EvalT,
typename
Traits>
80
class
Integrator_GradBasisTimesScalar
81
:
82
public
panzer::EvaluatorWithBaseImpl
<Traits>,
83
public
PHX::EvaluatorDerived<EvalT, Traits>
84
{
85
public
:
86
123
Integrator_GradBasisTimesScalar
(
124
const
panzer::EvaluatorStyle
& evalStyle,
125
const
std::vector<std::string>& resNames,
126
const
std::string& scalar,
127
const
panzer::BasisIRLayout
& basis,
128
const
panzer::IntegrationRule
& ir,
129
const
double
& multiplier = 1,
130
const
std::vector<std::string>& fmNames =
131
std::vector<std::string>());
132
176
Integrator_GradBasisTimesScalar
(
177
const
Teuchos::ParameterList& p);
178
189
void
190
postRegistrationSetup
(
191
typename
Traits::SetupData
d,
192
PHX::FieldManager<Traits>
& fm);
193
203
void
204
evaluateFields
(
205
typename
Traits::EvalData
d);
206
211
template
<
int
NUM_FIELD_MULT>
212
struct
FieldMultTag
213
{
214
};
// end of struct FieldMultTag
215
232
template
<
int
NUM_FIELD_MULT>
233
KOKKOS_INLINE_FUNCTION
234
void
235
operator()
(
236
const
FieldMultTag<NUM_FIELD_MULT>
& tag,
237
const
std::size_t& cell)
const
;
238
239
private
:
240
251
Teuchos::RCP<Teuchos::ParameterList>
252
getValidParameters
()
const
;
253
257
using
ScalarT
=
typename
EvalT::ScalarT;
258
267
const
panzer::EvaluatorStyle
evalStyle_
;
268
273
std::vector<PHX::MDField<ScalarT,Cell,BASIS>>
fields_host_
;
274
using
InnerView
= PHX::UnmanagedView<ScalarT**>;
275
using
OuterView
= PHX::View<InnerView*>;
276
OuterView
fields_
;
277
282
PHX::MDField<const ScalarT, Cell, IP>
scalar_
;
283
288
ScalarT
multiplier_
;
289
294
std::vector<PHX::MDField<const ScalarT, Cell, IP>>
fieldMults_
;
295
301
PHX::View<PHX::UnmanagedView<const ScalarT**>*>
kokkosFieldMults_
;
302
306
int
numDims_
;
307
311
std::string
basisName_
;
312
317
std::size_t
basisIndex_
;
318
323
PHX::MDField<double,
panzer::Cell
,
panzer::BASIS
,
panzer::IP
,
324
panzer::Dim
>
basis_
;
325
326
};
// end of class Integrator_GradBasisTimesScalar
327
328
}
// end of namespace panzer
329
330
#endif
// PANZER_EVALUATOR_GRADBASISTIMESSCALAR_DECL_HPP
Panzer_EvaluatorStyle.hpp
Panzer_Evaluator_WithBaseImpl.hpp
PHX::FieldManager
Definition
Panzer_BCStrategy_Base.hpp:53
panzer::BasisIRLayout
Definition
Panzer_BasisIRLayout.hpp:71
panzer::EvaluatorWithBaseImpl
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
Definition
Panzer_Evaluator_WithBaseImpl.hpp:56
panzer::IntegrationRule
Definition
Panzer_IntegrationRule.hpp:73
panzer::Integrator_GradBasisTimesScalar::basisName_
std::string basisName_
The name of the basis we're using.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:311
panzer::Integrator_GradBasisTimesScalar::fields_host_
std::vector< PHX::MDField< ScalarT, Cell, BASIS > > fields_host_
The fields to which we'll contribute, or in which we'll store, the result of computing this integral.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:273
panzer::Integrator_GradBasisTimesScalar::OuterView
PHX::View< InnerView * > OuterView
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:275
panzer::Integrator_GradBasisTimesScalar::basisIndex_
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:317
panzer::Integrator_GradBasisTimesScalar::numDims_
int numDims_
The number of dimensions associated with the gradient.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:306
panzer::Integrator_GradBasisTimesScalar::scalar_
PHX::MDField< const ScalarT, Cell, IP > scalar_
A field representing the scalar function we're integrating ( ).
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:282
panzer::Integrator_GradBasisTimesScalar::Integrator_GradBasisTimesScalar
Integrator_GradBasisTimesScalar(const panzer::EvaluatorStyle &evalStyle, const std::vector< std::string > &resNames, const std::string &scalar, const panzer::BasisIRLayout &basis, const panzer::IntegrationRule &ir, const double &multiplier=1, const std::vector< std::string > &fmNames=std::vector< std::string >())
Main Constructor.
Definition
Panzer_Integrator_GradBasisTimesScalar_impl.hpp:72
panzer::Integrator_GradBasisTimesScalar::ScalarT
typename EvalT::ScalarT ScalarT
The scalar type.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:257
panzer::Integrator_GradBasisTimesScalar::multiplier_
ScalarT multiplier_
The scalar multiplier out in front of the integral ( ).
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:288
panzer::Integrator_GradBasisTimesScalar::InnerView
PHX::UnmanagedView< ScalarT ** > InnerView
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:274
panzer::Integrator_GradBasisTimesScalar::operator()
KOKKOS_INLINE_FUNCTION void operator()(const FieldMultTag< NUM_FIELD_MULT > &tag, const std::size_t &cell) const
Perform the integration.
panzer::Integrator_GradBasisTimesScalar::fields_
OuterView fields_
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:276
panzer::Integrator_GradBasisTimesScalar::postRegistrationSetup
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Post-Registration Setup.
Definition
Panzer_Integrator_GradBasisTimesScalar_impl.hpp:199
panzer::Integrator_GradBasisTimesScalar::fieldMults_
std::vector< PHX::MDField< const ScalarT, Cell, IP > > fieldMults_
The scalar multiplier out in front of the integral ( ).
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:294
panzer::Integrator_GradBasisTimesScalar::kokkosFieldMults_
PHX::View< PHX::UnmanagedView< const ScalarT ** > * > kokkosFieldMults_
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front...
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:301
panzer::Integrator_GradBasisTimesScalar::basis_
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim > basis_
The gradient vector basis information necessary for integration.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:324
panzer::Integrator_GradBasisTimesScalar::getValidParameters
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
Get Valid Parameters.
Definition
Panzer_Integrator_GradBasisTimesScalar_impl.hpp:325
panzer::Integrator_GradBasisTimesScalar::evaluateFields
void evaluateFields(typename Traits::EvalData d)
Evaluate Fields.
Definition
Panzer_Integrator_GradBasisTimesScalar_impl.hpp:297
panzer::Integrator_GradBasisTimesScalar::evalStyle_
const panzer::EvaluatorStyle evalStyle_
An enum determining the behavior of this Evaluator.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:267
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
panzer::EvaluatorStyle
EvaluatorStyle
An indication of how an Evaluator will behave.
Definition
Panzer_EvaluatorStyle.hpp:55
panzer::BASIS
Definition
Panzer_Dimension.hpp:76
panzer::Cell
Definition
Panzer_Dimension.hpp:79
panzer::Dim
Definition
Panzer_Dimension.hpp:74
panzer::IP
Definition
Panzer_Dimension.hpp:75
panzer::Integrator_GradBasisTimesScalar::FieldMultTag
This empty struct allows us to optimize operator()() depending on the number of field multipliers.
Definition
Panzer_Integrator_GradBasisTimesScalar_decl.hpp:213
panzer::Traits::EvalData
const panzer::Workset & EvalData
Definition
Panzer_Traits.hpp:129
panzer::Traits::SetupData
const SD & SetupData
Definition
Panzer_Traits.hpp:127
Generated by
1.17.0