source: issm/trunk-jpl-damage/test/NightlyRun/test1105.m@ 11412

Last change on this file since 11412 was 10976, checked in by Mathieu Morlighem, 13 years ago

removed all PatchToVec not needed anymore as default is md.settings.results_as_patches = 0

File size: 6.2 KB
Line 
1%This test is a test from the ISMP-HOM Intercomparison project
2%Pattyn and Payne 2006
3printingflag=false;
4
5L_list={5000,10000,20000,40000,80000,160000};
6results={};
7minvx=[];
8maxvx=[];
9
10for i=1:length(L_list),
11 L=L_list{i}; %in m (3 times the desired lenght for BC problems)
12 nx=30; %number of nodes in x direction
13 ny=30;
14 md=model;
15 md=squaremesh(md,L,L,nx,ny);
16 md=setmask(md,'',''); %ice sheet test
17 md=parameterize(md,'../Par/ISMIPC.par');
18 md=extrude(md,10,1);
19
20 md=setflowequation(md,'pattyn','all');
21
22 %Create MPCs to have periodic boundary conditions
23 md.diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);
24 md.diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);
25 md.diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);
26
27 posx=find(md.mesh.x==0 & md.mesh.y~=0 & md.mesh.y~=L);
28 posx2=find(md.mesh.x==L & md.mesh.y~=0 & md.mesh.y~=L);
29
30 posy=find(md.mesh.y==0 & md.mesh.x~=0 & md.mesh.x~=L); %Don't take the same nodes two times
31 posy2=find(md.mesh.y==L & md.mesh.x~=0 & md.mesh.x~=L);
32
33 md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
34
35 %Add spc on the corners
36 pos=find((md.mesh.x==0 | md.mesh.x==L) & (md.mesh.y==0 | md.mesh.y==L) & md.mesh.vertexonbed);
37 md.diagnostic.spcvx(pos)=0;
38 md.diagnostic.spcvy(pos)=0;
39 if(L==5000),
40 md.diagnostic.spcvx(pos)=15.66;
41 md.diagnostic.spcvy(pos)=-0.1967;
42 elseif(L==10000),
43 md.diagnostic.spcvx(pos)=16.04;
44 md.diagnostic.spcvy(pos)=-0.1977;
45 elseif(L==20000),
46 md.diagnostic.spcvx(pos)=16.53;
47 md.diagnostic.spcvy(pos)=-1.27;
48 elseif(L==40000),
49 md.diagnostic.spcvx(pos)=17.23;
50 md.diagnostic.spcvy(pos)=-3.17;
51 elseif(L==80000),
52 md.diagnostic.spcvx(pos)=16.68;
53 md.diagnostic.spcvy(pos)=-2.69;
54 elseif(L==160000),
55 md.diagnostic.spcvx(pos)=16.03;
56 md.diagnostic.spcvy(pos)=-1.27;
57 end
58
59 %Spc the bed at zero for vz
60 pos=find(md.mesh.vertexonbed);
61 md.diagnostic.spcvz(pos)=0;
62
63 %Compute the diagnostic
64 md.cluster=generic('name',oshostname(),'np',8);
65 md=solve(md,DiagnosticSolutionEnum);
66
67 %Plot the results and save them
68 vx=(md.results.DiagnosticSolution.Vx);
69 vy=(md.results.DiagnosticSolution.Vy);
70 vz=(md.results.DiagnosticSolution.Vz);
71 results{i}=md.results.DiagnosticSolution;
72 minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
73 maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
74
75 %Now plot vx, vy, vz and vx on a cross section
76 plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
77 if printingflag,
78 set(gcf,'Color','w')
79 printmodel(['ismipcpattynvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
80 system(['mv ismipcpattynvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
81 end
82 plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
83 if printingflag,
84 set(gcf,'Color','w')
85 printmodel(['ismipcpattynvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
86 system(['mv ismipcpattynvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
87 end
88 plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
89 if printingflag,
90 set(gcf,'Color','w')
91 printmodel(['ismipcpattynvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
92 system(['mv ismipcpattynvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
93 end
94
95 if(L==5000),
96 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
97 'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',5)
98 elseif(L==10000),
99 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
100 'resolution',[10 10],'ylim',[13 18],'xlim',[0 10000],'title','','xlabel','')
101 elseif(L==20000),
102 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
103 'resolution',[10 10],'ylim',[14 22],'xlim',[0 20000],'title','','xlabel','')
104 elseif(L==40000),
105 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
106 'resolution',[10 10],'ylim',[10 40],'xlim',[0 40000],'title','','xlabel','')
107 elseif(L==80000),
108 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
109 'resolution',[10 10],'ylim',[0 80],'xlim',[0 80000],'title','','xlabel','')
110 elseif(L==160000),
111 plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
112 'resolution',[10 10],'ylim',[0 200],'xlim',[0 160000],'title','','xlabel','')
113 end
114 if printingflag,
115 set(gcf,'Color','w')
116 printmodel(['ismipcpattynvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
117 system(['mv ismipcpattynvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
118 end
119end
120
121%Now plot the min and max values of vx for each size of the square
122plot([5 10 20 40 80 160],minvx);ylim([4 18]);xlim([0 160])
123if printingflag,
124 set(gcf,'Color','w')
125 printmodel('ismipcpattynminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
126 system(['mv ismipcpattynminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
127end
128plot([5 10 20 40 80 160],maxvx);ylim([0 200]); xlim([0 160])
129if printingflag,
130 set(gcf,'Color','w')
131 printmodel('ismipcpattynmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
132 system(['mv ismipcpattynmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC ']);
133end
134%Fields and tolerances to track changes
135field_names ={...
136 'Vx5km','Vy5km','Vz5km',...
137 'Vx10km','Vy10km','Vz10km',...
138 'Vx20km','Vy20km','Vz20km',...
139 'Vx40km','Vy40km','Vz40km',...
140 'Vx80km','Vy80km','Vz80km',...
141 'Vx160km','Vy160km','Vz160km'
142};
143field_tolerances={...
144 1e-08,1e-07,1e-07,...
145 1e-09,1e-07,1e-08,...
146 1e-09,1e-09,1e-07,...
147 1e-09,1e-09,1e-08,...
148 1e-09,1e-08,1e-08,...
149 1e-09,1e-08,1e-08,...
150};
151field_values={};
152for i=1:6,
153 result=results{i};
154 field_values={field_values{:},...
155 (result.Vx),...
156 (result.Vy),...
157 (result.Vz),...
158 };
159end
Note: See TracBrowser for help on using the repository browser.