/[MITgcm]/MITgcm_contrib/eh3/llc/ecco-godae/input/gen_bathy.m
ViewVC logotype

Contents of /MITgcm_contrib/eh3/llc/ecco-godae/input/gen_bathy.m

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


Revision 1.2 - (show annotations) (download)
Tue Aug 22 04:40:00 2006 UTC (18 years, 11 months ago) by edhill
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
initial ci

1 %
2 % Ed Hill
3 %
4 % Generate approximate bathymetry for the llc grid
5 %
6
7 % clear all ; close all
8 dbug = 0;
9
10 % Get the ETOPO2 data
11 nlat = 5400;
12 nlon = 10800;
13 lons = linspace(-180, (180 - 2/60), nlon);
14 lats = linspace(90, -(90 - 2/60), nlat);
15 fid = fopen('ETOPO2.raw.bin', 'r', 'ieee-be');
16 et2 = reshape( fread(fid, nlat*nlon, 'int16'), [ nlon nlat ]);
17 fid = fclose(fid);
18
19 if dbug > 10
20 surf( et2(1:500,1:500) ), view(2), shading flat
21 ilon = [ 1:10:5000 ];
22 ilat = [ 1:10:5400 ];
23 surf(lons(ilon), lats(ilat), et2(ilon,ilat)'), view(2), ...
24 shading flat, axis equal
25 end
26
27 % Get the llc grid information
28 fnc_in = 'llc_p90_%d.nc';
29 vnms = { 'XC' 'YC' 'XG' 'YG' };
30 d2r = pi/180.0;
31 ginfo = {};
32 for k = 1:5
33 nc = netcdf(sprintf(fnc_in,k),'nowrite');
34 for j = 1:length(vnms)
35 eval(sprintf('ginfo(k).%s = nc{''%s''}(:);',vnms{j},vnms{j}));
36 end
37 nc = close(nc);
38
39 % compute 3D coords of the C and G points
40 cor = zeros( [ size(ginfo(k).XG) 3 ]);
41 [cor(:,:,1),cor(:,:,2),cor(:,:,3)] = sph2cart( ginfo(k).XG*d2r, ...
42 ginfo(k).YG*d2r,1 );
43 cen = zeros( [ size(ginfo(k).XC) 3 ]);
44 [cen(:,:,1),cen(:,:,2),cen(:,:,3)] = sph2cart( ginfo(k).XC*d2r, ...
45 ginfo(k).YC*d2r,1 );
46 ginfo(k).cor = cor;
47 ginfo(k).cen = cen;
48
49 % empty bathy
50 ginfo(k).bathy = zeros(size( size(ginfo(k).XC) ));
51 end
52
53 % Do a quick-and-dirty regrid
54 s_lon = -37;
55 s_lat = 0.0;
56 for k = 1:5
57 disp(sprintf(' k = %d',k));
58 %
59 % / i,j+1 i+1,j+1 \
60 % \ i,j i+i,j /
61 for j = 1:size(ginfo(k).XC,2)
62 jr = [ j j+1 ];
63 for i = 1:size(ginfo(k).XC,1)
64 ir = [ i i+1 ];
65 lon_min = min(min( ginfo(k).XG(ir,jr) + s_lon ));
66 lon_max = max(max( ginfo(k).XG(ir,jr) + s_lon ));
67 lat_min = min(min( ginfo(k).YG(ir,jr) + s_lat ));
68 lat_max = max(max( ginfo(k).YG(ir,jr) + s_lat ));
69 % [ lon_min lon_max lat_min lat_max ]
70 lon_mm = [ mod(lon_min + 180,360)-180 ...
71 mod(lon_max + 180,360)-180 ];
72 lon_min = min(lon_mm);
73 lon_max = max(lon_mm);
74
75 d_lon = lon_max - lon_min;
76 if (abs(d_lon) > 45 && lat_min < 88)
77 i_lon = find( lons >= lon_max ...
78 | lons <= lon_min );
79 else
80 i_lon = find(lon_min <= lons & lons <= lon_max);
81 end
82 i_lat = find(lat_min <= lats & lats <= lat_max);
83
84 % average the bathy
85 bv = et2(i_lon,i_lat);
86 if length(bv(:)) > 1
87 ginfo(k).bathy(i,j) = mean(bv(:));
88 else
89 ginfo(k).bathy(i,j) = NaN;
90 end
91 end
92 end
93 end
94
95 % Plot the resulting bathymetry
96 k = 3;
97 for k = 1:5
98 disp(sprintf(' k = %d',k));
99 ginfo(k).b_oce = ginfo(k).bathy;
100 ginfo(k).b_oce(find(ginfo(k).b_oce >= 0.0)) = NaN;
101 surf( ginfo(k).cor(:,:,1), ...
102 ginfo(k).cor(:,:,2), ...
103 ginfo(k).cor(:,:,3), ginfo(k).b_oce )
104 end
105 axis equal, view(2)
106
107

  ViewVC Help
Powered by ViewVC 1.1.22