1 |
function [v0]=convert2widefaces(v0); |
2 |
%object: when mygrid.facesSize is non standard (i.e. |
3 |
% some faces were troncated in the files) this |
4 |
% routine expands them back to dimensions that |
5 |
% allow e.g. the exchanges to work |
6 |
|
7 |
gcmfaces_global; |
8 |
|
9 |
if ~isempty(mygrid.facesExpand); |
10 |
|
11 |
nn=mygrid.facesExpand(1); mm=mygrid.facesExpand(2); |
12 |
widefacesSize=[[nn mm];[nn mm];[nn nn];[mm nn];[mm nn]]; |
13 |
|
14 |
v0facesSize=[size(v0{1});size(v0{2});size(v0{3});size(v0{4});size(v0{5})]; |
15 |
v0facesSize=v0facesSize(:,1:2); |
16 |
|
17 |
test0=0<sum(abs(prod(mygrid.facesSize,2)-prod(v0facesSize,2))); |
18 |
test1=0<sum(abs(prod(widefacesSize,2)-prod(v0facesSize,2))); |
19 |
if (test0&test1)|(~test0&~test1); |
20 |
error('inconsitent size'); |
21 |
end; |
22 |
|
23 |
if test1;%the expand faces |
24 |
for iFace=1:mygrid.nFaces; |
25 |
ii=size(v0{iFace}); ii(1:2)=widefacesSize(iFace,:); |
26 |
tmp1=mygrid.missVal*zeros(ii); |
27 |
if iFace==1|iFace==2;%fill the Northern part of faces 1 and 2 |
28 |
jj=[widefacesSize(iFace,2)-v0facesSize(iFace,2)+1:widefacesSize(iFace,2)]; |
29 |
else; |
30 |
jj=[1:v0facesSize(iFace,2)]; |
31 |
end; |
32 |
ii=[1:v0facesSize(iFace,1)]; |
33 |
tmp1(ii,jj,:,:)=v0{iFace}; |
34 |
v0{iFace}=tmp1; |
35 |
end; |
36 |
else;%then truncate faces |
37 |
for iFace=1:mygrid.nFaces; |
38 |
if iFace==1|iFace==2;%truncate the Southern part of faces 1 and 2 |
39 |
jj=[widefacesSize(iFace,2)-mygrid.facesSize(iFace,2)+1:widefacesSize(iFace,2)]; |
40 |
else; |
41 |
jj=[1:mygrid.facesSize(iFace,2)]; |
42 |
end; |
43 |
ii=[1:mygrid.facesSize(iFace,1)]; |
44 |
v0{iFace}=v0{iFace}(ii,jj,:,:); |
45 |
end; |
46 |
end; |
47 |
|
48 |
end; |