www.pudn.com > DemoFluid2D.zip > smDiffuse2D.psh


!!FP1.0 
#2d FLUID Diffuse for Density or Velocity or temperature 
#the equation coefficients 
DECLARE TexV = {0,0,0,0}; 
DECLARE TexD = {0,0,0,0}; 
DECLARE TexT = {0,0,0,0}; 
 
#TEX0 -- OldValue(u,v, ro, T) 
#TEX1 -- NewValue 
 
ADD R0, f[WPOS].xyxy, {1,0,-1,0}; 
 
#U(i+1,j)-- 
TEX R1, R0.xyww, TEX1, RECT; 
#U(i-1,j)-- 
TEX R2, R0.zwww, TEX1, RECT; 
ADD R3, R1, R2; 
MUL R3, R3, TexV; 
 
ADD R0, f[WPOS].xyxy, {0,1,0,-1}; 
 
#U(i,j+1)-- 
TEX R1, R0.xyww, TEX1, RECT; 
#U(i,j-1)-- 
TEX R2, R0.zwww, TEX1, RECT; 
ADD R1, R1, R2; 
 
MAD R3, R1, TexD, R3; 
 
#old velocity 
TEX R0, f[WPOS], TEX0, RECT; 
ADD R0, R0, R3; 
 
MUL R0, R0, TexT; 
 
#Tex2 ----Obstacle 
TEX R1, f[WPOS], TEX2, RECT; 
 
#current velocity, here keep the density unchanged 
TEX R2, f[WPOS], TEX1, RECT; 
LRP o[COLR], R1.wwww, R0, R2; 
 
END