1 |
gforget |
1.1 |
function []=example_remap(doRemap3d); |
2 |
|
|
%object: map a lon-lat field to gcmfaces |
3 |
|
|
%input: doRemap3d; if set to 1, then demo 3d case (involves |
4 |
|
|
% extrapolation, and takes a few minutes to compute) |
5 |
|
|
|
6 |
gforget |
1.2 |
gcmfaces_global; |
7 |
|
|
|
8 |
gforget |
1.3 |
fil=fullfile(pwd,filesep,'sample_input',filesep,'testcase_remap.mat'); |
9 |
|
|
if isempty(dir(fil)); |
10 |
gforget |
1.2 |
help gcmfaces_demo; |
11 |
gforget |
1.4 |
warning('skipping example_remap (missing sample_input/testcase_remap.mat)'); |
12 |
gforget |
1.1 |
return; |
13 |
|
|
end; |
14 |
|
|
|
15 |
|
|
if isempty(whos('doRemap3d')); doRemap3d=0; end; |
16 |
|
|
|
17 |
|
|
%%%%%%%%%%%%%%%%% |
18 |
gforget |
1.3 |
%load grid: |
19 |
gforget |
1.1 |
%%%%%%%%%%%%%%%%% |
20 |
|
|
|
21 |
gforget |
1.3 |
if isempty(mygrid); |
22 |
|
|
grid_load; |
23 |
|
|
end; |
24 |
|
|
nF=mygrid.nFaces; |
25 |
|
|
|
26 |
|
|
%%%%%%%%%%%%%%%%% |
27 |
|
|
%load test case: |
28 |
|
|
%%%%%%%%%%%%%%%%% |
29 |
gforget |
1.1 |
|
30 |
gforget |
1.3 |
load(fil); |
31 |
gforget |
1.1 |
|
32 |
|
|
if myenv.verbose>0; |
33 |
|
|
gcmfaces_msg('==============================================='); |
34 |
|
|
gcmfaces_msg(['*** entering example_remap that demonstrate ' ... |
35 |
|
|
'the use of gcmfaces_remap_2d and gcmfaces_remap_3d '],''); |
36 |
|
|
end; |
37 |
|
|
|
38 |
|
|
warning('off','MATLAB:dsearch:DeprecatedFunction'); |
39 |
|
|
warning('off','MATLAB:delaunay:DuplicateDataPoints'); |
40 |
|
|
|
41 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
42 |
|
|
%map lon-lat field to gcmfaces |
43 |
|
|
|
44 |
|
|
if myenv.verbose>0; |
45 |
|
|
gcmfaces_msg('* map lon-lat field to gcmfaces'); |
46 |
|
|
end; |
47 |
|
|
|
48 |
|
|
kk=20;%choice of output depth level |
49 |
|
|
kkIn=max(find(depth<-mygrid.RC(kk)));% corresponding choice of input level |
50 |
|
|
|
51 |
|
|
%without extrapolation (note: shallow regions are blank in FLD) |
52 |
|
|
% ref_remap2d=FLD1(:,:,kkIn); |
53 |
|
|
ref_remap2d=fld1(:,:,kk); |
54 |
|
|
fld_remap2d=gcmfaces_remap_2d(lon,lat,FLD2(:,:,kkIn),3); |
55 |
|
|
fld_remap2d_extrap=gcmfaces_remap_2d(lon,lat,FLD2(:,:,kkIn),3,mygrid.mskC(:,:,kk)); |
56 |
|
|
|
57 |
|
|
%extrapolate to fill 3D model domain (note: extrapolation is often a bad idea) |
58 |
|
|
if doRemap3d; |
59 |
|
|
ref_remap3d=fld1(:,:,kk); |
60 |
|
|
fld_remap3d=gcmfaces_remap_3d(lon,lat,depth(kkIn+[-2:2]),FLD2(:,:,kkIn+[-2:2])); |
61 |
|
|
fld_repmat3d_kk=fld_remap3d(:,:,kk); |
62 |
|
|
end; |
63 |
|
|
|
64 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
65 |
|
|
%quick display |
66 |
|
|
cc=[0.4:0.05:1.1]; |
67 |
|
|
% |
68 |
|
|
if myenv.verbose>0; |
69 |
|
|
gcmfaces_msg('* gcmfaces_remap_2d result (without extrapolation)'); |
70 |
|
|
end; |
71 |
gforget |
1.5 |
figureL; gcmfaces_sphere(fld_remap2d,cc,[],'N',1); title('gcmfaces_remap_2d result '); |
72 |
gforget |
1.1 |
if myenv.verbose>0; |
73 |
|
|
gcmfaces_msg('* gcmfaces_remap_2d result (with extrapolation)'); |
74 |
|
|
end; |
75 |
gforget |
1.5 |
figureL; gcmfaces_sphere(fld_remap2d_extrap,cc,[],'N',1); title('gcmfaces_remap_2d result (extrapolated)'); |
76 |
gforget |
1.1 |
% |
77 |
|
|
if doRemap3d; |
78 |
|
|
if myenv.verbose>0; |
79 |
|
|
gcmfaces_msg('* original field'); |
80 |
|
|
end; |
81 |
gforget |
1.5 |
figureL; gcmfaces_sphere(ref_remap2d,cc,[],'N',1); title('original field (slightly different level)'); |
82 |
gforget |
1.1 |
if myenv.verbose>0; |
83 |
|
|
gcmfaces_msg('* gcmfaces_remap_3d result (involves extrapolation)'); |
84 |
|
|
end; |
85 |
gforget |
1.5 |
figureL; gcmfaces_sphere(fld_repmat3d_kk,cc,[],'N',1); title('gcmfaces_remap_3d result'); |
86 |
gforget |
1.1 |
end; |
87 |
|
|
|
88 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
89 |
|
|
if myenv.verbose>0; |
90 |
|
|
gcmfaces_msg('*** leaving example_remap'); |
91 |
|
|
gcmfaces_msg('==============================================='); |
92 |
|
|
end; |
93 |
|
|
|
94 |
|
|
|
95 |
|
|
|
96 |
|
|
|