50 const std::string& rFileBaseName,
53 bool usingOriginalNodeOrdering)
54 :
AbstractHdf5Converter<ELEMENT_DIM,SPACE_DIM>(rInputDirectory, rFileBaseName, pMesh,
"vtk_output",0u)
73 if (p_distributed_mesh ==
nullptr)
75 WARNING(
"Can only write parallel VTK from a DistributedTetrahedralMesh - writing sequential VTK instead");
80 if (usingOriginalNodeOrdering)
82 WARNING(
"Can't write parallel VTK (pvtu) files with original ordering - writing sequential VTK instead");
101 unsigned num_timesteps = this->
mpReader->GetUnlimitedDimensionValues().size();
104 for (
unsigned time_step=0; time_step<num_timesteps; time_step++)
107 for (
unsigned variable=0; variable<this->
mNumVariables; variable++)
109 std::string variable_name = this->
mpReader->GetVariableNames()[variable];
112 this->
mpReader->GetVariableOverNodes(data, variable_name, time_step);
114 std::vector<double> data_for_vtk;
115 data_for_vtk.resize(num_nodes);
116 std::ostringstream variable_point_data_name;
117 variable_point_data_name << variable_name <<
"_" << std::setw(6) << std::setfill(
'0') << time_step;
123 VecGetArray(data, &p_data);
124 for (
unsigned index=0; index<num_nodes; index++)
126 data_for_vtk[index] = p_data[index];
128 VecRestoreArray(data, &p_data);
134 for (
unsigned index=0; index<num_nodes; index++)
136 data_for_vtk[index] = repl_data[index];
140 vtk_writer.
AddPointData(variable_point_data_name.str(), data_for_vtk);
150 if (!usingOriginalNodeOrdering)
159 std::string original_file = this->
mpMesh->GetMeshFileBaseName();
160 auto p_original_mesh_reader = GenericMeshReader<ELEMENT_DIM, SPACE_DIM>(original_file);
Hdf5ToVtkConverter(const FileFinder &rInputDirectory, const std::string &rFileBaseName, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, bool parallelVtk, bool usingOriginalNodeOrdering)