[24307] | 1 | Index: ../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 | + };
|
---|
| 94 | Index: ../trunk-jpl/test/Archives/Archive472.arch
|
---|
| 95 | ===================================================================
|
---|
| 96 | Cannot display: file marked as a binary type.
|
---|
| 97 | svn:mime-type = application/octet-stream
|
---|
| 98 | Index: ../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 |
|
---|
| 103 | Property changes on: ../trunk-jpl/test/Archives/Archive472.arch
|
---|
| 104 | ___________________________________________________________________
|
---|
| 105 | Added: svn:mime-type
|
---|
| 106 | ## -0,0 +1 ##
|
---|
| 107 | +application/octet-stream
|
---|
| 108 | \ No newline at end of property
|
---|
| 109 | Index: ../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);
|
---|
| 122 | Index: ../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:
|
---|
| 143 | Index: ../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*/
|
---|