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
Converter.h
Go to the documentation of this file.
1 #ifndef CONVERTER_H
2 #define CONVERTER_H
3 
5 #include <vector>
6 #include <string>
7 
8 namespace sierra {
9 namespace nalu {
10 
11 // Forward declarations
12 class H5IO;
13 class Converter;
14 
15 //============================================================================
22 {
23  public:
26 
27  Converter * create( const std::string & converterType ) const;
28 };
29 
30 //============================================================================
41 class Converter {
42 
43  public:
44 
45  explicit Converter( const std::string & converterType );
46 
47  virtual ~Converter() { };
48 
50  const std::string & name() const{ return name_; }
51 
54  const std::vector<std::string> & input_names() const {
55  return inputNames_;
56  }
57 
58  /* Get the number of input variables for this Converter */
59  unsigned int dimension() const { return dimension_; }
60 
67  virtual double query( const std::vector<double> &inputs ) const = 0;
68 
70  void print_summary() const;
71 
73  virtual void read_hdf5( H5IO & io );
74 
75  protected:
76 
77  // Name of the variable returned by this Converter
78  std::string name_;
79 
80  // Names of the input variables, in the order they are required
81  std::vector<std::string> inputNames_;
82 
83  // Number of input variables
84  unsigned int dimension_;
85 
86  private:
87 
88  // No copying. (Assignment not possible with abstract class.)
89  Converter( const Converter & );
90 
91  const std::string converterType_;
92 
93 };
94 
95 //============================================================================
105 class NameConverter : public Converter {
106 
107  public:
108 
109  NameConverter();
110  NameConverter( const std::string & outputName,
111  const std::string & inputName );
112 
113  virtual double query( const std::vector<double> &inputs ) const;
114 
115  private:
116  NameConverter operator=( const NameConverter & ); // No assignment
117 };
118 
119 //============================================================================
128 class ChiConverter : public Converter {
129 
130  public:
131 
132  ChiConverter();
133  /* This version is used in Atab_ConverterBuilder.C */
134  /*
135  ChiConverter( const std::string & outputName,
136  const std::string & inputZMeanName,
137  const std::string & inputZScaledVarianceMeanName,
138  const std::string & inputChiMeanName,
139  const double zStoich,
140  const HDF5Table * fChiMeanTable );
141  */
142 
143  virtual ~ChiConverter();
144 
151  virtual double query( const std::vector<double> &inputs ) const;
152 
154  virtual void read_hdf5( H5IO & io );
155 
156  private:
157  ChiConverter operator=( const ChiConverter & ); // No assignment
158 
159  double zStoich_;
161 };
162 
163 //============================================================================
171 class DeltaChiConverter : public Converter {
172 
173  public:
174 
176  /* This version is used in Atab_ConverterBuilder.C */
177  /*
178  DeltaChiConverter( const std::string & outputName,
179  const std::string & inputZMeanName,
180  const std::string & inputChiMeanName,
181  const double zStoich );
182  */
183 
184  virtual ~DeltaChiConverter();
185 
192  virtual double query( const std::vector<double> &inputs ) const;
193 
195  virtual void read_hdf5( H5IO & io );
196 
197  private:
198  DeltaChiConverter operator=( const DeltaChiConverter & ); // No assignment
199 
200  double zStoich_;
201 };
202 
203 //============================================================================
212 class GammaConverter : public Converter {
213 
214  public:
215 
216  GammaConverter();
217  /* This version is used in Atab_ConverterBuilder.C */
218  /*
219  GammaConverter( const std::string & outputName,
220  const std::vector<std::string> & inputZMeanNames,
221  const std::string & inputZScaledVarianceMeanName,
222  const std::string & inputGammaMeanName,
223  const HDF5Table * fGammaMeanTable );
224  */
225 
226  virtual ~GammaConverter();
227 
234  virtual double query( const std::vector<double> &inputs ) const;
235 
237  virtual void read_hdf5( H5IO & io );
238 
239  private:
240  GammaConverter operator=( const GammaConverter & ); // No assignment
241 
242  unsigned int numTableInputs_;
244 };
245 
246 //============================================================================
255 
256  public:
257 
259  /* This version is used in Atab_ConverterBuilder.C */
260  /*
261  DeltaGammaConverter( const std::string & outputName,
262  const std::vector<std::string> & inputZMeanName,
263  const std::string & inputGammaMeanName,
264  const std::vector<std::vector<double> > & zStoich,
265  const std::vector<double> & gammaMaxStoich );
266  */
267 
268  virtual ~DeltaGammaConverter();
269 
276  virtual double query( const std::vector<double> &inputs ) const;
277 
279  virtual void read_hdf5( H5IO & io );
280 
281  private:
282  DeltaGammaConverter operator=( const DeltaGammaConverter & ); // No assignment
283 
284  unsigned int numMixFrac_;
285  std::vector<std::vector<double> > zStoich_;
286  std::vector<double> gammaMaxStoich_;
287  mutable std::vector<double> zMean_;
288 };
289 
290 //============================================================================
301 class HStarConverter : public Converter {
302 
303  public:
304 
305  explicit HStarConverter( const bool isDelta = false );
306 
307  /* This version is used in Atab_ConverterBuilder.C */
308  /*
309  HStarConverter( const std::string & outputName,
310  const std::vector<std::string> & inputZMeanNames,
311  const std::string & inputHStarMeanName,
312  const double hStar_ref_min,
313  const std::vector<double> & hStar_stream_min,
314  const std::vector<double> & a,
315  const bool isDelta = false );
316  */
317 
318  virtual ~HStarConverter();
319 
326  virtual double query( const std::vector<double> &inputs ) const;
327 
329  virtual void read_hdf5( H5IO & io );
330 
331  private:
332  HStarConverter operator=( const HStarConverter & ); // No assignment
333 
334  void augmented_mixfrac( const std::vector<double> &mixFrac,
335  std::vector<double> & mixFracAug ) const;
336 
337  double mixture_property( const std::vector<double> & mixFracAug,
338  const std::vector<double> & streamProp ) const;
339 
340  unsigned int numMixFrac_;
341  mutable std::vector<double> zAug_; // Augmented mixture fraction buffer space
342 
344  std::vector<double> hStar_stream_min_;
345  std::vector<double> a_;
346 
347 };
348 
349 //============================================================================
350 
351 } // end nalu namespace
352 } // end sierra namespace
353 
354 #endif
const std::string converterType_
Definition: Converter.h:91
Converter * create(const std::string &converterType) const
Definition: Converter.C:19
double zStoich_
Definition: Converter.h:200
const HDF5Table * fChiMeanTable_
Definition: Converter.h:160
Calculates reference heat loss parameter.
Definition: Converter.h:254
std::vector< double > hStar_stream_min_
Definition: Converter.h:344
Definition: ABLForcingAlgorithm.C:26
virtual ~Converter()
Definition: Converter.h:47
Simple wrapper around the HDF5 library to make usage easier.
Definition: H5IO.h:57
std::vector< double > zAug_
Definition: Converter.h:341
unsigned int dimension_
Definition: Converter.h:84
Calculates reference scalar dissipation rate.
Definition: Converter.h:171
std::vector< double > a_
Definition: Converter.h:345
Does a whole bunch of nothing other than renaming variables.
Definition: Converter.h:105
Simple factory to build an empty Converter of the correct type based on its string name...
Definition: Converter.h:21
Calculates reference scalar dissipation rate.
Definition: Converter.h:128
unsigned int dimension() const
Definition: Converter.h:59
unsigned int numMixFrac_
Definition: Converter.h:340
Calculates reference heat loss parameter.
Definition: Converter.h:301
std::vector< std::string > inputNames_
Definition: Converter.h:81
unsigned int numTableInputs_
Definition: Converter.h:242
std::vector< double > zMean_
Definition: Converter.h:287
Provides arbitrary processing of input data before handing off values to a Table for interpolation...
Definition: Converter.h:41
Calculates reference heat loss parameter.
Definition: Converter.h:212
std::vector< std::vector< double > > zStoich_
Definition: Converter.h:285
unsigned int numMixFrac_
Definition: Converter.h:284
double hStar_ref_min_
Definition: Converter.h:343
ConverterFactory()
Definition: Converter.h:24
Object to manage property evaluation as a function of a set of input chemical state variables...
Definition: HDF5Table.h:49
double zStoich_
Definition: Converter.h:159
const std::string & name() const
Get the name of the variable returned by this Converter.
Definition: Converter.h:50
std::string name_
Definition: Converter.h:78
const HDF5Table * fGammaMeanTable_
Definition: Converter.h:243
const std::vector< std::string > & input_names() const
Get the list of input variables, in the order that they are to be provided to the query() call...
Definition: Converter.h:54
std::vector< double > gammaMaxStoich_
Definition: Converter.h:286
~ConverterFactory()
Definition: Converter.h:25