35 #ifndef NEKTAR_LIB_UTILITIES_SESSIONREADER_H 36 #define NEKTAR_LIB_UTILITIES_SESSIONREADER_H 47 #include <boost/algorithm/string/case_conv.hpp> 48 #include <boost/program_options/variables_map.hpp> 55 namespace LibUtilities
62 typedef std::map<std::string, std::string>
TagMap;
76 typedef std::map<std::string, int>
EnumMap;
109 typedef std::map<std::string, FunctionVariableMap >
133 int argc,
char *argv[])
153 std::vector<std::string> &pFilenames,
158 ::AllocateSharedPtr(argc, argv, pFilenames, pComm);
165 const std::vector<std::string> &pFilenames,
172 const std::vector<std::string> &filenames =
173 std::vector<std::string>());
179 const std::string& pPath);
182 const std::string& pPath)
const;
185 &GetFilenames()
const;
200 const std::string &
name)
const;
203 const std::string &pName)
const;
206 const std::string &name,
210 const std::string &name,
212 const int &def)
const;
215 const std::string &name,
219 const std::string &name,
224 const std::string &name,
228 const std::string &name,
235 const std::string &name)
const;
238 const std::string &pProperty)
const;
241 const std::string &pProperty,
const std::string &pValue);
244 inline const T GetSolverInfoAsEnum(
const std::string &pName)
const;
247 inline const T GetValueAsEnum(
const std::string &pName,
248 const std::string &vValue)
const;
251 const std::string &name,
253 const std::string &def =
"")
const;
256 const std::string &name,
257 const std::string &trueval,
259 const bool &def =
false)
const;
262 const std::string &name,
263 const std::string &trueval)
const;
266 inline bool MatchSolverInfoAsEnum(
267 const std::string &name,
268 const T &trueval)
const;
276 RegisterDefaultSolverInfo(
277 const std::string &pName,
278 const std::string &pValue);
283 const std::string &variable,
284 const std::string &property)
const;
287 const std::string &variable,
288 const std::string &property)
const;
295 const std::string &name)
const;
298 const std::string &name,
300 const std::string &def =
"")
const;
303 const std::string &name,
305 const bool &def =
false)
const;
308 const std::string &name,
313 const std::string &name,
314 const std::string &trueval,
316 const bool &def =
false)
const;
321 const unsigned int &idx)
const;
323 const unsigned int &idx,
324 std::string newname);
332 const std::string &name)
const;
335 const std::string &name,
336 const std::string &variable,
337 const int pDomain = 0)
const;
340 const std::string &name,
341 const std::string &variable,
342 const int pDomain = 0)
const;
345 const std::string &name,
346 const unsigned int &var,
347 const int pDomain = 0)
const;
350 const std::string &name,
351 const std::string &variable,
352 const int pDomain = 0)
const;
355 const std::string &pName,
356 const unsigned int &pVar,
357 const int pDomain = 0)
const;
360 const std::string &name,
361 const std::string &variable,
362 const int pDomain = 0)
const;
365 const std::string &name,
366 const unsigned int &var,
367 const int pDomain = 0)
const;
371 const std::string &name,
372 const std::string &variable,
373 const int pDomain = 0)
const;
382 const std::string& pName)
const;
385 const std::string& pName,
386 const std::string& pValue);
389 const std::string& pName)
const;
397 const std::string& pName)
const;
399 template <
typename T>
401 const std::string& pName)
const 403 return m_cmdLineOptions.find(pName)->second.as<T>();
407 RegisterCmdLineArgument(
408 const std::string &pName,
409 const std::string &pShortName,
410 const std::string &pDescription);
414 const std::string &pName,
415 const std::string &pShortName,
416 const std::string &pDescription);
473 std::vector<std::string> ParseCommandLineArguments(
474 int argc,
char *argv[]);
477 std::string ParseSessionName(std::vector<std::string> &filenames);
481 const std::string &pFilename,
482 TiXmlDocument* pDoc)
const;
485 const std::vector<std::string> &pFilenames)
const;
503 TiXmlElement *conditions);
519 const std::string &line,
530 const std::string &
name,
const T &trueval)
const 532 return (GetSolverInfoAsEnum<T>(name) == trueval);
541 const std::string &pName)
const 543 std::string vName = boost::to_upper_copy(pName);
545 "Solver info '" + pName +
"' not defined.");
547 std::string vValue = GetSolverInfo(vName);
548 auto x = GetSolverInfoEnums().find(vName);
549 ASSERTL0(x != GetSolverInfoEnums().end(),
550 "Enum for SolverInfo property '" + pName +
"' not found.");
552 auto y = x->second.find(vValue);
554 "Value of SolverInfo property '" + pName +
567 const std::string &pName,
568 const std::string &pValue)
const 570 std::string vName = boost::to_upper_copy(pName);
572 auto x = GetSolverInfoEnums().find(vName);
573 ASSERTL0(x != GetSolverInfoEnums().end(),
574 "Enum for property '" + pName +
"' not found.");
576 auto y = x->second.find(pValue);
578 "Value of property '" + pValue +
"' is invalid.");
610 std::string pEnum, std::string pString,
int pEnumValue)
612 std::string vEnum = boost::to_upper_copy(pEnum);
613 auto x = GetSolverInfoEnums().find(vEnum);
615 if (x == GetSolverInfoEnums().end())
617 GetSolverInfoEnums()[vEnum] =
EnumMap();
618 x = GetSolverInfoEnums().find(vEnum);
621 x->second[pString] = pEnumValue;
644 const std::string &pName,
645 const std::string &pValue)
647 std::string vName = boost::to_upper_copy(pName);
648 GetSolverInfoDefaults()[vName] = pValue;
657 const std::string &pName,
658 const std::string &pShortName,
659 const std::string &pDescription)
661 ASSERTL0(!pName.empty(),
"Empty name for cmdline argument.");
664 x.description = pDescription;
666 GetCmdLineArgMap()[pName] = x;
675 const std::string &pName,
676 const std::string &pShortName,
677 const std::string &pDescription)
679 ASSERTL0(!pName.empty(),
"Empty name for cmdline argument.");
682 x.description = pDescription;
684 GetCmdLineArgMap()[pName] = x;
ParameterMap m_parameters
Parameters.
std::map< std::string, std::string > SolverInfoMap
static std::string RegisterCmdLineFlag(const std::string &pName, const std::string &pShortName, const std::string &pDescription)
Registers a command-line flag with the session reader.
#define ASSERTL0(condition, msg)
std::map< std::string, int > EnumMap
const T GetValueAsEnum(const std::string &pName, const std::string &vValue) const
Returns the value of the specified property and value as enum.
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.
std::map< std::string, FunctionVariableMap > FunctionMap
static void Finalise(gs_data *pGsh)
Deallocates the GSLib mapping data.
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
InterpreterSharedPtr m_interpreter
Interpreter instance.
std::map< std::pair< std::string, int >, FunctionVariableDefinition > FunctionVariableMap
SolverInfoMap m_solverInfo
Solver information properties.
static std::string RegisterCmdLineArgument(const std::string &pName, const std::string &pShortName, const std::string &pDescription)
Registers a command-line argument with the session reader.
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
ExpressionMap m_expressions
Expressions.
std::map< std::string, std::string > TagMap
std::map< std::string, std::string > GloSysInfoMap
CommSharedPtr m_comm
Communication object.
EquationSharedPtr m_expression
const char *const FunctionTypeMap[]
static SessionReaderSharedPtr CreateInstance(int argc, char *argv[])
Creates an instance of the SessionReader class.
std::map< std::string, std::string > GeometricInfoMap
std::map< std::string, std::string > FilterParams
std::vector< std::string > m_filenames
Filenames.
VariableList m_variables
Variables.
bool m_verbose
Be verbose.
bool MatchSolverInfoAsEnum(const std::string &name, const T &trueval) const
Check if the value of a solver info property matches.
const T GetSolverInfoAsEnum(const std::string &pName) const
Returns the value of the specified solver info property as enum.
std::map< std::string, GloSysInfoMap > GloSysSolnInfoList
std::vector< std::string > VariableList
#define LIB_UTILITIES_EXPORT
std::vector< std::pair< std::string, FilterParams > > FilterMap
std::shared_ptr< Interpreter > InterpreterSharedPtr
FunctionMap m_functions
Functions.
boost::program_options::variables_map m_cmdLineOptions
std::map< std::string, std::string > ExpressionMap
FilterMap m_filters
Filters map.
std::shared_ptr< Equation > EquationSharedPtr
GeometricInfoMap m_geometricInfo
Geometric information properties.
std::map< std::string, NekDouble > ParameterMap
Reads and parses information from a Nektar++ XML session file.
std::map< std::string, EnumMap > EnumMapList
T GetCmdLineArgument(const std::string &pName) const
Retrieves a command-line argument value.
std::string m_fileVariable
std::map< std::string, CmdLineArg > CmdLineArgMap
TiXmlDocument * m_xmlDoc
Pointer to the loaded XML document.
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs
static std::string RegisterDefaultSolverInfo(const std::string &pName, const std::string &pValue)
Registers the default string value of a solver info property.
bool m_sharedFilesystem
Running on a shared filesystem.
std::string m_sessionName
Session name of the loaded XML document (filename minus ext).
static SessionReaderSharedPtr CreateInstance(int argc, char *argv[], std::vector< std::string > &pFilenames, const CommSharedPtr &pComm=CommSharedPtr())
Creates an instance of the SessionReader class initialised using a separate list of XML documents...
std::shared_ptr< SessionReader > SessionReaderSharedPtr
TagMap m_tags
Custom tags.