Changeset 27498
- Timestamp:
- 01/04/23 16:20:32 (2 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r27462 r27498 601 601 if FORTRAN 602 602 issm_sources += ./modules/SurfaceMassBalancex/run_semic.f90 603 issm_sources += ./modules/SurfaceMassBalancex/run_semic_transient.f90 603 604 endif 604 605 endif -
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r27323 r27498 206 206 break; 207 207 case SMBsemicEnum: 208 iomodel->FetchDataToInput(inputs,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 208 int ismethod; 209 //if(VerboseSolution()) _printf0_(" smb semic: UpdateElements.\n"); 210 //iomodel->FetchDataToInput(inputs,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 209 211 iomodel->FetchDataToInput(inputs,elements,"md.smb.s0gcm",SmbS0gcmEnum); 210 212 iomodel->FetchDataToInput(inputs,elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum); … … 217 219 iomodel->FetchDataToInput(inputs,elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum); 218 220 iomodel->FetchDataToInput(inputs,elements,"md.smb.dailytemperature",SmbDailytemperatureEnum); 221 // assign initial SEMIC temperature from initialization class. 222 if(VerboseSolution()) _printf0_(" smb semic: UpdateElements - temperature.\n"); 223 iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureSEMICEnum); 224 225 iomodel->FindConstant(&ismethod,"md.smb.ismethod"); 226 if (ismethod == 1){ 227 // initial albedo 228 if(VerboseSolution()) _printf0_(" smb semic: UpdateElements - albedo.\n"); 229 iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo",SmbAlbedoEnum); 230 iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo_snow",SmbAlbedoSnowEnum); 231 if(VerboseSolution()) _printf0_(" smb semic: UpdateElements - Hice/Hsnow.\n"); 232 iomodel->FetchDataToInput(inputs,elements,"md.smb.hice",SmbHIceEnum); 233 iomodel->FetchDataToInput(inputs,elements,"md.smb.hsnow",SmbHSnowEnum); 234 235 // initial Temperature amplitude. 236 if(VerboseSolution()) _printf0_(" smb semic: UpdateElements - Tamp.\n"); 237 iomodel->FetchDataToInput(inputs,elements,"md.smb.Tamp",SmbTampEnum); 238 239 // assign masking 240 iomodel->FetchDataToInput(inputs,elements,"md.smb.mask",SmbMaskEnum); 241 if(VerboseSolution()) _printf0_(" smb semic: UpdateElements - done.\n"); 242 } 219 243 break; 220 244 case SMBdebrisMLEnum: … … 420 444 break; 421 445 case SMBsemicEnum: 446 int ismethod; 447 parameters->FindParam(&ismethod,SmbSemicMethodEnum); 448 if (ismethod == 1){ 449 parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfacElevation",SmbDesfacElevEnum)); 450 parameters->AddObject(iomodel->CopyConstantObject("md.smb.hcrit",SmbSemicHcritEnum)); 451 parameters->AddObject(iomodel->CopyConstantObject("md.smb.rcrit",SmbSemicRcritEnum)); 452 /*Define albedo parameters.*/ 453 parameters->AddObject(iomodel->CopyConstantObject("md.smb.albedo_scheme",SmbAlbedoSchemeEnum)); 454 parameters->AddObject(iomodel->CopyConstantObject("md.smb.alb_smax",SmbAlbedoSnowMaxEnum)); 455 parameters->AddObject(iomodel->CopyConstantObject("md.smb.alb_smin",SmbAlbedoSnowMinEnum)); 456 parameters->AddObject(iomodel->CopyConstantObject("md.smb.albi",SmbAlbedoIceEnum)); 457 parameters->AddObject(iomodel->CopyConstantObject("md.smb.albl",SmbAlbedoLandEnum)); 458 } 422 459 /*Nothing to add to parameters*/ 423 460 break; … … 514 551 case SMBsemicEnum: 515 552 #ifdef _HAVE_SEMIC_ 516 if(VerboseSolution())_printf0_(" call smb SEMIC module\n"); 517 SmbSemicx(femmodel); 553 if(VerboseSolution())_printf0_(" call smb SEMIC module\n"); 554 int ismethod; 555 femmodel->parameters->FindParam(&ismethod,SmbSemicMethodEnum); 556 SmbSemicx(femmodel,ismethod); 518 557 #else 519 558 _error_("SEMIC not installed"); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r27491 r27498 30 30 extern "C" void run_semic_(IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in, 31 31 IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *saccu_out, IssmDouble *smelt_out); 32 extern "C" void run_semic_transient_(IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in, 33 IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_in, IssmDouble *tstic, 34 IssmDouble *hcrit, IssmDouble *rcrit, 35 IssmDouble *mask, IssmDouble *hice, IssmDouble *hsnow, 36 IssmDouble *albedo, IssmDouble *albedo_snow, int *alb_scheme, IssmDouble *alb_smax, IssmDouble *alb_smin, IssmDouble *albi, IssmDouble *albl, 37 IssmDouble *Tamp, 38 IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out); 32 39 #endif 33 40 // _HAVE_SEMIC_ … … 4208 4215 xDelete<IssmDouble>(saccu_out); 4209 4216 xDelete<IssmDouble>(tsurf_out); 4217 xDelete<IssmDouble>(s); 4218 xDelete<IssmDouble>(st); 4219 xDelete<IssmDouble>(s0gcm); 4220 } 4221 /*}}}*/ 4222 void Element::SmbSemicTransient(){/*{{{*/ 4223 4224 /*only compute SMB at the surface: */ 4225 if (!IsOnSurface()) return; 4226 4227 const int NUM_VERTICES = this->GetNumberOfVertices(); 4228 const int NLOOP = 10; // default internal iteration for SEMIC (Ruckamp et al. 2018). 4229 4230 IssmDouble* s=xNew<IssmDouble>(NUM_VERTICES); 4231 IssmDouble* s0gcm=xNew<IssmDouble>(NUM_VERTICES); 4232 IssmDouble* st=xNew<IssmDouble>(NUM_VERTICES); 4233 4234 // daily forcing inputs 4235 IssmDouble* dailyrainfall =xNew<IssmDouble>(NUM_VERTICES); 4236 IssmDouble* dailysnowfall =xNew<IssmDouble>(NUM_VERTICES); 4237 IssmDouble* dailydlradiation=xNew<IssmDouble>(NUM_VERTICES); 4238 IssmDouble* dailydsradiation=xNew<IssmDouble>(NUM_VERTICES); 4239 IssmDouble* dailywindspeed =xNew<IssmDouble>(NUM_VERTICES); 4240 IssmDouble* dailypressure =xNew<IssmDouble>(NUM_VERTICES); 4241 IssmDouble* dailyairdensity =xNew<IssmDouble>(NUM_VERTICES); 4242 IssmDouble* dailyairhumidity=xNew<IssmDouble>(NUM_VERTICES); 4243 IssmDouble* dailytemperature=xNew<IssmDouble>(NUM_VERTICES); 4244 4245 IssmDouble* tsurf_in =xNew<IssmDouble>(NUM_VERTICES); 4246 IssmDouble* mask_in =xNew<IssmDouble>(NUM_VERTICES); 4247 IssmDouble* Tamp_in =xNew<IssmDouble>(NUM_VERTICES); 4248 IssmDouble* albedo_in =xNew<IssmDouble>(NUM_VERTICES); 4249 IssmDouble* albedo_snow_in =xNew<IssmDouble>(NUM_VERTICES); 4250 IssmDouble* hice_in =xNew<IssmDouble>(NUM_VERTICES); 4251 IssmDouble* hsnow_in =xNew<IssmDouble>(NUM_VERTICES); 4252 4253 // daily outputs 4254 IssmDouble* tsurf_out =xNew<IssmDouble>(NUM_VERTICES); memset(tsurf_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4255 IssmDouble* smb_out =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4256 IssmDouble* saccu_out =xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4257 IssmDouble* smelt_out =xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4258 IssmDouble* albedo_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4259 IssmDouble* albedo_snow_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_snow_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4260 IssmDouble* hsnow_out =xNew<IssmDouble>(NUM_VERTICES); memset(hsnow_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4261 IssmDouble* hice_out =xNew<IssmDouble>(NUM_VERTICES); memset(hice_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 4262 4263 IssmDouble rho_water,rho_ice,desfac,desfacElev,rlaps,rdl; 4264 IssmDouble alb_smax, alb_smin, albi, albl; 4265 int alb_scheme; 4266 IssmDouble hcrit, rcrit; 4267 4268 IssmDouble time,yts,time_yr,dt; 4269 4270 /* Get time: */ 4271 this->parameters->FindParam(&time,TimeEnum); 4272 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 4273 this->parameters->FindParam(&yts,ConstantsYtsEnum); 4274 time_yr=floor(time/yts)*yts; 4275 //dt = dt * yts; 4276 4277 /*Get material parameters :*/ 4278 rho_water=this->FindParam(MaterialsRhoSeawaterEnum); 4279 rho_ice=this->FindParam(MaterialsRhoIceEnum); 4280 desfac=this->FindParam(SmbDesfacEnum); 4281 desfacElev=this->FindParam(SmbDesfacElevEnum); 4282 rlaps=this->FindParam(SmbRlapsEnum); 4283 rdl=this->FindParam(SmbRdlEnum); 4284 4285 this->FindParam(&alb_scheme,SmbAlbedoSchemeEnum); 4286 this->FindParam(&hcrit,SmbSemicHcritEnum); 4287 this->FindParam(&rcrit,SmbSemicRcritEnum); 4288 alb_smax=this->FindParam(SmbAlbedoSnowMaxEnum); 4289 alb_smin=this->FindParam(SmbAlbedoSnowMinEnum); 4290 albi=this->FindParam(SmbAlbedoIceEnum); 4291 albl=this->FindParam(SmbAlbedoLandEnum); 4292 4293 /* Recover info at the vertices: */ 4294 GetInputListOnVertices(&s[0],SurfaceEnum); 4295 GetInputListOnVertices(&s0gcm[0],SmbS0gcmEnum); 4296 4297 if(VerboseSmb() && this->Sid()==0){ 4298 _printf0_("smb core: allocate inputs.\n"); 4299 _printf0_("smb core: time_yr : " << time_yr/yts <<"\n"); 4300 _printf0_("smb core: time : " << time <<"\n"); 4301 _printf0_("smb core: dt : " << dt <<"\n"); 4302 } 4303 /* loop over vertices and days */ //FIXME account for leap years (365 -> 366) 4304 Gauss* gauss=this->NewGauss(); 4305 /* Retrieve inputs: */ 4306 Input* dailysnowfall_input = this->GetInput(SmbDailysnowfallEnum,time); _assert_(dailysnowfall_input); 4307 Input* dailyrainfall_input = this->GetInput(SmbDailyrainfallEnum,time); _assert_(dailyrainfall_input); 4308 Input* dailydlradiation_input = this->GetInput(SmbDailydlradiationEnum,time); _assert_(dailydlradiation_input); 4309 Input* dailydsradiation_input = this->GetInput(SmbDailydsradiationEnum,time); _assert_(dailydsradiation_input); 4310 Input* dailywindspeed_input = this->GetInput(SmbDailywindspeedEnum,time); _assert_(dailywindspeed_input); 4311 Input* dailypressure_input = this->GetInput(SmbDailypressureEnum,time); _assert_(dailypressure_input); 4312 Input* dailyairdensity_input = this->GetInput(SmbDailyairdensityEnum,time); _assert_(dailyairdensity_input); 4313 Input* dailyairhumidity_input = this->GetInput(SmbDailyairhumidityEnum,time); _assert_(dailyairhumidity_input); 4314 Input* dailytemperature_input = this->GetInput(SmbDailytemperatureEnum,time); _assert_(dailytemperature_input); 4315 4316 Input* tsurf_input = this->GetInput(TemperatureSEMICEnum); _assert_(tsurf_in); 4317 Input* mask_input = this->GetInput(SmbMaskEnum); _assert_(mask_input); 4318 Input* Tamp_input = this->GetInput(SmbTampEnum); _assert_(Tamp_input); 4319 Input* albedo_input = this->GetInput(SmbAlbedoEnum); _assert_(albedo_input); 4320 Input* albedo_snow_input = this->GetInput(SmbAlbedoSnowEnum); _assert_(albedo_snow_input); 4321 Input* hice_input = this->GetInput(SmbHIceEnum); _assert_(hice_input); 4322 Input* hsnow_input = this->GetInput(SmbHSnowEnum); _assert_(hsnow_input); 4323 4324 if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: assign inputs.\n"); 4325 for(int iv=0;iv<NUM_VERTICES;iv++){ 4326 gauss->GaussVertex(iv); 4327 /* get forcing */ 4328 dailyrainfall_input->GetInputValue(&dailyrainfall[iv],gauss); 4329 dailysnowfall_input->GetInputValue(&dailysnowfall[iv],gauss); 4330 dailydlradiation_input->GetInputValue(&dailydlradiation[iv],gauss); 4331 dailydsradiation_input->GetInputValue(&dailydsradiation[iv],gauss); 4332 dailywindspeed_input->GetInputValue(&dailywindspeed[iv],gauss); 4333 dailypressure_input->GetInputValue(&dailypressure[iv],gauss); 4334 dailyairdensity_input->GetInputValue(&dailyairdensity[iv],gauss); 4335 dailyairhumidity_input->GetInputValue(&dailyairhumidity[iv],gauss); 4336 dailytemperature_input->GetInputValue(&dailytemperature[iv],gauss); 4337 tsurf_input->GetInputValue(&tsurf_in[iv],gauss); 4338 4339 /* Get Albedo information */ 4340 mask_input->GetInputValue(&mask_in[iv],gauss); 4341 Tamp_input->GetInputValue(&Tamp_in[iv],gauss); 4342 albedo_input->GetInputValue(&albedo_in[iv],gauss); 4343 albedo_snow_input->GetInputValue(&albedo_snow_in[iv],gauss); 4344 4345 hsnow_input->GetInputValue(&hsnow_in[iv],gauss); 4346 hice_input->GetInputValue(&hice_in[iv],gauss); 4347 4348 /* Surface temperature correction */ 4349 st[iv]=(s[iv]-s0gcm[iv])/1000.; 4350 dailytemperature[iv]=dailytemperature[iv]-rlaps *st[iv]; 4351 4352 /* Precipitation correction (Vizcaino et al. 2010) */ 4353 if (s0gcm[iv] < desfacElev) { 4354 dailysnowfall[iv] = dailysnowfall[iv]*exp(desfac*(max(s[iv],desfacElev)-desfacElev)); 4355 dailyrainfall[iv] = dailyrainfall[iv]*exp(desfac*(max(s[iv],desfacElev)-desfacElev)); 4356 }else{ 4357 dailysnowfall[iv] = dailysnowfall[iv]*exp(desfac*(max(s[iv],desfacElev)-s0gcm[iv])); 4358 dailyrainfall[iv] = dailyrainfall[iv]*exp(desfac*(max(s[iv],desfacElev)-s0gcm[iv])); 4359 } 4360 4361 /* downward longwave radiation correction (Marty et al. 2002) */ 4362 st[iv]=(s[iv]-s0gcm[iv])/1000.; 4363 dailydlradiation[iv]=dailydlradiation[iv]+rdl*st[iv]; 4364 } 4365 if(VerboseSmb() && this->Sid()==0){ 4366 _printf0_("smb core: assign tsurf_in :" << tsurf_in[0] << "\n"); 4367 _printf0_("smb core: assign dailytemperature:" << dailytemperature[0] << "\n"); 4368 _printf0_("smb core: assign hsnow :" << hsnow_in[0] << "\n"); 4369 _printf0_("smb core: assign hice :" << hice_in[0] << "\n"); 4370 _printf0_("smb core: assign mask :" << mask_in[0] << "\n"); 4371 _printf0_("smb core: assign albedo :" << albedo_in[0] << "\n"); 4372 _printf0_("smb core: assign albedo_snow :" << albedo_snow_in[0] << "\n"); 4373 } 4374 4375 if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: call semic module.\n"); 4376 for (int iv = 0; iv<NUM_VERTICES; iv++){ 4377 /* call semic */ 4378 run_semic_transient_(&dailysnowfall[iv], &dailyrainfall[iv], &dailydsradiation[iv], &dailydlradiation[iv], 4379 &dailywindspeed[iv], &dailypressure[iv], &dailyairdensity[iv], &dailyairhumidity[iv], &dailytemperature[iv], &tsurf_in[iv], &dt, 4380 &hcrit, &rcrit, 4381 &mask_in[iv], &hice_in[iv], &hsnow_in[iv], 4382 &albedo_in[iv], &albedo_snow_in[iv], &alb_scheme, &alb_smax, &alb_smin, &albi, &albl, 4383 &Tamp_in[iv], 4384 &tsurf_out[iv], &smb_out[iv], &saccu_out[iv], &smelt_out[iv],&albedo_out[iv], &albedo_snow_out[iv], &hsnow_out[iv], &hice_out[iv]); 4385 } 4386 4387 if(VerboseSmb() && this->Sid()==0){ 4388 _printf0_("smb core: tsurf_out " << tsurf_out[0] << "\n"); 4389 } 4390 4391 switch(this->ObjectEnum()){ 4392 case TriaEnum: 4393 //this->AddInput(TemperatureEnum,&tsurf_out[0],P1Enum); // TODO add TemperatureSEMICEnum to EnumDefinitions 4394 this->AddInput(TemperatureSEMICEnum,&tsurf_out[0],P1Enum); // TODO add TemperatureSEMICEnum to EnumDefinitions 4395 this->AddInput(SmbMassBalanceEnum,&smb_out[0],P1Enum); 4396 this->AddInput(SmbAccumulationEnum,&saccu_out[0],P1Enum); 4397 this->AddInput(SmbMeltEnum,&smelt_out[0],P1Enum); 4398 this->AddInput(SmbAlbedoEnum,&albedo_out[0],P1Enum); 4399 this->AddInput(SmbAlbedoSnowEnum,&albedo_snow_out[0],P1Enum); 4400 this->AddInput(SmbHSnowEnum,&hsnow_out[0],P1Enum); 4401 this->AddInput(SmbHIceEnum,&hice_out[0],P1Enum); 4402 break; 4403 case PentaEnum: 4404 // TODO 4405 break; 4406 case TetraEnum: 4407 // TODO 4408 break; 4409 default: _error_("Not implemented yet"); 4410 } 4411 4412 /*clean-up*/ 4413 delete gauss; 4414 xDelete<IssmDouble>(dailysnowfall); 4415 xDelete<IssmDouble>(dailyrainfall); 4416 xDelete<IssmDouble>(dailydlradiation); 4417 xDelete<IssmDouble>(dailydsradiation); 4418 xDelete<IssmDouble>(dailywindspeed); 4419 xDelete<IssmDouble>(dailypressure); 4420 xDelete<IssmDouble>(dailyairdensity); 4421 xDelete<IssmDouble>(dailyairhumidity); 4422 xDelete<IssmDouble>(dailypressure); 4423 xDelete<IssmDouble>(dailytemperature); 4424 4425 xDelete<IssmDouble>(tsurf_out); 4426 xDelete<IssmDouble>(smb_out); 4427 xDelete<IssmDouble>(saccu_out); 4428 xDelete<IssmDouble>(smelt_out); 4429 xDelete<IssmDouble>(albedo_out); 4430 xDelete<IssmDouble>(albedo_snow_out); 4431 4432 xDelete<IssmDouble>(hsnow_in); 4433 xDelete<IssmDouble>(hice_in); 4434 xDelete<IssmDouble>(mask_in); 4435 xDelete<IssmDouble>(Tamp_in); 4436 xDelete<IssmDouble>(albedo_snow_in); 4437 xDelete<IssmDouble>(albedo_in); 4438 xDelete<IssmDouble>(tsurf_in); 4210 4439 xDelete<IssmDouble>(s); 4211 4440 xDelete<IssmDouble>(st); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r27491 r27498 187 187 void SetIntInput(Inputs* inputs,int enum_in,int value); 188 188 void SmbSemic(); 189 void SmbSemicTransient(); 189 190 int Sid(); 190 191 void SmbGemb(IssmDouble timeinputs, int count); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r27462 r27498 487 487 parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum)); 488 488 parameters->AddObject(iomodel->CopyConstantObject("md.smb.rdl",SmbRdlEnum)); 489 parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismethod",SmbSemicMethodEnum)); 489 490 break; 490 491 case SMBdebrisMLEnum: -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
r27491 r27498 655 655 }/*}}}*/ 656 656 #ifdef _HAVE_SEMIC_ 657 void SmbSemicx(FemModel* femmodel){/*{{{*/ 658 659 for(Object* & object : femmodel->elements->objects){ 660 Element* element=xDynamicCast<Element*>(object); 661 element->SmbSemic(); 657 void SmbSemicx(FemModel* femmodel,int ismethod){/*{{{*/ 658 659 for(Object* & object : femmodel->elements->objects){ 660 Element* element=xDynamicCast<Element*>(object); 661 if (ismethod == 1) element->SmbSemicTransient(); // Inwoo's version. 662 else element->SmbSemic(); // original SmbSEMIC 662 663 } 663 664 -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
r27297 r27498 25 25 void SmbDebrisMLx(FemModel* femmodel); 26 26 /* SEMIC: */ 27 void SmbSemicx(FemModel* femmodel );27 void SmbSemicx(FemModel* femmodel, int ismethod); 28 28 /*GEMB: */ 29 29 void Gembx(FemModel* femmodel); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r27491 r27498 524 524 syn keyword cConstant SmbAccurefEnum 525 525 syn keyword cConstant SmbAdThreshEnum 526 syn keyword cConstant SmbAlbedoSchemeEnum 527 syn keyword cConstant SmbAlbedoSnowMaxEnum 528 syn keyword cConstant SmbAlbedoSnowMinEnum 529 syn keyword cConstant SmbAlbedoIceEnum 530 syn keyword cConstant SmbAlbedoLandEnum 526 531 syn keyword cConstant SmbARMATimestepEnum 527 532 syn keyword cConstant SmbARMAarOrderEnum … … 529 534 syn keyword cConstant SmbAveragingEnum 530 535 syn keyword cConstant SmbDesfacEnum 536 syn keyword cConstant SmbDesfacElevEnum 531 537 syn keyword cConstant SmbDpermilEnum 532 538 syn keyword cConstant SmbDsnowIdxEnum … … 579 585 syn keyword cConstant SmbRunoffrefEnum 580 586 syn keyword cConstant SmbSealevEnum 587 syn keyword cConstant SmbSemicMethodEnum 588 syn keyword cConstant SmbSemicHcritEnum 589 syn keyword cConstant SmbSemicRcritEnum 581 590 syn keyword cConstant SmbStepsPerStepEnum 582 591 syn keyword cConstant SmbSwIdxEnum … … 1010 1019 syn keyword cConstant SmbAccumulatedRefreezeEnum 1011 1020 syn keyword cConstant SmbAccumulatedRunoffEnum 1021 syn keyword cConstant SmbAlbedoEnum 1022 syn keyword cConstant SmbAlbedoSnowEnum 1012 1023 syn keyword cConstant SmbAEnum 1013 1024 syn keyword cConstant SmbAdiffEnum … … 1057 1068 syn keyword cConstant SmbGspEnum 1058 1069 syn keyword cConstant SmbGspiniEnum 1070 syn keyword cConstant SmbHIceEnum 1071 syn keyword cConstant SmbHSnowEnum 1059 1072 syn keyword cConstant SmbHrefEnum 1060 1073 syn keyword cConstant SmbIsInitializedEnum … … 1063 1076 syn keyword cConstant SmbMassBalanceSubstepEnum 1064 1077 syn keyword cConstant SmbMassBalanceTransientEnum 1078 syn keyword cConstant SmbMaskEnum 1065 1079 syn keyword cConstant SmbMeanLHFEnum 1066 1080 syn keyword cConstant SmbMeanSHFEnum … … 1096 1110 syn keyword cConstant SmbTEnum 1097 1111 syn keyword cConstant SmbTaEnum 1112 syn keyword cConstant SmbTampEnum 1098 1113 syn keyword cConstant SmbTeValueEnum 1099 1114 syn keyword cConstant SmbTemperaturesAnomalyEnum … … 1726 1741 syn keyword cType Cfsurfacesquare 1727 1742 syn keyword cType Channel 1728 syn keyword cType classes1729 1743 syn keyword cType Constraint 1730 1744 syn keyword cType Constraints … … 1733 1747 syn keyword cType ControlInput 1734 1748 syn keyword cType Covertree 1749 syn keyword cType DataSetParam 1735 1750 syn keyword cType DatasetInput 1736 syn keyword cType DataSetParam1737 1751 syn keyword cType Definition 1738 1752 syn keyword cType DependentObject … … 1747 1761 syn keyword cType ElementInput 1748 1762 syn keyword cType ElementMatrix 1763 syn keyword cType ElementVector 1749 1764 syn keyword cType Elements 1750 syn keyword cType ElementVector1751 1765 syn keyword cType ExponentialVariogram 1752 1766 syn keyword cType ExternalResult … … 1755 1769 syn keyword cType Friction 1756 1770 syn keyword cType Gauss 1757 syn keyword cType GaussianVariogram1758 syn keyword cType gaussobjects1759 1771 syn keyword cType GaussPenta 1760 1772 syn keyword cType GaussSeg 1761 1773 syn keyword cType GaussTetra 1762 1774 syn keyword cType GaussTria 1775 syn keyword cType GaussianVariogram 1763 1776 syn keyword cType GenericExternalResult 1764 1777 syn keyword cType GenericOption … … 1777 1790 syn keyword cType IssmDirectApplicInterface 1778 1791 syn keyword cType IssmParallelDirectApplicInterface 1779 syn keyword cType krigingobjects1780 1792 syn keyword cType Load 1781 1793 syn keyword cType Loads … … 1788 1800 syn keyword cType Matice 1789 1801 syn keyword cType Matlitho 1790 syn keyword cType matrixobjects1791 1802 syn keyword cType MatrixParam 1792 1803 syn keyword cType Misfit … … 1801 1812 syn keyword cType Observations 1802 1813 syn keyword cType Option 1814 syn keyword cType OptionUtilities 1803 1815 syn keyword cType Options 1804 syn keyword cType OptionUtilities1805 1816 syn keyword cType Param 1806 1817 syn keyword cType Parameters … … 1816 1827 syn keyword cType Regionaloutput 1817 1828 syn keyword cType Results 1829 syn keyword cType RiftStruct 1818 1830 syn keyword cType Riftfront 1819 syn keyword cType RiftStruct1820 1831 syn keyword cType SealevelGeometry 1821 1832 syn keyword cType Seg 1822 1833 syn keyword cType SegInput 1834 syn keyword cType SegRef 1823 1835 syn keyword cType Segment 1824 syn keyword cType SegRef1825 1836 syn keyword cType SpcDynamic 1826 1837 syn keyword cType SpcStatic … … 1841 1852 syn keyword cType Vertex 1842 1853 syn keyword cType Vertices 1854 syn keyword cType classes 1855 syn keyword cType gaussobjects 1856 syn keyword cType krigingobjects 1857 syn keyword cType matrixobjects 1843 1858 syn keyword cType AdjointBalancethickness2Analysis 1844 1859 syn keyword cType AdjointBalancethicknessAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27491 r27498 518 518 SmbAccurefEnum, 519 519 SmbAdThreshEnum, 520 SmbAlbedoSchemeEnum, 521 SmbAlbedoSnowMaxEnum, 522 SmbAlbedoSnowMinEnum, 523 SmbAlbedoIceEnum, 524 SmbAlbedoLandEnum, 520 525 SmbARMATimestepEnum, 521 526 SmbARMAarOrderEnum, … … 523 528 SmbAveragingEnum, 524 529 SmbDesfacEnum, 530 SmbDesfacElevEnum, 525 531 SmbDpermilEnum, 526 532 SmbDsnowIdxEnum, … … 573 579 SmbRunoffrefEnum, 574 580 SmbSealevEnum, 581 SmbSemicMethodEnum, 582 SmbSemicHcritEnum, 583 SmbSemicRcritEnum, 575 584 SmbStepsPerStepEnum, 576 585 SmbSwIdxEnum, … … 1006 1015 SmbAccumulatedRefreezeEnum, 1007 1016 SmbAccumulatedRunoffEnum, 1017 SmbAlbedoEnum, 1018 SmbAlbedoSnowEnum, 1008 1019 SmbAEnum, 1009 1020 SmbAdiffEnum, … … 1053 1064 SmbGspEnum, 1054 1065 SmbGspiniEnum, 1066 SmbHIceEnum, 1067 SmbHSnowEnum, 1055 1068 SmbHrefEnum, 1056 1069 SmbIsInitializedEnum, … … 1059 1072 SmbMassBalanceSubstepEnum, 1060 1073 SmbMassBalanceTransientEnum, 1074 SmbMaskEnum, 1061 1075 SmbMeanLHFEnum, 1062 1076 SmbMeanSHFEnum, … … 1093 1107 SmbTEnum, 1094 1108 SmbTaEnum, 1109 SmbTampEnum, 1095 1110 SmbTeValueEnum, 1096 1111 SmbTemperaturesAnomalyEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r27491 r27498 526 526 case SmbAccurefEnum : return "SmbAccuref"; 527 527 case SmbAdThreshEnum : return "SmbAdThresh"; 528 case SmbAlbedoSchemeEnum : return "SmbAlbedoScheme"; 529 case SmbAlbedoSnowMaxEnum : return "SmbAlbedoSnowMax"; 530 case SmbAlbedoSnowMinEnum : return "SmbAlbedoSnowMin"; 531 case SmbAlbedoIceEnum : return "SmbAlbedoIce"; 532 case SmbAlbedoLandEnum : return "SmbAlbedoLand"; 528 533 case SmbARMATimestepEnum : return "SmbARMATimestep"; 529 534 case SmbARMAarOrderEnum : return "SmbARMAarOrder"; … … 531 536 case SmbAveragingEnum : return "SmbAveraging"; 532 537 case SmbDesfacEnum : return "SmbDesfac"; 538 case SmbDesfacElevEnum : return "SmbDesfacElev"; 533 539 case SmbDpermilEnum : return "SmbDpermil"; 534 540 case SmbDsnowIdxEnum : return "SmbDsnowIdx"; … … 581 587 case SmbRunoffrefEnum : return "SmbRunoffref"; 582 588 case SmbSealevEnum : return "SmbSealev"; 589 case SmbSemicMethodEnum : return "SmbSemicMethod"; 590 case SmbSemicHcritEnum : return "SmbSemicHcrit"; 591 case SmbSemicRcritEnum : return "SmbSemicRcrit"; 583 592 case SmbStepsPerStepEnum : return "SmbStepsPerStep"; 584 593 case SmbSwIdxEnum : return "SmbSwIdx"; … … 1012 1021 case SmbAccumulatedRefreezeEnum : return "SmbAccumulatedRefreeze"; 1013 1022 case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff"; 1023 case SmbAlbedoEnum : return "SmbAlbedo"; 1024 case SmbAlbedoSnowEnum : return "SmbAlbedoSnow"; 1014 1025 case SmbAEnum : return "SmbA"; 1015 1026 case SmbAdiffEnum : return "SmbAdiff"; … … 1059 1070 case SmbGspEnum : return "SmbGsp"; 1060 1071 case SmbGspiniEnum : return "SmbGspini"; 1072 case SmbHIceEnum : return "SmbHIce"; 1073 case SmbHSnowEnum : return "SmbHSnow"; 1061 1074 case SmbHrefEnum : return "SmbHref"; 1062 1075 case SmbIsInitializedEnum : return "SmbIsInitialized"; … … 1065 1078 case SmbMassBalanceSubstepEnum : return "SmbMassBalanceSubstep"; 1066 1079 case SmbMassBalanceTransientEnum : return "SmbMassBalanceTransient"; 1080 case SmbMaskEnum : return "SmbMask"; 1067 1081 case SmbMeanLHFEnum : return "SmbMeanLHF"; 1068 1082 case SmbMeanSHFEnum : return "SmbMeanSHF"; … … 1098 1112 case SmbTEnum : return "SmbT"; 1099 1113 case SmbTaEnum : return "SmbTa"; 1114 case SmbTampEnum : return "SmbTamp"; 1100 1115 case SmbTeValueEnum : return "SmbTeValue"; 1101 1116 case SmbTemperaturesAnomalyEnum : return "SmbTemperaturesAnomaly"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r27491 r27498 517 517 syn keyword juliaConstC SmbAccurefEnum 518 518 syn keyword juliaConstC SmbAdThreshEnum 519 syn keyword juliaConstC SmbAlbedoSchemeEnum 520 syn keyword juliaConstC SmbAlbedoSnowMaxEnum 521 syn keyword juliaConstC SmbAlbedoSnowMinEnum 522 syn keyword juliaConstC SmbAlbedoIceEnum 523 syn keyword juliaConstC SmbAlbedoLandEnum 519 524 syn keyword juliaConstC SmbARMATimestepEnum 520 525 syn keyword juliaConstC SmbARMAarOrderEnum … … 522 527 syn keyword juliaConstC SmbAveragingEnum 523 528 syn keyword juliaConstC SmbDesfacEnum 529 syn keyword juliaConstC SmbDesfacElevEnum 524 530 syn keyword juliaConstC SmbDpermilEnum 525 531 syn keyword juliaConstC SmbDsnowIdxEnum … … 572 578 syn keyword juliaConstC SmbRunoffrefEnum 573 579 syn keyword juliaConstC SmbSealevEnum 580 syn keyword juliaConstC SmbSemicMethodEnum 581 syn keyword juliaConstC SmbSemicHcritEnum 582 syn keyword juliaConstC SmbSemicRcritEnum 574 583 syn keyword juliaConstC SmbStepsPerStepEnum 575 584 syn keyword juliaConstC SmbSwIdxEnum … … 1003 1012 syn keyword juliaConstC SmbAccumulatedRefreezeEnum 1004 1013 syn keyword juliaConstC SmbAccumulatedRunoffEnum 1014 syn keyword juliaConstC SmbAlbedoEnum 1015 syn keyword juliaConstC SmbAlbedoSnowEnum 1005 1016 syn keyword juliaConstC SmbAEnum 1006 1017 syn keyword juliaConstC SmbAdiffEnum … … 1050 1061 syn keyword juliaConstC SmbGspEnum 1051 1062 syn keyword juliaConstC SmbGspiniEnum 1063 syn keyword juliaConstC SmbHIceEnum 1064 syn keyword juliaConstC SmbHSnowEnum 1052 1065 syn keyword juliaConstC SmbHrefEnum 1053 1066 syn keyword juliaConstC SmbIsInitializedEnum … … 1056 1069 syn keyword juliaConstC SmbMassBalanceSubstepEnum 1057 1070 syn keyword juliaConstC SmbMassBalanceTransientEnum 1071 syn keyword juliaConstC SmbMaskEnum 1058 1072 syn keyword juliaConstC SmbMeanLHFEnum 1059 1073 syn keyword juliaConstC SmbMeanSHFEnum … … 1089 1103 syn keyword juliaConstC SmbTEnum 1090 1104 syn keyword juliaConstC SmbTaEnum 1105 syn keyword juliaConstC SmbTampEnum 1091 1106 syn keyword juliaConstC SmbTeValueEnum 1092 1107 syn keyword juliaConstC SmbTemperaturesAnomalyEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r27491 r27498 538 538 else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum; 539 539 else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum; 540 else if (strcmp(name,"SmbAlbedoScheme")==0) return SmbAlbedoSchemeEnum; 541 else if (strcmp(name,"SmbAlbedoSnowMax")==0) return SmbAlbedoSnowMaxEnum; 542 else if (strcmp(name,"SmbAlbedoSnowMin")==0) return SmbAlbedoSnowMinEnum; 543 else if (strcmp(name,"SmbAlbedoIce")==0) return SmbAlbedoIceEnum; 544 else if (strcmp(name,"SmbAlbedoLand")==0) return SmbAlbedoLandEnum; 540 545 else if (strcmp(name,"SmbARMATimestep")==0) return SmbARMATimestepEnum; 541 546 else if (strcmp(name,"SmbARMAarOrder")==0) return SmbARMAarOrderEnum; … … 543 548 else if (strcmp(name,"SmbAveraging")==0) return SmbAveragingEnum; 544 549 else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum; 550 else if (strcmp(name,"SmbDesfacElev")==0) return SmbDesfacElevEnum; 545 551 else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum; 546 552 else if (strcmp(name,"SmbDsnowIdx")==0) return SmbDsnowIdxEnum; … … 593 599 else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum; 594 600 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 601 else if (strcmp(name,"SmbSemicMethod")==0) return SmbSemicMethodEnum; 602 else if (strcmp(name,"SmbSemicHcrit")==0) return SmbSemicHcritEnum; 603 else if (strcmp(name,"SmbSemicRcrit")==0) return SmbSemicRcritEnum; 595 604 else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum; 596 605 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; … … 620 629 else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum; 621 630 else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum; 622 else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum; 623 635 else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum; 624 636 else if (strcmp(name,"ThermalForcingMonthlyEffects")==0) return ThermalForcingMonthlyEffectsEnum; … … 629 641 else if (strcmp(name,"ThermalNumRequestedOutputs")==0) return ThermalNumRequestedOutputsEnum; 630 642 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum; 643 else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum; 635 644 else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum; 636 645 else if (strcmp(name,"ThermalReltol")==0) return ThermalReltolEnum; … … 743 752 else if (strcmp(name,"Bed")==0) return BedEnum; 744 753 else if (strcmp(name,"BedGRD")==0) return BedGRDEnum; 745 else if (strcmp(name,"BedEast")==0) return BedEastEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"BedEast")==0) return BedEastEnum; 746 758 else if (strcmp(name,"BedEastGRD")==0) return BedEastGRDEnum; 747 759 else if (strcmp(name,"BedNorth")==0) return BedNorthEnum; … … 752 764 else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum; 753 765 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 766 else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 758 767 else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum; 759 768 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum; … … 866 875 else if (strcmp(name,"HydrologydcMaskThawedElt")==0) return HydrologydcMaskThawedEltEnum; 867 876 else if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum; 868 else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum; 869 881 else if (strcmp(name,"HydrologyDrainageRate")==0) return HydrologyDrainageRateEnum; 870 882 else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum; … … 875 887 else if (strcmp(name,"HydrologyGapHeightYY")==0) return HydrologyGapHeightYYEnum; 876 888 else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum; 889 else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum; 881 890 else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum; 882 891 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; … … 989 998 else if (strcmp(name,"BslcHydro")==0) return BslcHydroEnum; 990 999 else if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum; 991 else if (strcmp(name,"BslcRate")==0) return BslcRateEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"BslcRate")==0) return BslcRateEnum; 992 1004 else if (strcmp(name,"Gmtslc")==0) return GmtslcEnum; 993 1005 else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum; … … 998 1010 else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum; 999 1011 else if (strcmp(name,"SealevelchangeIndices")==0) return SealevelchangeIndicesEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"SealevelchangeConvolutionVertices")==0) return SealevelchangeConvolutionVerticesEnum; 1012 else if (strcmp(name,"SealevelchangeConvolutionVertices")==0) return SealevelchangeConvolutionVerticesEnum; 1004 1013 else if (strcmp(name,"SealevelchangeAlphaIndex")==0) return SealevelchangeAlphaIndexEnum; 1005 1014 else if (strcmp(name,"SealevelchangeAzimuthIndex")==0) return SealevelchangeAzimuthIndexEnum; … … 1036 1045 else if (strcmp(name,"SmbAccumulatedRefreeze")==0) return SmbAccumulatedRefreezeEnum; 1037 1046 else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum; 1047 else if (strcmp(name,"SmbAlbedo")==0) return SmbAlbedoEnum; 1048 else if (strcmp(name,"SmbAlbedoSnow")==0) return SmbAlbedoSnowEnum; 1038 1049 else if (strcmp(name,"SmbA")==0) return SmbAEnum; 1039 1050 else if (strcmp(name,"SmbAdiff")==0) return SmbAdiffEnum; … … 1083 1094 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum; 1084 1095 else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum; 1096 else if (strcmp(name,"SmbHIce")==0) return SmbHIceEnum; 1097 else if (strcmp(name,"SmbHSnow")==0) return SmbHSnowEnum; 1085 1098 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; 1086 1099 else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum; … … 1089 1102 else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum; 1090 1103 else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum; 1104 else if (strcmp(name,"SmbMask")==0) return SmbMaskEnum; 1091 1105 else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum; 1092 1106 else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum; … … 1107 1121 else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum; 1108 1122 else if (strcmp(name,"SmbRain")==0) return SmbRainEnum; 1109 else if (strcmp(name,"SmbRe")==0) return SmbReEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SmbRe")==0) return SmbReEnum; 1110 1127 else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum; 1111 1128 else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum; … … 1121 1138 else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum; 1122 1139 else if (strcmp(name,"SmbT")==0) return SmbTEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 1140 else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 1141 else if (strcmp(name,"SmbTamp")==0) return SmbTampEnum; 1127 1142 else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum; 1128 1143 else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum; … … 1229 1244 else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum; 1230 1245 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 1231 else if (strcmp(name,"Waterheight")==0) return WaterheightEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"Waterheight")==0) return WaterheightEnum; 1232 1250 else if (strcmp(name,"WaterPressureArmaPerturbation")==0) return WaterPressureArmaPerturbationEnum; 1233 1251 else if (strcmp(name,"WaterPressureValuesAutoregression")==0) return WaterPressureValuesAutoregressionEnum; … … 1244 1262 else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum; 1245 1263 else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 1264 else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 1250 1265 else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; 1251 1266 else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum; … … 1352 1367 else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum; 1353 1368 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 1354 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 1355 1373 else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum; 1356 1374 else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; … … 1367 1385 else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum; 1368 1386 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1387 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1373 1388 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 1374 1389 else if (strcmp(name,"IntInput")==0) return IntInputEnum; … … 1475 1490 else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum; 1476 1491 else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum; 1477 else if (strcmp(name,"Gset")==0) return GsetEnum; 1492 else stage=13; 1493 } 1494 if(stage==13){ 1495 if (strcmp(name,"Gset")==0) return GsetEnum; 1478 1496 else if (strcmp(name,"Gsl")==0) return GslEnum; 1479 1497 else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum; … … 1490 1508 else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 1491 1509 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 1492 else stage=13; 1493 } 1494 if(stage==13){ 1495 if (strcmp(name,"HydrologySubsteps")==0) return HydrologySubstepsEnum; 1510 else if (strcmp(name,"HydrologySubsteps")==0) return HydrologySubstepsEnum; 1496 1511 else if (strcmp(name,"HydrologySubTime")==0) return HydrologySubTimeEnum; 1497 1512 else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum; … … 1598 1613 else if (strcmp(name,"None")==0) return NoneEnum; 1599 1614 else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum; 1600 else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1615 else stage=14; 1616 } 1617 if(stage==14){ 1618 if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1601 1619 else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum; 1602 1620 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; … … 1613 1631 else if (strcmp(name,"P1DG")==0) return P1DGEnum; 1614 1632 else if (strcmp(name,"P1P1")==0) return P1P1Enum; 1615 else stage=14; 1616 } 1617 if(stage==14){ 1618 if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum; 1633 else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum; 1619 1634 else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum; 1620 1635 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; … … 1721 1736 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 1722 1737 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 1723 else if (strcmp(name,"Tria")==0) return TriaEnum; 1738 else stage=15; 1739 } 1740 if(stage==15){ 1741 if (strcmp(name,"Tria")==0) return TriaEnum; 1724 1742 else if (strcmp(name,"TriaInput")==0) return TriaInputEnum; 1725 1743 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum; … … 1736 1754 else if (strcmp(name,"XYZ")==0) return XYZEnum; 1737 1755 else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 1738 else stage=15; 1739 } 1740 if(stage==15){ 1741 if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum; 1756 else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum; 1742 1757 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 1743 1758 else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum; -
issm/trunk-jpl/src/m/classes/SMBsemic.m
r27454 r27498 15 15 dailyairhumidity = NaN; 16 16 dailytemperature = NaN; 17 Tamp = NaN; 18 mask = NaN; 19 hice = NaN; 20 hsnow = NaN; 17 21 desfac = 0; 22 desfacElevation = 0; 18 23 rlaps = 0; 19 24 rdl = 0; … … 22 27 averaging = 0; 23 28 requested_outputs = {}; 29 30 hcrit = 0; 31 rcrit = 0; 32 33 % albedo 34 albedo = 0; 35 albedo_snow = 0; 36 albedo_scheme = 0; 37 alb_smax = NaN; 38 alb_smin = NaN; 39 albi = NaN; 40 albl = NaN; 41 42 % method 43 ismethod = 0; 24 44 end 25 45 methods … … 54 74 disp(' no SMBsemic.s0gcm specified: values set as zero'); 55 75 end 56 76 self.Tamp = 3*ones(md.mesh.numberofvertices,1); 77 self.albedo = 0.8*ones(md.mesh.numberofvertices,1); 78 self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1); 79 self.hice = zeros(md.mesh.numberofvertices,1); 80 self.hsnow = 5*ones(md.mesh.numberofvertices,1); 57 81 end % }}} 58 82 function self = setdefaultparameters(self) % {{{ 59 83 60 self.desfac = -log(2.0)/1000; 61 self.rlaps = 7.4; 62 self.rdl = 0.29; 84 self.albedo_scheme = 0; 85 self.alb_smax = 0.79; 86 self.alb_smin = 0.6; 87 self.albi = 0.41; 88 self.albl = 0.07; 89 90 self.hcrit = 0.028;% from Krapp et al. (2017) 91 self.rcrit = 0.85; % from Krapp et al. (2017) 92 93 self.desfac = -log(2.0)/1000; 94 self.desfacElevation = 2000; 95 self.rlaps = 7.4; 96 self.rdl = 0.29; 97 98 self.ismethod = 0; 63 99 self.requested_outputs={'default'}; 64 65 100 end % }}}zo 66 101 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 80 115 md = checkfield(md,'fieldname','smb.dailyairhumidity','timeseries',1,'NaN',1,'Inf',1); 81 116 md = checkfield(md,'fieldname','smb.dailytemperature','timeseries',1,'NaN',1,'Inf',1); 117 118 % TODO: transient model should be merged with SEMIC developed by Ruckamp et al. (2018) 119 120 md = checkfield(md,'fieldname','smb.ismethod','numel',1,'values',[0,1]); 121 if self.ismethod == 1 % transient mode. 122 md = checkfield(md,'fieldname','smb.desfacElevation','>=',0,'numel',1); 123 124 md = checkfield(md,'fieldname','smb.albedo_scheme','NaN',1,'Inf',1,'numel',1,'values',[0,1,2,3,4]); 125 md = checkfield(md,'fieldname','smb.alb_smax','>=',0,'NaN',1,'Inf',1,'numel',1); 126 md = checkfield(md,'fieldname','smb.mask','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'values',[0,1,2]); 127 128 % initial values 129 md = checkfield(md,'fieldname','smb.albedo','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]); 130 md = checkfield(md,'fieldname','smb.albedo_snow','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]); 131 md = checkfield(md,'fieldname','smb.alb_smax','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1); 132 md = checkfield(md,'fieldname','smb.alb_smin','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1); 133 md = checkfield(md,'fieldname','smb.albi','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1); 134 md = checkfield(md,'fieldname','smb.albl','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1); 135 md = checkfield(md,'fieldname','smb.hice','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]); 136 md = checkfield(md,'fieldname','smb.hsnow','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]); 137 end 82 138 end 83 139 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); … … 106 162 fielddisplay(self,'rdl','longwave downward radiation decrease (default is 0.29 [W/m^2/km]; Marty et al. 2002)'); 107 163 fielddisplay(self,'s0gcm','GCM reference elevation; (default is 0) [m]'); 164 165 fielddisplay(self,'ismethod','method for calculating SMB with SEMIC. Default version of SEMIC is really slow. 0: steady, 1: transient (default: 0)'); 166 if self.ismethod == 1 % tranisent mode 167 fielddisplay(self,'desfacElevation','desertification elevation (default is 2000 m; Vizcaino et al. 2010)'); 168 fielddisplay(self,'Tamp','amplitude of diurnal cycle [K]'); 169 fielddisplay(self,'albedo','initial albedo [no unit]'); 170 fielddisplay(self,'albedo_snow','initial albedo for snow [no unit]'); 171 fielddisplay(self,'hice','initial thickness of ice [unit: m]'); 172 fielddisplay(self,'hsnow','initial thickness of snow [unit: m]'); 173 fielddisplay(self,'mask','masking for albedo. 0: ocean, 1: land, 2: ice (default: 2)'); 174 fielddisplay(self,'hcrit','critical snow height for albedo [unit: m]'); 175 fielddisplay(self,'rcrit','critical refreezing height for albedo [no unit]'); 176 177 disp(sprintf('\nSEMIC albedo parameters.')); 178 fielddisplay(self,'albedo_scheme','albedo scheme for SEMIC. 0: none, 1: slater, 2: isba, 3: denby, 4: alex (default is 0)'); 179 fielddisplay(self,'abl_smax','maximum snow albedo (default: 0.79)'); 180 fielddisplay(self,'abl_smin','minimum snow albedo (default: 0.6)'); 181 fielddisplay(self,'albi','background albeod for bare ice (default: 0.41)'); 182 fielddisplay(self,'albl','background albeod for bare land (default: 0.07)'); 183 end 184 108 185 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 109 186 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); … … 119 196 WriteData(fid,prefix,'name','md.smb.model','data',12,'format','Integer'); 120 197 198 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismethod','format','Integer','values',[0, 1]); 121 199 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double'); 200 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfacElevation','format','Double'); 122 201 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0gcm','format','DoubleMat','mattype',1); 123 202 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double'); … … 132 211 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailyairhumidity','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts); 133 212 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailytemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts); 213 % TODO: transient mode should be merged with SEMIC developed by Ruckamp et al. (2018). 214 if self.ismethod == 1% transient mode. 215 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tamp','format','DoubleMat','mattype',1); 216 WriteData(fid,prefix,'object',self,'class','smb','fieldname','mask','format','DoubleMat','mattype',1); 217 WriteData(fid,prefix,'object',self,'class','smb','fieldname','hice','format','DoubleMat','mattype',1); 218 WriteData(fid,prefix,'object',self,'class','smb','fieldname','hsnow','format','DoubleMat','mattype',1); 219 220 WriteData(fid,prefix,'object',self,'class','smb','fieldname','hcrit','format','Double'); 221 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rcrit','format','Double'); 222 223 %albedo... 224 WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo','format','DoubleMat','mattype',1); 225 WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo_snow','format','DoubleMat','mattype',1); 226 WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo_scheme','format','Integer'); 227 WriteData(fid,prefix,'object',self,'class','smb','fieldname','albi','format','Double'); 228 WriteData(fid,prefix,'object',self,'class','smb','fieldname','albl','format','Double'); 229 WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smin','format','Double'); 230 WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smax','format','Double'); 231 end 232 134 233 WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer'); 135 234 WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer'); 235 136 236 %process requested outputs 137 237 outputs = self.requested_outputs;
Note:
See TracChangeset
for help on using the changeset viewer.