Changeset 24044
- Timestamp:
- 06/24/19 07:44:12 (6 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r24024 r24044 181 181 case BasalforcingsIsmip6Enum:{ 182 182 iomodel->FetchDataToInput(elements,"md.basalforcings.basin_id",BasalforcingsIsmp6BasinIdEnum); 183 iomodel->FetchDataToInput(elements,"md.basalforcings.melt_anomaly",BasalforcingsIsmp6MeltAnomalyEnum,0.); 183 184 IssmDouble** array3d = NULL; int* Ms = NULL; int* Ns = NULL; int K; 184 185 iomodel->FetchData(&array3d,&Ms,&Ns,&K,"md.basalforcings.tf"); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r24023 r24044 2175 2175 2176 2176 int basinid,num_basins,M,N; 2177 IssmDouble tf,gamma0,base,delta_t_basin,mean_tf_basin,absval ;2177 IssmDouble tf,gamma0,base,delta_t_basin,mean_tf_basin,absval,meltanomaly; 2178 2178 bool islocal; 2179 2179 IssmDouble* delta_t = NULL; … … 2203 2203 this->parameters->FindParam(&mean_tf,&N,BasalforcingsIsmp6AverageTfEnum); _assert_(N==num_basins); 2204 2204 } 2205 Input* tf_input=this->GetInput(BasalforcingsIsmp6TfShelfEnum); _assert_(tf_input); 2205 Input* tf_input = this->GetInput(BasalforcingsIsmp6TfShelfEnum); _assert_(tf_input); 2206 Input* meltanomaly_input = this->GetInput(BasalforcingsIsmp6MeltAnomalyEnum); _assert_(meltanomaly_input); 2206 2207 delta_t_basin = delta_t[basinid]; 2207 2208 if(!islocal) mean_tf_basin = mean_tf[basinid]; … … 2212 2213 gauss->GaussVertex(i); 2213 2214 tf_input->GetInputValue(&tf,gauss); 2215 meltanomaly_input->GetInputValue(&meltanomaly,gauss); 2214 2216 if(!islocal) { 2215 2217 absval = mean_tf_basin+delta_t_basin; 2216 2218 if (absval<0) {absval = -1.*absval;} 2217 basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*(tf+delta_t_basin)*absval ;2219 basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*(tf+delta_t_basin)*absval + meltanomaly; 2218 2220 } 2219 2221 else{ 2220 basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*pow(max(tf+delta_t_basin,0.),2) ;2222 basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*pow(max(tf+delta_t_basin,0.),2) + meltanomaly; 2221 2223 } 2222 2224 } -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r24040 r24044 457 457 syn keyword cConstant BasalforcingsIsmp6TfEnum 458 458 syn keyword cConstant BasalforcingsIsmp6TfShelfEnum 459 syn keyword cConstant BasalforcingsIsmp6MeltAnomalyEnum 459 460 syn keyword cConstant BasalforcingsPicoBasinIdEnum 460 461 syn keyword cConstant BasalforcingsPicoBoxIdEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r24040 r24044 453 453 BasalforcingsIsmp6TfEnum, 454 454 BasalforcingsIsmp6TfShelfEnum, 455 BasalforcingsIsmp6MeltAnomalyEnum, 455 456 BasalforcingsPicoBasinIdEnum, 456 457 BasalforcingsPicoBoxIdEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r24040 r24044 459 459 case BasalforcingsIsmp6TfEnum : return "BasalforcingsIsmp6Tf"; 460 460 case BasalforcingsIsmp6TfShelfEnum : return "BasalforcingsIsmp6TfShelf"; 461 case BasalforcingsIsmp6MeltAnomalyEnum : return "BasalforcingsIsmp6MeltAnomaly"; 461 462 case BasalforcingsPicoBasinIdEnum : return "BasalforcingsPicoBasinId"; 462 463 case BasalforcingsPicoBoxIdEnum : return "BasalforcingsPicoBoxId"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r24040 r24044 468 468 else if (strcmp(name,"BasalforcingsIsmp6Tf")==0) return BasalforcingsIsmp6TfEnum; 469 469 else if (strcmp(name,"BasalforcingsIsmp6TfShelf")==0) return BasalforcingsIsmp6TfShelfEnum; 470 else if (strcmp(name,"BasalforcingsIsmp6MeltAnomaly")==0) return BasalforcingsIsmp6MeltAnomalyEnum; 470 471 else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum; 471 472 else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum; -
issm/trunk-jpl/src/m/classes/basalforcingsismip6.m
r24010 r24044 15 15 geothermalflux = NaN; 16 16 groundedice_melting_rate = NaN; 17 melt_anomaly = NaN; 17 18 end 18 19 methods … … 24 25 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','element','layer',1); %bedrock only gets geothermal flux 25 26 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 27 self.melt_anomaly=project3d(md,'vector',self.melt_anomaly,'type','element','layer',1); %bedrock only gets geothermal flux 26 28 end % }}} 27 29 function self = basalforcingsismip6(varargin) % {{{ … … 61 63 md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'>=',0,'timeseries',1); 62 64 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1); 65 if length(md.basalforcings.melt_anomaly)>1, 66 md = checkfield(md,'fieldname','basalforcings.melt_anomaly','NaN',1,'Inf',1,'timeseries',1); 67 end 63 68 64 69 md = checkfield(md,'fieldname','basalforcings.tf','size',[1,1,numel(md.basalforcings.tf_depths)]); … … 79 84 fielddisplay(self,'geothermalflux','geothermal heat flux (W/m^2)'); 80 85 fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) (m/yr)'); 86 fielddisplay(self,'melt_anomaly','floating ice basal melt anomaly (m/yr)'); 81 87 82 88 end % }}} … … 95 101 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','name','md.basalforcings.geothermalflux','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts); 96 102 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 103 WriteData(fid,prefix,'object',self,'fieldname','melt_anomaly','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 97 104 98 105 end % }}} -
issm/trunk-jpl/test/NightlyRun/test472.m
r23906 r24044 32 32 D = cell(1,1,3); D(:,:,1)={A}; D(:,:,2)={B}; D(:,:,3)={C}; 33 33 md.basalforcings.tf = D; 34 35 %Add a melt anomaly 36 md.basalforcings.melt_anomaly= ones(md.mesh.numberofvertices+1,2); 37 md.basalforcings.melt_anomaly(:,2)= 2; 38 md.basalforcings.melt_anomaly(end,:)=[1;2]; 34 39 35 40 %Boundary conditions:
Note:
See TracChangeset
for help on using the changeset viewer.