Panzer Version of the Day
Loading...
Searching...
No Matches
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
24namespace panzer {
25
26 class PointRule;
27 class CellTopologyInfo;
28 class BasisIRLayout;
29
31 Teuchos::RCP<panzer::BasisIRLayout>
32 basisIRLayout(std::string basis_type, const int basis_order, const PointRule& pt_rule);
33
35 Teuchos::RCP<panzer::BasisIRLayout>
36 basisIRLayout(const Teuchos::RCP<const PureBasis> & b, const PointRule& pt_rule);
37
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
64 Teuchos::RCP< Intrepid2::Basis<PHX::Device::execution_space,double,double> >
65 getIntrepid2Basis() const;
66
67 Teuchos::RCP<const PureBasis> getBasis() const;
68
69 void print(std::ostream & os) const;
70
71 Teuchos::RCP<const CellTopologyInfo> getCellTopologyInfo() const
72 { return cell_topo_info; }
73
74
75 public:
76
78 Teuchos::RCP<PHX::DataLayout> basis_ref;
80 Teuchos::RCP<PHX::DataLayout> basis;
82 Teuchos::RCP<PHX::DataLayout> basis_grad_ref;
84 Teuchos::RCP<PHX::DataLayout> basis_grad;
86 Teuchos::RCP<PHX::DataLayout> basis_D2_ref;
88 Teuchos::RCP<PHX::DataLayout> basis_D2;
89
91 Teuchos::RCP<PHX::DataLayout> functional;
93 Teuchos::RCP<PHX::DataLayout> functional_grad;
95 Teuchos::RCP<PHX::DataLayout> functional_D2;
96
97 private:
98 std::string basis_name_;
102
103 Teuchos::RCP<const PureBasis> basis_data_;
104
105 Teuchos::RCP<const CellTopologyInfo> cell_topo_info;
106 };
107
108 typedef std::pair<std::string,Teuchos::RCP<panzer::BasisIRLayout> > StrBasisPair;
109
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_grad
<Cell,BASIS,IP,Dim>
Teuchos::RCP< const PureBasis > basis_data_
std::string name() const
Unique key for workset indexing composed of basis name and point rule name.
std::string fieldNameD2() const
Teuchos::RCP< PHX::DataLayout > functional
<Cell,Basis>
Teuchos::RCP< const CellTopologyInfo > getCellTopologyInfo() const
BasisIRLayout(const Teuchos::RCP< const PureBasis > &b, const PointRule &int_rule)
Teuchos::RCP< const PureBasis > getBasis() const
Teuchos::RCP< const CellTopologyInfo > cell_topo_info
Teuchos::RCP< PHX::DataLayout > basis_D2
<Cell,BASIS,IP,Dim,Dim>
Teuchos::RCP< PHX::DataLayout > functional_D2
<Cell,Basis,Dim,Dim>
Teuchos::RCP< Intrepid2::Basis< PHX::Device::execution_space, double, double > > getIntrepid2Basis() const
Teuchos::RCP< PHX::DataLayout > basis_D2_ref
<BASIS,IP,Dim,Dim>
Teuchos::RCP< PHX::DataLayout > basis_grad_ref
<BASIS,IP,Dim>
std::string fieldNameD1() const
Teuchos::RCP< PHX::DataLayout > basis_ref
<BASIS,IP>
std::string fieldName() const
Teuchos::RCP< PHX::DataLayout > basis
<Cell,BASIS,IP>
void setup(const panzer::PointRule &int_rule)
void print(std::ostream &os) const
Teuchos::RCP< PHX::DataLayout > functional_grad
<Cell,Basis,Dim>
Teuchos::RCP< panzer::BasisIRLayout > basisIRLayout(std::string basis_type, const int basis_order, const PointRule &pt_rule)
Nonmember constructor.
std::pair< std::string, Teuchos::RCP< panzer::BasisIRLayout > > StrBasisPair
Simple binary comparison class to help with sorting.
bool operator()(const StrBasisPair &lhs, const StrBasisPair &rhs) const