35 #ifndef NEKTAR_LIB_UTILITIES_BASIC_UTILS_FIELDIOXML_H
36 #define NEKTAR_LIB_UTILITIES_BASIC_UTILS_FIELDIOXML_H
38 #include <boost/algorithm/string/predicate.hpp>
45 namespace LibUtilities
62 m_doc =
new TiXmlDocument(fn);
63 bool loadOkay =
m_doc->LoadFile();
64 std::stringstream errstr;
65 errstr <<
"Unable to load file: " << fn << std::endl;
66 errstr <<
"Reason: " <<
m_doc->ErrorDesc() << std::endl;
67 errstr <<
"Position: Line " <<
m_doc->ErrorRow() <<
", Column "
68 <<
m_doc->ErrorCol() << std::endl;
88 const TiXmlDocument &
Get()
const
128 TiXmlElement *child =
new TiXmlElement(
name.c_str());
129 m_El->LinkEndChild(child);
135 const std::string &val)
override
137 if (boost::starts_with(key,
"XML_"))
140 std::string elmtName = key.substr(4);
141 TiXmlElement *child =
new TiXmlElement(elmtName.c_str());
145 doc.Parse(val.c_str());
147 TiXmlElement *e = doc.FirstChildElement();
151 child->LinkEndChild(e->Clone());
152 e = e->NextSiblingElement();
155 m_El->LinkEndChild(child);
159 TiXmlElement *child =
new TiXmlElement(key.c_str());
160 child->LinkEndChild(
new TiXmlText(val.c_str()));
161 m_El->LinkEndChild(child);
222 bool sharedFilesystem);
230 std::vector<FieldDefinitionsSharedPtr> &fielddefs,
bool expChild);
234 const std::vector<FieldDefinitionsSharedPtr> &fielddefs,
235 std::vector<std::vector<NekDouble>> &fielddata);
238 const std::string &outfile,
const std::vector<std::string> fileNames,
239 std::vector<std::vector<unsigned int>> &elementList,
243 const std::string &outname,
244 const std::vector<FieldDefinitionsSharedPtr> &fielddefs,
248 const std::string &inFile, std::vector<std::string> &fileNames,
249 std::vector<std::vector<unsigned int>> &elementList,
254 const std::string &outFile,
255 std::vector<FieldDefinitionsSharedPtr> &fielddefs,
256 std::vector<std::vector<NekDouble>> &fielddata,
258 const bool backup =
false)
override;
261 const std::string &infilename,
262 std::vector<FieldDefinitionsSharedPtr> &fielddefs,
263 std::vector<std::vector<NekDouble>> &fielddata =
269 const std::string &filename,
#define ASSERTL0(condition, msg)
#define LIB_UTILITIES_EXPORT
Class for operating on Nektar++ input/output files.
virtual void v_Write(const std::string &outFile, std::vector< FieldDefinitionsSharedPtr > &fielddefs, std::vector< std::vector< NekDouble >> &fielddata, const FieldMetaDataMap &fieldinfomap=NullFieldMetaDataMap, const bool backup=false) override
Write an XML file to outFile given the field definitions fielddefs, field data fielddata and metadata...
virtual const std::string & v_GetClassName() const override
Returns the class name.
void ImportFieldDefs(DataSourceSharedPtr dataSource, std::vector< FieldDefinitionsSharedPtr > &fielddefs, bool expChild)
Import field definitions from the target file.
void WriteMultiFldFileIDs(const std::string &outfile, const std::vector< std::string > fileNames, std::vector< std::vector< unsigned int >> &elementList, const FieldMetaDataMap &fieldinfomap=NullFieldMetaDataMap)
Write out a file containing element ID to partition mapping.
static FieldIOSharedPtr create(LibUtilities::CommSharedPtr pComm, bool sharedFilesystem)
Creates an instance of this class.
void ImportMultiFldFileIDs(const std::string &inFile, std::vector< std::string > &fileNames, std::vector< std::vector< unsigned int >> &elementList, FieldMetaDataMap &fieldmetadatamap)
Read file containing element ID to partition mapping.
void ImportFieldData(DataSourceSharedPtr dataSource, const std::vector< FieldDefinitionsSharedPtr > &fielddefs, std::vector< std::vector< NekDouble >> &fielddata)
Import field data from a target file.
virtual DataSourceSharedPtr v_ImportFieldMetaData(const std::string &filename, FieldMetaDataMap &fieldmetadatamap) override
Import field metadata from filename and return the data source which wraps filename.
void v_Import(const std::string &infilename, std::vector< FieldDefinitionsSharedPtr > &fielddefs, std::vector< std::vector< NekDouble >> &fielddata=NullVectorNekDoubleVector, FieldMetaDataMap &fieldinfomap=NullFieldMetaDataMap, const Array< OneD, int > &ElementIDs=NullInt1DArray) override
Import an XML format file.
FieldIOXml(LibUtilities::CommSharedPtr pComm, bool sharedFilesystem)
Default constructor.
void SetUpFieldMetaData(const std::string &outname, const std::vector< FieldDefinitionsSharedPtr > &fielddefs, const FieldMetaDataMap &fieldmetadatamap)
Set up field meta data map.
static std::string className
Name of class.
Base class for writing hierarchical data (XML or HDF5).
TiXmlDocument * m_doc
Internal TinyXML document storage.
TiXmlDocument & Get()
Return the TinyXML document of this source.
static DataSourceSharedPtr create(TiXmlDocument &fn)
Create a new XML data source based on a TiXmlDocument.
static DataSourceSharedPtr create(const std::string &fn)
Create a new XML data source based on the filename.
~XmlDataSource()
Destructor cleans up memory usage.
XmlDataSource(const std::string &fn)
Constructor based on filename.
const TiXmlDocument & Get() const
Return the TinyXML document of this source.
bool m_needsFree
Boolean dictating whether document needs to be freed or not.
XmlDataSource(TiXmlDocument &doc)
Default constructor.
XmlTagWriter(TiXmlElement *elem)
Default constructor.
virtual TagWriterSharedPtr v_AddChild(const std::string &name) override
Add a child node.
virtual void v_SetAttr(const std::string &key, const std::string &val) override
Set an attribute key/value pair on this tag.
TiXmlElement * m_El
Internal TinyXML document storage.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< TagWriter > TagWriterSharedPtr
std::shared_ptr< FieldIO > FieldIOSharedPtr
std::shared_ptr< DataSource > DataSourceSharedPtr
std::map< std::string, std::string > FieldMetaDataMap
static FieldMetaDataMap NullFieldMetaDataMap
std::shared_ptr< XmlDataSource > XmlDataSourceSharedPtr
static std::vector< std::vector< NekDouble > > NullVectorNekDoubleVector
std::shared_ptr< XmlTagWriter > XmlTagWriterSharedPtr
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
The above copyright notice and this permission notice shall be included.
static Array< OneD, int > NullInt1DArray