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

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

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


Revision 1.2 - (hide 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 mlosch 1.1 clear all
2    
3 mlosch 1.2 new = 'input.shelfice';
4     input = 'input';
5 mlosch 1.1 eostype = 'mdjwf';
6    
7 mlosch 1.2 nx = 45;
8     ny = nx*18;
9 mlosch 1.1 nz = 23;
10     nt = 12;
11    
12     load FMT
13 mlosch 1.2 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 mlosch 1.1
19     h = hn+hnz;
20 mlosch 1.2 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 mlosch 1.1
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 mlosch 1.2 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 mlosch 1.1
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 mlosch 1.2 pload = 0*hn;
95 mlosch 1.1 for ks=1:length(ix)
96     pload(ix(ks),iy(ks)) = -ph(ks)*rho0;
97     end
98    
99 mlosch 1.2 mit_writefield(fullfile(new,['pload.' eostype]),mdsiocompact(pload),fmt);
100 mlosch 1.1

  ViewVC Help
Powered by ViewVC 1.1.22