-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2016 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 <string>
#include <fstream>
#include <iostream>
+#include <sstream>
#include <libxml/tree.h>
#include <libxml/parser.h>
*\param filename ascii file containing the list of MED v2.3 files
* */
+int MeshCollectionMedAsciiDriver::read(MEDCoupling::MEDFileData* filedata)
+{
+ readMEDFileData(filedata);
+
+ std::vector<MEDPARTITIONER::ConnectZone*> cz; // to fill from filedata
+ std::vector<int*> cellglobal;
+ std::vector<int*> nodeglobal;
+ std::vector<int*> faceglobal;
+ int size = (_collection->getMesh()).size();
+ cellglobal.resize(size);
+ nodeglobal.resize(size);
+ faceglobal.resize(size);
+ for ( int idomain = 0; idomain < size; ++idomain )
+ {
+ cellglobal[idomain]=0;
+ faceglobal[idomain]=0;
+ nodeglobal[idomain]=0;
+ if ( (_collection->getMesh())[idomain] && (_collection->getMesh())[idomain]->getNumberOfNodes() > 0 )
+ _collection->setNonEmptyMesh(idomain);
+ }
+ //creation of topology from mesh and connect zones
+ ParallelTopology* aPT = new ParallelTopology((_collection->getMesh()), cz, cellglobal, nodeglobal, faceglobal);
+ _collection->setTopology(aPT,true);
+
+ return 0;
+}
+
+/*!reads a MED File v>=2.3
+ * and mounts the corresponding meshes in memory
+ * the connect zones are created from the joints
+ *
+ *\param filename ascii file containing the list of MED v2.3 files
+ * */
+
int MeshCollectionMedAsciiDriver::read(const char* filename, ParaDomainSelector* domainSelector)
{
//distributed meshes
throw INTERP_KERNEL::Exception("domain must be written from 1 to N in ASCII file descriptor");
}
if ( !domainSelector || domainSelector->isMyDomain(i))
- readSubdomain(cellglobal,faceglobal,nodeglobal, i);
+ readSubdomain(i);
} //loop on domains
} //of try
//creation of topology from mesh and connect zones
ParallelTopology* aPT = new ParallelTopology((_collection->getMesh()), (_collection->getCZ()), cellglobal, nodeglobal, faceglobal);
- _collection->setTopology(aPT);
+ _collection->setTopology(aPT, true);
for (int i=0; i<nbdomain; i++)
{
return 0;
}
-
/*! writes the collection of meshes in a MED v2.3 file
* with the connect zones being written as joints
* \param filename name of the ascii file containing the meshes description
if ( !domainSelector || domainSelector->isMyDomain( idomain ) )
{
- if ( !_collection->getMesh()[idomain]->getNumberOfCells()==0 ) continue;//empty domain
- MEDLoader::WriteUMesh(distfilename.c_str(),(_collection->getMesh())[idomain],true);
+ // [ABN] spurious test in 8.2 - fixed as I think it should be:
+ if ( _collection->getMesh()[idomain]->getNumberOfCells() == 0 ) continue;
+ WriteUMesh(distfilename.c_str(),(_collection->getMesh())[idomain],true);
//writeSubdomain(idomain, nbdomains, distfilename.c_str(), domainSelector);
}
}