function [v6t] = split_C_cub(v3d,kad) % [v6t] = split_C_cub(v3d,[kad]) %--------------------------------------------- % split 2d/3d arrays V, center, to 2d/3d x 6 faces % and (kad=1): add 1 column + 1 row <== at the begining !!! % => output is v6t(ny+1,ny+1,[nr],6) % and (kad=2): add also 1 column + 1 row <== at the end !!! % => output is v6t(ny+2,ny+2,[nr],6) %---------------------------------------------- if nargin < 2, kad=1; end if kad~=0 & kad~=1 & kad~=2, fprintf('kad= %f => Bad value',kad); return;end %-- dim=length(size(v3d)); if dim == 2, nr=1; [nx ny]=size(v3d) ; else [nx ny nr]=size(v3d) ; end nyp=ny+1; n2p=ny+2; nye=ny+kad; %================================================================= if dim == 2, %- split on to 6 tiles with overlap in i+1 & j+1 : v6t=zeros(nye,nye,6); if kad == 0, for n=1:6, v6t([1:ny],[1:ny],n)=v3d([(n-1)*ny+1:n*ny],[1:ny]); end else for n=1:6, v6t([2:nyp],[2:nyp],n)=v3d([(n-1)*ny+1:n*ny],[1:ny]); end %- add overlap in i=1 & j=1 : %v6t(1,[2:nyp], 1)=v3d([5*ny:-1:1+(5-1)*ny],ny); %v6t(1,[2:nyp], 2)=v3d(1*ny,[1:ny]); %v6t(1,[2;nyp], 3)=v3d([1*ny:-1:1+(1-1)*ny],ny); %v6t(1,[2:nyp], 4)=v3d(3*ny,[1:ny]); %v6t(1,[2:nyp], 5)=v3d([3*ny:-1:1+(3-1)*ny],ny); %v6t(1,[2:nyp], 6)=v3d(5*ny,[1:ny]); %v6t([2:nyp],1, 1)=v3d([1+(6-1)*ny:6*ny],ny); %v6t([2:nyp],1, 2)=v3d(6*ny,[ny:-1:1]); %v6t([2:nyp],1, 3)=v3d([1+(2-1)*ny:2*ny],ny); %v6t([2:nyp],1, 4)=v3d(2*ny,[ny:-1:1]); %v6t([2:nyp],1, 5)=v3d([1+(4-1)*ny:4*ny],ny); %v6t([2:nyp],1, 6)=v3d(4*ny,[ny:-1:1]); v6t(1,[2:nyp], 1)=v6t([nyp:-1:2],nyp,5); v6t(1,[2:nyp], 3)=v6t([nyp:-1:2],nyp,1); v6t(1,[2:nyp], 5)=v6t([nyp:-1:2],nyp,3); v6t(1,[2:nyp], 2)=v6t(nyp,[2:nyp],1); v6t(1,[2:nyp], 4)=v6t(nyp,[2:nyp],3); v6t(1,[2:nyp], 6)=v6t(nyp,[2:nyp],5); v6t([1:nyp],1, 1)=v6t([1:nyp],nyp,6); v6t([1:nyp],1, 3)=v6t([1:nyp],nyp,2); v6t([1:nyp],1, 5)=v6t([1:nyp],nyp,4); v6t([2:nyp],1, 2)=v6t(nyp,[nyp:-1:2],6); v6t([2:nyp],1, 4)=v6t(nyp,[nyp:-1:2],2); v6t([2:nyp],1, 6)=v6t(nyp,[nyp:-1:2],4); v6t(1,1,2)=v6t(nyp,2,1); v6t(1,1,4)=v6t(nyp,2,3); v6t(1,1,6)=v6t(nyp,2,5); end %- add overlap in i=ny+1 & j=ny+1 : if kad == 2, v6t(n2p,[1:nyp], 1)=v6t(2,[1:nyp],2); v6t(n2p,[1:nyp], 3)=v6t(2,[1:nyp],4); v6t(n2p,[1:nyp], 5)=v6t(2,[1:nyp],6); v6t(n2p,[2:n2p], 2)=v6t([nyp:-1:1],2,4); v6t(n2p,[2:n2p], 4)=v6t([nyp:-1:1],2,6); v6t(n2p,[2:n2p], 6)=v6t([nyp:-1:1],2,2); v6t(n2p,n2p,1)=v6t(2,2,3); v6t(n2p,n2p,3)=v6t(2,2,5); v6t(n2p,n2p,5)=v6t(2,2,1); v6t(n2p,1,2)=v6t(nyp,1,6); v6t(n2p,1,4)=v6t(nyp,1,2); v6t(n2p,1,6)=v6t(nyp,1,4); v6t([1:n2p],n2p, 2)=v6t([1:n2p],2,3); v6t([1:n2p],n2p, 4)=v6t([1:n2p],2,5); v6t([1:n2p],n2p, 6)=v6t([1:n2p],2,1); v6t([2:n2p],n2p, 1)=v6t(2,[nyp:-1:1],3); v6t([2:n2p],n2p, 3)=v6t(2,[nyp:-1:1],5); v6t([2:n2p],n2p, 5)=v6t(2,[nyp:-1:1],1); v6t(1,n2p,1)=v6t(1,nyp,5); v6t(1,n2p,3)=v6t(1,nyp,1); v6t(1,n2p,5)=v6t(1,nyp,3); end else %- split on to 6 tile with overlap in i+1 & j+1 : v6t=zeros(nyp,nyp,nr,6); for n=1:6, v6t([2:nyp],[2:nyp],:,n)=v3d([(n-1)*ny+1:n*ny],[1:ny],:); end v6t(1,[1:ny],:,1)=v3d([5*ny:-1:1+(5-1)*ny],ny,:); v6t(1,[1:ny],:,2)=v3d(1*ny,[1:ny],:); v6t(1,[1:ny],:,3)=v3d([1*ny:-1:1+(1-1)*ny],ny,:); v6t(1,[1:ny],:,4)=v3d(3*ny,[1:ny],:); v6t(1,[1:ny],:,5)=v3d([3*ny:-1:1+(3-1)*ny],ny,:); v6t(1,[1:ny],:,6)=v3d(5*ny,[1:ny],:); v6t([1:ny],1,:,1)=v3d([1+(6-1)*ny:6*ny],ny,:); v6t([1:ny],1,:,2)=v3d(6*ny,[ny:-1:1],:); v6t([1:ny],1,:,3)=v3d([1+(2-1)*ny:2*ny],ny,:); v6t([1:ny],1,:,4)=v3d(2*ny,[ny:-1:1],:); v6t([1:ny],1,:,5)=v3d([1+(4-1)*ny:4*ny],ny,:); v6t([1:ny],1,:,6)=v3d(4*ny,[ny:-1:1],:); end return