Changeset 12677
- Timestamp:
- 07/20/12 16:14:40 (13 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r12365 r12677 11 11 12 12 enum definitions{ 13 /*Model fields {{{ */13 /*Model fields {{{1*/ 14 14 AutodiffForwardEnum, 15 15 AutodiffIsautodiffEnum, … … 162 162 SurfaceforcingsMassBalanceEnum, 163 163 SurfaceforcingsIspddEnum, 164 SurfaceforcingsIssmbgradientsEnum, 164 165 SurfaceforcingsMonthlytemperaturesEnum, 166 SurfaceforcingsHcEnum, 167 SurfaceforcingsSmbPosMaxEnum, 168 SurfaceforcingsSmbPosMinEnum, 169 SurfaceforcingsAPosEnum, 170 SurfaceforcingsBPosEnum, 171 SurfaceforcingsANegEnum, 172 SurfaceforcingsBNegEnum, 165 173 ThermalMaxiterEnum, 166 174 ThermalPenaltyFactorEnum, … … 183 191 TransientRequestedOutputsEnum, 184 192 /*}}}*/ 185 /*Solutions and Analyses{{{ */193 /*Solutions and Analyses{{{1 */ 186 194 SolutionTypeEnum, 187 195 AnalysisTypeEnum, … … 220 228 TransientSolutionEnum, 221 229 /*}}}*/ 222 /*Approximations {{{ */230 /*Approximations {{{1*/ 223 231 ApproximationEnum, 224 232 HutterApproximationEnum, … … 231 239 StokesApproximationEnum, 232 240 /*}}}*/ 233 /*Datasets {{{ */241 /*Datasets {{{1*/ 234 242 ConstraintsEnum, 235 243 LoadsEnum, … … 240 248 ResultsEnum, 241 249 /*}}}*/ 242 /*Objects {{{ */250 /*Objects {{{1*/ 243 251 BoolInputEnum, 244 252 BoolParamEnum, … … 289 297 VertexEnum, 290 298 /*}}}*/ 291 /*Fill {{{ */299 /*Fill {{{1*/ 292 300 AirEnum, 293 301 IceEnum, … … 295 303 WaterEnum, 296 304 /*}}}*/ 297 /*Rift state {{{ */305 /*Rift state {{{1*/ 298 306 ClosedEnum, 299 307 FreeEnum, 300 308 OpenEnum, 301 309 /*}}}*/ 302 /*Inputs {{{ */310 /*Inputs {{{1*/ 303 311 AdjointpEnum, 304 312 AdjointxEnum, … … 388 396 IceVolumeEnum, 389 397 /*}}}*/ 390 /*Element Interpolations{{{ */398 /*Element Interpolations{{{1*/ 391 399 P0Enum, 392 400 P1Enum, 393 401 P1DGEnum, 394 402 /*}}}*/ 395 /*Results{{{ */403 /*Results{{{1*/ 396 404 SaveResultsEnum, 397 405 BoolElementResultEnum, … … 414 422 WaterColumnOldEnum, 415 423 /*}}}*/ 416 /*Responses{{{ */424 /*Responses{{{1*/ 417 425 MinVelEnum, 418 426 MaxVelEnum, … … 427 435 MaxAbsVzEnum, 428 436 /*}}}*/ 429 /*Convergence{{{ */437 /*Convergence{{{1*/ 430 438 RelativeEnum, 431 439 AbsoluteEnum, 432 440 IncrementalEnum, 433 441 /*}}}*/ 434 /*Grounding Line{{{ */442 /*Grounding Line{{{1*/ 435 443 AgressiveMigrationEnum, 436 444 NoneEnum, 437 445 SoftMigrationEnum, 438 446 /*}}}*/ 439 /*Solver{{{ */447 /*Solver{{{1*/ 440 448 StokesSolverEnum, 441 449 /*}}}*/ 442 /*Parameters{{{ */450 /*Parameters{{{1*/ 443 451 AdjointEnum, 444 452 ColinearEnum, … … 468 476 VerboseEnum, 469 477 /*}}}*/ 470 /*Interpolation {{{ */478 /*Interpolation {{{1*/ 471 479 TriangleInterpEnum, 472 480 BilinearInterpEnum, 473 481 NearestInterpEnum, 474 482 /*}}}*/ 475 /*Coordinate Systems{{{ */483 /*Coordinate Systems{{{1*/ 476 484 XYEnum, 477 485 XYZPEnum, 478 486 /*}}}*/ 479 /*Options{{{ */487 /*Options{{{1*/ 480 488 OptionEnum, 481 489 OptionCellEnum, … … 485 493 OptionLogicalEnum, 486 494 /*}}}*/ 487 /*Rheology law (move too Material) {{{ */495 /*Rheology law (move too Material) {{{1*/ 488 496 PatersonEnum, 489 497 ArrheniusEnum, -
issm/trunk-jpl/src/c/Makefile.am
r12610 r12677 284 284 ./modules/PositiveDegreeDayx/PositiveDegreeDayx.h\ 285 285 ./modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp\ 286 ./modules/SmbGradientsx/SmbGradientsx.h\ 287 ./modules/SmbGradientsx/SmbGradientsx.cpp\ 286 288 ./modules/UpdateConstraintsx/UpdateConstraintsx.h\ 287 289 ./modules/UpdateConstraintsx/UpdateConstraintsx.cpp\ -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r12470 r12677 167 167 case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance"; 168 168 case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd"; 169 case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients"; 169 170 case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures"; 171 case SurfaceforcingsHcEnum : return "SurfaceforcingsHc"; 172 case SurfaceforcingsSmbPosMaxEnum : return "SurfaceforcingsSmbPosMax"; 173 case SurfaceforcingsSmbPosMinEnum : return "SurfaceforcingsSmbPosMin"; 174 case SurfaceforcingsAPosEnum : return "SurfaceforcingsAPos"; 175 case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos"; 176 case SurfaceforcingsANegEnum : return "SurfaceforcingsANeg"; 177 case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg"; 170 178 case ThermalMaxiterEnum : return "ThermalMaxiter"; 171 179 case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor"; … … 467 475 len=strlen(EnumToStringx(enum_in)); 468 476 string=xNew<char>(len+1); 469 xMemCpy<char>(string,EnumToStringx(enum_in),(len+1));477 memcpy(string,EnumToStringx(enum_in),(len+1)*sizeof(char)); 470 478 471 479 /*Assign output pointer*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r12470 r12677 90 90 parameters->AddObject(iomodel->CopyConstantObject(InversionTaoEnum)); 91 91 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum)); 92 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIssmbgradientsEnum)); 92 93 93 94 /*some parameters that did not come with the iomodel: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r12326 r12677 21 21 bool dakota_analysis; 22 22 bool ispdd; 23 bool issmbgradients; 23 24 24 25 /*Fetch data needed: */ … … 29 30 iomodel->FetchData(1,MeshElementsEnum); 30 31 iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum); 32 iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum); 31 33 32 34 /*Update elements: */ … … 73 75 iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum); 74 76 } 77 if(issmbgradients){ 78 iomodel->FetchDataToInput(elements,SurfaceforcingsHcEnum); 79 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMaxEnum); 80 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMinEnum); 81 iomodel->FetchDataToInput(elements,SurfaceforcingsAPosEnum); 82 iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum); 83 iomodel->FetchDataToInput(elements,SurfaceforcingsANegEnum); 84 iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum); 85 } 75 86 else{ 76 87 iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum); -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r12493 r12677 171 171 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 172 172 else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum; 173 else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum; 173 174 else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; 175 else if (strcmp(name,"SurfaceforcingsHc")==0) return SurfaceforcingsHcEnum; 176 else if (strcmp(name,"SurfaceforcingsSmbPosMax")==0) return SurfaceforcingsSmbPosMaxEnum; 177 else if (strcmp(name,"SurfaceforcingsSmbPosMin")==0) return SurfaceforcingsSmbPosMinEnum; 178 else if (strcmp(name,"SurfaceforcingsAPos")==0) return SurfaceforcingsAPosEnum; 179 else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; 180 else if (strcmp(name,"SurfaceforcingsANeg")==0) return SurfaceforcingsANegEnum; 181 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 174 182 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum; 175 183 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum; … … 253 261 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; 254 262 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 255 else if (strcmp(name,"Element")==0) return ElementEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"Element")==0) return ElementEnum; 256 267 else if (strcmp(name,"ElementResult")==0) return ElementResultEnum; 257 268 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; … … 261 272 else if (strcmp(name,"Input")==0) return InputEnum; 262 273 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"IntParam")==0) return IntParamEnum; 274 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 267 275 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 268 276 else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum; … … 376 384 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 377 385 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 378 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 379 390 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 380 391 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; … … 384 395 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 385 396 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 397 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 390 398 else if (strcmp(name,"P0")==0) return P0Enum; 391 399 else if (strcmp(name,"P1")==0) return P1Enum; -
issm/trunk-jpl/src/c/modules/modules.h
r12326 r12677 106 106 #include "./RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h" 107 107 #include "./Scotchx/Scotchx.h" 108 #include "./SmbGradientsx/SmbGradientsx.h" 108 109 #include "./Solverx/Solverx.h" 109 110 #include "./SpcNodesx/SpcNodesx.h" -
issm/trunk-jpl/src/c/objects/Elements/Element.h
r12471 r12677 72 72 virtual void PotentialSheetUngrounding(Vector* potential_sheet_ungrounding)=0; 73 73 virtual void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm)=0; 74 virtual void SmbGradients()=0; 74 75 virtual int UpdatePotentialSheetUngrounding(IssmDouble* potential_sheet_ungrounding,Vector* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf)=0; 75 76 virtual void ResetCoordinateSystem()=0; -
issm/trunk-jpl/src/c/objects/Elements/Penta.cpp
r12529 r12677 2738 2738 } 2739 2739 /*}}}*/ 2740 /*FUNCTION Penta::SmbGradients{{{*/ 2741 void Penta::SmbGradients(void){ 2742 2743 int i; 2744 2745 // input 2746 IssmDouble h[NUMVERTICES]; // ice thickness (m) 2747 IssmDouble s[NUMVERTICES]; // surface elevation (m) 2748 IssmDouble a_pos[NUMVERTICES]; // Hs-SMB relation parameter 2749 IssmDouble b_pos[NUMVERTICES]; // Hs-SMB relation parameter 2750 IssmDouble a_neg[NUMVERTICES]; // Hs-SMB relation parameter 2751 IssmDouble b_neg[NUMVERTICES]; // Hs-SMB relation paremeter 2752 IssmDouble Hc[NUMVERTICES]; // elevation of transition between accumulation regime and ablation regime 2753 IssmDouble smb_pos_max[NUMVERTICES]; // maximum SMB value in the accumulation regime 2754 IssmDouble smb_pos_min[NUMVERTICES]; // minimum SMB value in the accumulation regime 2755 IssmDouble rho_water; // density of fresh water 2756 IssmDouble rho_ice; // density of ice 2757 2758 // output 2759 IssmDouble smb[NUMVERTICES]; // surface mass balance (m/yr ice) 2760 2761 /*Recover SmbGradients*/ 2762 GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum); 2763 GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum); 2764 GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum); 2765 GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum); 2766 GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum); 2767 GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum); 2768 GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum); 2769 2770 /*Recover surface elevatio at vertices: */ 2771 GetInputListOnVertices(&h[0],ThicknessEnum); 2772 GetInputListOnVertices(&s[0],SurfaceEnum); 2773 2774 /*Get material parameters :*/ 2775 rho_ice=matpar->GetRhoIce(); 2776 rho_water=matpar->GetRhoFreshwater(); 2777 2778 // loop over all vertices 2779 for(i=0;i<NUMVERTICES;i++){ 2780 if(s[i]>Hc[i]){ 2781 smb[i]=a_pos[i]+b_pos[i]*s[i]; 2782 if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];} 2783 if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];} 2784 } 2785 else{ 2786 smb[i]=a_neg[i]+b_neg[i]*s[i]; 2787 } 2788 smb[i]=smb[i]/rho_ice; // SMB in m/y ice 2789 2790 } //end of the loop over the vertices 2791 /*Update inputs*/ 2792 this->inputs->AddInput(new PentaP1Input(SurfaceforcingsMassBalanceEnum,&smb[0])); 2793 } 2794 /*}}}*/ 2740 2795 /*FUNCTION Penta::SurfaceArea {{{*/ 2741 2796 IssmDouble Penta::SurfaceArea(void){ -
issm/trunk-jpl/src/c/objects/Elements/Penta.h
r12471 r12677 110 110 void ProcessResultsUnits(void); 111 111 void ResetCoordinateSystem(void); 112 void SmbGradients(); 112 113 IssmDouble SurfaceArea(void); 113 114 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type); -
issm/trunk-jpl/src/c/objects/Elements/Tria.cpp
r12654 r12677 2369 2369 } 2370 2370 /*}}}*/ 2371 /*FUNCTION Tria::SmbGradients{{{*/ 2372 void Tria::SmbGradients(void){ 2373 2374 int i; 2375 2376 // input 2377 IssmDouble h[NUMVERTICES]; // ice thickness (m) 2378 IssmDouble s[NUMVERTICES]; // surface elevation (m) 2379 IssmDouble a_pos[NUMVERTICES]; // Hs-SMB relation parameter 2380 IssmDouble b_pos[NUMVERTICES]; // Hs-SMB relation parameter 2381 IssmDouble a_neg[NUMVERTICES]; // Hs-SMB relation parameter 2382 IssmDouble b_neg[NUMVERTICES]; // Hs-SMB relation paremeter 2383 IssmDouble Hc[NUMVERTICES]; // elevation of transition between accumulation regime and ablation regime 2384 IssmDouble smb_pos_max[NUMVERTICES]; // maximum SMB value in the accumulation regime 2385 IssmDouble smb_pos_min[NUMVERTICES]; // minimum SMB value in the accumulation regime 2386 IssmDouble rho_water; // density of fresh water 2387 IssmDouble rho_ice; // density of ice 2388 2389 // output 2390 IssmDouble smb[NUMVERTICES]; // surface mass balance (m/yr ice) 2391 2392 /*Recover SmbGradients*/ 2393 GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum); 2394 GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum); 2395 GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum); 2396 GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum); 2397 GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum); 2398 GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum); 2399 GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum); 2400 2401 /*Recover surface elevatio at vertices: */ 2402 GetInputListOnVertices(&h[0],ThicknessEnum); 2403 GetInputListOnVertices(&s[0],SurfaceEnum); 2404 2405 /*Get material parameters :*/ 2406 rho_ice=matpar->GetRhoIce(); 2407 rho_water=matpar->GetRhoFreshwater(); 2408 2409 // loop over all vertices 2410 for(i=0;i<NUMVERTICES;i++){ 2411 if(s[i]>Hc[i]){ 2412 smb[i]=a_pos[i]+b_pos[i]*s[i]; 2413 if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];} 2414 if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];} 2415 } 2416 else{ 2417 smb[i]=a_neg[i]+b_neg[i]*s[i]; 2418 } 2419 smb[i]=smb[i]/rho_ice; // SMB in m/y ice 2420 } //end of the loop over the vertices 2421 /*Update inputs*/ 2422 this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&smb[0])); 2423 } 2424 /*}}}*/ 2371 2425 /*FUNCTION Tria::SetCurrentConfiguration {{{*/ 2372 2426 void Tria::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, DataSet* nodesin, Materials* materialsin, Parameters* parametersin){ -
issm/trunk-jpl/src/c/objects/Elements/Tria.h
r12494 r12677 110 110 void ProcessResultsUnits(void); 111 111 void ResetCoordinateSystem(void){_error2_("not implemented yet");}; 112 void SmbGradients(); 112 113 IssmDouble SurfaceArea(void); 113 114 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type); -
issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
r12495 r12677 66 66 case SurfaceforcingsPrecipitationEnum: scale=yts;break; //m/yr 67 67 case SurfaceforcingsMassBalanceEnum: scale=yts;break; //m/yr 68 case SurfaceforcingsSmbPosMaxEnum: scale=yts;break; //m/yr 69 case SurfaceforcingsSmbPosMinEnum: scale=yts;break; //m/yr 70 case SurfaceforcingsAPosEnum: scale=yts;break; //m/yr 71 case SurfaceforcingsBPosEnum: scale=yts;break; //m/yr 72 case SurfaceforcingsANegEnum: scale=yts;break; //m/yr 73 case SurfaceforcingsBNegEnum: scale=yts;break; //m/yr 68 74 case MisfitEnum: scale=pow(yts,2);break; //(m/yr)^2 69 75 case MassFluxEnum: scale=pow((IssmDouble)10,-12)*yts;break; // (GigaTon/year) -
issm/trunk-jpl/src/c/solutions/prognostic_core.cpp
r12515 r12677 17 17 bool save_results; 18 18 bool ispdd; 19 bool issmbgradients; 19 20 20 21 /*activate formulation: */ … … 24 25 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 25 26 femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum); 27 femmodel->parameters->FindParam(&issmbgradients,SurfaceforcingsIssmbgradientsEnum); 26 28 27 29 if(ispdd){ 28 30 if(VerboseSolution()) _pprintLine_(" call positive degree day module"); 29 31 PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 30 } 32 } 33 34 if(issmbgradients){ 35 _printf_(VerboseSolution()," call smb gradients module\n"); 36 SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 37 } 31 38 32 39 if(VerboseSolution()) _pprintLine_(" call computational core"); -
issm/trunk-jpl/src/m/classes/surfaceforcings.m
r12663 r12677 9 9 mass_balance = NaN; 10 10 ispdd = 0; 11 issmbgradients = 0; 12 hc = NaN; 13 smb_pos_max = NaN; 14 smb_pos_min = NaN; 15 a_pos = NaN; 16 b_pos = NaN; 17 a_neg = NaN; 18 b_neg = NaN; 11 19 monthlytemperatures = NaN; 12 20 end … … 24 32 %pdd method not used in default mode 25 33 obj.ispdd=0; 34 obj.issmbgradients=0; 26 35 27 36 end % }}} … … 30 39 if ismember(PrognosticAnalysisEnum,analyses), 31 40 md = checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0 1]); 41 checkfield(md,'surfaceforcings.issmbgradients','numel',1,'values',[0 1]); 32 42 if(obj.ispdd) 33 43 md = checkfield(md,'surfaceforcings.monthlytemperatures','forcing',1,'NaN',1); 44 elseif(obj.issmbgradients) 45 checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1); 46 checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1); 47 checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1); 48 checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1); 49 checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1); 50 checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1); 51 checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1); 34 52 else 35 53 md = checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1); … … 47 65 fielddisplay(obj,'ispdd','is pdd activated (0 or 1, default is 0)'); 48 66 fielddisplay(obj,'monthlytemperatures','monthly surface temperatures required if pdd is activated'); 67 fielddisplay(obj,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'); 68 fielddisplay(obj,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated'); 69 fielddisplay(obj,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated'); 70 fielddisplay(obj,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated'); 71 fielddisplay(obj,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated'); 72 fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'); 73 fielddisplay(obj,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated'); 74 fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'); 49 75 50 76 end % }}} … … 56 82 WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1); 57 83 end 84 WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean'); 85 if obj.issmbgradients, 86 WriteData(fid,'object',obj,'fieldname','hc','format','DoubleMat','mattype',1); 87 WriteData(fid,'object',obj,'fieldname','smb_pos_max','format','DoubleMat','mattype',1); 88 WriteData(fid,'object',obj,'fieldname','smb_pos_min','format','DoubleMat','mattype',1); 89 WriteData(fid,'object',obj,'fieldname','a_pos','format','DoubleMat','mattype',1); 90 WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1); 91 WriteData(fid,'object',obj,'fieldname','a_neg','format','DoubleMat','mattype',1); 92 WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1); 93 end 58 94 59 95 end % }}} -
issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
r12328 r12677 9 9 % macro=MaximumNumberOfEnums() 10 10 11 macro=44 0;11 macro=448;
Note:
See TracChangeset
for help on using the changeset viewer.