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
NonConformalInfo.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 
9 #ifndef NonConformalInfo_h
10 #define NonConformalInfo_h
11 
12 //==============================================================================
13 // Includes and forwards
14 //==============================================================================
15 
17 
18 // stk
19 #include <stk_mesh/base/Part.hpp>
20 #include <stk_mesh/base/Ghosting.hpp>
21 
22 #include <stk_search/BoundingBox.hpp>
23 #include <stk_search/IdentProc.hpp>
24 #include <stk_search/SearchMethod.hpp>
25 
26 #include <vector>
27 #include <map>
28 
29 namespace stk {
30 namespace mesh {
31 typedef std::vector<Part *> PartVector;
32 }
33 }
34 
35 namespace sierra {
36 namespace nalu {
37 
38 class Realm;
39 class DgInfo;
40 
41 typedef stk::search::IdentProc<uint64_t,int> theKey;
42 typedef stk::search::Point<double> Point;
43 typedef stk::search::Box<double> Box;
44 typedef std::pair<Point,theKey> boundingPoint;
45 typedef std::pair<Box,theKey> boundingElementBox;
46 
47 //=============================================================================
48 // Class Definition
49 //=============================================================================
50 // NonConformalInfo
51 //=============================================================================
59 //=============================================================================
61 
62  public:
63 
64  // constructor and destructor
66  Realm & realm,
67  const stk::mesh::PartVector currentPartVec,
68  const stk::mesh::PartVector opposingPartVec,
69  const double expandBoxPercentage,
70  const std::string &searchMethodName,
71  const bool clipIsoParametricCoords,
72  const double searchTolerance,
73  const std::string debugName);
74 
76 
77  // general method to delete "new" entries within info vec
78  void delete_info_vec();
79 
80  void initialize();
81  void construct_dgInfo_state();
82  void find_possible_face_elements();
83  void set_best_x();
84  void determine_elems_to_ghost();
85  void complete_search();
86  void provide_diagnosis();
87  size_t error_check();
88 
90  const std::string name_;
91 
92  // master slave parts; slave part can be subsetted while master is not..
95 
96  /* expand search box */
98 
99  stk::search::SearchMethod searchMethod_;
100 
101  /* clip isoparametric coordinates if they are out of bounds */
103 
104  /* allow for some finite search tolereance for bounding box */
105  const double searchTolerance_;
106 
107  /* does the realm have mesh motion */
108  const bool meshMotion_;
109 
110  /* bounding box data types for stk_search */
111  std::vector<boundingPoint> boundingPointVec_;
112  std::vector<boundingElementBox> boundingFaceElementBoxVec_;
113 
114  /* vector of DgInfo */
115  std::vector<std::vector<DgInfo *> > dgInfoVec_;
116 
117  /* save off product of search */
118  std::vector<std::pair<theKey, theKey> > searchKeyPair_;
119 
120 };
121 
122 } // end sierra namespace
123 } // end Acon namespace
124 
125 #endif
std::pair< Point, theKey > boundingPoint
Definition: OversetManager.h:34
std::vector< boundingPoint > boundingPointVec_
Definition: NonConformalInfo.h:111
std::vector< Part * > PartVector
Definition: Algorithm.h:16
const std::string name_
Definition: NonConformalInfo.h:90
Definition: ABLForcingAlgorithm.C:26
void initialize(int N, aligned_vector &x, aligned_vector &y)
Definition: UnitTestSimdBasic.C:37
double expandBoxPercentage_
Definition: NonConformalInfo.h:97
std::vector< boundingElementBox > boundingFaceElementBoxVec_
Definition: NonConformalInfo.h:112
const stk::mesh::PartVector opposingPartVec_
Definition: NonConformalInfo.h:94
Definition: Algorithm.h:14
const stk::mesh::PartVector currentPartVec_
Definition: NonConformalInfo.h:93
stk::search::Point< double > Point
Definition: OversetManager.h:32
Realm & realm_
Definition: NonConformalInfo.h:89
std::vector< std::pair< theKey, theKey > > searchKeyPair_
Definition: NonConformalInfo.h:118
const double searchTolerance_
Definition: NonConformalInfo.h:105
std::pair< Box, theKey > boundingElementBox
Definition: OversetManager.h:35
std::vector< std::vector< DgInfo * > > dgInfoVec_
Definition: NonConformalInfo.h:115
Definition: Realm.h:82
stk::search::SearchMethod searchMethod_
Definition: NonConformalInfo.h:99
stk::search::IdentProc< uint64_t, int > theKey
Definition: OversetManager.h:31
const bool clipIsoParametricCoords_
Definition: NonConformalInfo.h:102
stk::search::Box< double > Box
Definition: OversetManager.h:33
Definition: NonConformalInfo.h:60
const bool meshMotion_
Definition: NonConformalInfo.h:108