diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C index 0d1700b5d077b9621b3d401124903b2e15cca1b2..eef73729c9e20ec1466c442bf6a143928ed4a0fa 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,14 +51,14 @@ Foam::patchInjectionBase::patchInjectionBase { FatalErrorIn ( - "Foam::patchInjectionBase::patchInjectionBase" + "patchInjectionBase::patchInjectionBase" "(" - "const polyMesh&, " - "const word&" + "const polyMesh& mesh, " + "const word& patchName" ")" ) << "Requested patch " << patchName_ << " not found" << nl - << "Available patches are: " << mesh.boundaryMesh().names() - << nl << exit(FatalError); + << "Available patches are: " << mesh.boundaryMesh().names() << nl + << exit(FatalError); } updateMesh(mesh); @@ -95,13 +95,13 @@ void Foam::patchInjectionBase::updateMesh(const polyMesh& mesh) cellOwners_ = patch.faceCells(); - // triangulate the patch faces and create addressing + // Triangulate the patch faces and create addressing DynamicList<label> triToFace(2*patch.size()); DynamicList<scalar> triMagSf(2*patch.size()); DynamicList<face> triFace(2*patch.size()); DynamicList<face> tris(5); - // set zero value at the start of the tri area list + // Set zero value at the start of the tri area list triMagSf.append(0.0); forAll(patch, faceI) @@ -134,12 +134,12 @@ void Foam::patchInjectionBase::updateMesh(const polyMesh& mesh) triMagSf[i] += triMagSf[i-1]; } - // transfer to persistent storage + // Transfer to persistent storage triFace_.transfer(triFace); triToFace_.transfer(triToFace); triCumulativeMagSf_.transfer(triMagSf); - // convert sumTriMagSf_ into cumulative sum of areas per proc + // Convert sumTriMagSf_ into cumulative sum of areas per proc for (label i = 1; i < sumTriMagSf_.size(); i++) { sumTriMagSf_[i] += sumTriMagSf_[i-1]; @@ -162,15 +162,22 @@ void Foam::patchInjectionBase::setPositionAndCell label& tetPtI ) { - if (cellOwners_.size() > 0) + scalar areaFraction = 0; + + if (Pstream::master()) { - // determine which processor to inject from - scalar areaFraction = rnd.position<scalar>(0, patchArea_); + areaFraction = rnd.position<scalar>(0, patchArea_); + } + Pstream::scatter(areaFraction); + + if (cellOwners_.size() > 0) + { + // Determine which processor to inject from label procI = 0; forAllReverse(sumTriMagSf_, i) { - if (areaFraction > sumTriMagSf_[i]) + if (areaFraction >= sumTriMagSf_[i]) { procI = i; break; @@ -179,7 +186,7 @@ void Foam::patchInjectionBase::setPositionAndCell if (Pstream::myProcNo() == procI) { - // find corresponding decomposed face triangle + // Find corresponding decomposed face triangle label triI = 0; scalar offset = sumTriMagSf_[procI]; forAllReverse(triCumulativeMagSf_, i) @@ -191,18 +198,18 @@ void Foam::patchInjectionBase::setPositionAndCell } } - // set cellOwner + // Set cellOwner label faceI = triToFace_[triI]; cellOwner = cellOwners_[faceI]; - // find random point in triangle + // Find random point in triangle const polyPatch& patch = mesh.boundaryMesh()[patchId_]; const pointField& points = patch.points(); const face& tf = triFace_[triI]; const triPointRef tri(points[tf[0]], points[tf[1]], points[tf[2]]); const point pf(tri.randomPoint(rnd)); - // position perturbed away from face (into domain) + // Position perturbed away from face (into domain) const scalar a = rnd.position(scalar(0.1), scalar(0.5)); const vector& pc = mesh.cellCentres()[cellOwner]; const vector d = mag(pf - pc)*patchNormal_[faceI]; @@ -223,7 +230,7 @@ void Foam::patchInjectionBase::setPositionAndCell tetFaceI = -1; tetPtI = -1; - // dummy position + // Dummy position position = pTraits<vector>::max; } } @@ -233,7 +240,7 @@ void Foam::patchInjectionBase::setPositionAndCell tetFaceI = -1; tetPtI = -1; - // dummy position + // Dummy position position = pTraits<vector>::max; } }