void subsetSurfaceFields ( const fvMeshSubset& subsetter, const wordList& fieldNames, PtrList<GeometricField<Type, fvsPatchField, surfaceMesh> >& subFields ) { const fvMesh& baseMesh = subsetter.baseMesh(); forAll(fieldNames, i) { const word& fieldName = fieldNames[i]; Info<< "Subsetting field " << fieldName << endl; GeometricField<Type, fvsPatchField, surfaceMesh> fld ( IOobject ( fieldName, baseMesh.time().timeName(), baseMesh, IOobject::MUST_READ, IOobject::NO_WRITE ), baseMesh ); subFields.set(i, subsetter.interpolate(fld)); } }
tmp<GeometricField<Type, fvPatchField, volMesh>> volField ( const fvMeshSubset& meshSubsetter, const GeometricField<Type, fvPatchField, volMesh>& vf ) { if (meshSubsetter.hasSubMesh()) { tmp<GeometricField<Type, fvPatchField, volMesh>> tfld ( meshSubsetter.interpolate(vf) ); tfld.ref().checkOut(); tfld.ref().rename(vf.name()); return tfld; } else { return vf; } }
forAll(subDecomp, i) { finalDecomp[subsetter.cellMap()[i]] = subDecomp[i]; }
nFaces += pbm[iter.key()].size(); } // Extract a submesh. labelHashSet patchCells(2*nFaces); forAllConstIter(labelHashSet, patchIDs, iter) { const labelUList& fc = pbm[iter.key()].faceCells(); forAll(fc, i) { patchCells.insert(fc[i]); } } // Subset the layer of cells next to the patch fvMeshSubset subsetter(dynamic_cast<const fvMesh&>(mesh)); subsetter.setLargeCellSubset(patchCells); const fvMesh& subMesh = subsetter.subMesh(); pointField subCc(cc, subsetter.cellMap()); scalarField subWeights(cWeights, subsetter.cellMap()); // Decompose the layer of cells labelList subDecomp(method_().decompose(subMesh, subCc, subWeights)); // Transfer to final decomposition labelList finalDecomp(cc.size(), -1); forAll(subDecomp, i) { finalDecomp[subsetter.cellMap()[i]] = subDecomp[i]; }