source: issm/oecreview/Archive/23390-24306/ISSM-23798-23799.diff

Last change on this file was 24307, checked in by Mathieu Morlighem, 5 years ago

NEW: adding Archive/23390-24306

File size: 9.5 KB
RevLine 
[24307]1Index: ../trunk-jpl/test/NightlyRun/test472.m
2===================================================================
3--- ../trunk-jpl/test/NightlyRun/test472.m (nonexistent)
4+++ ../trunk-jpl/test/NightlyRun/test472.m (revision 23799)
5@@ -0,0 +1,88 @@
6+%Test Name: ISMIP6MeltRateTest
7+md=triangle(model(),'../Exp/Square.exp',90000.);
8+md=setmask(md,'../Exp/SquareShelf.exp','');
9+md=parameterize(md,'../Par/SquareSheetShelf.par');
10+md.initialization.vx(:)=1.;
11+md.initialization.vy(:)=1.;
12+md.geometry.thickness(:)=500-md.mesh.x/10000;
13+md.geometry.bed =-100-md.mesh.x/1000;
14+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
15+md.mask.groundedice_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
16+pos=find(md.mask.groundedice_levelset>=0);
17+md.geometry.base(pos)=md.geometry.bed(pos);
18+md.geometry.surface=md.geometry.base+md.geometry.thickness;
19+md=setflowequation(md,'SSA','all');
20+
21+%Set ISMIP6 melt rate parameters
22+md.basalforcings = basalforcingsismip6(md.basalforcings);
23+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
24+yE = mean(md.mesh.y(md.mesh.elements),2);
25+pos1 = find(yE>=5e5); md.basalforcings.basin_id(pos1)=1;
26+pos2 = find(yE<5e5); md.basalforcings.basin_id(pos2)=2;
27+md.basalforcings.num_basins = 2;
28+md.basalforcings.delta_t = [0.1 0.2];
29+md.basalforcings.tf_depths = [0 -1000 -2000];
30+md.basalforcings.gamma_0 = 14477;
31+
32+%Build an artificial tf field (for times 0 and 1, 3 depth layers)
33+temp1a = 1.*ones(md.mesh.numberofvertices,1); temp1b = 1.5.*ones(md.mesh.numberofvertices,1); A = [temp1a temp1b ; [0. 1.]];
34+temp2a = 2.*ones(md.mesh.numberofvertices,1); temp2b = 2.5.*ones(md.mesh.numberofvertices,1); B = [temp2a temp2b ; [0. 1.]];
35+temp3a = 3.*ones(md.mesh.numberofvertices,1); temp3b = 3.5.*ones(md.mesh.numberofvertices,1); C = [temp3a temp3b ; [0. 1.]];
36+D = cell(1,1,3); D(:,:,1)={A}; D(:,:,2)={B}; D(:,:,3)={C};
37+md.basalforcings.tf = D;
38+
39+%Boundary conditions:
40+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
41+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
42+
43+%Model conditions
44+md.transient.isthermal=0;
45+md.transient.isstressbalance=1;
46+md.transient.isgroundingline=1;
47+md.transient.ismasstransport=1;
48+md.transient.issmb=1;
49+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate','BasalforcingsIsmp6TfShelf'};
50+md.groundingline.migration='SubelementMigration';
51+md.groundingline.friction_interpolation='SubelementFriction1';
52+md.groundingline.melt_interpolation='SubelementMelt1';
53+md.timestepping.final_time=1.5;
54+md.timestepping.time_step=0.5;
55+
56+md.cluster=generic('name',oshostname(),'np',1);
57+md=solve(md,'Transient');
58+
59+field_names ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1','ThermalForcing1',...
60+ 'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2','ThermalForcing2',...
61+ 'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3','ThermalForcing3'};
62+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
63+ 7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
64+ 7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08};
65+field_values={...
66+ (md.results.TransientSolution(1).Base),...
67+ (md.results.TransientSolution(1).Surface),...
68+ (md.results.TransientSolution(1).Thickness),...
69+ (md.results.TransientSolution(1).MaskGroundediceLevelset),...
70+ (md.results.TransientSolution(1).Vx),...
71+ (md.results.TransientSolution(1).Vy),...
72+ (md.results.TransientSolution(1).Pressure),...
73+ (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
74+ (md.results.TransientSolution(1).BasalforcingsIsmp6TfShelf),...
75+ (md.results.TransientSolution(2).Base),...
76+ (md.results.TransientSolution(2).Surface),...
77+ (md.results.TransientSolution(2).Thickness),...
78+ (md.results.TransientSolution(2).MaskGroundediceLevelset),...
79+ (md.results.TransientSolution(2).Vx),...
80+ (md.results.TransientSolution(2).Vy),...
81+ (md.results.TransientSolution(2).Pressure),...
82+ (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
83+ (md.results.TransientSolution(2).BasalforcingsIsmp6TfShelf),...
84+ (md.results.TransientSolution(3).Base),...
85+ (md.results.TransientSolution(3).Surface),...
86+ (md.results.TransientSolution(3).Thickness),...
87+ (md.results.TransientSolution(3).MaskGroundediceLevelset),...
88+ (md.results.TransientSolution(3).Vx),...
89+ (md.results.TransientSolution(3).Vy),...
90+ (md.results.TransientSolution(3).Pressure),...
91+ (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
92+ (md.results.TransientSolution(3).BasalforcingsIsmp6TfShelf),...
93+ };
94Index: ../trunk-jpl/test/Archives/Archive472.arch
95===================================================================
96Cannot display: file marked as a binary type.
97svn:mime-type = application/octet-stream
98Index: ../trunk-jpl/test/Archives/Archive472.arch
99===================================================================
100--- ../trunk-jpl/test/Archives/Archive472.arch (nonexistent)
101+++ ../trunk-jpl/test/Archives/Archive472.arch (revision 23799)
102
103Property changes on: ../trunk-jpl/test/Archives/Archive472.arch
104___________________________________________________________________
105Added: svn:mime-type
106## -0,0 +1 ##
107+application/octet-stream
108\ No newline at end of property
109Index: ../trunk-jpl/src/m/classes/basalforcingsismip6.m
110===================================================================
111--- ../trunk-jpl/src/m/classes/basalforcingsismip6.m (revision 23798)
112+++ ../trunk-jpl/src/m/classes/basalforcingsismip6.m (revision 23799)
113@@ -82,7 +82,7 @@
114 WriteData(fid,prefix,'name','md.basalforcings.model','data',7,'format','Integer');
115 WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
116 WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.basalforcings.basin_id','format','IntMat','mattype',2); %0-indexed
117- WriteData(fid,prefix,'object',self,'fieldname','gamma_0','format','Double');
118+ WriteData(fid,prefix,'object',self,'fieldname','gamma_0','format','Double','scale',1./yts);
119 WriteData(fid,prefix,'object',self,'fieldname','tf_depths','format','DoubleMat','name','md.basalforcings.tf_depths');
120 WriteData(fid,prefix,'object',self,'fieldname','tf','format','MatArray','name','md.basalforcings.tf','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
121 WriteData(fid,prefix,'object',self,'fieldname','delta_t','format','DoubleMat','name','md.basalforcings.delta_t','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
122Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
123===================================================================
124--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp (revision 23798)
125+++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp (revision 23799)
126@@ -227,12 +227,11 @@
127 case BasalforcingsIsmip6Enum:
128 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsIsmp6NumBasinsEnum));
129 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_0",BasalforcingsIsmp6Gamma0Enum));
130- iomodel->FindConstant(&temp_n,"md.basalforcings.num_basins");
131- iomodel->FetchData(&transparam,NULL,&M,"md.basalforcings.delta_t");
132- parameters->AddObject(new DoubleVecParam(BasalforcingsIsmp6DeltaTEnum,transparam,temp_n));
133+ iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.delta_t");
134+ parameters->AddObject(new DoubleVecParam(BasalforcingsIsmp6DeltaTEnum,transparam,N));
135 xDelete<IssmDouble>(transparam);
136- iomodel->FetchData(&transparam,NULL,NULL,"md.basalforcings.tf_depths");
137- parameters->AddObject(new DoubleVecParam(BasalforcingsIsmp6TfDepthsEnum,transparam,3));
138+ iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.tf_depths");
139+ parameters->AddObject(new DoubleVecParam(BasalforcingsIsmp6TfDepthsEnum,transparam,N));
140 xDelete<IssmDouble>(transparam);
141 break;
142 default:
143Index: ../trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
144===================================================================
145--- ../trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp (revision 23798)
146+++ ../trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp (revision 23799)
147@@ -87,7 +87,7 @@
148 IssmDouble* areas_summed = xNewZeroInit<IssmDouble>(num_basins);
149 IssmDouble* areas_summed_cpu = xNewZeroInit<IssmDouble>(num_basins);
150
151- /*TEST: Set tf=2 for all ice shelf elements*/
152+ /*Get TF at each ice shelf point - linearly intepolate in depth and time*/
153 for(int i=0;i<femmodel->elements->Size();i++){
154 Element* element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
155 int numvertices = element->GetNumberOfVertices();
156@@ -129,7 +129,7 @@
157 tf_input->GetInputValue(&tf_test[iv],gauss,num_depths-1);
158 }
159 else {
160- /*get values between two times [offset:offset+1[, Interpolate linearly*/
161+ /*get values between two times [offset:offset+1], Interpolate linearly*/
162 _assert_(depth>=tf_depths[offset] && depth<tf_depths[offset+1]);
163 IssmDouble deltaz=tf_depths[offset+1]-tf_depths[offset];
164 IssmDouble alpha2=(depth-tf_depths[offset])/deltaz;
165@@ -144,6 +144,7 @@
166 element->AddInput(BasalforcingsIsmp6TfShelfEnum,tf_test,P1Enum);
167 xDelete<IssmDouble>(tf_test);
168 xDelete<IssmDouble>(depth_vertices);
169+ delete gauss;
170 }
171
172 /*Compute sums of tf*area and shelf-area per cpu*/
Note: See TracBrowser for help on using the repository browser.