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