0001 function v = vb_aniso_difuse(v,u,Nloop,c)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 [N1, N2, N3]=size(v);
0020
0021 siz=[N1 N2 N3];
0022
0023
0024
0025
0026 jw = 1:(N1-1);
0027 je = 2:N1;
0028
0029 jn = 1:(N2-1);
0030 js = 2:N2;
0031
0032 jd = 1:(N3-1);
0033 ju = 2:N3;
0034
0035
0036
0037
0038 vw = zeros(N1-1, N2, 1);
0039 vn = zeros(N1, N2-1, 1);
0040 vd = zeros(N1, 1, N3-1);
0041
0042
0043
0044 for n=1:Nloop,
0045 for k=1:N3,
0046
0047 vw = ( v(je,:,k) - v(jw,:,k) ).*( u(je,:,k) + u(jw,:,k) )*0.5;
0048 v(jw,:,k) = v(jw,:,k) + c*vw;
0049 v(je,:,k) = v(je,:,k) - c*vw;
0050
0051 vn = ( v(:,js,k) - v(:,jn,k) ).*( u(:,js,k) + u(:,jn,k) )*0.5;
0052 v(:,jn,k) = v(:,jn,k) + c*vn;
0053 v(:,js,k) = v(:,js,k) - c*vn;
0054 end;
0055
0056
0057 for k=1:N2,
0058 vd = ( v(:,k,ju) - v(:,k,jd) ).*( u(:,k,ju) + u(:,k,jd) )*0.5;
0059 v(:,k,jd) = v(:,k,jd) + c*vd;
0060 v(:,k,ju) = v(:,k,ju) - c*vd;
0061 end;
0062
0063 end;
0064
0065