Changeset 20733
- Timestamp:
- 06/14/16 11:42:36 (9 years ago)
- Location:
- issm/trunk-jpl/examples/Pig
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/examples/Pig/CheatSheet.m ¶
r18249 r20733 1 if any(steps==6) 2 % Load Model 1 if step==6 3 2 md = loadmodel('./Models/PIG.Control_drag'); 4 3 md.inversion.iscontrol=0; … … 6 5 disp(' Extruding mesh') 7 6 number_of_layers=3; 8 md=extrude(md,number_of_layers, 0.9);7 md=extrude(md,number_of_layers,1); 9 8 10 9 disp(' Using HO Ice Flow Model') 11 10 md=setflowequation(md, 'HO', 'all'); 12 11 13 % Solve14 12 md=solve(md,StressbalanceSolutionEnum); 15 13 16 % Save Model17 14 save ./Models/PIG.ModelHO md; 18 15 end -
TabularUnified issm/trunk-jpl/examples/Pig/Pig.par ¶
r19866 r20733 17 17 smb = ncread(ncdata,'presprcp')'; 18 18 gflux = ncread(ncdata,'bheatflx_fox')'; 19 20 disp(' Loading velocities data from NetCDF');21 nsidc_vel='../Data/Antarctica_ice_velocity.nc';22 23 xmin = ncreadatt(nsidc_vel,'/','xmin');24 xmin = strtrim(xmin); %this is a string, and we need to recover the double value25 xmin = xmin(1:end-2); %get rid of the unit26 xmin = str2num(xmin); %convert to double27 28 ymax = ncreadatt(nsidc_vel,'/','ymax');29 ymax = strtrim(ymax);30 ymax = ymax(1:end-2);31 ymax = str2num(ymax);32 33 nx = ncreadatt(nsidc_vel,'/','nx');34 ny = ncreadatt(nsidc_vel,'/','ny');35 36 spacing = ncreadatt(nsidc_vel,'/','spacing');37 spacing = strtrim(spacing);38 spacing = spacing(1:end-2);39 spacing = str2num(spacing);40 41 velx = double(ncread(nsidc_vel,'vx'));42 vely = double(ncread(nsidc_vel,'vy'));43 44 x2=xmin+(0:1:nx)'*spacing;45 x2=double(x2);46 47 y2=(ymax-ny*spacing)+(0:1:ny)'*spacing;48 y2=double(y2);49 19 50 20 %Geometry … … 70 40 71 41 %Set min thickness to 1 meter 72 pos0=find(md.geometry.thickness<= 0);42 pos0=find(md.geometry.thickness<=1); 73 43 md.geometry.thickness(pos0)=1; 74 44 md.geometry.surface=md.geometry.thickness+md.geometry.base; … … 79 49 clear temp; 80 50 51 disp(' Loading velocities data from NetCDF'); 52 nsidc_vel='../Data/Antarctica_ice_velocity.nc'; 53 xmin = ncreadatt(nsidc_vel,'/','xmin'); 54 ymax = ncreadatt(nsidc_vel,'/','ymax'); 55 spacing = ncreadatt(nsidc_vel,'/','spacing'); 56 nx = double(ncreadatt(nsidc_vel,'/','nx')); 57 ny = double(ncreadatt(nsidc_vel,'/','ny')); 58 velx = double(ncread(nsidc_vel,'vx')); 59 vely = double(ncread(nsidc_vel,'vy')); 60 % Read coordinates 61 xmin = strtrim(xmin); 62 xmin = str2num(xmin(1:end-2)); 63 ymax = strtrim(ymax); 64 ymax = str2num(ymax(1:end-2)); 65 spacing = strtrim(spacing); 66 spacing = str2num(spacing(1:end-2)); 67 % Build the coordinates 68 x2=xmin+(0:1:nx)'*spacing; 69 y2=(ymax-ny*spacing)+(0:1:ny)'*spacing; 70 81 71 disp(' Set observed velocities') 82 vx_obs=InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0); 83 vy_obs=InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0); 72 md.initialization.vx=InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0); 73 md.initialization.vy=InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0); 74 md.initialization.vz=zeros(md.mesh.numberofvertices,1); 75 md.initialization.vel=sqrt(md.initialization.vx.^2+md.initialization.vy.^2); 84 76 clear velx vely; 85 86 vel_obs=sqrt(vx_obs.^2+vy_obs.^2);87 md.initialization.vx=vx_obs;88 md.initialization.vy=vy_obs;89 md.initialization.vz=zeros(md.mesh.numberofvertices,1);90 md.initialization.vel=vel_obs;91 77 92 78 disp(' Set Pressure'); … … 99 85 %Forcings 100 86 disp(' Interpolating surface mass balance'); 101 m d.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);102 md.smb.mass_balance=m d.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;87 mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0); 88 md.smb.mass_balance=mass_balance*md.materials.rho_water/md.materials.rho_ice; 103 89 clear smb; 104 90 … … 118 104 119 105 md.inversion=m1qn3inversion(); 120 md.inversion.vx_obs= vx_obs;121 md.inversion.vy_obs= vy_obs;122 md.inversion.vel_obs= vel_obs;106 md.inversion.vx_obs=md.initialization.vx; 107 md.inversion.vy_obs=md.initialization.vy; 108 md.inversion.vel_obs=md.initialization.vel; 123 109 124 110 disp(' Set boundary conditions'); … … 126 112 md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1); 127 113 md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1); 128 md.thermal.spctemperature = [md.initialization.temperature;1]; %impose observed temperature on surface129 md.masstransport.spcthickness = NaN*ones(md.mesh.numberofvertices,1);114 md.thermal.spctemperature = md.initialization.temperature; 115 md.masstransport.spcthickness = NaN*ones(md.mesh.numberofvertices,1); -
TabularUnified issm/trunk-jpl/examples/Pig/runme.m ¶
r19043 r20733 1 %Which steps to be performed 2 steps=[1] ; 1 step=[7]; 3 2 4 %Run Steps 5 6 %Mesh Generation #1 7 if any(steps==1) 8 9 md.miscellaneous.name='PIG.Mesh_generation'; 10 3 if step==1 %Mesh Generation #1 11 4 %Mesh parameters 12 5 domain =['./DomainOutline.exp']; 6 hinit=10000; % element size for the initial mesh 13 7 hmax=40000; % maximum element size of the final mesh 14 8 hmin=5000; % minimum element size of the final mesh 15 hinit=10000; % element size for the initial mesh16 9 gradation=1.7; % maximum size ratio between two neighboring elements 17 10 err=8; % maximum error between interpolated and control field 18 11 19 12 % Generate an initial uniform mesh (resolution = hinit m) 20 md=bamg(model,'domain',domain,'hmax',hinit ,'MaxCornerAngle',1);13 md=bamg(model,'domain',domain,'hmax',hinit); 21 14 22 15 %ploting … … 24 17 25 18 % Load Velocities 26 % http://nsidc.org/data/nsidc-0484.html27 19 nsidc_vel='../Data/Antarctica_ice_velocity.nc'; 28 20 29 21 % Get necessary data to build up the velocity grid 30 xmin = ncreadatt(nsidc_vel,'/','xmin'); 31 xmin = strtrim(xmin); % this is a string, and we need to recover the double value 32 xmin = xmin(1:end-2); % get rid of the unit 33 xmin = str2num(xmin); % convert to double 22 xmin = ncreadatt(nsidc_vel,'/','xmin'); 23 ymax = ncreadatt(nsidc_vel,'/','ymax'); 24 spacing = ncreadatt(nsidc_vel,'/','spacing'); 25 nx = double(ncreadatt(nsidc_vel,'/','nx')); 26 ny = double(ncreadatt(nsidc_vel,'/','ny')); 27 vx = double(ncread(nsidc_vel,'vx')); 28 vy = double(ncread(nsidc_vel,'vy')); 29 30 % Read coordinates 31 xmin = strtrim(xmin); 32 xmin = str2num(xmin(1:end-2)); 33 ymax = strtrim(ymax); 34 ymax = str2num(ymax(1:end-2)); 35 spacing = strtrim(spacing); 36 spacing = str2num(spacing(1:end-2)); 37 38 % Build the coordinates 39 x=xmin+(0:1:nx)'*spacing; 40 y=(ymax-ny*spacing)+(0:1:ny)'*spacing; 34 41 35 ymax = ncreadatt(nsidc_vel,'/','ymax');36 ymax = strtrim(ymax);37 ymax = ymax(1:end-2);38 ymax = str2num(ymax);39 40 nx = ncreadatt(nsidc_vel,'/','nx');41 ny = ncreadatt(nsidc_vel,'/','ny');42 43 spacing = ncreadatt(nsidc_vel,'/','spacing');44 spacing = strtrim(spacing);45 spacing = spacing(1:end-2);46 spacing = str2num(spacing);47 48 % Get velocities (Note: You can use ncdisp('file') to see an ncdump)49 vx = double(ncread(nsidc_vel,'vx'));50 vy = double(ncread(nsidc_vel,'vy'));51 52 x=xmin+(0:1:nx)'*spacing;53 x=double(x);54 y=(ymax-ny*spacing)+(0:1:ny)'*spacing;55 y=double(y);56 57 42 % Interpolate velocities onto coarse mesh 58 43 vx_obs=InterpFromGridToMesh(x,y,flipud(vx'),md.mesh.x,md.mesh.y,0); … … 67 52 plotmodel(md,'data','mesh') 68 53 69 % Convert x,y coordinates (Polar stereo) to lat/lon70 [md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,-1);71 72 54 % Save model 73 55 save ./Models/PIG.Mesh_generation md; 74 56 end 75 57 76 %Masks #2 77 if any(steps==2) 58 if step==2 %Masks #2 78 59 79 60 md = loadmodel('./Models/PIG.Mesh_generation'); … … 104 85 end 105 86 106 %Parameterization #3 107 if any(steps==3) 87 if step==3 %Parameterization #3 108 88 109 89 md = loadmodel('./Models/PIG.SetMask'); … … 117 97 end 118 98 119 %Control Method #4 120 if any(steps==4) 99 if step==4 %Control Method #4 121 100 122 101 md = loadmodel('./Models/PIG.Parameterization'); … … 161 140 end 162 141 163 %Plot #5 164 if any(steps==5) 142 if step==5 %Plot #5 165 143 166 144 md = loadmodel('./Models/PIG.Control_drag'); … … 179 157 end 180 158 181 %HO #6 182 if any(steps==6) 159 if step==6 %Higher-Order #6 183 160 184 161 % Load Model … … 196 173 end 197 174 198 %Plot #7 199 if any(steps==7) 175 if step==7 %Plot #7 200 176 201 177 mdHO = loadmodel('./Models/PIG.ModelHO');
Note:
See TracChangeset
for help on using the changeset viewer.