Changeset 19528
- Timestamp:
- 08/30/15 16:01:06 (10 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 34 added
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/m4/analyses.m4
r19518 r19528 10 10 [ 11 11 12 dnl with-Smb{{{ 13 14 AC_ARG_WITH([Smb], 15 16 AS_HELP_STRING([--with-Smb = YES], [compile with Smb capabilities (default is yes)]), 17 18 [SMB=$withval],[SMB=yes]) 19 20 AC_MSG_CHECKING(for Smb capability compilation) 21 22 23 HAVE_SMB=no 24 25 if test "x$SMB" = "xyes"; then 26 27 HAVE_SMB=yes 28 29 AC_DEFINE([_HAVE_SMB_],[1],[with Smb capability]) 30 31 fi 32 33 AM_CONDITIONAL([SMB], [test x$HAVE_SMB = xyes]) 34 35 AC_MSG_RESULT($HAVE_SMB) 36 37 dnl }}} 12 38 dnl with-AdjointBalancethickness{{{ 13 39 -
issm/trunk-jpl/src/c/Makefile.am
r19527 r19528 403 403 issm_sources += ./analyses/MasstransportAnalysis.cpp 404 404 endif 405 if SMB 406 issm_sources += ./analyses/SmbAnalysis.cpp 407 endif 408 405 409 if FREESURFACEBASE 406 410 issm_sources += ./analyses/FreeSurfaceBaseAnalysis.cpp -
issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
r19087 r19528 14 14 15 15 switch(analysis_enum){ 16 #ifdef _HAVE_SMB_ 17 case SmbAnalysisEnum : return new SmbAnalysis(); 18 #endif 16 19 #ifdef _HAVE_ADJOINTBALANCETHICKNESS_ 17 20 case AdjointBalancethicknessAnalysisEnum : return new AdjointBalancethicknessAnalysis(); -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r19527 r19528 118 118 void MasstransportAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 119 119 120 int stabilization,finiteelement ,smb_model;120 int stabilization,finiteelement; 121 121 bool dakota_analysis; 122 bool isdelta18o,ismungsm,isd18opd;123 122 bool isgroundingline; 124 123 bool islevelset; … … 127 126 iomodel->Constant(&stabilization,MasstransportStabilizationEnum); 128 127 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); 129 iomodel->Constant(&smb_model,SmbEnum);130 128 iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum); 131 129 iomodel->Constant(&islevelset,TransientIslevelsetEnum); … … 173 171 } 174 172 175 switch(smb_model){ 176 case SMBforcingEnum: 177 iomodel->FetchDataToInput(elements,SmbMassBalanceEnum,0.); 178 break; 179 case SMBpddEnum: 180 iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum); 181 iomodel->Constant(&ismungsm,SmbIsmungsmEnum); 182 iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum); 183 iomodel->FetchDataToInput(elements,SmbS0pEnum); 184 iomodel->FetchDataToInput(elements,SmbS0tEnum); 185 if(isdelta18o || ismungsm){ 186 iomodel->FetchDataToInput(elements,SmbTemperaturesLgmEnum); 187 iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum); 188 iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum); 189 iomodel->FetchDataToInput(elements,SmbPrecipitationsLgmEnum); 190 } 191 else{ 192 iomodel->FetchDataToInput(elements,SmbPrecipitationEnum); 193 iomodel->FetchDataToInput(elements,SmbMonthlytemperaturesEnum); 194 } 195 break; 196 case SMBd18opddEnum: 197 iomodel->Constant(&ismungsm,SmbIsmungsmEnum); 198 iomodel->Constant(&isd18opd,SmbIsd18opdEnum); 199 iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum); 200 iomodel->FetchDataToInput(elements,SmbS0pEnum); 201 iomodel->FetchDataToInput(elements,SmbS0tEnum); 202 if (isd18opd){ 203 iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum); 204 iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum); 205 } 206 207 break; 208 case SMBgradientsEnum: 209 iomodel->FetchDataToInput(elements,SmbHrefEnum); 210 iomodel->FetchDataToInput(elements,SmbSmbrefEnum); 211 iomodel->FetchDataToInput(elements,SmbBPosEnum); 212 iomodel->FetchDataToInput(elements,SmbBNegEnum); 213 break; 214 case SMBhenningEnum: 215 iomodel->FetchDataToInput(elements,SmbSmbrefEnum,0.); 216 break; 217 case SMBcomponentsEnum: 218 iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.); 219 iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.); 220 iomodel->FetchDataToInput(elements,SmbRunoffEnum,0.); 221 break; 222 case SMBmeltcomponentsEnum: 223 iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.); 224 iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.); 225 iomodel->FetchDataToInput(elements,SmbMeltEnum,0.); 226 iomodel->FetchDataToInput(elements,SmbRefreezeEnum,0.); 227 break; 228 default: 229 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); 230 } 173 231 174 232 175 }/*}}}*/ … … 248 191 iomodel->DeleteData(&requestedoutputs,numoutputs,MasstransportRequestedOutputsEnum); 249 192 250 iomodel->FetchData(&requestedoutputs,&numoutputs,SmbRequestedOutputsEnum); 251 parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs)); 252 if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs)); 253 iomodel->DeleteData(&requestedoutputs,numoutputs,SmbRequestedOutputsEnum); 254 193 255 194 256 195 }/*}}}*/ -
issm/trunk-jpl/src/c/analyses/analyses.h
r19087 r19528 30 30 #include "./LsfReinitializationAnalysis.h" 31 31 #include "./MasstransportAnalysis.h" 32 #include "./SmbAnalysis.h" 32 33 #include "./MeltingAnalysis.h" 33 34 #include "./MeshdeformationAnalysis.h" -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r19527 r19528 496 496 case MasstransportSolutionEnum: 497 497 analyses_temp[numanalyses++]=MasstransportAnalysisEnum; 498 analyses_temp[numanalyses++]=SmbAnalysisEnum; 498 499 break; 499 500 … … 529 530 break; 530 531 532 case SmbSolutionEnum: 533 analyses_temp[numanalyses++]=SmbAnalysisEnum; 534 break; 535 531 536 case DamageEvolutionSolutionEnum: 532 537 analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum; … … 534 539 535 540 case TransientSolutionEnum:{ 536 bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage ;541 bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage,issmb; 537 542 iomodel->Constant(&isSIA,FlowequationIsSIAEnum); 538 543 iomodel->Constant(&isFS,FlowequationIsFSEnum); … … 545 550 iomodel->Constant(&isdamage,TransientIsdamageevolutionEnum); 546 551 iomodel->Constant(&ishydrology,TransientIshydrologyEnum); 552 iomodel->Constant(&issmb,TransientIssmbEnum); 547 553 if(isstressbalance){ 548 554 int fe_FS; … … 570 576 analyses_temp[numanalyses++]=MasstransportAnalysisEnum; 571 577 } 578 if(issmb) analyses_temp[numanalyses++]=SmbAnalysisEnum; 572 579 if(islevelset){ 573 580 analyses_temp[numanalyses++]=LevelsetAnalysisEnum; -
issm/trunk-jpl/src/c/cores/smb_core.cpp
r19527 r19528 13 13 14 14 /*parameters: */ 15 Analysis* analysis=NULL; 15 16 int smb_model; 16 17 int numoutputs; … … 18 19 int solution_type; 19 20 char** requested_outputs = NULL; 21 22 /*activate configuration*/ 23 femmodel->SetCurrentConfiguration(SmbAnalysisEnum); 20 24 21 25 /*recover parameters: */ … … 27 31 28 32 if(VerboseSolution()) _printf0_(" computing smb \n"); 29 30 /*branch to correct module*/ 31 switch(smb_model){ 32 case SMBforcingEnum: 33 /*Nothing to be done*/ 34 break; 35 case SMBpddEnum: 36 bool isdelta18o,ismungsm; 37 femmodel->parameters->FindParam(&isdelta18o,SmbIsdelta18oEnum); 38 femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum); 39 if(isdelta18o){ 40 if(VerboseSolution()) _printf0_(" call Delta18oParameterization module\n"); 41 Delta18oParameterizationx(femmodel); 42 } 43 if(ismungsm){ 44 if(VerboseSolution()) _printf0_(" call MungsmtpParameterization module\n"); 45 MungsmtpParameterizationx(femmodel); 46 } 47 if(VerboseSolution()) _printf0_(" call positive degree day module\n"); 48 PositiveDegreeDayx(femmodel); 49 break; 50 case SMBd18opddEnum: 51 bool isd18opd; 52 femmodel->parameters->FindParam(&isd18opd,SmbIsd18opdEnum); 53 if(isd18opd){ 54 if(VerboseSolution()) _printf0_(" call Delta18opdParameterization module\n"); 55 Delta18opdParameterizationx(femmodel); 56 if(VerboseSolution()) _printf0_(" call positive degree day module\n"); 57 PositiveDegreeDayx(femmodel); 58 } 59 break; 60 case SMBgradientsEnum: 61 if(VerboseSolution())_printf0_(" call smb gradients module\n"); 62 SmbGradientsx(femmodel); 63 break; 64 case SMBhenningEnum: 65 if(VerboseSolution())_printf0_(" call smb Henning module\n"); 66 SmbHenningx(femmodel); 67 break; 68 case SMBcomponentsEnum: 69 if(VerboseSolution())_printf0_(" call smb Components module\n"); 70 SmbComponentsx(femmodel); 71 break; 72 case SMBmeltcomponentsEnum: 73 if(VerboseSolution())_printf0_(" call smb Melt Components module\n"); 74 SmbMeltComponentsx(femmodel); 75 break; 76 case SMBgcmEnum: 77 /*Nothing to be done*/ 78 break; 79 default: 80 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); 81 } 33 34 analysis = new SmbAnalysis(); 35 analysis->Core(femmodel); 36 delete analysis; 82 37 83 38 if(save_results){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r19527 r19528 22 22 char** requestedoutputs = NULL; 23 23 IssmDouble time; 24 bool isdelta18o,ismungsm,isd18opd,interp;25 24 26 25 /*parameters for mass flux:*/ … … 99 98 } 100 99 101 /*Surface mass balance parameters*/ 102 parameters->AddObject(iomodel->CopyConstantObject(SmbEnum)); 103 iomodel->Constant(&smb_model,SmbEnum); 104 iomodel->Constant(&interp,TimesteppingInterpForcingsEnum); 105 switch(smb_model){ 106 case SMBforcingEnum: 107 /*Nothing to add to parameters*/ 108 break; 109 case SMBpddEnum: 110 parameters->AddObject(iomodel->CopyConstantObject(SmbIsdelta18oEnum)); 111 parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum)); 112 parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum)); 113 parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum)); 114 parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum)); 115 iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum); 116 iomodel->Constant(&ismungsm,SmbIsmungsmEnum); 117 118 if(ismungsm){ 119 iomodel->FetchData(&temp,&N,&M,SmbPfacEnum); _assert_(N==2); 120 parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M)); 121 iomodel->DeleteData(temp,SmbPfacEnum); 122 123 iomodel->FetchData(&temp,&N,&M,SmbTdiffEnum); _assert_(N==2); 124 parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M)); 125 iomodel->DeleteData(temp,SmbTdiffEnum); 126 127 iomodel->FetchData(&temp,&N,&M,SmbSealevEnum); _assert_(N==2); 128 parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M)); 129 iomodel->DeleteData(temp,SmbSealevEnum); 130 } 131 if(isdelta18o){ 132 iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2); 133 parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M)); 134 iomodel->DeleteData(temp,SmbDelta18oEnum); 135 136 iomodel->FetchData(&temp,&N,&M,SmbDelta18oSurfaceEnum); _assert_(N==2); 137 parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M)); 138 iomodel->DeleteData(temp,SmbDelta18oSurfaceEnum); 139 } 140 break; 141 case SMBd18opddEnum: 142 parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum)); 143 parameters->AddObject(iomodel->CopyConstantObject(SmbIsd18opdEnum)); 144 parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum)); 145 parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum)); 146 parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum)); 147 iomodel->Constant(&ismungsm,SmbIsmungsmEnum); 148 iomodel->Constant(&isd18opd,SmbIsd18opdEnum); 149 if(isd18opd){ 150 iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2); 151 parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M)); 152 iomodel->DeleteData(temp,SmbDelta18oEnum); 153 154 parameters->AddObject(iomodel->CopyConstantObject(SmbDpermilEnum)); 155 } 156 break; 157 case SMBgradientsEnum: 158 /*Nothing to add to parameters*/ 159 break; 160 case SMBhenningEnum: 161 /*Nothing to add to parameters*/ 162 break; 163 case SMBcomponentsEnum: 164 /*Nothing to add to parameters*/ 165 break; 166 case SMBmeltcomponentsEnum: 167 /*Nothing to add to parameters*/ 168 break; 169 default: 170 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); 171 } 172 100 173 101 /*Basal forcing parameters*/ 174 102 parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsEnum)); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r19527 r19528 350 350 /*Smb{{{*/ 351 351 SmbEnum, 352 SmbAnalysisEnum, 352 353 SmbSolutionEnum, 353 354 SmbNumRequestedOutputsEnum, 354 355 SmbRequestedOutputsEnum, 356 /*SMBforcing*/ 355 357 SMBforcingEnum, 356 358 SmbMassBalanceEnum, 359 /*SMBgemb*/ 360 SMBgembEnum, 361 SmbTaEnum, 362 SmbVEnum, 363 SmbDswrfEnum, 364 SmbDlwrfEnum, 365 SmbPEnum, 366 SmbEAirEnum, 367 SmbPAirEnum, 368 SmbTmeanEnum, 369 SmbCEnum, 370 SmbTzEnum, 371 SmbVzEnum, 372 SmbSpinUpEnum, 373 SmbAIdxEnum, 374 SmbSwIdxEnum, 375 SmbDenIdxEnum, 376 SmbZTopEnum, 377 SmbDzTopEnum, 378 SmbDzMinEnum, 379 SmbZYEnum, 380 SmbZMaxEnum, 381 SmbZMinEnum, 382 SmbOutputFreqEnum, 383 SmbASnowEnum, 384 SmbAIceEnum, 385 SmbCldFracEnum, 386 SmbT0wetEnum, 387 SmbT0dryEnum, 388 SmbKEnum, 389 /*SMBpdd*/ 357 390 SMBpddEnum, 358 391 SmbDelta18oEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r19527 r19528 354 354 case BalancethicknessD0Enum : return "BalancethicknessD0"; 355 355 case SmbEnum : return "Smb"; 356 case SmbAnalysisEnum : return "SmbAnalysis"; 356 357 case SmbSolutionEnum : return "SmbSolution"; 357 358 case SmbNumRequestedOutputsEnum : return "SmbNumRequestedOutputs"; … … 359 360 case SMBforcingEnum : return "SMBforcing"; 360 361 case SmbMassBalanceEnum : return "SmbMassBalance"; 362 case SMBgembEnum : return "SMBgemb"; 363 case SmbTaEnum : return "SmbTa"; 364 case SmbVEnum : return "SmbV"; 365 case SmbDswrfEnum : return "SmbDswrf"; 366 case SmbDlwrfEnum : return "SmbDlwrf"; 367 case SmbPEnum : return "SmbP"; 368 case SmbEAirEnum : return "SmbEAir"; 369 case SmbPAirEnum : return "SmbPAir"; 370 case SmbTmeanEnum : return "SmbTmean"; 371 case SmbCEnum : return "SmbC"; 372 case SmbTzEnum : return "SmbTz"; 373 case SmbVzEnum : return "SmbVz"; 374 case SmbSpinUpEnum : return "SmbSpinUp"; 375 case SmbAIdxEnum : return "SmbAIdx"; 376 case SmbSwIdxEnum : return "SmbSwIdx"; 377 case SmbDenIdxEnum : return "SmbDenIdx"; 378 case SmbZTopEnum : return "SmbZTop"; 379 case SmbDzTopEnum : return "SmbDzTop"; 380 case SmbDzMinEnum : return "SmbDzMin"; 381 case SmbZYEnum : return "SmbZY"; 382 case SmbZMaxEnum : return "SmbZMax"; 383 case SmbZMinEnum : return "SmbZMin"; 384 case SmbOutputFreqEnum : return "SmbOutputFreq"; 385 case SmbASnowEnum : return "SmbASnow"; 386 case SmbAIceEnum : return "SmbAIce"; 387 case SmbCldFracEnum : return "SmbCldFrac"; 388 case SmbT0wetEnum : return "SmbT0wet"; 389 case SmbT0dryEnum : return "SmbT0dry"; 390 case SmbKEnum : return "SmbK"; 361 391 case SMBpddEnum : return "SMBpdd"; 362 392 case SmbDelta18oEnum : return "SmbDelta18o"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r19527 r19528 360 360 else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 361 361 else if (strcmp(name,"Smb")==0) return SmbEnum; 362 else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum; 362 363 else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum; 363 364 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; … … 365 366 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 366 367 else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum; 368 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 369 else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 370 else if (strcmp(name,"SmbV")==0) return SmbVEnum; 371 else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum; 372 else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum; 373 else if (strcmp(name,"SmbP")==0) return SmbPEnum; 374 else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum; 375 else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum; 376 else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum; 377 else if (strcmp(name,"SmbC")==0) return SmbCEnum; 378 else if (strcmp(name,"SmbTz")==0) return SmbTzEnum; 379 else if (strcmp(name,"SmbVz")==0) return SmbVzEnum; 380 else if (strcmp(name,"SmbSpinUp")==0) return SmbSpinUpEnum; 381 else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum; 382 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; 383 else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum; 384 else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum; 389 else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum; 390 else if (strcmp(name,"SmbZY")==0) return SmbZYEnum; 391 else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum; 392 else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum; 393 else if (strcmp(name,"SmbOutputFreq")==0) return SmbOutputFreqEnum; 394 else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 395 else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum; 396 else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum; 397 else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum; 398 else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum; 399 else if (strcmp(name,"SmbK")==0) return SmbKEnum; 367 400 else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum; 368 401 else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum; … … 383 416 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum; 384 417 else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 418 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 389 419 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 390 420 else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum; … … 476 506 else if (strcmp(name,"DataSet")==0) return DataSetEnum; 477 507 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 478 else if (strcmp(name,"Loads")==0) return LoadsEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Loads")==0) return LoadsEnum; 479 512 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 480 513 else if (strcmp(name,"Nodes")==0) return NodesEnum; … … 506 539 else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum; 507 540 else if (strcmp(name,"InputToDepthaverage")==0) return InputToDepthaverageEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum; 541 else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum; 512 542 else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum; 513 543 else if (strcmp(name,"IntParam")==0) return IntParamEnum; … … 599 629 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 600 630 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; 601 else if (strcmp(name,"Vel")==0) return VelEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"Vel")==0) return VelEnum; 602 635 else if (strcmp(name,"Velocity")==0) return VelocityEnum; 603 636 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; … … 629 662 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum; 630 663 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 664 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 635 665 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 636 666 else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum; … … 722 752 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 723 753 else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum; 724 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 725 758 else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum; 726 759 else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; … … 752 785 else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum; 753 786 else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum; 787 else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum; 758 788 else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum; 759 789 else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum; … … 845 875 else if (strcmp(name,"None")==0) return NoneEnum; 846 876 else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum; 847 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; 848 881 else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; 849 882 else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum; … … 875 908 else if (strcmp(name,"RootPath")==0) return RootPathEnum; 876 909 else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"InputFileName")==0) return InputFileNameEnum; 910 else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum; 881 911 else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum; 882 912 else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum; -
issm/trunk-jpl/src/m/classes/SMBgemb.m
r19527 r19528 123 123 function md = checkconsistency(self,md,solution,analyses) % {{{ 124 124 125 md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'>', 0,'<',273+60); %60 celsius max value126 md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1 );127 md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1 );128 md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1 );129 md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1 );125 md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'>',273-60,'<',273+60); %60 celsius max value 126 md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1,'>=',0,'<',45); %max 500 km/h 127 md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'>=',0,'<=',1400); 128 md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'>=',0); 129 md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'>=',0,'<=',100); 130 130 md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1); 131 131 132 md = checkfield(md,'fieldname','smb.Tmean','NaN',1,'>',273-60,'<',273+60); %60 celsius max value 133 md = checkfield(md,'fieldname','smb.C','NaN',1,'>=',0); 134 md = checkfield(md,'fieldname','smb.Tz','NaN',1,'>=',0,'<=',5000); 135 md = checkfield(md,'fieldname','smb.Vz','NaN',1,'>=',0,'<=',5000); 136 137 md = checkfield(md,'fieldname','smb.spinUp','NaN',1,'>=',0); 138 md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'values',[1,2,3,4]); 139 md = checkfield(md,'fieldname','smb.swIdx','NaN',1,'values',[0,1]); 140 md = checkfield(md,'fieldname','smb.denIdx','NaN',1,'values',[1,2,3,4,5]); 141 142 md = checkfield(md,'fieldname','smb.zTop','NaN',1,'>=',0); 143 md = checkfield(md,'fieldname','smb.dzTop','NaN',1,'>',0); 144 md = checkfield(md,'fieldname','smb.dzMin','NaN',1,'>',0); 145 md = checkfield(md,'fieldname','smb.zY','NaN',1,'>=',1); 146 md = checkfield(md,'fieldname','smb.outputFreq','NaN',1,'>',0,'<',10*365); %10 years max 147 148 switch self.aIdx, 149 case {1 2} 150 md = checkfield(md,'fieldname','smb.aSnow','NaN',1,'>=',.64,'<=',.89); 151 md = checkfield(md,'fieldname','smb.aIce','NaN',1,'>=',.27,'<=',.58); 152 case 3 153 md = checkfield(md,'fieldname','smb.cldFrac','NaN',1,'>=',0,'<=',1); 154 case 4 155 md = checkfield(md,'fieldname','smb.t0wet','NaN',1,'>=',15,'<=',21.9); 156 md = checkfield(md,'fieldname','smb.t0dry','NaN',1,'>=',30,'<=',30); 157 md = checkfield(md,'fieldname','smb.K','NaN',1,'>=',7,'<=',7); 158 end 159 132 160 %check zTop is < local thickness: 133 161 he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2); … … 195 223 196 224 WriteData(fid,'enum',SmbEnum(),'data',SMBgembEnum(),'format','Integer'); 197 WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 198 WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 199 WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 225 226 WriteData(fid,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 227 WriteData(fid,'object',self,'class','smb','fieldname','V','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 228 WriteData(fid,'object',self,'class','smb','fieldname','dswrf','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 229 WriteData(fid,'object',self,'class','smb','fieldname','dlwrf','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 230 WriteData(fid,'object',self,'class','smb','fieldname','P','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 231 WriteData(fid,'object',self,'class','smb','fieldname','eAir','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 232 WriteData(fid,'object',self,'class','smb','fieldname','pAir','format','DoubleMat','mattype',1,'scale',1,'timeserieslength',md.mesh.numberofelements+1); 233 234 WriteData(fid,'object',self,'class','smb','fieldname','Tmean','format','Double','scale',1); 235 WriteData(fid,'object',self,'class','smb','fieldname','C','format','Double','scale',1); 236 WriteData(fid,'object',self,'class','smb','fieldname','Tz','format','Double','scale',1); 237 WriteData(fid,'object',self,'class','smb','fieldname','Vz','format','Double','scale',1); 238 WriteData(fid,'object',self,'class','smb','fieldname','spinUp','format','Integer','scale',1); 239 WriteData(fid,'object',self,'class','smb','fieldname','aIdx','format','Integer','scale',1); 240 WriteData(fid,'object',self,'class','smb','fieldname','swIdx','format','Integer','scale',1); 241 WriteData(fid,'object',self,'class','smb','fieldname','denIdx','format','Integer','scale',1); 242 243 WriteData(fid,'object',self,'class','smb','fieldname','zTop','format','DoubleMat','mattype',1,'scale',1); 244 WriteData(fid,'object',self,'class','smb','fieldname','dzTop','format','DoubleMat','mattype',1,'scale',1); 245 WriteData(fid,'object',self,'class','smb','fieldname','dzMin','format','DoubleMat','mattype',1,'scale',1); 246 WriteData(fid,'object',self,'class','smb','fieldname','zY','format','DoubleMat','mattype',1,'scale',1); 247 WriteData(fid,'object',self,'class','smb','fieldname','zMax','format','DoubleMat','mattype',1,'scale',1); 248 WriteData(fid,'object',self,'class','smb','fieldname','zMin','format','DoubleMat','mattype',1,'scale',1); 249 250 WriteData(fid,'object',self,'class','smb','fieldname','outputFreq','format','Double','scale',1); 251 WriteData(fid,'object',self,'class','smb','fieldname','aSnow','format','Double','scale',1); 252 WriteData(fid,'object',self,'class','smb','fieldname','aIce','format','Double','scale',1); 253 WriteData(fid,'object',self,'class','smb','fieldname','cldFrac','format','Double','scale',1); 254 WriteData(fid,'object',self,'class','smb','fieldname','t0wet','format','Double','scale',1); 255 WriteData(fid,'object',self,'class','smb','fieldname','t0dry','format','Double','scale',1); 256 WriteData(fid,'object',self,'class','smb','fieldname','K','format','Double','scale',1); 200 257 201 258 %process requested outputs … … 210 267 end % }}} 211 268 end 212 end 269 end -
issm/trunk-jpl/src/m/consistency/checkfield.m
r19285 r19528 139 139 lowerbound=getfieldvalue(options,'>='); 140 140 field2=reshape(field,prod(size(field)),1); 141 if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end 141 142 if any(field2<lowerbound), 142 143 md = checkmessage(md,getfieldvalue(options,'message',... … … 147 148 lowerbound=getfieldvalue(options,'>'); 148 149 field2=reshape(field,prod(size(field)),1); 150 if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end 149 151 if any(field2<=lowerbound), 150 152 md = checkmessage(md,getfieldvalue(options,'message',... … … 157 159 upperbound=getfieldvalue(options,'<='); 158 160 field2=reshape(field,prod(size(field)),1); 161 if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end 159 162 if any(field2>upperbound), 160 163 md = checkmessage(md,getfieldvalue(options,'message',... … … 165 168 upperbound=getfieldvalue(options,'<'); 166 169 field2=reshape(field,prod(size(field)),1); 170 if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end 167 171 if any(field2>=upperbound), 168 172 md = checkmessage(md,getfieldvalue(options,'message',... -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r19527 r19528 346 346 def BalancethicknessD0Enum(): return StringToEnum("BalancethicknessD0")[0] 347 347 def SmbEnum(): return StringToEnum("Smb")[0] 348 def SmbAnalysisEnum(): return StringToEnum("SmbAnalysis")[0] 348 349 def SmbSolutionEnum(): return StringToEnum("SmbSolution")[0] 349 350 def SmbNumRequestedOutputsEnum(): return StringToEnum("SmbNumRequestedOutputs")[0] … … 351 352 def SMBforcingEnum(): return StringToEnum("SMBforcing")[0] 352 353 def SmbMassBalanceEnum(): return StringToEnum("SmbMassBalance")[0] 354 def SMBgembEnum(): return StringToEnum("SMBgemb")[0] 355 def SmbTaEnum(): return StringToEnum("SmbTa")[0] 356 def SmbVEnum(): return StringToEnum("SmbV")[0] 357 def SmbDswrfEnum(): return StringToEnum("SmbDswrf")[0] 358 def SmbDlwrfEnum(): return StringToEnum("SmbDlwrf")[0] 359 def SmbPEnum(): return StringToEnum("SmbP")[0] 360 def SmbEAirEnum(): return StringToEnum("SmbEAir")[0] 361 def SmbPAirEnum(): return StringToEnum("SmbPAir")[0] 362 def SmbTmeanEnum(): return StringToEnum("SmbTmean")[0] 363 def SmbCEnum(): return StringToEnum("SmbC")[0] 364 def SmbTzEnum(): return StringToEnum("SmbTz")[0] 365 def SmbVzEnum(): return StringToEnum("SmbVz")[0] 366 def SmbSpinUpEnum(): return StringToEnum("SmbSpinUp")[0] 367 def SmbAIdxEnum(): return StringToEnum("SmbAIdx")[0] 368 def SmbSwIdxEnum(): return StringToEnum("SmbSwIdx")[0] 369 def SmbDenIdxEnum(): return StringToEnum("SmbDenIdx")[0] 370 def SmbZTopEnum(): return StringToEnum("SmbZTop")[0] 371 def SmbDzTopEnum(): return StringToEnum("SmbDzTop")[0] 372 def SmbDzMinEnum(): return StringToEnum("SmbDzMin")[0] 373 def SmbZYEnum(): return StringToEnum("SmbZY")[0] 374 def SmbZMaxEnum(): return StringToEnum("SmbZMax")[0] 375 def SmbZMinEnum(): return StringToEnum("SmbZMin")[0] 376 def SmbOutputFreqEnum(): return StringToEnum("SmbOutputFreq")[0] 377 def SmbASnowEnum(): return StringToEnum("SmbASnow")[0] 378 def SmbAIceEnum(): return StringToEnum("SmbAIce")[0] 379 def SmbCldFracEnum(): return StringToEnum("SmbCldFrac")[0] 380 def SmbT0wetEnum(): return StringToEnum("SmbT0wet")[0] 381 def SmbT0dryEnum(): return StringToEnum("SmbT0dry")[0] 382 def SmbKEnum(): return StringToEnum("SmbK")[0] 353 383 def SMBpddEnum(): return StringToEnum("SMBpdd")[0] 354 384 def SmbDelta18oEnum(): return StringToEnum("SmbDelta18o")[0] -
issm/trunk-jpl/test/NightlyRun/test109.m
r19527 r19528 8 8 md.transient.isstressbalance=0; 9 9 md.transient.ismasstransport=0; 10 md.transient.issmb= 0;10 md.transient.issmb=1; 11 11 md.transient.isthermal=1; 12 12 md.transient.isgroundingline=0; 13 md.verbose=verbose('11111111'); 13 14 md=solve(md,TransientSolutionEnum()); 14 15 -
issm/trunk-jpl/test/NightlyRun/test109.py
r19527 r19528 17 17 md.transient.isstressbalance=False 18 18 md.transient.ismasstransport=False 19 md.transient.issmb= False19 md.transient.issmb=True 20 20 md.transient.isthermal=True 21 21 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test121.m
r19527 r19528 10 10 md.transient.isstressbalance=0; 11 11 md.transient.ismasstransport=0; 12 md.transient.issmb= 0;12 md.transient.issmb=1; 13 13 md.transient.isthermal=1; 14 14 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test121.py
r19527 r19528 19 19 md.transient.isstressbalance=False 20 20 md.transient.ismasstransport=False 21 md.transient.issmb= False21 md.transient.issmb=True 22 22 md.transient.isthermal=True 23 23 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test207.m
r19527 r19528 8 8 md.transient.isstressbalance=0; 9 9 md.transient.ismasstransport=0; 10 md.transient.issmb= 0;10 md.transient.issmb=1; 11 11 md.transient.isthermal=1; 12 12 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test207.py
r19527 r19528 19 19 md.transient.isstressbalance=False 20 20 md.transient.ismasstransport=False 21 md.transient.issmb= False21 md.transient.issmb=True 22 22 md.transient.isthermal=True 23 23 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test232.m
r19527 r19528 11 11 md.transient.isstressbalance=0; 12 12 md.transient.ismasstransport=0; 13 md.transient.issmb= 0;13 md.transient.issmb=1; 14 14 md.transient.isthermal=1; 15 15 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test232.py
r19527 r19528 21 21 md.transient.isstressbalance=False 22 22 md.transient.ismasstransport=False 23 md.transient.issmb= False23 md.transient.issmb=True 24 24 md.transient.isthermal=True 25 25 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test3009.m
r19527 r19528 8 8 md.transient.isstressbalance=0; 9 9 md.transient.ismasstransport=0; 10 md.transient.issmb= 0;10 md.transient.issmb=1; 11 11 md.transient.isthermal=1; 12 12 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test3009.py
r19527 r19528 17 17 md.transient.isstressbalance=False 18 18 md.transient.ismasstransport=False 19 md.transient.issmb= False19 md.transient.issmb=True 20 20 md.transient.isthermal=True 21 21 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test3109.m
r19527 r19528 8 8 md.transient.isstressbalance=0; 9 9 md.transient.ismasstransport=0; 10 md.transient.issmb= 0;10 md.transient.issmb=1; 11 11 md.transient.isthermal=1; 12 12 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test3109.py
r19527 r19528 17 17 md.transient.isstressbalance=False 18 18 md.transient.ismasstransport=False 19 md.transient.issmb= False19 md.transient.issmb=True 20 20 md.transient.isthermal=True 21 21 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test313.m
r19527 r19528 9 9 md.transient.isstressbalance=0; 10 10 md.transient.ismasstransport=0; 11 md.transient.issmb= 0;11 md.transient.issmb=1; 12 12 md.transient.isthermal=1; 13 13 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test313.py
r19527 r19528 18 18 md.transient.isstressbalance=False 19 19 md.transient.ismasstransport=False 20 md.transient.issmb= False20 md.transient.issmb=True 21 21 md.transient.isthermal=True 22 22 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test326.m
r19527 r19528 10 10 md.transient.isstressbalance=0; 11 11 md.transient.ismasstransport=0; 12 md.transient.issmb= 0;12 md.transient.issmb=1; 13 13 md.transient.isthermal=1; 14 14 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test326.py
r19527 r19528 20 20 md.transient.isstressbalance=False 21 21 md.transient.ismasstransport=False 22 md.transient.issmb= False22 md.transient.issmb=True 23 23 md.transient.isthermal=True 24 24 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test407.m
r19527 r19528 8 8 md.transient.isstressbalance=0; 9 9 md.transient.ismasstransport=0; 10 md.transient.issmb= 0;10 md.transient.issmb=1; 11 11 md.transient.isthermal=1; 12 12 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test407.py
r19527 r19528 18 18 md.transient.isstressbalance=False 19 19 md.transient.ismasstransport=False 20 md.transient.issmb= False20 md.transient.issmb=True 21 21 md.transient.isthermal=True 22 22 md.transient.isgroundingline=False -
issm/trunk-jpl/test/NightlyRun/test437.m
r19527 r19528 37 37 %Additional settings 38 38 md.transient.ismasstransport=0; 39 md.transient.issmb=0;40 39 md.transient.isstressbalance=0; 40 md.transient.issmb=1; 41 41 md.transient.isthermal=1; 42 42 md.thermal.stabilization = 0; -
issm/trunk-jpl/test/NightlyRun/test515.m
r19527 r19528 9 9 md.transient.isstressbalance=0; 10 10 md.transient.ismasstransport=0; 11 md.transient.issmb= 0;11 md.transient.issmb=1; 12 12 md.transient.isthermal=1; 13 13 md.transient.isgroundingline=0; -
issm/trunk-jpl/test/NightlyRun/test515.py
r19527 r19528 18 18 md.transient.isstressbalance=False 19 19 md.transient.ismasstransport=False 20 md.transient.issmb= False20 md.transient.issmb=True 21 21 md.transient.isthermal=True 22 22 md.transient.isgroundingline=False
Note:
See TracChangeset
for help on using the changeset viewer.