/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_IO/convert2gcmfaces.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_IO/convert2gcmfaces.m

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


Revision 1.5 - (hide annotations) (download)
Tue Jun 21 21:18:48 2011 UTC (14 years ago) by gforget
Branch: MAIN
Changes since 1.4: +24 -32 lines
- convert2gcmfaces	remove the complicated logic (incl. fileFormat part)
			remove the nFaces argument
			get fileFormat and nFaces from mygrid.
- grid_load		remove the isempty(mygrid) test and load grid each time instead
			remove the rest of the complicated logic at the beginning
			set the list of arguments to dirGrid,nFaces,fileFormat
			add dirGrid,nFaces,fileFormat to mygrid for later use
- rdmds2gcmfaces	remove the complicated logic (incl. fileFormat part)
			remove nFaces argument accordingly
			now all arguments (varargin) are simply passed to rdmds

1 gforget 1.1 function [v1]=convert2gcmfaces(v0,varargin);
2 gforget 1.5 %object: converts model output to gcmfaces object
3     % or vice versa
4     %input: v0 model output array (resp. gcmfaces object)
5     %output: v1 gcmfaces object (model output array)
6     %
7     %note: global mygrid parameters (nFaces, fileFormat) are used
8 gforget 1.1
9 gforget 1.5 input_list_check('convert2gcmfaces',nargin);
10 gforget 1.3
11 gforget 1.1 aa=whos('v0'); doGcm2Faces=strcmp(aa.class,'double');
12    
13 gforget 1.5 global mygrid;
14    
15 gforget 1.1 if doGcm2Faces;
16    
17 gforget 1.3 [n1,n2,n3,n4]=size(v0);
18    
19 gforget 1.5 if strcmp(mygrid.fileFormat,'straight');
20 gforget 1.3 v1={v0};
21 gforget 1.5 elseif strcmp(mygrid.fileFormat,'cube');
22 gforget 1.3 for ii=1:6; v1{ii}=v0(n2*(ii-1)+[1:n2],:,:,:); end;
23 gforget 1.5 elseif strcmp(mygrid.fileFormat,'compact');
24 gforget 1.1
25     nn=size(v0,1);
26     pp=size(v0,2)/nn;
27 gforget 1.5 mm=(pp+4-mygrid.nFaces)/4*nn;
28 gforget 1.1
29 gforget 1.2 v00=reshape(v0,[nn*nn*pp n3*n4]);
30     i0=1; i1=nn*mm; v1{1}=reshape(v00(i0:i1,:),[nn mm n3 n4]);
31     i0=i1+1; i1=i1+nn*mm; v1{2}=reshape(v00(i0:i1,:),[nn mm n3 n4]);
32     i0=i1+1; i1=i1+nn*nn; v1{3}=reshape(v00(i0:i1,:),[nn nn n3 n4]);
33     i0=i1+1; i1=i1+nn*mm; v1{4}=reshape(v00(i0:i1,:),[mm nn n3 n4]);
34     i0=i1+1; i1=i1+nn*mm; v1{5}=reshape(v00(i0:i1,:),[mm nn n3 n4]);
35 gforget 1.5 if mygrid.nFaces==6;
36 gforget 1.2 i0=i1+1; i1=i1+nn*nn; v1{6}=reshape(v00(i0:i1,:),[nn nn n3 n4]);
37     end;
38 gforget 1.1
39     end;
40    
41 gforget 1.5 if mygrid.nFaces==1; gridType='ll';
42     elseif mygrid.nFaces==5; gridType='llc';
43     elseif mygrid.nFaces==6; gridType='cube';
44     end;
45 gforget 1.1 v1=gcmfaces(v1,gridType);
46    
47     else;
48    
49 gforget 1.3 [n1,n2,n3,n4]=size(v0{1});
50    
51 gforget 1.5 if strcmp(mygrid.fileFormat,'straight');
52 gforget 1.3 v1=v0{1};
53 gforget 1.5 elseif strcmp(mygrid.fileFormat,'cube');
54 gforget 1.3 v1=zeros(n2*6,n2,n3,n4);
55     for ii=1:6; v1([1:n2]+(ii-1)*n2,:,:,:)=v0{ii}; end;
56 gforget 1.5 elseif strcmp(mygrid.fileFormat,'compact');
57 gforget 1.1
58     v0_faces=v0; clear v0;
59 gforget 1.5 for iFace=1:mygrid.nFaces; eval(['v0{iFace}=get(v0_faces,''f' num2str(iFace) ''');']); end;
60 gforget 1.1
61     nn=size(v0{1},1); mm=size(v0{1},2);
62 gforget 1.5 pp=mm/nn*4+mygrid.nFaces-4;
63 gforget 1.1
64     n3=size(v0{1},3); n4=size(v0{1},4);
65     v1=NaN*zeros(nn,nn*pp,n3,n4);
66    
67 gforget 1.2 v11=NaN*zeros(nn*nn*pp,n3*n4);
68    
69     i0=1; i1=nn*mm; tmp1=reshape(v0{1},[nn*mm n3*n4]); v11(i0:i1,:)=tmp1(:,:);
70     i0=i1+1; i1=i1+nn*mm; tmp1=reshape(v0{2},[nn*mm n3*n4]); v11(i0:i1,:)=tmp1(:,:);
71     i0=i1+1; i1=i1+nn*nn; tmp1=reshape(v0{3},[nn*nn n3*n4]); v11(i0:i1,:)=tmp1(:,:);
72     i0=i1+1; i1=i1+nn*mm; tmp1=reshape(v0{4},[mm*nn n3*n4]); v11(i0:i1,:)=tmp1(:,:);
73     i0=i1+1; i1=i1+nn*mm; tmp1=reshape(v0{5},[mm*nn n3*n4]); v11(i0:i1,:)=tmp1(:,:);
74 gforget 1.5 if mygrid.nFaces==6;
75 gforget 1.2 i0=i1+1; i1=i1+nn*nn; tmp1=reshape(v0{6},[nn*nn n3*n4]); v11(i0:i1,:)=tmp1(:,:);
76     end;
77 gforget 1.1
78 gforget 1.2 v1=reshape(v11,[nn nn*pp n3 n4]);
79 gforget 1.1
80     end;
81    
82     end;
83    
84    

  ViewVC Help
Powered by ViewVC 1.1.22