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
InitialConditions.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 InitialConditions_h
10 #define InitialConditions_h
11 
12 #include <Enums.h>
13 
14 // yaml for parsing..
15 #include <yaml-cpp/yaml.h>
16 
17 #include <map>
18 #include <string>
19 #include <vector>
20 
21 namespace YAML {
22  class Node;
23 }
24 
25 namespace sierra{
26 namespace nalu{
27 
28 class Realm;
29 class InitialConditions;
30 class Simulation;
31 
33  public:
34  InitialCondition(InitialConditions& ics) : initialConditions_(ics), theIcType_(UserDataType_END) {}
35 
36  virtual ~InitialCondition() {}
37 
38  InitialCondition * load(const YAML::Node & node) ;
39  Simulation *root();
40  InitialConditions *parent();
41 
42  void breadboard()
43  {
44  // nothing
45  }
46 
48 
49  std::string icName_;
50  std::vector<std::string> targetNames_;
52 };
53 
54  typedef std::vector<InitialCondition *> InitialConditionVector;
55 
57  public:
58  InitialConditions(Realm& realm) : realm_(realm) {}
59 
61  {
62  for ( size_t j_initial_condition = 0; j_initial_condition < initialConditionVector_.size(); ++j_initial_condition ) {
63  delete initialConditionVector_[j_initial_condition];
64  }
65  }
66 
68  {
69  InitialCondition tmp_initial_condition(*this);
70 
71  if(node["initial_conditions"]) {
72  const YAML::Node initial_conditions = node["initial_conditions"];
73  for ( size_t j_initial_condition = 0; j_initial_condition < initial_conditions.size(); ++j_initial_condition ) {
74  const YAML::Node initial_condition_node = initial_conditions[j_initial_condition];
75  InitialCondition* ic = tmp_initial_condition.load(initial_condition_node);
76  initialConditionVector_.push_back(ic);
77  }
78  }
79  else {
80  throw std::runtime_error("parser error InitialConditions::load");
81  }
82 
83  return this;
84  }
85 
86  void breadboard()
87  {
88  for ( size_t j_initial_condition = 0; j_initial_condition < initialConditionVector_.size(); ++j_initial_condition ) {
89  initialConditionVector_[j_initial_condition]->breadboard();
90  }
91  }
92 
93  Simulation *root();
94  Realm *parent();
95 
96  // ease of access methods to particular initial condition
97  size_t size() {return initialConditionVector_.size();}
98  InitialCondition *operator[](int i) { return initialConditionVector_[i];}
99 
101  InitialConditionVector initialConditionVector_;
102 };
103 
104 } // namespace nalu
105 } // namespace Sierra
106 
107 #endif
Definition: Simulation.h:28
Definition: ABLForcingAlgorithm.C:26
InitialConditions & initialConditions_
Definition: InitialConditions.h:47
size_t size()
Definition: InitialConditions.h:97
UserDataType
Definition: Enums.h:94
InitialConditions * load(const YAML::Node &node)
Definition: InitialConditions.h:67
Definition: InitialConditions.h:32
~InitialConditions()
Definition: InitialConditions.h:60
InitialCondition(InitialConditions &ics)
Definition: InitialConditions.h:34
void breadboard()
Definition: InitialConditions.h:42
InitialConditions(Realm &realm)
Definition: InitialConditions.h:58
InitialCondition * load(const YAML::Node &node)
this is an example of a load() method with polymorphism - the type of the node is determined from som...
Definition: InitialConditions.C:42
Definition: NaluParsing.C:400
Definition: Enums.h:98
UserDataType theIcType_
Definition: InitialConditions.h:51
Realm & realm_
Definition: InitialConditions.h:100
InitialCondition * operator[](int i)
Definition: InitialConditions.h:98
std::string icName_
Definition: InitialConditions.h:49
void breadboard()
Definition: InitialConditions.h:86
std::vector< std::string > targetNames_
Definition: InitialConditions.h:50
InitialConditionVector initialConditionVector_
Definition: InitialConditions.h:101
Tpetra::Map< LocalOrdinal, GlobalOrdinal >::node_type Node
Definition: LinearSolver.h:32
virtual ~InitialCondition()
Definition: InitialConditions.h:36
std::vector< InitialCondition * > InitialConditionVector
Definition: InitialConditions.h:54
Definition: Realm.h:82
Definition: InitialConditions.h:56