mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: Fixing problem with parallel DTRMParticle
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2017 OpenCFD Ltd
|
\\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -99,11 +99,12 @@ bool Foam::DTRMParticle::move
|
|||||||
td.switchProcessor = false;
|
td.switchProcessor = false;
|
||||||
td.keepParticle = true;
|
td.keepParticle = true;
|
||||||
|
|
||||||
while (td.keepParticle && !td.switchProcessor && stepFraction() < 1)
|
do
|
||||||
{
|
{
|
||||||
//Cache old data of particle to use for reflected particle
|
//Cache old data of particle to use for reflected particle
|
||||||
const point pos0 = position();
|
const point pos0 = position();
|
||||||
const label cell0 = cell();
|
const label cell1 = cell();
|
||||||
|
const tetIndices tetIs = this->currentTetIndices();
|
||||||
|
|
||||||
scalar f = 1 - stepFraction();
|
scalar f = 1 - stepFraction();
|
||||||
const vector s = p1() - p0() - deviationFromMeshCentre();
|
const vector s = p1() - p0() - deviationFromMeshCentre();
|
||||||
@ -113,7 +114,7 @@ bool Foam::DTRMParticle::move
|
|||||||
vector dsv = p1 - pos0;
|
vector dsv = p1 - pos0;
|
||||||
scalar ds = mag(dsv);
|
scalar ds = mag(dsv);
|
||||||
|
|
||||||
const label cell1 = cell();
|
//const label cell1 = cell();
|
||||||
|
|
||||||
//NOTE:
|
//NOTE:
|
||||||
// Under the new barocentric tracking alghorithm the newly
|
// Under the new barocentric tracking alghorithm the newly
|
||||||
@ -181,7 +182,8 @@ bool Foam::DTRMParticle::move
|
|||||||
, 0.98
|
, 0.98
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar delaM = cbrt(mesh().cellVolumes()[cell0]);
|
//scalar delaM = cbrt(mesh().cellVolumes()[cell0]);
|
||||||
|
scalar delaM = cbrt(mesh().cellVolumes()[cell1]);
|
||||||
|
|
||||||
const point insertP(position() - pDir*0.1*delaM);
|
const point insertP(position() - pDir*0.1*delaM);
|
||||||
label cellI = mesh().findCell(insertP);
|
label cellI = mesh().findCell(insertP);
|
||||||
@ -208,11 +210,11 @@ bool Foam::DTRMParticle::move
|
|||||||
// Change transmissiveId of the particle
|
// Change transmissiveId of the particle
|
||||||
transmissiveId_ = reflectedZoneId;
|
transmissiveId_ = reflectedZoneId;
|
||||||
|
|
||||||
const tetIndices tetIs = this->currentTetIndices();
|
scalar a = td.aInterp().interpolate(pos0, cell1);
|
||||||
scalar a = td.aInterp().interpolate(this->coordinates(), tetIs);
|
scalar e = td.eInterp().interpolate(pos0, cell1);
|
||||||
scalar e = td.eInterp().interpolate(this->coordinates(), tetIs);
|
scalar E = td.EInterp().interpolate(pos0, cell1);
|
||||||
scalar E = td.EInterp().interpolate(this->coordinates(), tetIs);
|
scalar T = td.TInterp().interpolate(pos0, cell1);
|
||||||
scalar T = td.TInterp().interpolate(this->coordinates(), tetIs);
|
|
||||||
|
|
||||||
// Left intensity after reflection
|
// Left intensity after reflection
|
||||||
const scalar Itran = I_*(1.0 - rho);
|
const scalar Itran = I_*(1.0 - rho);
|
||||||
@ -234,11 +236,10 @@ bool Foam::DTRMParticle::move
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const tetIndices tetIs = this->currentTetIndices();
|
scalar a = td.aInterp().interpolate(pos0, cell1);
|
||||||
scalar a = td.aInterp().interpolate(this->coordinates(), tetIs);
|
scalar e = td.eInterp().interpolate(pos0, cell1);
|
||||||
scalar e = td.eInterp().interpolate(this->coordinates(), tetIs);
|
scalar E = td.EInterp().interpolate(pos0, cell1);
|
||||||
scalar E = td.EInterp().interpolate(this->coordinates(), tetIs);
|
scalar T = td.TInterp().interpolate(pos0, cell1);
|
||||||
scalar T = td.TInterp().interpolate(this->coordinates(), tetIs);
|
|
||||||
|
|
||||||
const scalar I1 =
|
const scalar I1 =
|
||||||
(
|
(
|
||||||
@ -257,7 +258,7 @@ bool Foam::DTRMParticle::move
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}while (td.keepParticle && !td.switchProcessor && stepFraction() < 1);
|
||||||
|
|
||||||
return td.keepParticle;
|
return td.keepParticle;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user