Changeset 14175
- Timestamp:
- 12/17/12 16:24:36 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r14161 r14175 196 196 SurfaceforcingsIssmbgradientsEnum, 197 197 SurfaceforcingsMonthlytemperaturesEnum, 198 SurfaceforcingsHcEnum,199 198 SurfaceforcingsHrefEnum, 200 199 SurfaceforcingsSmbrefEnum, 201 SurfaceforcingsSmbPosMaxEnum,202 SurfaceforcingsSmbPosMinEnum,203 SurfaceforcingsAPosEnum,204 200 SurfaceforcingsBPosEnum, 205 SurfaceforcingsANegEnum,206 201 SurfaceforcingsBNegEnum, 207 202 ThermalMaxiterEnum, -
issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp
r14004 r14175 2727 2727 2728 2728 /*Recover SmbGradients*/ 2729 GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);2730 2729 GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum); 2731 2730 GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum); 2732 GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);2733 GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);2734 GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);2735 2731 GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum); 2736 GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);2737 2732 GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum); 2738 2733 … … 2747 2742 // loop over all vertices 2748 2743 for(i=0;i<NUMVERTICES;i++){ 2749 if(s[i]>Hc[i]){ 2750 if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);} 2751 if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];} 2752 if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];} 2753 if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];} 2744 if(Smbref[i]>0){ 2745 smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]); 2754 2746 } 2755 2747 else{ 2756 if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];} 2757 if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);} 2748 smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]); 2758 2749 } 2759 2750 smb[i]=smb[i]/rho_ice; // SMB in m/y ice -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
r14159 r14175 2325 2325 IssmDouble h[NUMVERTICES]; // ice thickness (m) 2326 2326 IssmDouble s[NUMVERTICES]; // surface elevation (m) 2327 IssmDouble a_pos[NUMVERTICES]; // Hs-SMB relation parameter2328 2327 IssmDouble b_pos[NUMVERTICES]; // Hs-SMB relation parameter 2329 IssmDouble a_neg[NUMVERTICES]; // Hs-SMB relation parameter2330 2328 IssmDouble b_neg[NUMVERTICES]; // Hs-SMB relation paremeter 2331 IssmDouble Hc[NUMVERTICES]; // elevation of transition between accumulation regime and ablation regime2332 2329 IssmDouble Href[NUMVERTICES]; // reference elevation from which deviations are used to calculate the SMB adjustment 2333 2330 IssmDouble Smbref[NUMVERTICES]; // reference SMB to which deviations are added 2334 IssmDouble smb_pos_max[NUMVERTICES]; // maximum SMB value in the accumulation regime2335 IssmDouble smb_pos_min[NUMVERTICES]; // minimum SMB value in the accumulation regime2336 2331 IssmDouble rho_water; // density of fresh water 2337 2332 IssmDouble rho_ice; // density of ice … … 2341 2336 2342 2337 /*Recover SmbGradients*/ 2343 GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);2344 2338 GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum); 2345 2339 GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum); 2346 GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);2347 GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);2348 GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);2349 2340 GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum); 2350 GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);2351 2341 GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum); 2352 2342 … … 2361 2351 // loop over all vertices 2362 2352 for(i=0;i<NUMVERTICES;i++){ 2363 if(s[i]>Hc[i]){ 2364 if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);} 2365 if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];} 2366 if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];} 2367 if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];} 2353 if(Smbref[i]>0){ 2354 smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]); 2368 2355 } 2369 2356 else{ 2370 if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];} 2371 if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);} 2357 smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]); 2372 2358 } 2373 2359 smb[i]=smb[i]/rho_ice; // SMB in m/y ice 2374 /* printf("s %e \n",s[i]);2375 printf("Hsref %e \n",Href[i]);2376 printf("Hc %e \n",Hc[i]);2377 printf("Smbref %e \n",Smbref[i]);2378 printf("b_neg %e \n",b_neg[i]);2379 printf("smb %e \n",smb[i]);2380 _error_("stop-in-code"); */2381 2360 } //end of the loop over the vertices 2382 2361 /*Update inputs*/ -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r14161 r14175 201 201 case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients"; 202 202 case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures"; 203 case SurfaceforcingsHcEnum : return "SurfaceforcingsHc";204 203 case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref"; 205 204 case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref"; 206 case SurfaceforcingsSmbPosMaxEnum : return "SurfaceforcingsSmbPosMax";207 case SurfaceforcingsSmbPosMinEnum : return "SurfaceforcingsSmbPosMin";208 case SurfaceforcingsAPosEnum : return "SurfaceforcingsAPos";209 205 case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos"; 210 case SurfaceforcingsANegEnum : return "SurfaceforcingsANeg";211 206 case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg"; 212 207 case ThermalMaxiterEnum : return "ThermalMaxiter"; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r13521 r14175 72 72 } 73 73 if(issmbgradients){ 74 iomodel->FetchDataToInput(elements,SurfaceforcingsHcEnum);75 74 iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum); 76 75 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum); 77 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMaxEnum);78 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMinEnum);79 iomodel->FetchDataToInput(elements,SurfaceforcingsAPosEnum);80 76 iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum); 81 iomodel->FetchDataToInput(elements,SurfaceforcingsANegEnum);82 77 iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum); 83 78 } -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r14161 r14175 205 205 else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum; 206 206 else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; 207 else if (strcmp(name,"SurfaceforcingsHc")==0) return SurfaceforcingsHcEnum;208 207 else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum; 209 208 else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; 210 else if (strcmp(name,"SurfaceforcingsSmbPosMax")==0) return SurfaceforcingsSmbPosMaxEnum;211 else if (strcmp(name,"SurfaceforcingsSmbPosMin")==0) return SurfaceforcingsSmbPosMinEnum;212 else if (strcmp(name,"SurfaceforcingsAPos")==0) return SurfaceforcingsAPosEnum;213 209 else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; 214 else if (strcmp(name,"SurfaceforcingsANeg")==0) return SurfaceforcingsANegEnum;215 210 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 216 211 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum; … … 261 256 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum; 262 257 else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum; 258 else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum; 267 259 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 268 260 else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum; 269 261 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; 270 262 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum; 271 else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum; 272 267 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 273 268 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; … … 384 379 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum; 385 380 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 381 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 390 382 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 391 383 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 392 384 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 393 385 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 394 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 395 390 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 396 391 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; … … 507 502 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 508 503 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 509 else stage=5; 510 } 511 if(stage==5){ 512 if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 504 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 513 505 else if (strcmp(name,"Regular")==0) return RegularEnum; 514 506 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 515 507 else if (strcmp(name,"Separate")==0) return SeparateEnum; 516 508 else if (strcmp(name,"Sset")==0) return SsetEnum; 517 else if (strcmp(name,"Verbose")==0) return VerboseEnum; 509 else stage=5; 510 } 511 if(stage==5){ 512 if (strcmp(name,"Verbose")==0) return VerboseEnum; 518 513 else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum; 519 514 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; -
issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
r13622 r14175 65 65 case SurfaceforcingsPrecipitationEnum: scale=yts;break; //m/yr 66 66 case SurfaceforcingsMassBalanceEnum: scale=yts;break; //m/yr 67 case SurfaceforcingsSmbPosMaxEnum: scale=yts;break; //m/yr68 case SurfaceforcingsSmbPosMinEnum: scale=yts;break; //m/yr69 case SurfaceforcingsAPosEnum: scale=yts;break; //m/yr70 67 case SurfaceforcingsBPosEnum: scale=yts;break; //m/yr 71 case SurfaceforcingsANegEnum: scale=yts;break; //m/yr72 68 case SurfaceforcingsBNegEnum: scale=yts;break; //m/yr 73 69 case SurfaceforcingsSmbrefEnum: scale=yts;break; //m/yr -
issm/trunk-jpl/src/m/classes/surfaceforcings.m
r13646 r14175 11 11 issmbgradients = 0; 12 12 isdelta18o = 0; 13 hc = NaN;14 13 href = NaN; 15 14 smbref = NaN; 16 smb_pos_max = NaN;17 smb_pos_min = NaN;18 a_pos = NaN;19 15 b_pos = NaN; 20 a_neg = NaN;21 16 b_neg = NaN; 22 17 monthlytemperatures = NaN; … … 61 56 end 62 57 elseif(obj.issmbgradients) 63 md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1);64 58 md = checkfield(md,'surfaceforcings.href','forcing',1,'NaN',1); 65 59 md = checkfield(md,'surfaceforcings.smbref','forcing',1,'NaN',1); 66 md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1);67 md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1);68 md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1);69 60 md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1); 70 md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1);71 61 md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1); 72 62 else … … 92 82 fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'); 93 83 fielddisplay(obj,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'); 94 fielddisplay(obj,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated');95 84 fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'); 96 85 fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method'); 97 fielddisplay(obj,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated');98 fielddisplay(obj,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated');99 fielddisplay(obj,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated');100 86 fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'); 101 fielddisplay(obj,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated');102 87 fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'); 103 88 … … 122 107 WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean'); 123 108 if obj.issmbgradients, 124 WriteData(fid,'object',obj,'fieldname','hc','format','DoubleMat','mattype',1);125 109 WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1); 126 110 WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1); 127 WriteData(fid,'object',obj,'fieldname','smb_pos_max','format','DoubleMat','mattype',1);128 WriteData(fid,'object',obj,'fieldname','smb_pos_min','format','DoubleMat','mattype',1);129 WriteData(fid,'object',obj,'fieldname','a_pos','format','DoubleMat','mattype',1);130 111 WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1); 131 WriteData(fid,'object',obj,'fieldname','a_neg','format','DoubleMat','mattype',1);132 112 WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1); 133 113 end
Note:
See TracChangeset
for help on using the changeset viewer.