diff --git a/src/lagrangian/cfdemParticle/subModels/probeModel/particleProbe/particleProbe.C b/src/lagrangian/cfdemParticle/subModels/probeModel/particleProbe/particleProbe.C index af9bd6f5..bfa1335f 100644 --- a/src/lagrangian/cfdemParticle/subModels/probeModel/particleProbe/particleProbe.C +++ b/src/lagrangian/cfdemParticle/subModels/probeModel/particleProbe/particleProbe.C @@ -180,6 +180,7 @@ void particleProbe::initialize(word typeName, word logFileName) const return; } + void particleProbe::writeHeader() const { @@ -194,97 +195,92 @@ void particleProbe::writeHeader() const forAll(vectorFields_, iter) { if(!probeDebug_ && iter>0) break; - *sPtr << vectorFields_(iter) << " "; - } + *sPtr << vectorFields_(iter) << " "; + } if(probeDebug_) { - *sPtr<<"|| scalarData: " << " "; + *sPtr<<"|| scalarData: " << " "; forAll(scalarFields_, iter) { *sPtr << scalarFields_(iter) << " "; } } - if(includePosition_) *sPtr<<" || position" << endl; - else *sPtr << endl; + if(includePosition_) *sPtr<<" || position" << endl; + else *sPtr << endl; } } void particleProbe::clearProbes() const { - for (unsigned int i=0; i sValues, Field vValues) const { - - - if(printNow_ && checkIDForPrint(index) && verboseToFile_) + if(printNow_ && checkIDForPrint(index) && verboseToFile_) { - //index and time - *sPtr << setprecision(IOstream::defaultPrecision()+7) ; - *sPtr << index << tab - << particleCloud_.mesh().time().value() << " " ; + *sPtr << setprecision(IOstream::defaultPrecision()+7); + *sPtr << index << tab << particleCloud_.mesh().time().value() << " "; *sPtr << "|| "; - - int vsize_=vProbes_.size(); + + int vsize_ = vProbes_.size(); //vectorFields - *sPtr << setprecision(writePrecision_) ; - forAll(vValues, iter) - { - // if(!probeDebug_ && iter>0) break; - *sPtr << vValues[iter][0] << " "; - *sPtr << vValues[iter][1] << " "; - *sPtr << vValues[iter][2] << " "; - - - if(index0) break; + *sPtr << vValues[iter][0] << " "; + *sPtr << vValues[iter][1] << " "; + *sPtr << vValues[iter][2] << " "; + + if(index < vsize_) + { + vProbes_[index][0] += vValues[iter][0]; + vProbes_[index][1] += vValues[iter][1]; + vProbes_[index][2] += vValues[iter][2]; + } + else + { + double * vprobe_ = new double[3]; + vprobe_[0] = vValues[iter][0]; + vprobe_[1] = vValues[iter][1]; + vprobe_[2] = vValues[iter][2]; + + vProbes_.push_back(vprobe_); + } + } //scalarFields if(probeDebug_) { - *sPtr << "|| "; - forAll(sValues, iter) - { - *sPtr << sValues[iter] << " "; - sProbes_.push_back(sValues[iter]); + *sPtr << "|| "; + forAll(sValues, iter) + { + *sPtr << sValues[iter] << " "; + sProbes_.push_back(sValues[iter]); } } if(includePosition_) { *sPtr << "|| "; - *sPtr << particleCloud_.position(index)[0] << " " - << particleCloud_.position(index)[1] << " " - << particleCloud_.position(index)[2] - << endl; + *sPtr << particleCloud_.position(index)[0] << " " + << particleCloud_.position(index)[1] << " " + << particleCloud_.position(index)[2] + << endl; + } + else + { + *sPtr << endl; } - else *sPtr << endl; - } return; @@ -292,7 +288,6 @@ void particleProbe::writeProbe(int index, Field sValues, Field v bool particleProbe::checkIDForPrint(int index) const { - bool sampleThisId_ = false; if(sampleAll_) sampleThisId_ = true; else diff --git a/src/lagrangian/cfdemParticle/subModels/voidFractionModel/IBVoidFraction/IBVoidFraction.C b/src/lagrangian/cfdemParticle/subModels/voidFractionModel/IBVoidFraction/IBVoidFraction.C index c81b9d07..89d89f96 100755 --- a/src/lagrangian/cfdemParticle/subModels/voidFractionModel/IBVoidFraction/IBVoidFraction.C +++ b/src/lagrangian/cfdemParticle/subModels/voidFractionModel/IBVoidFraction/IBVoidFraction.C @@ -131,8 +131,8 @@ void IBVoidFraction::setvoidFraction(double** const& mask,double**& voidfraction vector minPeriodicParticlePos=positionCenter; if(checkPeriodicCells_) //consider minimal distance to all periodic images of this particle { - centreDist = minPeriodicDistance(cellCentrePosition, positionCenter, globalBb, - minPeriodicParticlePos); + centreDist = minPeriodicDistance(cellCentrePosition, positionCenter, globalBb, + minPeriodicParticlePos); } if(centreDist + 0.5*sqrt(3.0)*pow(particleCloud_.mesh().V()[particleCenterCellID],0.33333) < radius) @@ -141,46 +141,46 @@ void IBVoidFraction::setvoidFraction(double** const& mask,double**& voidfraction } else { - const labelList& vertices = particleCloud_.mesh().cellPoints()[particleCenterCellID]; - forAll(vertices, i) + const labelList& vertices = particleCloud_.mesh().cellPoints()[particleCenterCellID]; + forAll(vertices, i) { - vector vertexPosition = particleCloud_.mesh().points()[vertices[i]]; - scalar centreVertexDist = mag(vertexPosition-positionCenter); + vector vertexPosition = particleCloud_.mesh().points()[vertices[i]]; + scalar centreVertexDist = mag(vertexPosition-positionCenter); if(checkPeriodicCells_) //consider minimal distance to all periodic images of this particle - { - centreVertexDist = minPeriodicDistance(vertexPosition, positionCenter, globalBb, - minPeriodicParticlePos); - } - - if(centreDistradius) - { - //compute lambda - scalar a = (vertexPosition - cellCentrePosition) - & (vertexPosition - cellCentrePosition); - scalar b = 2. * (vertexPosition - cellCentrePosition) - & (cellCentrePosition-minPeriodicParticlePos); - scalar c = ((cellCentrePosition-minPeriodicParticlePos) - & (cellCentrePosition-minPeriodicParticlePos) - ) - - radius*radius; + { + centreVertexDist = minPeriodicDistance(vertexPosition, positionCenter, globalBb, + minPeriodicParticlePos); + } - scalar lambda = 0.; + if(centreDistradius) + { + //compute lambda + scalar a = (vertexPosition - cellCentrePosition) + & (vertexPosition - cellCentrePosition); + scalar b = 2. * (vertexPosition - cellCentrePosition) + & (cellCentrePosition-minPeriodicParticlePos); + scalar c = ( (cellCentrePosition-minPeriodicParticlePos) + &(cellCentrePosition-minPeriodicParticlePos) + ) + - radius*radius; - if (b*b-4*a*c>=0) lambda = (-b+sqrt(b*b-4*a*c))/(2*a); - if (lambda > 0 && lambda <=1) voidfractionNext_[particleCenterCellID]-=lambda*.125; - else - { - lambda = (-b-sqrt(b*b-4*a*c))/(2*a); - if (lambda > 0 && lambda <=1) voidfractionNext_[particleCenterCellID]-=lambda*.125; - } - } - else if(centreDist>radius && centreVertexDist=0.) lambda = (-b+sqrt(b*b-4.*a*c))/(2.*a); + if (lambda > 0 && lambda <=1) voidfractionNext_[particleCenterCellID]-=lambda*0.125; + else + { + lambda = (-b-sqrt(b*b-4.*a*c))/(2.*a); + if (lambda > 0. && lambda <=1.) voidfractionNext_[particleCenterCellID]-=lambda*0.125; + } + } + else if(centreDist>radius && centreVertexDist=0) lambda = (-b+sqrt(b*b-4*a*c))/(2*a); - if(lambda > 0 && lambda <=1) voidfractionNext_[particleCenterCellID]-=(1-lambda)*0.125; - else + if(b*b-4.*a*c>=0.) lambda = (-b+sqrt(b*b-4.*a*c))/(2.*a); + if(lambda > 0. && lambda <=1.) voidfractionNext_[particleCenterCellID]-=(1.-lambda)*0.125; + else { - lambda = (-b-sqrt(b*b-4*a*c))/(2*a); - if (lambda > 0 && lambda <=1) voidfractionNext_[particleCenterCellID]-=(1-lambda)*0.125; + lambda = (-b-sqrt(b*b-4.*a*c))/(2.*a); + if (lambda > 0. && lambda <=1.) voidfractionNext_[particleCenterCellID]-=(1.-lambda)*0.125; } - } - } + } + } } //end particle partially overlapping with cell //generating list with cell and subcells buildLabelHashSet(radius, minPeriodicParticlePos, particleCenterCellID, hashSett, true); //Add cells of periodic particle images on same processor - if(checkPeriodicCells_) - { - int doPeriodicImage[3]; - for(int iDir=0;iDir<3;iDir++) - { - doPeriodicImage[iDir]= 0; - if( (minPeriodicParticlePos[iDir]+radius)>globalBb.max()[iDir] ) - { - doPeriodicImage[iDir] =-1; - } - if( (minPeriodicParticlePos[iDir]-radius) particlePosList; //List of particle center position - List