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

Annotation 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.1 - (hide annotations) (download)
Mon Aug 14 20:57:51 2006 UTC (18 years, 11 months ago) by edhill
Branch: MAIN
initial ci

1 edhill 1.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