Foam::wordList Foam::ReadFields ( const Mesh& mesh, const IOobjectList& objects, PtrList<GeoField>& fields, const bool syncPar ) { // Search list of objects for wanted type IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName)); wordList masterNames(fieldObjects.names()); if (syncPar && Pstream::parRun()) { // Check that I have the same fields as the master const wordList localNames(masterNames); Pstream::scatter(masterNames); HashSet<word> localNamesSet(localNames); forAll(masterNames, i) { const word& masterFld = masterNames[i]; HashSet<word>::iterator iter = localNamesSet.find(masterFld); if (iter == localNamesSet.end()) { FatalErrorInFunction << "Fields not synchronised across processors." << endl << "Master has fields " << masterNames << " processor " << Pstream::myProcNo() << " has fields " << localNames << exit(FatalError); } else { localNamesSet.erase(iter); } } forAllConstIter(HashSet<word>, localNamesSet, iter) { FatalErrorInFunction << "Fields not synchronised across processors." << endl << "Master has fields " << masterNames << " processor " << Pstream::myProcNo() << " has fields " << localNames << exit(FatalError); } }
void readFields ( const vtkMesh& vMesh, const typename GeoField::Mesh& mesh, const IOobjectList& objects, const HashSet<word>& selectedFields, PtrList<GeoField>& fields ) { // Search list of objects for volScalarFields IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName)); // Construct the vol scalar fields label nFields = fields.size(); fields.setSize(nFields + fieldObjects.size()); for ( IOobjectList::iterator iter = fieldObjects.begin(); iter != fieldObjects.end(); ++iter ) { if (selectedFields.empty() || selectedFields.found(iter()->name())) { fields.set ( nFields, vMesh.interpolate ( GeoField ( *iter(), mesh ) ) ); nFields++; } } fields.setSize(nFields); }
void Foam::readFields ( const Mesh& mesh, const IOobjectList& objects, PtrList<GeoField>& fields ) { // Search list of objects for volScalarFields IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName)); // Remove the cellDist field IOobjectList::iterator celDistIter = fieldObjects.find("cellDist"); if (celDistIter != fieldObjects.end()) { fieldObjects.erase(celDistIter); } // Construct the vol scalar fields fields.setSize(fieldObjects.size()); label fieldi=0; for ( IOobjectList::iterator iter = fieldObjects.begin(); iter != fieldObjects.end(); ++iter ) { fields.set ( fieldi++, new GeoField ( *iter(), mesh ) ); } }