diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index f916d97d3bf3703abb56002914d7825b9f841f48..a7da5420873f1d7defd0d9d71a2983c109a369d8 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -// $Id: Post.cpp,v 1.159 2008-03-29 10:19:36 geuzaine Exp $ +// $Id: Post.cpp,v 1.160 2008-03-29 11:51:37 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -1209,8 +1209,7 @@ class initPView { PViewData *data = p->getData(); PViewOptions *opt = p->getOptions(); - if(data->getDirty() || !p->getChanged()) return; - + if(data->getDirty() || !data->getNumTimeSteps() || !p->getChanged()) return; if(!opt->Visible || opt->Type != PViewOptions::Plot3D) return; if(opt->UseGenRaise) opt->createGeneralRaise(); @@ -1271,10 +1270,9 @@ class drawPView { PViewData *data = p->getData(); PViewOptions *opt = p->getOptions(); + if(data->getDirty() || !data->getNumTimeSteps()) return; if(!opt->Visible || opt->Type != PViewOptions::Plot3D) return; - - if(data->getDirty()) return; - + glPointSize(opt->PointSize); gl2psPointSize(opt->PointSize * CTX.print.eps_point_size_factor); diff --git a/Post/PViewDataGModel.cpp b/Post/PViewDataGModel.cpp index 7c72740d5f18148f5344d604ed1348d7ccb46057..4d5fd4a82f81510e11547b59fe330cc8ecc74d12 100644 --- a/Post/PViewDataGModel.cpp +++ b/Post/PViewDataGModel.cpp @@ -1,4 +1,4 @@ -// $Id: PViewDataGModel.cpp,v 1.34 2008-03-20 11:44:15 geuzaine Exp $ +// $Id: PViewDataGModel.cpp,v 1.35 2008-03-29 11:51:37 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -53,24 +53,25 @@ int PViewDataGModel::getNumTimeSteps() double PViewDataGModel::getTime(int step) { + if(_steps.empty()) return 0.; return _steps[step]->getTime(); } double PViewDataGModel::getMin(int step) { - if(step < 0) return _min; + if(step < 0 || _steps.empty()) return _min; return _steps[step]->getMin(); } double PViewDataGModel::getMax(int step) { - if(step < 0) return _max; + if(step < 0 || _steps.empty()) return _max; return _steps[step]->getMax(); } SBoundingBox3d PViewDataGModel::getBoundingBox(int step) { - if(step < 0){ + if(step < 0 || _steps.empty()){ SBoundingBox3d tmp; for(unsigned int i = 0; i < _steps.size(); i++) tmp += _steps[i]->getBoundingBox(); @@ -81,25 +82,28 @@ SBoundingBox3d PViewDataGModel::getBoundingBox(int step) int PViewDataGModel::getNumScalars(int step) { + if(_steps.empty()) return 0; if(_steps[0]->getNumComp() == 1) return getNumElements(0); return 0; } int PViewDataGModel::getNumVectors(int step) { + if(_steps.empty()) return 0; if(_steps[0]->getNumComp() == 3) return getNumElements(0); return 0; } int PViewDataGModel::getNumTensors(int step) { + if(_steps.empty()) return 0; if(_steps[0]->getNumComp() == 9) return getNumElements(0); return 0; } int PViewDataGModel::getNumEntities(int step) { - if(step < 0){ + if(step < 0 || _steps.empty()){ int num = 0; for(unsigned int i = 0; i < _steps.size(); i++) num += _steps[i]->getNumEntities(); @@ -110,7 +114,7 @@ int PViewDataGModel::getNumEntities(int step) int PViewDataGModel::getNumElements(int step, int ent) { - if(step < 0){ + if(step < 0 || _steps.empty()){ int num = 0; for(unsigned int i = 0; i < _steps.size(); i++){ if(ent < 0) diff --git a/Post/PViewDataGModelIO.cpp b/Post/PViewDataGModelIO.cpp index 3cf061869739227230fc4b1da3afd2eccdc5c040..a9403f500d5ea3a3b0ed52b5db38deda4efa6e73 100644 --- a/Post/PViewDataGModelIO.cpp +++ b/Post/PViewDataGModelIO.cpp @@ -1,4 +1,4 @@ -// $Id: PViewDataGModelIO.cpp,v 1.14 2008-03-29 10:19:43 geuzaine Exp $ +// $Id: PViewDataGModelIO.cpp,v 1.15 2008-03-29 11:51:37 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -189,8 +189,8 @@ bool PViewDataGModel::readMED(std::string fileName, int fileIndex) setName(name); med_int numSteps = MEDnPasdetemps(fid, name, MED_NOEUD, MED_NONE); - if(numSteps <= 0){ - Msg(GERROR, "Invalid umber of steps"); + if(numSteps < 0){ + Msg(GERROR, "Could not get number of steps"); return false; } @@ -205,6 +205,7 @@ bool PViewDataGModel::readMED(std::string fileName, int fileIndex) Msg(GERROR, "Could not get step info"); return false; } + med_int numNodes = MEDnVal(fid, name, MED_NOEUD, MED_NONE, numdt, numo, meshName, MED_COMPACT); if(numNodes <= 0) continue; @@ -218,8 +219,9 @@ bool PViewDataGModel::readMED(std::string fileName, int fileIndex) return false; } - stepData<double> *sd = new stepData<double>(GModel::current(), - stepData<double>::NodeData, numComp); + int numCompGmsh = (numComp == 2) ? 3 : numComp; + stepData<double> *sd = new stepData<double> + (GModel::current(), stepData<double>::NodeData, numCompGmsh); _steps.push_back(sd); sd->setFileName(fileName); sd->setFileIndex(fileIndex); @@ -263,7 +265,9 @@ bool PViewDataGModel::readMED(std::string fileName, int fileIndex) double *d = sd->getData(index, true); for(int j = 0; j < numComp; j++) d[j] = val[numComp * i + j]; - double s = ComputeScalarRep(numComp, d); + for(int j = numComp; j < numCompGmsh; j++) + d[j] = 0.; + double s = ComputeScalarRep(numCompGmsh, d); sd->setMin(std::min(sd->getMin(), s)); sd->setMax(std::max(sd->getMax(), s)); }