Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

How to? Inelastic wall bounce in particle tracing

Please login with a confirmed email address before reporting spam

I would like walls in my simulation to produce a bounce effect on particles, but with reduced velocity coming off the wall. Ideally this effect would be velocity dependent, though I would be satisfied with particles bouncing with a set fraction of the velocity.

Currently the only option seems to be to use the "General reflection" wall condition, but it is unclear how to make use of the tangential and normal velocity components to produce a damped bounce. The only evidently available wall variables are fpt.wall1.vprimx, vprimy, and vprimz, but using them (with a fraction) results in a circular reference error. I cannot use the particle velocity components because there is no mechanism for extracting the normal vector of the wall and thus producing a reflection vector.

Is there a way to achieve this effect?

4 Replies Last Post Jan 6, 2017, 2:04 p.m. EST
Daniel Smith COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 8 years ago Jan 5, 2017, 8:53 a.m. EST
Hi Todd, this is possible using the General reflection condition. For an elastic specular reflection, the "Reflected particle velocity" should be set to:

vp = v - 2*(n.v)n

To make this inelastic, you can modify this equation to be:

vp = v - alpha*2*(n.v)n

where alpha is a user-defined parameter. If alpha=0.9, then the particle will leave the wall with 90% of the incoming velocity. Note that alpha can also be a function of the velocity, you would need to create a variable under Definitions and give an appropriate expression. You can refer to the attached example.

Dan
Hi Todd, this is possible using the General reflection condition. For an elastic specular reflection, the "Reflected particle velocity" should be set to: vp = v - 2*(n.v)n To make this inelastic, you can modify this equation to be: vp = v - alpha*2*(n.v)n where alpha is a user-defined parameter. If alpha=0.9, then the particle will leave the wall with 90% of the incoming velocity. Note that alpha can also be a function of the velocity, you would need to create a variable under Definitions and give an appropriate expression. You can refer to the attached example. Dan


Please login with a confirmed email address before reporting spam

Posted: 8 years ago Jan 6, 2017, 11:46 a.m. EST
Hi Daniel, thank you for replying. Unfortunately when I try to open the attached file I get the error "COMSOL Multiphysics model file is damaged or not valid." I am using 5.2a with the most recent update.

Can you provide an example of the code you would enter into the Vp t1, t2, and n fields, or x, y, and z fields, whichever is appropriate? Even just providing the proper term for the normal vector would be sufficient as I know how to apply that to the x, y, and z components.
Hi Daniel, thank you for replying. Unfortunately when I try to open the attached file I get the error "COMSOL Multiphysics model file is damaged or not valid." I am using 5.2a with the most recent update. Can you provide an example of the code you would enter into the Vp t1, t2, and n fields, or x, y, and z fields, whichever is appropriate? Even just providing the proper term for the normal vector would be sufficient as I know how to apply that to the x, y, and z components.

Daniel Smith COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 8 years ago Jan 6, 2017, 12:01 p.m. EST
Hi Todd, the expressions would be (in 3D for the x, y and z components):

vpx = pt.vx-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nx
vpy = pt.vy-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*ny
vpz = pt.vz-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nz

I attach the model again. It was created in V5.2a with the most recent update, so it should open.
Hi Todd, the expressions would be (in 3D for the x, y and z components): vpx = pt.vx-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nx vpy = pt.vy-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*ny vpz = pt.vz-alpha*2*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nz I attach the model again. It was created in V5.2a with the most recent update, so it should open.


Please login with a confirmed email address before reporting spam

Posted: 8 years ago Jan 6, 2017, 2:04 p.m. EST
Thank you. I see now that there is a reference to the normal vector variables in the Help, though it is not where I would have expected and it is not as explicit as I think it should be:
"As a result, the tangential and normal directions may point in the opposite direction of the corresponding vectors defined for the geometry (for example, root.nx) and for the physics interface (for example, pt.nx)."

In addition to not specifically saing what "root.nx" is, it suggests to me a global variable, not one associated with a specific, or the current, wall normal vector. Also of note, using Particle Tracing for Fluid Flow, the default physics variable is "fpt", which could also produce some confusion as the help uses "pt".

Putting nx, ny, and nz in the Equation View for the Wall would help. The Equation View was very helpful to me as I was working on a complex particle-particle interaction model.

One last note, I believe the equation should be:
vpx = pt.vx-(1+alpha)*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nx

(1+alpha) replacing 2*alpha

That makes alpha range from 0 (particle freeze) to 1 (particle bounce). Using "2*alpha" would be more complicated and make the range 0.5 to 1, with the proportion of velocity maintained being 2*alpha-1.
Thank you. I see now that there is a reference to the normal vector variables in the Help, though it is not where I would have expected and it is not as explicit as I think it should be: "As a result, the tangential and normal directions may point in the opposite direction of the corresponding vectors defined for the geometry (for example, root.nx) and for the physics interface (for example, pt.nx)." In addition to not specifically saing what "root.nx" is, it suggests to me a global variable, not one associated with a specific, or the current, wall normal vector. Also of note, using Particle Tracing for Fluid Flow, the default physics variable is "fpt", which could also produce some confusion as the help uses "pt". Putting nx, ny, and nz in the Equation View for the Wall would help. The Equation View was very helpful to me as I was working on a complex particle-particle interaction model. One last note, I believe the equation should be: vpx = pt.vx-(1+alpha)*(pt.vx*nx+pt.vy*ny+pt.vz*nz)*nx (1+alpha) replacing 2*alpha That makes alpha range from 0 (particle freeze) to 1 (particle bounce). Using "2*alpha" would be more complicated and make the range 0.5 to 1, with the proportion of velocity maintained being 2*alpha-1.

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.