Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_Workset_Builder_decl.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_Workset_Builder_hpp__
12 #define __Panzer_Workset_Builder_hpp__
13 
14 #include <vector>
15 #include <map>
16 
17 #include "Teuchos_RCP.hpp"
18 
19 #include "PanzerDiscFE_config.hpp"
20 #include "Panzer_WorksetNeeds.hpp"
21 
22 namespace panzer {
23 
24  class Workset;
25  class WorksetDetails;
26 
27  template<typename ArrayT>
29  buildWorksets(const WorksetNeeds & needs,
30  const std::string & elementBlock,
31  const std::vector<std::size_t>& local_cell_ids,
32  const ArrayT& node_coordinates);
33 
34  template<typename ArrayT>
36  buildBCWorkset(const WorksetNeeds & needs,
37  const std::string & elementBlock,
38  const std::vector<std::size_t>& local_cell_ids,
39  const std::vector<std::size_t>& local_side_ids,
40  const ArrayT& node_coordinates,
41  const bool populate_value_arrays = true);
42 
43  template<typename ArrayT>
45  buildBCWorkset(const WorksetNeeds & needs_a,
46  const std::string & blockid_a,
47  const std::vector<std::size_t>& local_cell_ids_a,
48  const std::vector<std::size_t>& local_side_ids_a,
49  const ArrayT& node_coordinates_a,
50  const panzer::WorksetNeeds & needs_b,
51  const std::string & blockid_b,
52  const std::vector<std::size_t>& local_cell_ids_b,
53  const std::vector<std::size_t>& local_side_ids_b,
54  const ArrayT& node_coordinates_b);
55 
62  template<typename ArrayT>
64  buildEdgeWorksets(const WorksetNeeds & needs_a,
65  const std::string & eblock_a,
66  const std::vector<std::size_t>& local_cell_ids_a,
67  const std::vector<std::size_t>& local_side_ids_a,
68  const ArrayT& node_coordinates_a,
69  const WorksetNeeds & needs_b,
70  const std::string & eblock_b,
71  const std::vector<std::size_t>& local_cell_ids_b,
72  const std::vector<std::size_t>& local_side_ids_b,
73  const ArrayT& node_coordinates_b);
74 
75  template<typename ArrayT>
76  std::vector<Workset>::iterator
77  buildEdgeWorksets(const std::vector<std::size_t> & cell_indices,
78  const WorksetNeeds & needs_a,
79  const std::string & eblock_a,
80  const std::vector<std::size_t>& local_cell_ids_a,
81  const std::vector<std::size_t>& local_side_ids_a,
82  const ArrayT& node_coordinates_a,
83  const WorksetNeeds & needs_b,
84  const std::string & eblock_b,
85  const std::vector<std::size_t>& local_cell_ids_b,
86  const std::vector<std::size_t>& local_side_ids_b,
87  const ArrayT& node_coordinates_b,
88  std::vector<Workset>::iterator beg);
89 
106  void populateValueArrays(std::size_t num_cells,
107  bool isSide,
108  const WorksetNeeds & pb,
109  WorksetDetails & details,
110  const Teuchos::RCP<WorksetDetails> other_details = Teuchos::null);
111 }
112 
113 #endif
Teuchos::RCP< std::vector< Workset > > buildWorksets(const WorksetNeeds &needs, const std::string &elementBlock, const std::vector< std::size_t > &local_cell_ids, const ArrayT &node_coordinates)
Teuchos::RCP< std::vector< Workset > > buildEdgeWorksets(const WorksetNeeds &needs_a, const std::string &eblock_a, const std::vector< std::size_t > &local_cell_ids_a, const std::vector< std::size_t > &local_side_ids_a, const ArrayT &node_coordinates_a, const WorksetNeeds &needs_b, const std::string &eblock_b, const std::vector< std::size_t > &local_cell_ids_b, const std::vector< std::size_t > &local_side_ids_b, const ArrayT &node_coordinates_b)
Teuchos::RCP< std::map< unsigned, Workset > > buildBCWorkset(const WorksetNeeds &needs, const std::string &elementBlock, const std::vector< std::size_t > &local_cell_ids, const std::vector< std::size_t > &local_side_ids, const ArrayT &node_coordinates, const bool populate_value_arrays=true)
void populateValueArrays(std::size_t num_cells, bool isSide, const WorksetNeeds &needs, WorksetDetails &details, const Teuchos::RCP< WorksetDetails > other_details)