diff --git a/src/lagrangian/dsmc/Make/options b/src/lagrangian/dsmc/Make/options index 15874b7b55afc2cfae55d9550fd48451604ee3d4..55865dfabcd9146aa4fe204e71d664b62e535b95 100644 --- a/src/lagrangian/dsmc/Make/options +++ b/src/lagrangian/dsmc/Make/options @@ -1,7 +1,9 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/lagrangian/basic/lnInclude + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude LIB_LIBS = \ -llagrangian \ - -lfiniteVolume + -lfiniteVolume \ + -lmeshTools diff --git a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C index ffd7c67d4284e2373ec371522485b858a5076596..3742f3f8ea8dde203cdd19de4c7b89ce2a84338e 100644 --- a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C +++ b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C @@ -25,6 +25,7 @@ License \*---------------------------------------------------------------------------*/ #include "DsmcParcel.H" +#include "meshTools.H" // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -47,8 +48,18 @@ bool Foam::DsmcParcel<ParcelType>::move scalar tEnd = (1.0 - p.stepFraction())*deltaT; const scalar dtMax = tEnd; + // Save the velocity to re-apply it after tracking + vector U_save = U_; + + // Apply correction to velocity to constrain tracking for + // reduced-D cases + meshTools::constrainDirection(mesh, mesh.solutionD(), U_); + while (td.keepParticle && !td.switchProcessor && tEnd > ROOTVSMALL) { + // Apply correction to position for reduced-D cases + meshTools::constrainToMeshCentre(mesh, p.position()); + // Set the Lagrangian time-step scalar dt = min(dtMax, tEnd); @@ -67,6 +78,9 @@ bool Foam::DsmcParcel<ParcelType>::move } } + // Restore the correct value of velocity + U_ = U_save; + return td.keepParticle; }