   Semi-Lagrangian?
  I am researching the full 3D simulation of fluid dynamics.  And in all the research papers I have read the term Semi-Lagrangian crops up, however none of the papers actually describe what this means, i have tried googling for the answer but i haven''t found anything yet, does anyone have any kind of idea as to what this term refers to? 
  q.v. Lagrangian vs. Eulerian approach to fluid mechanics.Lagrangian: Tracking individual particles as they move in space.Eulerian: Flows and current lines in a fixed space.Semi-Lagrangian implicit advection: instead of moving each particle forward by their individual velocity, you measure the velocity V at 'each' point, backtrack it, and pick up whatever particles were back there, so F(pos,t+dt)=F(pos-v(pos,t+dt)*dt,t)   “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”    — Brian W. Kernighan (C programming language co-inventor) [edited by - Fruny on February 10, 2004 5:12:04 AM];  So when you backtrack the velocity to a particular position you find all the particles that are at that position and apply the velocity to them? Is that correct?What about when it comes to rendering the fluid surface? Is a mesh constructed from the particles themselves, I have found that a lot of papers tend to sketch over this area also!Thanx for your help. ;  I know nothing about rendering (even though I''ve got a paper on keyframe animation of smoke simulations to present in 2 weeks).   “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”    — Brian W. Kernighan (C programming language co-inventor);  http://www.dgp.toronto.edu/people/stam/reality/Research/pub.html  (Scroll down to Stable Fluids)^ This is the paper that introduced semi-lagrangian advection into the graphics community. Usually when you are trying to define a term like semi-lagrangian advection the authors of the paper you are reading will cite papers which explain it. Then once you know the name of the relevant paper go here:http://citeseer.nj.nec.com/csIt''s like google ... but for papers. Or if you have access to it, the acm digital library has some stuff not in citeseer (particularly older stuff).    "Math is hard" -Barbie ;quote:Original post by Moagly  So when you backtrack the velocity to a particular position you find all the particles that are at that position and apply the velocity to them? Is that correct?What about when it comes to rendering the fluid surface? Is a mesh constructed from the particles themselves, I have found that a lot of papers tend to sketch over this area also!I am not sure what model you are looking at, but I think you are confusing the particles for tracking the surface with the "particles" for tracking fluid characteristics (the ones to which semi-Lagrangian refers).  These latter aren''t real particles stored in memory; rather they are generated as follows: To update the velocity (e.g.) at position (x,y), imagine a particle at (x,y), give it the velocity from that position, trace this imaginary particle backward, use monotone bicubic interpolation to assign an advected velocity to that particle and hence to position (x,y).  The backwards tracing can also be done with higher-order accuracy.The particles for rendering the surface on are simply advected along with the fluid.  They are used only indirectly to render a surface.  First they update a potential which stores the signed distance from the water surface, and which itself has been advected with the fluid in a semi-Lagrangian manner.  They serve to correct diffusion errors.  Then this signed potential (which is further updated with specialized tricks, e.g. fast-marching method) can be used to render a surface, using e.g., a marching cubes type of algorithm. Hope this helps.  If you have any other questions, please ask!  I find these simulations fascinating. ;  I can''t edit my previous post.  But note that the semi-Lagrangian update method is only one possibility.  An Eulerian method (of whatever order) can also be used for the exact same problem, field advection.  You might as well implement both, since this code is pretty simple anyway (at least when you don''t need to worry about going outside the boundary, but I have found that F''s methods for solving for extended velocity fields works quite well).   