Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Two errors in dsmcCLLWallPatch.C (Cercignani-Lampis-Lord wall reflection model) #164

Open
sven-brock opened this issue Oct 31, 2024 · 1 comment

Comments

@sven-brock
Copy link

Hello,

I have noticed unphysical behavior when using the Cercignani-Lampis-Lord wall reflection model. There are two errors in the implementation of it in file dsmcCLLWallPatch.C:

The first error has already been reported in the “MicroNanoFlows” repository. In the case of a moving wall, the wall velocity is incorrectly multiplied by the accommodations coefficient of tangential kinetic energy (alphaT in code) instead of the tangential momentum accommodation coefficient (TMAC). As a result, the wall transfers more momentum and the particle is scattered too strongly in the direction of the wall movement.
https://github.com/MicroNanoFlows/OpenFOAM-2.4.0-MNF/issues/11

The second error occurs when TMAC > 1 is used. Let's start with some background knowledge:
A TMAC = 0 describes complete specular reflection and a TMAC = 1 describes complete diffuse scattering, in which the particle is scattered in a random direction at a random speed. In contrast to the Maxwell model (mixedDiffuseSpecular), where one fraction of the particles is specularly scattered and the rest is diffusely scattered (depending on the TMAC), the CLL model relates this to fractions of the tangential momentum of each individual particle. This case is correctly represented in the code.
However, there is also the special case that particles are backscattered, which is the case for TMAC>1. Physically, this behavior is rather rare, but occurs, for example, with surface structures, which I am researching.
Here, an error has crept in due to a transformation of the underlying equations. In line 195, sqrt(1-alphaT) should be replaced by (1-TMAC). Both expressions are identical in the case TMAC < 1, but the root acts like a magnitude function at TMAC > 1, so that instead of the backscattering specular reflection results here as well. I would like to refer to the book “Rarefied Gas Dynamics” (Shen, 2005, https://doi.org/10.1007/b138784), where you can see the correct implementation in equations (3.52) and (3.36). Here also the error at hand can be seen in equation (3.38)', as using the root while transforming from equation (3.38) necessitates a +/- on the right hand side which is neglected.

Thus i would like to propose the following changes for line 247-248
vector UTangential1 = (U & tw1) * tw1 + uWallTangential1*tangentialAccommodationCoefficient_;
vector UTangential2 = (U & tw2) * tw2 + uWallTangential2*tangentialAccommodationCoefficient_;

and for line 195-196 of dsmcCLLWallPatch.C.
scalar tangentialVelocity1 = ((1-tangentialAccommodationCoefficient_)*mag(normalisedIncidentTangentialVelocity1) + rTangential1*cos(thetaTangential1));

@sven-brock
Copy link
Author

The original issue only considered tangential movement of the wall. Futher investigations suggest, there is also a problem regarding wall movement in normal direction of the wall. This problem might be linked to handling wall collisions in general, as the specular reflection model shows the same issue.

A simple examplatory calculation shows this. Consider fully specular reflection either with the specular model or CLL-model with alphaN = 0:
n = (1, 0, 0) normal vector of wall (parallel to yz-plane)
v_i = (20, 0, 0)m/s particle incident velocity vector (movement in +x direction)
v_W = (-10, 0, 0)m/s wall velocity vector (movement in -x direction)
v_r to be calculated particle reflected velocity vector

specular model as implemented:
v_r = v_i - 2 * n * (v_i * n) = (-20, 0, 0)m/s

specular model with reference frame:
v'_i = v_i - v_w = (30,0,0)m/s
v'_r = v'_i - 2 * n * (v'_i * n) = (-30, 0, 0)m/s
v_r = v'_r + v_w = (-40, 0, 0)m/s

Of course there is a error at hand, as the results must be equal regardless of the used reference frame. Without going into detail, the CLL-Model, as currently implemented, also preduces v_r = (-20,0,0)m/s for alphaN=0.

The safest way would probably be to switch into a reference frame moving with the wall, then perform the wall reflection, and at last, backtransformation into the global reference frame. This approach would be able to handle any wall reflection models.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant