/[MITgcm]/MITgcm_contrib/shelfice_remeshing/input/rwpu.m
ViewVC logotype

Contents of /MITgcm_contrib/shelfice_remeshing/input/rwpu.m

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


Revision 1.2 - (show annotations) (download)
Thu Sep 10 14:41:59 2015 UTC (9 years, 10 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
*** empty log message ***

1 clear all
2 close all
3 clc
4
5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6 % Read in and reshape files
7 fid = fopen('pickup.OLD.data','r','b');
8 pickupold = fread(fid,inf,'real*8');
9 fclose(fid);
10
11 fid = fopen('pload.OLD.jmd95z','r','b');
12 ploadold = fread(fid,inf,'real*8');
13 fclose(fid);
14
15 fid = fopen('shelftopo.OLDPIG.bin','r','b');
16 pigold=fread(fid,inf,'real*8');
17 fclose(fid);
18
19 fid = fopen('shelftopo.OLDROUND.bin','r','b');
20 shelftopoold=fread(fid,inf,'real*8');
21 fclose(fid);
22
23 nx=1;
24 ny=200;
25 nz=100;
26
27 delz=10;
28
29 dz = delz*ones(1,nz);
30 zgp1 = [0,cumsum(dz)];
31 zc = .5*(zgp1(1:end-1)+zgp1(2:end));
32 zg = zgp1(1:end-1);
33 dz = diff(zgp1);
34
35 s3=nx*ny*nz;
36 s2=nx*ny;
37
38 olduvel=reshape(pickupold(1:s3),[nx ny nz]);
39 oldvvel=reshape(pickupold(1+(1*s3):2*s3),[nx ny nz]);
40 oldtheta=reshape(pickupold(1+2*s3:3*s3),[nx ny nz]);
41 oldsalt=reshape(pickupold(1+3*s3:4*s3),[nx ny nz]);
42 oldgunm1=reshape(pickupold(1+4*s3:5*s3),[nx ny nz]);
43 oldgvnm1=reshape(pickupold(1+5*s3:6*s3),[nx ny nz]);
44 oldetan=reshape(pickupold(1+6*s3:(6*s3)+(1*s2)),[nx ny]);
45 olddetahdt=reshape(pickupold(1+6*s3+(1*s2):(6*s3)+(2*s2)),[nx ny]);
46 oldetah=reshape(pickupold(1+6*s3+(2*s2):(6*s3)+(3*s2)),[nx ny]);
47
48 shelftopoold=reshape(shelftopoold,[nx ny]);
49 ploadold=reshape(ploadold,[nx ny]);
50 pigold=reshape(pigold,[nx ny]);
51 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 %Find where eta indicates a change in ice shelf topo above threshold.
53 %Change eta, iceshelf topo and r0surfto reflect change in mesh
54
55 threshold=5;
56 [etax,etay] =find(oldetan>threshold);
57
58 %Change single, not all cells >threshold
59 %etax=etax(3);
60 %etay=etay(3);
61
62 for i = 1:size(etax,1)
63 etaz(i)=((shelftopoold(etax(i),etay(i)))/10*-1)+1;
64 end
65
66 OLDX=etax;
67 OLDY=etay;
68 OLDZ=etaz;
69 NEWZ=etaz-1;
70
71 shelftoponew=shelftopoold;
72 pignew=pigold;
73 shelftoponew(etax,etay)=shelftopoold(etax,etay)+delz;
74 pignew(etax,etay)=pigold(etax,etay)+delz;
75
76 newetan=oldetan;
77 newetan(etax,etay)=oldetan(etax,etay)-delz;
78
79 newdetahdt=olddetahdt;
80 %newetah=oldetah;
81 newetah=newetan;
82
83 ploadnew=ploadold;
84 rhoConst = 1030;
85 talpha = 2e-4;
86 sbeta = 7.4e-4;
87 gravity = 9.81;
88 k=1;
89 dzm = abs([zg(1)-zc(1) .5*diff(zc)]);
90 dzp = abs([.5*diff(zc) zc(end)-zg(end)]);
91 p = abs(zc)*gravity*rhoConst*1e-4;
92 dp = p;
93 kp = 0;
94 eos = 'jmd95z';
95 T_sfc = -1.9;
96 T_bottom = 2;
97 del_T = (T_bottom - T_sfc)/(59*delz);
98
99 for iz = 1:nz;
100
101
102 tref(iz) = T_sfc + del_T*((iz-30)*delz);
103 if iz<=30;
104 tref(iz)=-1.9;
105 end
106 if iz>=90
107 tref(iz) =2;
108 end
109 end
110
111 S_sfc = 34.2050;
112 S_bottom = 34.6967;
113 del_S = (S_bottom - S_sfc)/(59*delz);
114
115 for iz = 1:nz;
116
117
118 sref(iz) = S_sfc + del_S*((iz-30)*delz);
119 if iz<=30;
120 sref(iz)=34.2;
121 end
122 if iz>=90
123 sref(iz) =34.7;
124 end
125 end
126
127 t = tref;
128
129 s = sref;
130
131
132 while rms(dp) > 1e-13
133 phiHydF(k) = 0;
134 p0 = p;
135 kp = kp+1;
136 for k = 1:nz
137 switch eos
138 case 'linear'
139 drho = rhoConst*(1-talpha*(t(k)-tref(k))+sbeta*(s(k)-sref(k)))-rhoConst;
140 case 'jmd95z'
141 drho = densjmd95(s(k),t(k),p(k))-rhoConst;
142 case 'mdjwf'
143 drho = densmdjwf(s(k),t(k),p(k))-rhoConst;
144 otherwise
145 error(sprintf('unknown EOS: %s',eos))
146 end
147 phiHydC(k) = phiHydF(k) + dzm(k)*gravity*drho/rhoConst;
148 phiHydF(k+1) = phiHydC(k) + dzp(k)*gravity*drho/rhoConst;
149 end
150 switch eos
151 case 'mdjwf'
152 p = (gravity*rhoConst*abs(zc) + phiHydC*rhoConst)/gravity/rhoConst;
153 end
154 dp = p-p0;
155 end
156
157
158 for ix=1:nx
159 for iy=1:ny
160 k=max(find(abs(zg)<abs(pignew(ix,iy))));
161 if isempty(k)
162 k=0;
163 end
164 if k>0
165
166 dr = -zg(k) - pignew(ix,iy);
167
168 if (dr>=delz/2)
169 ploadnew(ix,iy) = phiHydF(k) + (delz-dr) * (phiHydC(k)-phiHydF(k))/(delz/2);
170 else
171 ploadnew(ix,iy) = phiHydC(k) + (delz/2-dr) * (phiHydF(k+1)-phiHydC(k))/(delz/2);
172 end
173
174 end
175 end
176 end
177
178
179
180
181 newsalt=oldsalt;
182 newtheta=oldtheta;
183 newuvel=olduvel;
184 newvvel=oldvvel;
185 newgunm1=oldgunm1;
186 newgvnm1=oldgvnm1;
187
188
189
190 for i=1:size(OLDX)
191 newsalt(OLDX(i),OLDY(i),NEWZ(i))=oldsalt(OLDX(i),OLDY(i),OLDZ(i));
192 newtheta(OLDX(i),OLDY(i),NEWZ(i))=oldtheta(OLDX(i),OLDY(i),OLDZ(i));
193
194 newuvel(OLDX(i),OLDY(i),NEWZ(i))=olduvel(OLDX(i),OLDY(i),OLDZ(i));
195 %newuvel(OLDX(i)+1,OLDY(i),NEWZ(i))=olduvel(OLDX(i)+1,OLDY(i),OLDZ(i));
196 newvvel(OLDX(i),OLDY(i),NEWZ(i))=oldvvel(OLDX(i),OLDY(i),OLDZ(i));
197 newvvel(OLDX(i),OLDY(i)+1,NEWZ(i))=oldvvel(OLDX(i),OLDY(i)+1,OLDZ(i));
198
199 newgunm1(OLDX(i),OLDY(i),NEWZ(i))=0;
200 %newgunm1(OLDX(i)+1,OLDY(i),NEWZ(i))=0;
201 newgvnm1(OLDX(i),OLDY(i),NEWZ(i))=0;
202 newgvnm1(OLDX(i),OLDY(i)+1,NEWZ(i))=0;
203
204 end
205
206
207
208 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
209 % % %Write out pickup file
210 uvel=reshape(newuvel,[1 nx*ny*nz]);
211 vvel=reshape(newvvel,[1 nx*ny*nz]);
212 theta=reshape(newtheta,[1 nx*ny*nz]);
213 salt=reshape(newsalt,[1 nx*ny*nz]);
214 gunm1=reshape(newgunm1,[1 nx*ny*nz]);
215 gvnm1=reshape(newgvnm1,[1 nx*ny*nz]);
216 etan=reshape(newetan,[1 nx*ny]);
217 detahdt=reshape(newdetahdt,[1 nx*ny]);
218 etah=reshape(newetah,[1 nx*ny]);
219
220 pickupnew=[uvel,vvel,theta,salt,gunm1,gvnm1,etan,detahdt,etah];
221 pickupnew=pickupnew';
222
223 shelftoponew=reshape(shelftoponew,[nx*ny 1]);
224 ploadnew=reshape(ploadnew,[nx*ny 1]);
225
226
227 fid = fopen('pickup.0000025920.data','w','b'); fwrite(fid,pickupnew,'real*8'); fclose(fid);
228 fid = fopen('pload.pig.jmd95z','w','b'); fwrite(fid,ploadnew,'real*8'); fclose(fid)
229 fid = fopen('shelftopo.round.bin','w','b'); fwrite(fid,shelftoponew,'real*8'); fclose(fid)
230
231
232
233 %
234
235

  ViewVC Help
Powered by ViewVC 1.1.22