43 #include "PanzerDiscFE_config.hpp" 47 #ifdef HAVE_PANZER_EXPLICIT_INSTANTIATION 55 const std::vector<std::size_t>& local_cell_ids,
56 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates);
61 const std::string & elementBlock,
62 const std::vector<std::size_t>& local_cell_ids,
63 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates);
68 const std::vector<std::size_t>& local_cell_ids,
69 const std::vector<std::size_t>& local_side_ids,
70 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates);
75 const std::string& elementBlock,
76 const std::vector<std::size_t>& local_cell_ids,
77 const std::vector<std::size_t>& local_side_ids,
78 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates,
79 const bool populate_value_arrays);
84 const std::vector<std::size_t>&,
85 const std::vector<std::size_t>&,
86 const Kokkos::DynRankView<double,PHX::Device>&,
88 const std::vector<std::size_t>&,
89 const std::vector<std::size_t>&,
90 const Kokkos::DynRankView<double,PHX::Device>&);
95 const std::vector<std::size_t>& local_cell_ids_a,
96 const std::vector<std::size_t>& local_side_ids_a,
97 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates_a,
99 const std::vector<std::size_t>& local_cell_ids_b,
100 const std::vector<std::size_t>& local_side_ids_b,
101 const Kokkos::DynRankView<double,PHX::Device>& vertex_coordinates_b);
117 std::vector<RCP<const panzer::PureBasis> > bases;
118 std::vector<RCP<const panzer::IntegrationRule> > int_rules;
124 for(std::size_t i=0;i<needs.
int_rules.size();i++)
127 for(std::size_t i=0;i<needs.
bases.size();i++)
135 details.ir_degrees =
rcp(
new std::vector<int>(0));
136 details.basis_names =
rcp(
new std::vector<std::string>(0));
138 for(std::size_t i=0;i<int_rules.size();i++) {
140 details.ir_degrees->push_back(int_rules[i]->cubature_degree);
144 iv2->setupArrays(int_rules[i]);
146 iv2->evaluateValues(
details.cell_vertex_coordinates, other_details->
int_rules[i]->ip_coordinates);
148 iv2->evaluateValues(
details.cell_vertex_coordinates);
150 details.int_rules.push_back(iv2);
153 for(std::size_t b=0;b<bases.size();b++) {
157 std::size_t int_degree_index = std::distance(
details.ir_degrees->begin(),
158 std::find(
details.ir_degrees->begin(),
160 int_rules[i]->order()));
163 bv2->setupArrays(b_layout);
164 bv2->evaluateValues(
details.int_rules[int_degree_index]->cub_points,
165 details.int_rules[int_degree_index]->jac,
166 details.int_rules[int_degree_index]->jac_det,
167 details.int_rules[int_degree_index]->jac_inv,
168 details.int_rules[int_degree_index]->weighted_measure,
169 details.cell_vertex_coordinates);
187 ir_itr != int_rules.end(); ++ir_itr)
188 needs.
int_rules.push_back(ir_itr->second);
190 const std::map<std::string,Teuchos::RCP<panzer::PureBasis> >& bases= pb.
getBases();
192 b_itr != bases.end(); ++b_itr)
193 needs.
bases.push_back(b_itr->second);
Teuchos::RCP< std::map< unsigned, Workset > > buildBCWorkset(const PhysicsBlock &volume_pb, const std::vector< std::size_t > &local_cell_ids, const std::vector< std::size_t > &local_side_ids, const ArrayT &vertex_coordinates)
std::vector< Teuchos::RCP< const PureBasis > > bases
Object that contains information on the physics and discretization of a block of elements with the SA...
bool nonnull(const std::shared_ptr< T > &p)
std::vector< Teuchos::RCP< const IntegrationRule > > int_rules
Teuchos::RCP< const shards::CellTopology > getCellTopology() const
Get CellTopology for the base cell.
Teuchos::RCP< std::vector< Workset > > buildEdgeWorksets(const PhysicsBlock &pb_a, const std::vector< std::size_t > &local_cell_ids_a, const std::vector< std::size_t > &local_side_ids_a, const ArrayT &vertex_coordinates_a, const PhysicsBlock &pb_b, const std::vector< std::size_t > &local_cell_ids_b, const std::vector< std::size_t > &local_side_ids_b, const ArrayT &vertex_coordinates_b)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Data for determining cell topology and dimensionality.
std::vector< Teuchos::RCP< panzer::IntegrationValues2< double > > > int_rules
Teuchos::RCP< std::vector< Workset > > buildWorksets(const PhysicsBlock &pb, const std::vector< std::size_t > &local_cell_ids, const ArrayT &vertex_coordinates)
const panzer::CellData & cellData() const
const std::map< std::string, Teuchos::RCP< panzer::PureBasis > > & getBases() const
Returns the unique set of bases, key is the unique panzer::PureBasis::name() of the basis...
std::string name() const
Unique key for workset indexing composed of basis name and point rule name.
Description and data layouts associated with a particular basis.
void populateValueArrays(std::size_t num_cells, bool isSide, const WorksetNeeds &needs, WorksetDetails &details, const Teuchos::RCP< WorksetDetails > other_details)
const std::map< int, Teuchos::RCP< panzer::IntegrationRule > > & getIntegrationRules() const
Returns the unique set of point rules, key is the unique panzer::PointRule::name() ...