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
InputOutputRealm.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 InputOutputRealm_h
10 #define InputOutputRealm_h
11 
12 #include <Realm.h>
13 
14 // standard c++
15 #include <map>
16 #include <string>
17 #include <vector>
18 #include <stdint.h>
19 #include <utility>
20 
21 namespace YAML {
22 class Node;
23 }
24 
25 namespace sierra{
26 namespace nalu{
27 
28 class Realms;
29 
31 
32 public:
33 
34  InputOutputInfo() : fieldName_("na"), fieldSize_(1), fieldType_("node_rank") {}
36 
37  std::string fieldName_;
39  std::string fieldType_;
40  std::vector<std::string> targetNames_;
41 };
42 
43 class InputOutputRealm : public Realm
44 {
45 public:
46 
47  InputOutputRealm(Realms&, const YAML::Node & node);
49 
50  typedef size_t SizeType;
51 
52  // called by others; Realms
53  void load(const YAML::Node & node);
54  void breadboard() {}
55  void initialize();
56 
57  // called by others; time integrator; virtual
63  void initial_work() {}
64  double compute_adaptive_time_step() { return 1.0e8; }
65  void swap_states() {}
66  void predict_state() {}
67  void pre_timestep_work() {}
68  void output_banner() {}
70  double populate_restart( double &timeStepNm1, int &timeStepCount);
71  void populate_external_variables_from_input(const double currentTime);
72 
73  // internal calls
74  void register_io_fields();
75 
76  // hold the field information
77  std::vector<InputOutputInfo *> inputOutputFieldInfo_;
78 };
79 
80 } // namespace nalu
81 } // namespace Sierra
82 
83 #endif
int fieldSize_
Definition: InputOutputRealm.h:38
Definition: ABLForcingAlgorithm.C:26
void initialize(int N, aligned_vector &x, aligned_vector &y)
Definition: UnitTestSimdBasic.C:37
Definition: InputOutputRealm.h:43
void breadboard()
Definition: InputOutputRealm.h:54
void pre_timestep_work()
Definition: InputOutputRealm.h:67
void initial_work()
Definition: InputOutputRealm.h:63
void predict_state()
Definition: InputOutputRealm.h:66
void populate_derived_quantities()
Definition: InputOutputRealm.h:61
void swap_states()
Definition: InputOutputRealm.h:65
std::vector< std::string > targetNames_
Definition: InputOutputRealm.h:40
void output_banner()
Definition: InputOutputRealm.h:68
void populate_boundary_data()
Definition: InputOutputRealm.h:59
std::string fieldType_
Definition: InputOutputRealm.h:39
Definition: InputOutputRealm.h:30
size_t SizeType
Definition: InputOutputRealm.h:50
void boundary_data_to_state_data()
Definition: InputOutputRealm.h:60
Definition: NaluParsing.C:400
void advance_time_step()
Definition: InputOutputRealm.h:69
void populate_initial_condition()
Definition: InputOutputRealm.h:58
double compute_adaptive_time_step()
Definition: InputOutputRealm.h:64
~InputOutputInfo()
Definition: InputOutputRealm.h:35
Definition: Realms.h:35
Tpetra::Map< LocalOrdinal, GlobalOrdinal >::node_type Node
Definition: LinearSolver.h:32
std::string fieldName_
Definition: InputOutputRealm.h:37
std::vector< InputOutputInfo * > inputOutputFieldInfo_
Definition: InputOutputRealm.h:77
Definition: Realm.h:82
void evaluate_properties()
Definition: InputOutputRealm.h:62
InputOutputInfo()
Definition: InputOutputRealm.h:34