Nalu
Nalu: a generalized unstructured massively parallel low Mach flow code designed to support a variety of energy applications of interest (most notably Wind ECP) built on the Sierra Toolkit and Trilinos solver Tpetra/Epetra stack. The open source BSD, clause 3 license model has been chosen for the code base. See LICENSE for more information. http://NaluCFD.org
HexNElementDescription.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------*/
2 /* Copyright 2014 Sandia Corporation. */
3 /* This software is released under the license detailed */
4 /* in the file, LICENSE, which is located in the top-level nalu */
5 /* directory structure */
6 /*------------------------------------------------------------------------*/
7 
8 #ifndef HexNElementDescription_h
9 #define HexNElementDescription_h
10 
11 #include <stddef.h>
12 #include <map>
13 #include <memory>
14 #include <vector>
15 #include "ElementDescription.h"
16 
17 namespace sierra {
18 namespace nalu {
19 
21 {
22 public:
23  HexNElementDescription(std::vector<double> nodeLocs);
24 private:
26  std::vector<ordinal_type> edge_node_ordinals();
28  std::vector<ordinal_type> face_node_ordinals();
30  std::vector<ordinal_type> volume_node_ordinals();
34 
35  std::pair<ordinal_type, ordinal_type> get_edge_offsets(
36  ordinal_type i,
37  ordinal_type j,
38  ordinal_type k,
40  edge_ordinal
41  );
42 
43  std::pair<ordinal_type, ordinal_type> get_face_offsets(
44  ordinal_type i,
45  ordinal_type j,
46  ordinal_type k,
47  ordinal_type face_ordinal
48  );
49  void set_base_node_maps();
54  std::vector<ordinal_type>& inmap(ordinal_type j) { return inverseNodeMap.at(j); };
55 };
56 
57 } // namespace nalu
58 } // namespace Sierra
59 
60 #endif
Definition: ElementDescription.h:27
AddedNodeLocationsMap nodeLocs
Definition: ElementDescription.h:77
Definition: ABLForcingAlgorithm.C:26
void set_tensor_product_node_mappings()
Definition: HexNElementDescription.C:497
std::pair< ordinal_type, ordinal_type > get_edge_offsets(ordinal_type i, ordinal_type j, ordinal_type k, ordinal_type edge_ordinal)
Definition: HexNElementDescription.C:240
int nodes1D
Definition: ElementDescription.h:61
void set_face_node_connectivities()
Definition: HexNElementDescription.C:202
std::vector< ordinal_type > volume_node_ordinals()
Definition: HexNElementDescription.C:221
void set_subelement_connectivites()
Definition: HexNElementDescription.C:562
void set_volume_node_connectivities()
Definition: HexNElementDescription.C:233
std::pair< ordinal_type, ordinal_type > get_face_offsets(ordinal_type i, ordinal_type j, ordinal_type k, ordinal_type face_ordinal)
Definition: HexNElementDescription.C:367
std::vector< ordinal_type > nodeMap
Definition: ElementDescription.h:82
std::vector< std::vector< ordinal_type > > inverseNodeMap
Definition: ElementDescription.h:89
void set_boundary_node_mappings()
Definition: HexNElementDescription.C:475
ordinal_type & nmap(ordinal_type i, ordinal_type j, ordinal_type k)
Definition: HexNElementDescription.h:53
Definition: HexNElementDescription.h:20
void set_base_node_maps()
Definition: HexNElementDescription.C:460
std::vector< ordinal_type > edge_node_ordinals()
Definition: HexNElementDescription.C:162
std::vector< ordinal_type > face_node_ordinals()
Definition: HexNElementDescription.C:190
void set_edge_node_connectivities()
Definition: HexNElementDescription.C:174
void set_isoparametric_coordinates()
Definition: HexNElementDescription.C:549
HexNElementDescription(std::vector< double > nodeLocs)
Definition: HexNElementDescription.C:101
void set_side_node_ordinals()
Definition: HexNElementDescription.C:585
std::vector< ordinal_type > & inmap(ordinal_type j)
Definition: HexNElementDescription.h:54
int ordinal_type
Definition: ElementDescription.h:25