diff --git a/Post/PViewDataGModelIO.cpp b/Post/PViewDataGModelIO.cpp index a639b4f9d582db2c50c37cfecf7c13386cad0e15..503b04656fef614ad3fa31f3ea49df3715cdebca 100644 --- a/Post/PViewDataGModelIO.cpp +++ b/Post/PViewDataGModelIO.cpp @@ -165,6 +165,28 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary, bool savemesh) fprintf(fp, "$EndMeshFormat\n"); } + if(haveInterpolationMatrices()){ + fprintf(fp, "$InterpolationScheme\n"); + fprintf(fp, "\"INTERPOLATION_SCHEME\"\n"); + fprintf(fp, "%d\n", (int)_interpolation.size()); + for(interpolationMatrices::iterator it = _interpolation.begin(); + it != _interpolation.end(); it++){ + if(it->second.size() >= 2){ + fprintf(fp, "%d\n2\n", it->first); + for(int mat = 0; mat < 2; mat++){ + int m = it->second[mat]->size1(), n = it->second[mat]->size2(); + fprintf(fp, "%d %d\n", m, n); + for(int i = 0; i < m; i++){ + for(int j = 0; j < n; j++) + fprintf(fp, "%.16g ", it->second[mat]->get(i, j)); + fprintf(fp, "\n"); + } + } + } + } + fprintf(fp, "$EndInterpolationScheme\n"); + } + for(unsigned int step = 0; step < _steps.size(); step++){ int numEnt = 0, numComp = _steps[step]->getNumComponents(); for(int i = 0; i < _steps[step]->getNumData(); i++) @@ -203,7 +225,11 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary, bool savemesh) fprintf(fp, "$ElementNodeData\n"); else fprintf(fp, "$ElementData\n"); - fprintf(fp, "1\n\"%s\"\n", getName().c_str()); + if(haveInterpolationMatrices()) + fprintf(fp, "2\n\"%s\"\n\"INTERPOLATION_SCHEME\"\n", getName().c_str()); + else + fprintf(fp, "1\n\"%s\"\n", getName().c_str()); + fprintf(fp, "1\n%.16g\n", _steps[step]->getTime()); fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numEnt); for(int i = 0; i < _steps[step]->getNumData(); i++){