40 const std::string& rFileBaseName,
42 :
AbstractHdf5Converter<ELEMENT_DIM,SPACE_DIM>(rInputDirectory, rFileBaseName, pMesh,
"xdmf_output", 0u),
44 rFileBaseName, false )
47 std::vector<double> time_values = this->
mpReader->GetUnlimitedDimensionValues();
48 unsigned num_timesteps = time_values.size();
51 if (num_timesteps > 1)
53 this->
mTimeStep = time_values[1] - time_values[0];
61 XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDomDocument,
65 XERCES_CPP_NAMESPACE_USE
67 unsigned num_timesteps = this->mpReader->GetUnlimitedDimensionValues().size();
70 for (
unsigned var_index=0; var_index<this->mNumVariables; var_index++)
72 std::string variable_name = this->mpReader->GetVariableNames()[var_index];
77 DOMElement* p_attr_element = pDomDocument->createElement(X(
"Attribute"));
78 p_attr_element->setAttribute(X(
"Name"), X(variable_name));
79 p_attr_element->setAttribute(X(
"Center"), X(
"Node"));
80 pGridElement->appendChild(p_attr_element);
85 DOMElement* p_hype_element = pDomDocument->createElement(X(
"DataItem"));
86 p_hype_element->setAttribute(X(
"ItemType"), X(
"HyperSlab"));
87 std::stringstream dim_stream;
94 dim_stream <<
"1 " << num_nodes <<
" 1";
95 p_hype_element->setAttribute(X(
"Dimensions"), X(dim_stream.str()));
96 p_attr_element->appendChild(p_hype_element);
101 DOMElement* p_xml_element = pDomDocument->createElement(X(
"DataItem"));
102 p_xml_element->setAttribute(X(
"Format"), X(
"XML"));
103 p_xml_element->setAttribute(X(
"Dimensions"), X(
"3 3"));
104 p_hype_element->appendChild(p_xml_element);
109 std::stringstream XMLStream;
110 XMLStream << timeStep <<
" 0 " << var_index <<
" ";
111 XMLStream <<
"1 1 1 ";
113 XMLStream <<
"1 " << num_nodes <<
" 1";
114 DOMText* p_xml_text = pDomDocument->createTextNode(X(XMLStream.str()));
115 p_xml_element->appendChild(p_xml_text);
120 DOMElement* p_hdf_element = pDomDocument->createElement(X(
"DataItem"));
121 p_hdf_element->setAttribute(X(
"Format"), X(
"HDF"));
122 p_hdf_element->setAttribute(X(
"NumberType"), X(
"Float"));
123 p_hdf_element->setAttribute(X(
"Precision"), X(
"8"));
124 std::stringstream hdf_dims_stream;
126 hdf_dims_stream << num_timesteps <<
" " << num_nodes <<
" " << this->mNumVariables;
127 p_hdf_element->setAttribute(X(
"Dimensions"), X(hdf_dims_stream.str()));
128 p_hype_element->appendChild(p_hdf_element);
133 std::stringstream HDFStream;
135 DOMText* p_hdf_text = pDomDocument->createTextNode(X(HDFStream.str()));
136 p_hdf_element->appendChild(p_hdf_text);