fixed: 'once' type field output in HDF5 converter

git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@2746 e10b68d5-8a6e-419e-a041-bce267b0401d
This commit is contained in:
akva
2014-03-06 15:58:47 +00:00
committed by Knut Morten Okstad
parent 889307c731
commit caa675fb87

View File

@@ -34,6 +34,8 @@ struct VTFFieldInfo {
//! \brief Maps from field description -> (type, VTF blocks)
typedef std::map< std::string, VTFFieldInfo> VTFList;
typedef std::map<std::string, int> VTFFieldBlocks; //!< Maps name<> designated ID block in VTF
//! \brief Struct encapsulating information for a given basis
struct BasisInfo {
std::vector<ASMbase*> Patch; //!< Vector with spline bases
@@ -191,20 +193,24 @@ bool writeElmPatch(const Vector& locvec,
//! \param myvtf The VTF/VTU file to write to
//! \param iStep The level in file to write
void writeFieldBlocks(VTFList& vlist, VTFList& slist, VTF& myvtf,
int iStep)
int iStep, VTFFieldBlocks& fieldBlocks)
{
int idBlock = 20;
static int idBlock = 20;
for (VTFList::iterator it = vlist.begin(); it != vlist.end(); ++it) {
if (fieldBlocks.find(it->second.Name) == fieldBlocks.end())
fieldBlocks[it->second.Name] = idBlock++;
if (it->second.Type == "displacement")
myvtf.writeDblk(it->second.Blocks,it->second.Name.c_str(),idBlock++,iStep);
myvtf.writeDblk(it->second.Blocks,it->second.Name.c_str(),fieldBlocks[it->second.Name],iStep);
else if (it->second.Type == "eigenmodes")
myvtf.writeDblk(it->second.Blocks, "Mode Shape", idBlock++, iStep);
myvtf.writeDblk(it->second.Blocks, "Mode Shape", fieldBlocks[it->second.Name], iStep);
else
myvtf.writeVblk(it->second.Blocks,it->second.Name.c_str(),idBlock++,iStep);
myvtf.writeVblk(it->second.Blocks,it->second.Name.c_str(),fieldBlocks[it->second.Name],iStep);
}
for (VTFList::iterator it = slist.begin(); it != slist.end(); ++it) {
if (fieldBlocks.find(it->second.Name) == fieldBlocks.end())
fieldBlocks[it->second.Name] = idBlock++;
myvtf.writeSblk(it->second.Blocks,
it->second.Name.c_str(),idBlock++,iStep);
it->second.Name.c_str(),fieldBlocks[it->second.Name],iStep);
}
}
@@ -435,12 +441,14 @@ int main (int argc, char** argv)
bool ok = true;
int block = 0;
VTFFieldBlocks fieldBlocks;
int k = 1;
for (int i = last?end:start; i <= end && ok; i += skip) {
if (levels > 0)
std::cout <<"\nTime level "<< i << " (t=" << time << ")" << std::endl;
VTFList vlist, slist;
if (hdf.hasGeometries(i) || i == 0)
// TODO: Fix time dependent geometries in FSI
if (/*hdf.hasGeometries(i) ||*/ i == 0)
patches = setupPatchMap(processlist, i, hdf, dims, n, *myVtf, block, k);
for (pit = processlist.begin(); pit != processlist.end(); ++pit) {
@@ -517,9 +525,10 @@ int main (int argc, char** argv)
}
}
}
if (hdf.hasGeometries(i) || i == 0)
// TODO: Fix time dependent geometries in FSI
if (/*hdf.hasGeometries(i) ||*/ i == 0)
myVtf->writeGeometryBlocks(k);
writeFieldBlocks(vlist,slist,*myVtf,k);
writeFieldBlocks(vlist,slist,*myVtf,k,fieldBlocks);
if (!ok)
return 3;