時間ステップを指定
ここまでの方法では,時間は[1番目][2番目]...として設定するしかありませんでした.やはり,浮動小数の時間変数を入れたいわけです.これは空間を考慮するVTKでは不可能で,ParaViewなど画像処理プログラムの設定になります.
PVDwriteクラス
サンプルとして, PVDwriteクラスを作成しました.rect_4に入っています.
#include <iostream>
#include <fstream>
#include <map>
#include <boost/filesystem.hpp>
class PVDwrite {
boost::filesystem::path _filename;
boost::filesystem::path _basedir;
std::map _array;
public:
void Append(boost::filesystem::path &P,double time){
_array[time]=P;
};
void Write(){
boost::filesystem::ofstream ofs(_filename);
ofs << "<?xml version=\"1.0\"?>";
ofs << "<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\" >";
ofs << "<Collection>" << std::endl;
for(auto& pair:_array) ofs << << "<DataSet timestep=\"" << pair.first << "\" group=\"\" part=\"0\" file=" << boost::filesystem::relative(pair.second,_basedir) << " />" << std::endl;
ofs<<"</Collection></VTKFile>" << std::endl;
}
PVDwrite(boost::filesystem::path filename):_filename(filename){
_basedir=_filename.parent_path();
};
~PVDwrite(){
_array.clear();
};
};
まあこんな感じですかね.ようするにPVDwriteオブジェクトを*.pvdファイル名を与えて初期化
PVDwrite BodyTime(bodyFolder/"body.pvd");
時間データを保存するごとにデータと物理時間の対応を追加:
BodyTime.Append(fileName, time);
ほんで,プログラム終了時にPVDファイルを書き出すわけですよ:
BodyTime.Write();
すると,PVDファイルが出現するってぇ寸法でぃ.
実際にRECT_4を実行してParaViewで開くと:

PVDファイルを開くと,時間が設定されている!

にゃお,PVDファイルの内容は,こんなノリです:
<?xml version="1.0"?><VTKFile type="Collection" version="0.1" byte_order="LittleEndian" compressor="vtkZLibDataCompressor" ><Collection> <DataSet timestep="0.2" group="" part="0" file="data/body0001.vtm" /> <DataSet timestep="0.4" group="" part="0" file="data/body0002.vtm" /> <DataSet timestep="0.6" group="" part="0" file="data/body0003.vtm" /> <DataSet timestep="0.8" group="" part="0" file="data/body0004.vtm" /> <DataSet timestep="1" group="" part="0" file="data/body0005.vtm" /> <DataSet timestep="1.2" group="" part="0" file="data/body0006.vtm" /> <DataSet timestep="1.4" group="" part="0" file="data/body0007.vtm" /> <DataSet timestep="1.6" group="" part="0" file="data/body0008.vtm" /> <DataSet timestep="1.8" group="" part="0" file="data/body0009.vtm" /> <DataSet timestep="2" group="" part="0" file="data/body0010.vtm" /> </Collection></VTKFile>