-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2015 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include "MEDFileField.hxx"
#include "MEDFileMesh.hxx"
+#include "MEDCouplingFieldDiscretization.hxx"
#include "CellModel.hxx"
using namespace ParaMEDMEM;
if(_pfl->getName().empty())
{
if(nbOfEntity!=(_start_end.second-_start_end.first)/nip)
- throw INTERP_KERNEL::Exception("MEDFileField1TSStructItem2::checkInRange : Mismatch between number of entities and size of node field !");
+ throw INTERP_KERNEL::Exception("MEDFileField1TSStructItem2::checkInRange : Mismatch between number of entities and size of field !");
return ;
}
else
int theFirstLevFull;
bool ret0=isFullyOnOneLev(meshSt,theFirstLevFull);
const MEDFileField1TSStructItem2& otherNodeIt(other._items[0]);
+ int nbOfNodes(meshSt->getNumberOfNodes());
if(otherNodeIt.getPflName().empty())
{//on all nodes
if(!ret0)
return false;
- return theFirstLevFull==0;
+ std::vector<bool> nodesFetched(nbOfNodes,false);
+ meshSt->getTheMesh()->whichAreNodesFetched(*this,globs,nodesFetched);
+ if(std::find(nodesFetched.begin(),nodesFetched.end(),false)==nodesFetched.end())
+ return theFirstLevFull==0;
+ else
+ return false;
}
else
{
const DataArrayInt *pfl=globs->getProfile(otherNodeIt.getPflName().c_str());
MEDCouplingAutoRefCountObjectPtr<DataArrayInt> cpyPfl(pfl->deepCpy());
cpyPfl->sort();
- int nbOfNodes(meshSt->getNumberOfNodes());
if(cpyPfl->isIdentity() && cpyPfl->getNumberOfTuples()==nbOfNodes)
{//on all nodes also !
if(!ret0)
}
}
MEDFileField1TSStructItem ret(atype,anItems);
- ret.checkWithMeshStruct(meshSt,ref);
+ try
+ {
+ ret.checkWithMeshStruct(meshSt,ref);
+ }
+ catch(INTERP_KERNEL::Exception& e)
+ {
+ std::ostringstream oss; oss << e.what() << " (" << MEDCouplingFieldDiscretization::GetTypeOfFieldRepr(ret.getType()) << ")";
+ throw INTERP_KERNEL::Exception(oss.str().c_str());
+ }
return ret;
}
for(int i=0;i<nbPts;i++)
{
MEDCouplingAutoRefCountObjectPtr<MEDFileAnyTypeField1TS> elt=ref->getTimeStepAtPos(i);
- _f1ts_cmps[i]=MEDFileField1TSStruct::New(elt,_mesh_comp);
- _f1ts_cmps[i]->checkWithMeshStruct(_mesh_comp,elt);
+ try
+ {
+ _f1ts_cmps[i]=MEDFileField1TSStruct::New(elt,_mesh_comp);
+ _f1ts_cmps[i]->checkWithMeshStruct(_mesh_comp,elt);
+ }
+ catch(INTERP_KERNEL::Exception& e)
+ {
+ std::ostringstream oss; oss << "Problem in field with name \"" << ref->getName() << "\"" << std::endl;
+ oss << "More Details : " << e.what();
+ throw INTERP_KERNEL::Exception(oss.str().c_str());
+ }
}
}