/[MITgcm]/MITgcm_contrib/mlosch/interp_llc/addshelfice.m
ViewVC logotype

Contents of /MITgcm_contrib/mlosch/interp_llc/addshelfice.m

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


Revision 1.2 - (show annotations) (download)
Fri May 4 14:53:00 2007 UTC (18 years, 2 months ago) by mlosch
Branch: MAIN
Changes since 1.1: +25 -14 lines
add a corrected version to include ice shelves

1 clear all
2
3 new = 'input.shelfice';
4 input = 'input';
5 eostype = 'mdjwf';
6
7 nx = 45;
8 ny = nx*18;
9 nz = 23;
10 nt = 12;
11
12 load FMT
13 load HN
14 load ZN
15 % $$$ hn = mit_readfield(fullfile(input,'bathy_llc_p90.bin'),[nx ny],fmt);
16 % $$$ hnz = mit_readfield(fullfile(input,'shelfice_bath.bin'),[nx ny],fmt);
17 % $$$ zn = mit_readfield(fullfile(input,'shelfice_topo.bin'),[nx ny],fmt);
18
19 h = hn+hnz;
20 mit_writefield(fullfile(new,'bathy_llc_p90.bin'),mdsiocompact(hn),fmt);
21 mit_writefield(fullfile(new,'bathy_llc_p90.shice'),mdsiocompact(h),fmt);
22 mit_writefield(fullfile(new,'shelfice_topo.bin'),mdsiocompact(zn),fmt);
23
24 % create hydrographic fields
25 levt = mit_readfield(fullfile(input,'lev_t.bin'),[nx ny nz nt],fmt);
26 levs = mit_readfield(fullfile(input,'lev_s.bin'),[nx ny nz nt],fmt);
27 is = find(zn~=0);
28 [ix,iy] = find(zn~=0);
29 [t,s] = shelfice_hydrography(ix,iy,is,levt,levs);
30 mit_writefield(fullfile(new,'lev_t.shice'),mdsiocompact(t),fmt);
31 mit_writefield(fullfile(new,'lev_s.shice'),mdsiocompact(s),fmt);
32
33 % create hydrographic fields
34 levt = mdsiocompact(mit_readfield(fullfile(input,'lev_t.init'),[nx ny nz],fmt),0);
35 levs = mdsiocompact(mit_readfield(fullfile(input,'lev_s.init'),[nx ny nz],fmt),0);
36 is = find(zn~=0);
37 [ix,iy] = find(zn~=0);
38 [t,s] = shelfice_hydrography(ix,iy,is,levt,levs);
39 mit_writefield(fullfile(new,'lev_t.shice.init'),mdsiocompact(t),fmt);
40 mit_writefield(fullfile(new,'lev_s.shice.init'),mdsiocompact(s),fmt);
41
42 % create geopotential anomaly
43 gravity = 9.81;
44 rho0 = 1035;
45 tol = 0;
46 si2dbar = 1e-4;
47 phiHydC = zeros(nz,length(ix));
48 phiHydF = zeros(nz+1,length(ix));
49 disp('compute geopotential anomaly')
50 load VGRID
51 for ks=1:length(ix)
52 t0 = squeeze(mean(t(ix(ks),iy(ks),:,:),4));
53 s0 = squeeze(mean(s(ix(ks),iy(ks),:,:),4));
54 % compute potential anomaly exactly as in code
55 % for that we need the correct density
56 rho = [];
57 p = -zc(:)*gravity*rho0*si2dbar;
58 dp = p;
59 tol1 = 1;
60 tol2 = 2;
61 kw = 0;
62 while tol1 > tol
63 kw = kw+1;
64 if strcmp(eostype,'mdjwf')
65 rho = [rho densmdjwf(s0,t0,p(:,end))];
66 else
67 error(['unknown eostype: ' eostype]);
68 end
69 p = [p -zc(:).*rho(:,end)*gravity*si2dbar];
70 dp = p(:,end)-p(:,end-1);
71 tol2 = tol1;
72 tol1 = sqrt(sum(dp.^2));
73 if tol1==tol2; break; end;
74 end
75 % now intergrate
76 drho = rho(:,end)-rho0;
77 for k=1:nz
78 drm = .5*dz(k);
79 if k==1; drm = zf(k)-zc(k); end
80 if k==nz;
81 drp = zc(k)-zf(k+1);
82 else
83 drp = .5*dz(k+1);
84 end
85 phiHydC(k,ks)=phiHydF(k,ks) + drm*gravity*drho(k)/rho0;
86 phiHydF(k+1,ks)=phiHydC(k,ks) +drp*gravity*drho(k)/rho0;
87 end
88 % find the appropriate level
89 zloc = zn(is(ks));
90 kl = max(find(zloc < zf));
91 ph(ks) = phiHydF(kl,ks);
92 end
93
94 pload = 0*hn;
95 for ks=1:length(ix)
96 pload(ix(ks),iy(ks)) = -ph(ks)*rho0;
97 end
98
99 mit_writefield(fullfile(new,['pload.' eostype]),mdsiocompact(pload),fmt);
100

  ViewVC Help
Powered by ViewVC 1.1.22