Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_BasisIRLayout.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Panzer: A partial differential equation assembly
4 // engine for strongly coupled complex multiphysics systems
5 //
6 // Copyright 2011 NTESS and the Panzer contributors.
7 // SPDX-License-Identifier: BSD-3-Clause
8 // *****************************************************************************
9 // @HEADER
10 
11 #ifndef PANZER_BASIS_HPP
12 #define PANZER_BASIS_HPP
13 
14 #include <string>
15 #include "Teuchos_RCP.hpp"
16 #include "Phalanx_DataLayout.hpp"
17 #include "Kokkos_DynRankView.hpp"
18 #include "Intrepid2_Basis.hpp"
19 
20 #include "Panzer_Dimension.hpp"
21 #include "Panzer_PureBasis.hpp"
23 
24 namespace panzer {
25 
26  class PointRule;
27  class CellTopologyInfo;
28  class BasisIRLayout;
29 
32  basisIRLayout(std::string basis_type, const int basis_order, const PointRule& pt_rule);
33 
36  basisIRLayout(const Teuchos::RCP<const PureBasis> & b, const PointRule& pt_rule);
37 
38  class BasisIRLayout {
39 
40  public:
41 
42  BasisIRLayout(std::string basis_type, const int basis_order, const PointRule& int_rule);
43  BasisIRLayout(const Teuchos::RCP<const PureBasis> & b, const PointRule& int_rule);
44 
45  void setup(const panzer::PointRule & int_rule);
46 
47  int cardinality() const;
48 
49  int numCells() const;
50 
51  int numPoints() const;
52 
53  int dimension() const;
54 
56  std::string name() const;
57 
58  std::string fieldName() const;
59 
60  std::string fieldNameD1() const;
61 
62  std::string fieldNameD2() const;
63 
65  getIntrepid2Basis() const;
66 
68 
69  void print(std::ostream & os) const;
70 
72  { return cell_topo_info; }
73 
74 
75  public:
76 
89 
96 
97  private:
98  std::string basis_name_;
102 
104 
106  };
107 
108  typedef std::pair<std::string,Teuchos::RCP<panzer::BasisIRLayout> > StrBasisPair;
109 
111  struct StrBasisComp {
112  bool operator() (const StrBasisPair & lhs, const StrBasisPair & rhs) const
113  {return lhs.first<rhs.first;}
114  };
115 
116 }
117 
118 #endif
Teuchos::RCP< PHX::DataLayout > basis_ref
&lt;BASIS,IP&gt;
Teuchos::RCP< PHX::DataLayout > basis_D2_ref
&lt;BASIS,IP,Dim,Dim&gt;
Teuchos::RCP< PHX::DataLayout > functional_D2
&lt;Cell,Basis,Dim,Dim&gt;
Teuchos::RCP< Intrepid2::Basis< PHX::Device::execution_space, double, double > > getIntrepid2Basis() const
Teuchos::RCP< const CellTopologyInfo > getCellTopologyInfo() const
BasisIRLayout(std::string basis_type, const int basis_order, const PointRule &int_rule)
void print(std::ostream &os) const
Teuchos::RCP< PHX::DataLayout > basis_grad
&lt;Cell,BASIS,IP,Dim&gt;
Teuchos::RCP< const PureBasis > getBasis() const
Teuchos::RCP< panzer::BasisIRLayout > basisIRLayout(std::string basis_type, const int basis_order, const PointRule &pt_rule)
Nonmember constructor.
std::string fieldNameD2() const
Teuchos::RCP< PHX::DataLayout > functional_grad
&lt;Cell,Basis,Dim&gt;
bool operator()(const StrBasisPair &lhs, const StrBasisPair &rhs) const
Teuchos::RCP< const CellTopologyInfo > cell_topo_info
std::string fieldName() const
Teuchos::RCP< PHX::DataLayout > basis_grad_ref
&lt;BASIS,IP,Dim&gt;
Teuchos::RCP< PHX::DataLayout > basis_D2
&lt;Cell,BASIS,IP,Dim,Dim&gt;
std::string name() const
Unique key for workset indexing composed of basis name and point rule name.
Teuchos::RCP< PHX::DataLayout > basis
&lt;Cell,BASIS,IP&gt;
std::string fieldNameD1() const
Simple binary comparison class to help with sorting.
void setup(const panzer::PointRule &int_rule)
std::pair< std::string, Teuchos::RCP< panzer::BasisIRLayout > > StrBasisPair
Teuchos::RCP< PHX::DataLayout > functional
&lt;Cell,Basis&gt;
Teuchos::RCP< const PureBasis > basis_data_