Nektar++
Public Member Functions | Static Public Member Functions | List of all members
Nektar::FieldUtils::InputModule Class Reference

Abstract base class for input modules. More...

#include <Module.h>

Inheritance diagram for Nektar::FieldUtils::InputModule:
[legend]

Public Member Functions

 InputModule (FieldSharedPtr p_m)
 
void PrintSummary ()
 Print a brief summary of information. More...
 
- Public Member Functions inherited from Nektar::FieldUtils::Module
FIELD_UTILS_EXPORT Module (FieldSharedPtr p_f)
 
virtual void Process (po::variables_map &vm)=0
 
virtual ~Module ()=default
 
virtual std::string GetModuleName ()=0
 
virtual std::string GetModuleDescription ()
 
const ConfigOptionGetConfigOption (const std::string &key) const
 
virtual ModulePriority GetModulePriority ()=0
 
FIELD_UTILS_EXPORT void RegisterConfig (std::string key, std::string value="")
 Register a configuration option with a module. More...
 
FIELD_UTILS_EXPORT void PrintConfig ()
 Print out all configuration options for a module. More...
 
FIELD_UTILS_EXPORT void SetDefaults ()
 Sets default configuration options for those which have not been set. More...
 
FIELD_UTILS_EXPORT void AddFile (std::string fileType, std::string fileName)
 
FIELD_UTILS_EXPORT void EvaluateTriFieldAtEquiSpacedPts (LocalRegions::ExpansionSharedPtr &exp, const Array< OneD, const NekDouble > &infield, Array< OneD, NekDouble > &outfield)
 

Static Public Member Functions

static FIELD_UTILS_EXPORT std::string GuessFormat (std::string fileName)
 Tries to guess the format of the input file. More...
 

Additional Inherited Members

- Public Attributes inherited from Nektar::FieldUtils::Module
FieldSharedPtr m_f
 Field object. More...
 
- Protected Member Functions inherited from Nektar::FieldUtils::Module
 Module ()
 
- Protected Attributes inherited from Nektar::FieldUtils::Module
std::map< std::string, ConfigOptionm_config
 List of configuration values. More...
 
std::set< std::string > m_allowedFiles
 List of allowed file formats. More...
 

Detailed Description

Abstract base class for input modules.

Input modules should read the contents of #fldFile in the Process() function and populate the members of #m. Typically any given module should populate Mesh::expDim, Mesh::spaceDim, Mesh::node and Mesh::element, then call the protected ProcessX functions to generate edges, faces, etc.

Definition at line 250 of file Module.h.

Constructor & Destructor Documentation

◆ InputModule()

Nektar::FieldUtils::InputModule::InputModule ( FieldSharedPtr  p_m)

Definition at line 63 of file Module.cpp.

63  : Module(m)
64 {
65  m_config["infile"] = ConfigOption(false, "", "Input filename.");
66 }
std::map< std::string, ConfigOption > m_config
List of configuration values.
Definition: Module.h:233

References Nektar::FieldUtils::Module::m_config.

Member Function Documentation

◆ GuessFormat()

string Nektar::FieldUtils::InputModule::GuessFormat ( std::string  fileName)
static

Tries to guess the format of the input file.

Definition at line 164 of file Module.cpp.

165 {
166  // Read first 64 bytes of data, assuming input is this long.
167  ifstream inFile(filename.c_str(), ios::binary);
168  vector<char> data(64, 0);
169  inFile.read(&data[0], 64);
170 
171  string check(&data[0], 64);
172 
173  // Nek5000 format: first four characters are: #std
174  if (check.compare(0, 4, "#std") == 0)
175  {
176  inFile.close();
177  return "fld5000";
178  }
179 
180  // Semtex format: first line should contain the string "Session" at
181  // character 27.
182  if (check.compare(26, 7, "Session") == 0)
183  {
184  inFile.close();
185  return "fldsem";
186  }
187 
188  // Otherwise don't really know -- try to guess from file extension.
189  inFile.close();
190  return "";
191 }

◆ PrintSummary()

void Nektar::FieldUtils::InputModule::PrintSummary ( )

Print a brief summary of information.

Definition at line 196 of file Module.cpp.

197 {
198  cout << "Field size = " << m_f->m_data[0].size() * sizeof(NekDouble)
199  << endl;
200 }
FieldSharedPtr m_f
Field object.
Definition: Module.h:230
double NekDouble

References Nektar::FieldUtils::Module::m_f.