function us=shiftp2d(typ,u) //{\it decale le tableau u de +1 ou -1} //{\it dans les directions nord, sud, est, ouest, sud-ouest} //{\it avec condition aux limites de periodicite} select typ case 'n' then //{\it shift nord} [m,n] = size(u) ; us(1:m,1:n-1) = u(1:m,2:n) ; us(1:m,n) = u(1:m,1) ; case 's' then //{\it shift sud} [m,n] = size(u) ; us(1:m,2:n) = u(1:m,1:n-1) ; us(1:m,1) = u(1:m,n) ; case 'e' then //{\it shift est} [m,n] = size(u) ; us(1:m-1,1:n) = u(2:m,1:n) ; us(m,1:n) = u(1,1:n) ; case 'o' then //{\it shift ouest} [m,n] = size(u) ; us(2:m,1:n) = u(1:m-1,1:n) ; us(1,1:n) = u(m,1:n) ; case 'so' then //{\it shift sud-ouest} [m,n] = size(u) ; us(2:m,2:n) = u(1:m-1,1:n-1) ; us(1,2:n) = u(m,1:n-1) ; us(2:m,1) = u(1:m-1,n) ; us(1,1) = u(m,n) ; case 'se' then //{\it shift sud-est} [m,n] = size(u) ; us(1:m-1,2:n) = u(2:m,1:n-1) ; us(m,2:n) = u(1,1:n-1) ; us(1:m-1,1) = u(2:m,n) ; us(m,1) = u(1,n) ; case 'no' then //{\it shift nord-ouest} [m,n] = size(u) ; us(2:m,1:n-1) = u(1:m-1,2:n) ; us(1,1:n-1) = u(m,2:n) ; us(2:m,n) = u(1:m-1,1) ; us(1,n) = u(m,1) ; else error('shift nord, sud, est, ouest, sud-ouest, sud-est, nord-ouest ?') end; endfunction