Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_IntegrationRule.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_INTEGRATION_RULE_HPP
12 #define PANZER_INTEGRATION_RULE_HPP
13 
14 #include "Teuchos_RCP.hpp"
15 //#include "Teuchos_ArrayRCP.hpp"
16 #include "Shards_CellTopology.hpp"
17 //#include "Phalanx_DataLayout.hpp"
18 
19 #include "Panzer_PointRule.hpp"
20 //
21 //#include "Intrepid2_DefaultCubatureFactory.hpp"
22 //#include "Intrepid2_CubatureControlVolume.hpp"
23 //#include "Intrepid2_CubatureControlVolumeSide.hpp"
24 //#include "Intrepid2_CubatureControlVolumeBoundary.hpp"
25 #include "Kokkos_DynRankView.hpp"
27 
28 #include <ostream>
29 #include <string>
30 
31 namespace panzer {
32 
33  class CellData;
34 
41  public:
42 
44  //TEUCHOS_DEPRECATED
45  IntegrationRule(int cubature_degree, const panzer::CellData& cell_data);
46 
47  //TEUCHOS_DEPRECATED
48  IntegrationRule(const panzer::CellData& cell_data, const std::string & cv_type);
49 
51  const Teuchos::RCP<const shards::CellTopology> & cell_topology,
52  const int num_cells,
53  const int num_faces=-1);
54 
55  // TODO: Move to protected
56  void setup(int cubature_degree, const panzer::CellData& cell_data);
57 
58  // TODO: Move to protected
59  void setup_cv(const panzer::CellData& cell_data, std::string cv_type);
60 
62  // Use getOrder() from base class
63  //TEUCHOS_DEPRECATED
64  int order() const;
65 
66  // Use _cubature_order if inside class, use getOrder() if outside
67  //TEUCHOS_DEPRECATED
69 
70  // Use _type if inside class, use getType() if outside class
71  //TEUCHOS_DEPRECATED
72  std::string cv_type;
73 
75  virtual void print(std::ostream & os);
76 
78  void referenceCoordinates(Kokkos::DynRankView<double,PHX::Device> & container);
79 
81  int getPointOffset(const int subcell_index) const;
82 
83  protected:
84 
87  const int num_cells,
88  const int num_faces);
89 
90  std::vector<int> _point_offsets;
91 
92  private:
93 
94  };
95 
96 }
97 
98 #endif
void referenceCoordinates(Kokkos::DynRankView< double, PHX::Device > &container)
Construct an array containing the reference coordinates.
void setup(int cubature_degree, const panzer::CellData &cell_data)
int getPointOffset(const int subcell_index) const
Returns the integration point offset for a given subcell_index (i.e. local face index) ...
Data for determining cell topology and dimensionality.
void setup_cv(const panzer::CellData &cell_data, std::string cv_type)
void setup_surface(const Teuchos::RCP< const shards::CellTopology > &cell_topology, const int num_cells, const int num_faces)
Setup a surface integration.
virtual void print(std::ostream &os)
print information about the integration rule
IntegrationRule(int cubature_degree, const panzer::CellData &cell_data)
if side = -1 then we use the cell volume integration rule.
int order() const
Returns the order of integration (cubature degree in intrepid lingo)