/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_convert/convert2arctic.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_convert/convert2arctic.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sun May 2 21:10:33 2010 UTC (15 years, 2 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
migration of conversion routines to gcmfaces_convert

1 gforget 1.1 function [fld0]=convert2arctic(fld00,varargin);
2    
3     if fld00.nFaces==1; fld00=convert2cube(fld00); end;
4    
5     n1=size(fld00{1},1);
6     n2=size(fld00{1},2);
7     n3=size(fld00{1},3);
8     n4=size(fld00{1},4);
9    
10     f1=flipdim(permute(fld00{1},[2 1 3 4]),2);
11     f2=fld00{2};
12     f3=fld00{3};
13     f4=fld00{4};
14     f5=flipdim(permute(fld00{5},[2 1 3 4]),1);
15     if isempty(fld00{3}); f3=NaN*zeros(n1,n1,n3,n4); end;
16    
17     fld0=NaN*zeros(n2*2+n1,n2*2+n1,n3,n4);
18     fld0(1:n2,n2+1:n2+n1,:,:)=f1;
19     fld0(n2+1:n2+n1,n2+1:n2+n1,:,:)=f3;
20     fld0(n2+n1+1:end,n2+1:n2+n1,:,:)=f4;
21     fld0(n2+1:n2+n1,1:n2,:,:)=f2;
22     fld0(n2+1:n2+n1,n2+n1+1:end,:,:)=f5;
23    
24     nn=round(n2/2);
25     nn2=n2-nn+1; nn1=n2*2+n1-nn2+1;
26     fld0=fld0(nn2:nn1,nn2:nn1);
27    
28     if nargin==2; doFill=varargin{1}; else; doFill=1; end;
29     if doFill;
30    
31     if n3>1; fprintf('not implemented yet\n'); return; end;
32     %fill the corners of fld0:
33     warning('off','MATLAB:interp1:NaNinY');
34     for pp=1:4;
35     %do the interpolation in polar coordinates...
36     ii=[0:nn]'*ones(1,nn+1); jj=ones(nn+1,1)*[0:nn];
37     aa=angle(ii+i*jj); bb=min(abs(ii+i*jj),nn);
38     %
39     v0=fld0(end-nn:end,end-nn:end);
40     k1=find(aa==0); k2=find(aa>0&aa<=pi/4); v0(k2)=interp1(bb(k1),v0(k1),bb(k2));
41     k1=find(aa==pi/2); k2=find(aa>pi/4&aa<=pi/2); v0(k2)=interp1(bb(k1),v0(k1),bb(k2));
42     fld0(end-nn+1:end,end-nn+1:end)=v0(2:end,2:end);
43     fld0=sym_g(fld0,5,0);
44     %
45     end;
46     warning('on','MATLAB:interp1:NaNinY');
47    
48     end;%if doFill;
49    

  ViewVC Help
Powered by ViewVC 1.1.22