Changeset 26142
- Timestamp:
- 03/23/21 16:59:53 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/examples/SlrGRACE/runme.m
r25986 r26142 4 4 steps=[7]; 5 5 6 if any(steps==1) 6 if any(steps==1) 7 7 disp(' Step 1: Global mesh creation'); 8 8 9 numrefine= 1;10 resolution= 300*1e3; % inital resolution [m]9 numrefine=5; 10 resolution=150*1e3; % inital resolution [m] 11 11 radius = 6.371012*10^6; % mean radius of Earth, m 12 12 mindistance_coast=150*1e3; % coastal resolution [m] … … 23 23 distance=zeros(md.mesh.numberofvertices,1); 24 24 25 pos=find(~ocean_mask); coaste.lat=md.mesh.lat(pos); coaste.long=md.mesh.long(pos); 26 pos=find(ocean_mask); coasto.lat=md.mesh.lat(pos); coasto.long=md.mesh.long(pos); 27 25 pos=find(~ocean_mask); coaste.lat=md.mesh.lat(pos); coaste.long=md.mesh.long(pos); pos=find(ocean_mask); coasto.lat=md.mesh.lat(pos); coasto.long=md.mesh.long(pos); 28 26 for j=1:md.mesh.numberofvertices 29 27 phi1=md.mesh.lat(j)/180*pi; lambda1=md.mesh.long(j)/180*pi; … … 40 38 end 41 39 pos=find(distance<mindistance_coast); distance(pos)=mindistance_coast; 42 40 43 41 pos2=find(ocean_mask~=1 & distance>mindistance_land); 44 42 distance(pos2)=mindistance_land; … … 49 47 50 48 ocean_mask=gmtmask(md.mesh.lat,md.mesh.long); 51 pos = find(ocean_mask==0); 52 md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1); 53 md.mask.ocean_levelset(pos)=1; 54 49 pos = find(ocean_mask==0); md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1); md.mask.ocean_levelset(pos)=1; 55 50 save ./Models/SlrGRACE_Mesh md; 56 51 57 52 plotmodel (md,'data',md.mask.ocean_levelset,'edgecolor','k'); 58 end 59 60 if any(steps==2) 53 end 54 if any(steps==2) 61 55 disp(' Step 2: Define loads in meters of ice height equivalent'); 62 56 md = loadmodel('./Models/SlrGRACE_Mesh'); … … 72 66 73 67 plotmodel (md,'data',md.solidearth.surfaceload.icethicknesschange,'view',[90 -90],'caxis',[-.1 .1],'title','Ice height equivalent [m]'); 74 end 75 76 if any(steps==3) 68 end 69 if any(steps==3) 77 70 disp(' Step 3: Parameterization'); 78 71 md = loadmodel('./Models/SlrGRACE_Loads'); … … 80 73 md.solidearth.lovenumbers = lovenumbers('maxdeg',10000); 81 74 82 md.mask.ice_levelset=-md.mask.ocean_levelset; 83 75 md.mask.ice_levelset=-md.mask.ocean_levelset; 84 76 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 85 77 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; … … 89 81 md.solidearth.settings.ocean_area_scaling=1; 90 82 91 % arbitary to pass consistency check. 92 md.geometry.bed=-ones(md.mesh.numberofvertices,1); 83 % arbitary to pass consistency check. md.geometry.bed=-ones(md.mesh.numberofvertices,1); 93 84 md.geometry.surface=ones(md.mesh.numberofvertices,1); 94 md.geometry.base=md.geometry.bed; 95 md.geometry.thickness=md.geometry.surface-md.geometry.base; 96 85 md.geometry.base=md.geometry.bed; md.geometry.thickness=md.geometry.surface-md.geometry.base; 97 86 md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1); 98 87 md.materials.rheology_B=paterson(md.initialization.temperature); … … 102 91 103 92 save ./Models/SlrGRACE_Parameterization md; 104 end 105 106 if any(steps==4) 93 end 94 if any(steps==4) 107 95 disp(' Step 4: Solve Slr solver'); 108 96 md = loadmodel('./Models/SlrGRACE_Parameterization'); … … 120 108 121 109 save ./Models/SlrGRACE_Solution md; 122 end 123 124 if any(steps==5) 110 end 111 if any(steps==5) 125 112 disp(' Step 5: Plot solutions'); 126 113 md = loadmodel('./Models/SlrGRACE_Solution'); 127 114 128 sol1 = md.solidearth.surfaceload.icethicknesschange*100; 115 sol1 = md.solidearth.surfaceload.icethicknesschange*100; % [cm] 129 116 sol2 = md.results.SealevelriseSolution.SealevelRSL*1000; % [mm] 130 117 … … 155 142 F.Method = 'linear'; 156 143 F.ExtrapolationMethod = 'linear'; 157 144 158 145 sol_grid = F(lat_grid, lon_grid); 159 146 sol_grid(isnan(sol_grid))=0; … … 162 149 set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8) 163 150 figure1=figure('Position', [100, 100, 1000, 500]); 164 gcf; load coast ; cla;151 gcf; load coastlines; cla; 165 152 pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on; 166 153 if (kk==1) 167 geoshow(flipud( lat),flipud(long),'DisplayType','polygon','FaceColor','white');154 geoshow(flipud(coastlat),flipud(coastlon),'DisplayType','polygon','FaceColor','white'); 168 155 else 169 geoshow( lat,long,'DisplayType','polygon','FaceColor','white');170 end 171 plot( long,lat,'k'); hold off;156 geoshow(coastlat,coastlon,'DisplayType','polygon','FaceColor',[.5 1 .5]); 157 end 158 plot(coastlon, coastlat,'k'); hold off; 172 159 c1=colorbar; 173 160 colormap('haxby'); … … 180 167 %export_fig(fig_name{kk}); 181 168 end 182 end 183 184 if any(steps==6) 169 end 170 if any(steps==6) 185 171 disp(' Step 6: Transient run'); 186 172 md = loadmodel('./Models/SlrGRACE_Parameterization'); … … 199 185 md.transient.isstressbalance=0; 200 186 md.transient.isthermal=0; 201 md.transient.isgia=1; 202 md.transient.isslr=1; 187 md.transient.isgia=1; md.transient.isslr=1; 203 188 204 189 md.timestepping.start_time=-1; … … 212 197 213 198 md.solidearth.requested_outputs = {'Sealevel','SealevelRSL'}; 214 199 215 200 md=solve(md,'tr'); 216 201 217 202 save ./Models/SlrGRACE_Transient md; 218 end 219 220 if any(steps==7) 203 end 204 if any(steps==7) 221 205 disp(' Step 7: Plot transient'); 222 206 md = loadmodel('./Models/SlrGRACE_Transient'); … … 230 214 end 231 215 sol_name = {'Change in water equivalent height [cm]', 'Relative sea-level [mm]'}; 232 movie_name = {'Movie_dH. avi','Movie_slr.avi'};216 movie_name = {'Movie_dH.mp4','Movie_slr.mp4'}; 233 217 234 218 res = 1.0; … … 254 238 vidObj = VideoWriter(movie_name{kk}); 255 239 vidObj.FrameRate=2; % frames per second 240 vifObj.FileFormat='mp4'; 256 241 open(vidObj); 257 242 258 243 for jj=1:length(time) 244 fprintf('creating frame %d...', jj); 259 245 F = scatteredInterpolant(md.mesh.lat,md.mesh.long,sol(:,jj)); 260 246 F.Method = 'linear'; 261 247 F.ExtrapolationMethod = 'linear'; 262 248 263 249 sol_grid = F(lat_grid, lon_grid); 264 250 sol_grid(isnan(sol_grid))=0; … … 267 253 set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8) 268 254 figure1=figure('Position', [100, 100, 1000, 500]); 269 gcf; load coast ; cla;255 gcf; load coastlines; cla; 270 256 pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on; 271 257 if (kk==1) 272 geoshow(flipud( lat),flipud(long),'DisplayType','polygon','FaceColor','white');258 geoshow(flipud(coastlat),flipud(coastlon),'DisplayType','polygon','FaceColor','white'); 273 259 else 274 geoshow( lat,long,'DisplayType','polygon','FaceColor','white');275 end 276 plot( long,lat,'k'); hold off;260 geoshow(coastlat,coastlon,'DisplayType','polygon','FaceColor','white'); 261 end 262 plot(coastlon,coastlat,'k'); hold off; 277 263 c1=colorbar; 278 264 colormap('haxby'); … … 285 271 writeVideo(vidObj,getframe(gcf)); 286 272 close 287 end 273 fprintf('done\n'); 274 end 275 disp('closing vidObj...'); 288 276 close(vidObj); 289 277 end 290 !open *. avi;278 !open *.mp4; 291 279 292 280 % plot GMSL time series … … 296 284 set(gcf,'color','w'); 297 285 %export_fig('Fig7.pdf'); 298 end 286 end
Note:
See TracChangeset
for help on using the changeset viewer.