Proper vtk output of multicomponent fields (i.e. saturation, velocity).
This commit is contained in:
@@ -290,20 +290,17 @@ namespace Opm
|
|||||||
for (DataMap::const_iterator dit = data.begin(); dit != data.end(); ++dit) {
|
for (DataMap::const_iterator dit = data.begin(); dit != data.end(); ++dit) {
|
||||||
pm["Name"] = dit->first;
|
pm["Name"] = dit->first;
|
||||||
const std::vector<double>& field = *(dit->second);
|
const std::vector<double>& field = *(dit->second);
|
||||||
// We always print only the first data item for every
|
const int num_comps = field.size()/grid->number_of_cells;
|
||||||
// cell, using 'stride'.
|
pm["NumberOfComponents"] = boost::lexical_cast<std::string>(num_comps);
|
||||||
// This is a hack to get water saturation nicely.
|
|
||||||
// \TODO: Extend to properly printing vector data.
|
|
||||||
const int stride = field.size()/grid->number_of_cells;
|
|
||||||
Tag ptag("DataArray", pm, os);
|
Tag ptag("DataArray", pm, os);
|
||||||
const int num_per_line = 5;
|
const int num_per_line = num_comps == 1 ? 5 : num_comps;
|
||||||
for (int c = 0; c < num_cells; ++c) {
|
for (int item = 0; item < num_cells*num_comps; ++item) {
|
||||||
if (c % num_per_line == 0) {
|
if (item % num_per_line == 0) {
|
||||||
Tag::indent(os);
|
Tag::indent(os);
|
||||||
}
|
}
|
||||||
os << field[stride*c] << ' ';
|
os << field[item] << ' ';
|
||||||
if (c % num_per_line == num_per_line - 1
|
if (item % num_per_line == num_per_line - 1
|
||||||
|| c == num_cells - 1) {
|
|| item == num_cells - 1) {
|
||||||
os << '\n';
|
os << '\n';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user