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

Contents 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 - (show 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
Error occurred while calculating annotation data.
migration of conversion routines to gcmfaces_convert

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