void Foam::fvMesh::mapOldVolumes(const mapPolyMesh& meshMap) { const labelList& cellMap = meshMap.cellMap(); // Map the old volume. Just map to new cell labels. if (V0Ptr_) { if (debug) { InfoIn("void fvMesh::mapOldVolumes(const mapPolyMesh& meshMap)") << "Mapping old cell volumes." << endl; } scalarField& V0 = *V0Ptr_; scalarField savedV0(V0); V0.setSize(nCells()); forAll (V0, i) { if (cellMap[i] > -1) { V0[i] = savedV0[cellMap[i]]; } else { V0[i] = 0.0; } } } // Map the old-old volume. Just map to new cell labels. if (V00Ptr_) { if (debug) { InfoIn("void fvMesh::mapOldVolumes(const mapPolyMesh& meshMap)") << "Mapping old-old cell volumes." << endl; } scalarField& V00 = *V00Ptr_; scalarField savedV00(V00); V00.setSize(nCells()); forAll (V00, i) { if (cellMap[i] > -1) { V00[i] = savedV00[cellMap[i]]; } else { V00[i] = 0.0; } } } }
void Foam::fvMesh::mapFields(const mapPolyMesh& meshMap) { if (debug) { Info<< "fvMesh::mapFields :" << " nOldCells:" << meshMap.nOldCells() << " nCells:" << nCells() << " nOldFaces:" << meshMap.nOldFaces() << " nFaces:" << nFaces() << endl; } // We require geometric properties valid for the old mesh if ( meshMap.cellMap().size() != nCells() || meshMap.faceMap().size() != nFaces() ) { FatalErrorIn("fvMesh::mapFields(const mapPolyMesh&)") << "mapPolyMesh does not correspond to the old mesh." << " nCells:" << nCells() << " cellMap:" << meshMap.cellMap().size() << " nOldCells:" << meshMap.nOldCells() << " nFaces:" << nFaces() << " faceMap:" << meshMap.faceMap().size() << " nOldFaces:" << meshMap.nOldFaces() << exit(FatalError); } // Create a mapper const fvMeshMapper mapper(*this, meshMap); // Map all the volFields in the objectRegistry MapGeometricFields<scalar, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<vector, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<sphericalTensor, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<symmTensor, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<tensor, fvPatchField, fvMeshMapper, volMesh> (mapper); // Map all the surfaceFields in the objectRegistry MapGeometricFields<scalar, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<vector, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<symmTensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<symmTensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<tensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); // Map all the dimensionedFields in the objectRegistry MapDimensionedFields<scalar, fvMeshMapper, volMesh>(mapper); MapDimensionedFields<vector, fvMeshMapper, volMesh>(mapper); MapDimensionedFields<sphericalTensor, fvMeshMapper, volMesh>(mapper); MapDimensionedFields<symmTensor, fvMeshMapper, volMesh>(mapper); MapDimensionedFields<tensor, fvMeshMapper, volMesh>(mapper); // Map all the clouds in the objectRegistry mapClouds(*this, meshMap); //TODO implement on gpu /* const labelList& cellMap = meshMap.cellMap(); // Map the old volume. Just map to new cell labels. if (V0Ptr_) { scalargpuField& V0 = (*V0Ptr_).getField(); scalargpuField savedV0(V0); V0.setSize(nCells()); forAll(V0, i) { if (cellMap[i] > -1) { V0[i] = savedV0[cellMap[i]]; } else { V0[i] = 0.0; } } // Inject volume of merged cells label nMerged = 0; forAll(meshMap.reverseCellMap(), oldCellI) { label index = meshMap.reverseCellMap()[oldCellI]; if (index < -1) { label cellI = -index-2; V0[cellI] += savedV0[oldCellI]; nMerged++; } } if (debug) { Info<< "Mapping old time volume V0. Merged " << nMerged << " out of " << nCells() << " cells" << endl; } } // Map the old-old volume. Just map to new cell labels. if (V00Ptr_) { scalargpuField& V00 = (*V00Ptr_).getField(); scalargpuField savedV00(V00); V00.setSize(nCells()); forAll(V00, i) { if (cellMap[i] > -1) { V00[i] = savedV00[cellMap[i]]; } else { V00[i] = 0.0; } } // Inject volume of merged cells label nMerged = 0; forAll(meshMap.reverseCellMap(), oldCellI) { label index = meshMap.reverseCellMap()[oldCellI]; if (index < -1) { label cellI = -index-2; V00[cellI] += savedV00[oldCellI]; nMerged++; } } if (debug) { Info<< "Mapping old time volume V00. Merged " << nMerged << " out of " << nCells() << " cells" << endl; } } */ }
void Foam::fvMesh::mapFields(const mapPolyMesh& meshMap) { // Create a mapper const fvMeshMapper mapper(*this, meshMap); // Map all the volFields in the objectRegistry MapGeometricFields<scalar, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<vector, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<sphericalTensor, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<symmTensor, fvPatchField, fvMeshMapper, volMesh> (mapper); MapGeometricFields<tensor, fvPatchField, fvMeshMapper, volMesh> (mapper); // Map all the surfaceFields in the objectRegistry MapGeometricFields<scalar, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<vector, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<symmTensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<symmTensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); MapGeometricFields<tensor, fvsPatchField, fvMeshMapper, surfaceMesh> (mapper); // Map all the clouds in the objectRegistry mapClouds(*this, meshMap); const labelList& cellMap = meshMap.cellMap(); // Map the old volume. Just map to new cell labels. if (V0Ptr_) { scalarField& V0 = *V0Ptr_; scalarField savedV0(V0); V0.setSize(nCells()); forAll(V0, i) { if (cellMap[i] > -1) { V0[i] = savedV0[cellMap[i]]; } else { V0[i] = 0.0; } } } // Map the old-old volume. Just map to new cell labels. if (V00Ptr_) { scalarField& V00 = *V00Ptr_; scalarField savedV00(V00); V00.setSize(nCells()); forAll(V00, i) { if (cellMap[i] > -1) { V00[i] = savedV00[cellMap[i]]; } else { V00[i] = 0.0; } } } }