mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge remote branch 'OpenCFD/master' into olesenm
This commit is contained in:
@ -44,13 +44,17 @@ void Foam::CollidingCloud<CloudType>::setModels()
|
|||||||
|
|
||||||
template<class CloudType>
|
template<class CloudType>
|
||||||
template<class TrackData>
|
template<class TrackData>
|
||||||
void Foam::CollidingCloud<CloudType>::moveCollide(TrackData& td)
|
void Foam::CollidingCloud<CloudType>::moveCollide
|
||||||
|
(
|
||||||
|
TrackData& td,
|
||||||
|
const scalar deltaT
|
||||||
|
)
|
||||||
{
|
{
|
||||||
td.part() = TrackData::tpVelocityHalfStep;
|
td.part() = TrackData::tpVelocityHalfStep;
|
||||||
CloudType::move(td, this->solution().deltaT());
|
CloudType::move(td, deltaT);
|
||||||
|
|
||||||
td.part() = TrackData::tpLinearTrack;
|
td.part() = TrackData::tpLinearTrack;
|
||||||
CloudType::move(td, this->solution().deltaT());
|
CloudType::move(td, deltaT);
|
||||||
|
|
||||||
// td.part() = TrackData::tpRotationalTrack;
|
// td.part() = TrackData::tpRotationalTrack;
|
||||||
// CloudType::move(td);
|
// CloudType::move(td);
|
||||||
@ -60,7 +64,7 @@ void Foam::CollidingCloud<CloudType>::moveCollide(TrackData& td)
|
|||||||
this->collision().collide();
|
this->collision().collide();
|
||||||
|
|
||||||
td.part() = TrackData::tpVelocityHalfStep;
|
td.part() = TrackData::tpVelocityHalfStep;
|
||||||
CloudType::move(td, this->solution().deltaT());
|
CloudType::move(td, deltaT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -211,14 +215,14 @@ void Foam::CollidingCloud<CloudType>::motion(TrackData& td)
|
|||||||
|
|
||||||
while(!(++moveCollideSubCycle).end())
|
while(!(++moveCollideSubCycle).end())
|
||||||
{
|
{
|
||||||
moveCollide(td);
|
moveCollide(td, this->db().time().deltaTValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
moveCollideSubCycle.endSubCycle();
|
moveCollideSubCycle.endSubCycle();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
moveCollide(td);
|
moveCollide(td, this->db().time().deltaTValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -108,7 +108,7 @@ protected:
|
|||||||
|
|
||||||
//- Move-collide particles
|
//- Move-collide particles
|
||||||
template<class TrackData>
|
template<class TrackData>
|
||||||
void moveCollide(TrackData& td);
|
void moveCollide(TrackData& td, const scalar deltaT);
|
||||||
|
|
||||||
//- Reset state of cloud
|
//- Reset state of cloud
|
||||||
void cloudReset(CollidingCloud<CloudType>& c);
|
void cloudReset(CollidingCloud<CloudType>& c);
|
||||||
|
|||||||
@ -192,14 +192,15 @@ const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
|
|||||||
const parcelType& p = static_cast<const parcelType&>(*this);
|
const parcelType& p = static_cast<const parcelType&>(*this);
|
||||||
const forceSuSp Fcp = forces.calcCoupled(p, dt, mass, Re, mu);
|
const forceSuSp Fcp = forces.calcCoupled(p, dt, mass, Re, mu);
|
||||||
const forceSuSp Fncp = forces.calcNonCoupled(p, dt, mass, Re, mu);
|
const forceSuSp Fncp = forces.calcNonCoupled(p, dt, mass, Re, mu);
|
||||||
const forceSuSp Feff = Fcp + Fncp;
|
forceSuSp Feff = Fcp + Fncp;
|
||||||
|
Feff.Sp() += ROOTVSMALL;
|
||||||
|
|
||||||
|
|
||||||
// New particle velocity
|
// New particle velocity
|
||||||
//~~~~~~~~~~~~~~~~~~~~~~
|
//~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
// Update velocity - treat as 3-D
|
// Update velocity - treat as 3-D
|
||||||
const vector ap = Uc_ + (Feff.Su() + Su)/(Feff.Sp() + ROOTVSMALL);
|
const vector ap = Uc_ + (Feff.Su() + Su)/Feff.Sp();
|
||||||
const scalar bp = Feff.Sp()/mass;
|
const scalar bp = Feff.Sp()/mass;
|
||||||
|
|
||||||
Spu = Feff.Sp();
|
Spu = Feff.Sp();
|
||||||
@ -295,6 +296,7 @@ bool Foam::KinematicParcel<ParcelType>::move
|
|||||||
const polyMesh& mesh = td.cloud().pMesh();
|
const polyMesh& mesh = td.cloud().pMesh();
|
||||||
const polyBoundaryMesh& pbMesh = mesh.boundaryMesh();
|
const polyBoundaryMesh& pbMesh = mesh.boundaryMesh();
|
||||||
const scalarField& V = mesh.cellVolumes();
|
const scalarField& V = mesh.cellVolumes();
|
||||||
|
const scalar maxCo = td.cloud().solution().maxCo();
|
||||||
|
|
||||||
scalar tEnd = (1.0 - p.stepFraction())*trackTime;
|
scalar tEnd = (1.0 - p.stepFraction())*trackTime;
|
||||||
const scalar dtMax = tEnd;
|
const scalar dtMax = tEnd;
|
||||||
@ -315,7 +317,6 @@ bool Foam::KinematicParcel<ParcelType>::move
|
|||||||
if (p.active() && magU > ROOTVSMALL)
|
if (p.active() && magU > ROOTVSMALL)
|
||||||
{
|
{
|
||||||
const scalar d = dt*magU;
|
const scalar d = dt*magU;
|
||||||
const scalar maxCo = td.cloud().solution().maxCo();
|
|
||||||
const scalar dCorr = min(d, maxCo*cbrt(V[cellI]));
|
const scalar dCorr = min(d, maxCo*cbrt(V[cellI]));
|
||||||
dt *=
|
dt *=
|
||||||
dCorr/d
|
dCorr/d
|
||||||
|
|||||||
Reference in New Issue
Block a user