Changeset 26208
- Timestamp:
- 04/23/21 15:37:25 (4 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 52 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/examples/SlrGRACE/runme.m
r26142 r26208 190 190 md.timestepping.final_time=nt; 191 191 md.timestepping.time_step=1; 192 md.timestepping.interp_forcing s=0;192 md.timestepping.interp_forcing=0; 193 193 md.settings.output_frequency=1; 194 194 -
issm/trunk-jpl/examples/SlrGRACE_NIMS/runme.m
r25986 r26208 269 269 md.timestepping.final_time=nt; 270 270 md.timestepping.time_step=1; 271 md.timestepping.interp_forcing s=0;271 md.timestepping.interp_forcing=0; 272 272 md.settings.output_frequency=1; 273 273 -
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r26196 r26208 226 226 227 227 iomodel->FindConstant(&smb_model,"md.smb.model"); 228 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing s");228 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing"); 229 229 iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing"); 230 230 … … 237 237 switch(smb_model){ 238 238 case SMBforcingEnum: 239 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));240 239 break; 241 240 case SMBgembEnum: … … 259 258 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdensification",SmbIsdensificationEnum)); 260 259 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isturbulentflux",SmbIsturbulentfluxEnum)); 261 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));262 260 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isconstrainsurfaceT",SmbIsconstrainsurfaceTEnum)); 263 261 parameters->AddObject(iomodel->CopyConstantObject("md.smb.InitDensityScaling",SmbInitDensityScalingEnum)); … … 382 380 break; 383 381 case SMBcomponentsEnum: 384 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));385 382 break; 386 383 case SMBmeltcomponentsEnum: 387 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));388 384 break; 389 385 case SMBgradientscomponentsEnum: -
issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
r26200 r26208 417 417 /*First, recover current time from parameters: */ 418 418 bool linear_interp,cycle; 419 this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingsEnum); 419 IssmDouble dt; 420 this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingEnum); 420 421 this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum); 422 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); /*transient core time step*/ 421 423 422 424 /*Change input time if we cycle through the forcing*/ 423 425 IssmDouble time0 = this->timesteps[0]; 424 426 IssmDouble time1 = this->timesteps[this->numtimesteps - 1]; 427 428 /*We need the end time to be the last timestep that would be taken*/ 429 /* i.e., the case where GEMB has time stamps (finer timestep) after the last timestep */ 430 IssmDouble nsteps = reCast<int,IssmDouble>(time1/dt); 431 if (reCast<IssmDouble>(nsteps)<time1/dt) nsteps=nsteps+1; 432 time1 = nsteps*dt; 433 425 434 if(cycle && (time<time0 || time>time1)){ 426 435 … … 433 442 /*Uncomment following line if you would like to apply a cycle BEFORE the time series starts*/ 434 443 //if(time<time0) num_intervals = -num_intervals-1; 435 444 436 445 if(fabs(time-time0)/deltat == reCast<IssmDouble>(num_intervals)){ 437 446 /*Hack to make sure we always cover the last value of the series (discussion with Nicole)*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r26196 r26208 159 159 break; 160 160 case LinearFloatingMeltRateEnum: 161 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing s");161 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing"); 162 162 iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing"); 163 163 iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate"); … … 224 224 break; 225 225 case BasalforcingsPicoEnum: 226 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing s");226 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing"); 227 227 iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing"); 228 228 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsPicoNumBasinsEnum)); … … 267 267 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum)); 268 268 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum)); 269 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing s",TimesteppingInterpForcingsEnum));269 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum)); 270 270 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum)); 271 271 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum)); … … 277 277 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_max",TimesteppingTimeStepMaxEnum)); 278 278 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum)); 279 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing s",TimesteppingInterpForcingsEnum));279 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum)); 280 280 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum)); 281 281 parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum)); -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
r25999 r26208 39 39 IssmDouble t,smb_dt; 40 40 IssmDouble delta; 41 bool isclimatology=false;42 41 bool linear_interp=true; 43 42 44 femmodel->parameters->FindParam(&linear_interp,TimesteppingInterpForcing sEnum); /*is interpolation requested*/43 femmodel->parameters->FindParam(&linear_interp,TimesteppingInterpForcingEnum); /*is interpolation requested*/ 45 44 femmodel->parameters->FindParam(&time,TimeEnum); /*transient core time at which we run the smb core*/ 46 45 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); /*transient core time step*/ 47 46 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum); 48 47 femmodel->parameters->FindParam(&smb_dt,SmbDtEnum); /*time period for the smb solution, usually smaller than the glaciological dt*/ 49 femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum);50 48 51 49 //before starting loop, realize that the transient core runs this smb_core at time = time +deltaT. … … 63 61 64 62 timeclim=time; 65 if (isclimatology){66 //If this is a climatology, we need to repeat the forcing after the final time67 TransientInput* Ta_input_tr = element->inputs->GetTransientInput(SmbTaEnum); _assert_(Ta_input_tr);68 69 /*Get temperature climatology value*/70 int offsetend = Ta_input_tr->GetTimeInputOffset(finaltime);71 IssmDouble time0 = Ta_input_tr->GetTimeByOffset(-1);72 IssmDouble timeend = Ta_input_tr->GetTimeByOffset(offsetend);73 timeend = ceil(timeend/dt)*dt;74 if (time>time0 & timeend>time0){75 delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));76 timeclim=time0+delta;77 }78 }79 63 if (linear_interp) timeinputs = t-time+timeclim; 80 64 else timeinputs = t-time+timeclim+smb_dt/2; … … 515 499 // clabIce = concentration of light absorbing carbon of first ice layer [ppm1], default 0 516 500 517 // Method s3501 // Method 3 518 502 // d = snow surface density [kg m-3] 519 503 // n = cloud amount … … 521 505 // aSnow = albedo of fresh snow 522 506 523 // Method s4507 // Method 4 524 508 // aIce = albedo of ice 525 509 // aSnow = albedo of fresh snow … … 661 645 //If we do not have fresh snow 662 646 if (aIdx<3 && aIdx>0 && (adThresh - d[0])>=Dtol){ 663 // In a layer < 10cm, account for mix of ice and snow,647 // In a snow layer < 10cm, account for mix of ice and snow, 664 648 // after P. Alexander et al., 2014 665 649 IssmDouble depthsnow=0.0; … … 1095 1079 1096 1080 // swIdx = 1 : absorbed SW is distributed with depth as a function of: 1097 // default : snow density (taken from Bassford, 200 4)1081 // default : snow density (taken from Bassford, 2002) 1098 1082 // if aIdx=2 : grain size in 3 spectral bands (Brun et al., 1992) 1099 1083 … … 1177 1161 swfS[2] = (sF[2] * dsw) * (1.0 - a2); 1178 1162 1179 // absorption coef icient for spectral range:1163 // absorption coefficient for spectral range: 1180 1164 h =xNew<IssmDouble>(m); 1181 1165 B1 =xNew<IssmDouble>(m); … … 1365 1349 break; 1366 1350 1367 case 2: // Density of Greenland snow, Fausto et al., 20 081351 case 2: // Density of Greenland snow, Fausto et al., 2018 1368 1352 dSnow = 315; 1369 1353 break; -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
r25539 r26208 14 14 // INPUT parameters: ni: working size of arrays 15 15 // OUTPUT: mass-balance (m/yr ice): agd(NA) 16 bool isclimatology;17 femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum);18 19 if (isclimatology){20 21 /*Get time parameters*/22 IssmDouble time,dt,starttime,finaltime;23 femmodel->parameters->FindParam(&time,TimeEnum);24 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);25 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);26 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);27 28 if(time<=starttime+dt){29 /*FIXME: this is wrong, should be done at the ElementUpdate step of analysis, not here!*/30 InputDuplicatex(femmodel,SmbMassBalanceEnum,SmbMassBalanceClimateEnum);31 femmodel->inputs->DeleteInput(SmbMassBalanceEnum);32 }33 34 /*If this is a climatology, we need to repeat the forcing after the final time*/35 TransientInput* smb_input=femmodel->inputs->GetTransientInput(SmbMassBalanceClimateEnum); _assert_(smb_input);36 37 /*Get accumulation climatology value*/38 int offsetend = smb_input->GetTimeInputOffset(finaltime);39 IssmDouble time0 = smb_input->GetTimeByOffset(-1);40 IssmDouble timeend = smb_input->GetTimeByOffset(offsetend);41 42 _assert_(timeend>time0);43 IssmDouble timeclim = time;44 45 if(time>time0 && timeend>time0){46 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));47 if(delta==0.){48 timeclim=timeend;49 }50 else{51 timeclim=time0+delta;52 }53 }54 55 /*Loop over all the elements of this partition*/56 for(Object* & object : femmodel->elements->objects){57 Element* element=xDynamicCast<Element*>(object);58 59 int numvertices = element->GetNumberOfVertices();60 IssmDouble* smb = xNew<IssmDouble>(numvertices);61 element->GetInputListOnVerticesAtTime(smb,SmbMassBalanceClimateEnum,timeclim);62 63 /*Add input to element and Free memory*/64 element->AddInput(SmbMassBalanceEnum,smb,P1Enum);65 xDelete<IssmDouble>(smb);66 }67 }68 16 69 17 }/*}}}*/ … … 410 358 // surface runoff (m/yr water equivalent): runoff 411 359 // OUTPUT: mass-balance (m/yr ice): agd(NA) 412 bool isclimatology;413 femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum);414 360 415 361 /*Loop over all the elements of this partition*/ … … 425 371 426 372 /*Recover Smb Components*/ 427 if(isclimatology){ 428 429 int offsetend; 430 IssmDouble time0,timeend,timeclim; 431 IssmDouble time,starttime,finaltime; 432 433 /*Get time parameters*/ 434 femmodel->parameters->FindParam(&time,TimeEnum); 435 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum); 436 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 437 438 //If this is a climatology, we need to repeat the forcing after the final time 439 TransientInput* acc_input = element->inputs->GetTransientInput(SmbAccumulationEnum); _assert_(acc_input); 440 TransientInput* evap_input = element->inputs->GetTransientInput(SmbEvaporationEnum); _assert_(evap_input); 441 TransientInput* runoff_input = element->inputs->GetTransientInput(SmbRunoffEnum); _assert_(runoff_input); 442 443 //Get accumulation climatology value 444 offsetend = acc_input->GetTimeInputOffset(finaltime); 445 time0 = acc_input->GetTimeByOffset(-1); 446 timeend = acc_input->GetTimeByOffset(offsetend); 447 timeclim = time; 448 if(time>time0 & timeend>time0){ 449 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 450 if(delta==0.) 451 timeclim=timeend; 452 else 453 timeclim=time0+delta; 454 } 455 element->GetInputListOnVerticesAtTime(acc,SmbAccumulationEnum,timeclim); 456 457 //Get evaporation climatology value 458 offsetend = evap_input->GetTimeInputOffset(finaltime); 459 time0 = evap_input->GetTimeByOffset(-1); 460 timeend = evap_input->GetTimeByOffset(offsetend); 461 timeclim = time; 462 if(time>time0 & timeend>time0){ 463 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 464 if(delta==0.) 465 timeclim=timeend; 466 else 467 timeclim=time0+delta; 468 } 469 element->GetInputListOnVerticesAtTime(evap,SmbEvaporationEnum,timeclim); 470 471 //Get runoff climatology value 472 offsetend = runoff_input->GetTimeInputOffset(finaltime); 473 time0 = runoff_input->GetTimeByOffset(-1); 474 timeend = runoff_input->GetTimeByOffset(offsetend); 475 timeclim = time; 476 if(time>time0 & timeend>time0){ 477 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 478 if(delta==0.) 479 timeclim=timeend; 480 else 481 timeclim=time0+delta; 482 } 483 element->GetInputListOnVerticesAtTime(runoff,SmbRunoffEnum,timeclim); 484 } 485 else{ 486 element->GetInputListOnVertices(acc,SmbAccumulationEnum); 487 element->GetInputListOnVertices(evap,SmbEvaporationEnum); 488 element->GetInputListOnVertices(runoff,SmbRunoffEnum); 489 } 373 element->GetInputListOnVertices(acc,SmbAccumulationEnum); 374 element->GetInputListOnVertices(evap,SmbEvaporationEnum); 375 element->GetInputListOnVertices(runoff,SmbRunoffEnum); 490 376 491 377 // loop over all vertices … … 510 396 // refreeze of surface melt (m/yr water equivalent): refreeze 511 397 // OUTPUT: mass-balance (m/yr ice): agd(NA) 512 bool isclimatology;513 femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum);514 398 515 399 /*Loop over all the elements of this partition*/ … … 526 410 527 411 /*Recover Smb Components*/ 528 if (isclimatology){ 529 530 int offsetend; 531 IssmDouble time0,timeend,timeclim; 532 IssmDouble time,starttime,finaltime; 533 femmodel->parameters->FindParam(&time,TimeEnum); 534 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum); 535 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 536 537 538 //If this is a climatology, we need to repeat the forcing after the final time 539 TransientInput* acc_input = element->inputs->GetTransientInput(SmbAccumulationEnum); _assert_(acc_input); 540 TransientInput* evap_input = element->inputs->GetTransientInput(SmbEvaporationEnum); _assert_(evap_input); 541 TransientInput* melt_input = element->inputs->GetTransientInput(SmbMeltEnum); _assert_(melt_input); 542 TransientInput* refreeze_input = element->inputs->GetTransientInput(SmbRefreezeEnum); _assert_(refreeze_input); 543 544 //Get accumulation climatology value 545 offsetend = acc_input->GetTimeInputOffset(finaltime); 546 time0 = acc_input->GetTimeByOffset(-1); 547 timeend = acc_input->GetTimeByOffset(offsetend); 548 timeclim = time; 549 if(time>time0 & timeend>time0){ 550 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 551 if(delta==0.) 552 timeclim=timeend; 553 else 554 timeclim=time0+delta; 555 } 556 element->GetInputListOnVerticesAtTime(acc,SmbAccumulationEnum,timeclim); 557 558 //Get evaporation climatology value 559 offsetend = evap_input->GetTimeInputOffset(finaltime); 560 time0 = evap_input->GetTimeByOffset(-1); 561 timeend = evap_input->GetTimeByOffset(offsetend); 562 timeclim = time; 563 if(time>time0 & timeend>time0){ 564 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 565 if(delta==0.) 566 timeclim=timeend; 567 else 568 timeclim=time0+delta; 569 } 570 element->GetInputListOnVerticesAtTime(evap,SmbEvaporationEnum,timeclim); 571 572 //Get melt climatology value 573 offsetend = melt_input->GetTimeInputOffset(finaltime); 574 time0 = melt_input->GetTimeByOffset(-1); 575 timeend = melt_input->GetTimeByOffset(offsetend); 576 timeclim = time; 577 if(time>time0 & timeend>time0){ 578 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 579 if(delta==0.) 580 timeclim=timeend; 581 else 582 timeclim=time0+delta; 583 } 584 element->GetInputListOnVerticesAtTime(melt,SmbMeltEnum,timeclim); 585 586 //Get refreeze climatology value 587 offsetend = refreeze_input->GetTimeInputOffset(finaltime); 588 time0 = refreeze_input->GetTimeByOffset(-1); 589 timeend = refreeze_input->GetTimeByOffset(offsetend); 590 timeclim = time; 591 if(time>time0 & timeend>time0){ 592 IssmDouble delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0))); 593 if(delta==0.) 594 timeclim=timeend; 595 else 596 timeclim=time0+delta; 597 } 598 element->GetInputListOnVerticesAtTime(refreeze,SmbRefreezeEnum,timeclim); 599 } 600 else{ 601 element->GetInputListOnVertices(acc,SmbAccumulationEnum); 602 element->GetInputListOnVertices(evap,SmbEvaporationEnum); 603 element->GetInputListOnVertices(melt,SmbMeltEnum); 604 element->GetInputListOnVertices(refreeze,SmbRefreezeEnum); 605 } 412 element->GetInputListOnVertices(acc,SmbAccumulationEnum); 413 element->GetInputListOnVertices(evap,SmbEvaporationEnum); 414 element->GetInputListOnVertices(melt,SmbMeltEnum); 415 element->GetInputListOnVertices(refreeze,SmbRefreezeEnum); 606 416 607 417 // loop over all vertices -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26204 r26208 408 408 syn keyword cConstant SmbIsaccumulationEnum 409 409 syn keyword cConstant SmbIsalbedoEnum 410 syn keyword cConstant SmbIsclimatologyEnum411 410 syn keyword cConstant SmbIsconstrainsurfaceTEnum 412 411 syn keyword cConstant SmbIsd18opdEnum … … 477 476 syn keyword cConstant TimesteppingCouplingTimeEnum 478 477 syn keyword cConstant TimesteppingFinalTimeEnum 479 syn keyword cConstant TimesteppingInterpForcing sEnum478 syn keyword cConstant TimesteppingInterpForcingEnum 480 479 syn keyword cConstant TimesteppingCycleForcingEnum 481 480 syn keyword cConstant TimesteppingStartTimeEnum … … 1456 1455 syn keyword cType Cfsurfacesquare 1457 1456 syn keyword cType Channel 1458 syn keyword cType classes1459 1457 syn keyword cType Constraint 1460 1458 syn keyword cType Constraints … … 1463 1461 syn keyword cType ControlInput 1464 1462 syn keyword cType Covertree 1463 syn keyword cType DataSetParam 1465 1464 syn keyword cType DatasetInput 1466 syn keyword cType DataSetParam1467 1465 syn keyword cType Definition 1468 1466 syn keyword cType DependentObject … … 1477 1475 syn keyword cType ElementInput 1478 1476 syn keyword cType ElementMatrix 1477 syn keyword cType ElementVector 1479 1478 syn keyword cType Elements 1480 syn keyword cType ElementVector1481 1479 syn keyword cType ExponentialVariogram 1482 1480 syn keyword cType ExternalResult … … 1485 1483 syn keyword cType Friction 1486 1484 syn keyword cType Gauss 1487 syn keyword cType GaussianVariogram1488 syn keyword cType gaussobjects1489 1485 syn keyword cType GaussPenta 1490 1486 syn keyword cType GaussSeg 1491 1487 syn keyword cType GaussTetra 1492 1488 syn keyword cType GaussTria 1489 syn keyword cType GaussianVariogram 1493 1490 syn keyword cType GenericExternalResult 1494 1491 syn keyword cType GenericOption … … 1505 1502 syn keyword cType IssmDirectApplicInterface 1506 1503 syn keyword cType IssmParallelDirectApplicInterface 1507 syn keyword cType krigingobjects1508 1504 syn keyword cType Load 1509 1505 syn keyword cType Loads … … 1516 1512 syn keyword cType Matice 1517 1513 syn keyword cType Matlitho 1518 syn keyword cType matrixobjects1519 1514 syn keyword cType MatrixParam 1520 1515 syn keyword cType Misfit … … 1529 1524 syn keyword cType Observations 1530 1525 syn keyword cType Option 1526 syn keyword cType OptionUtilities 1531 1527 syn keyword cType Options 1532 syn keyword cType OptionUtilities1533 1528 syn keyword cType Param 1534 1529 syn keyword cType Parameters … … 1544 1539 syn keyword cType Regionaloutput 1545 1540 syn keyword cType Results 1541 syn keyword cType RiftStruct 1546 1542 syn keyword cType Riftfront 1547 syn keyword cType RiftStruct1548 1543 syn keyword cType SealevelMasks 1549 1544 syn keyword cType Seg 1550 1545 syn keyword cType SegInput 1546 syn keyword cType SegRef 1551 1547 syn keyword cType Segment 1552 syn keyword cType SegRef1553 1548 syn keyword cType SpcDynamic 1554 1549 syn keyword cType SpcStatic … … 1569 1564 syn keyword cType Vertex 1570 1565 syn keyword cType Vertices 1566 syn keyword cType classes 1567 syn keyword cType gaussobjects 1568 syn keyword cType krigingobjects 1569 syn keyword cType matrixobjects 1571 1570 syn keyword cType AdjointBalancethickness2Analysis 1572 1571 syn keyword cType AdjointBalancethicknessAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26204 r26208 402 402 SmbIsaccumulationEnum, 403 403 SmbIsalbedoEnum, 404 SmbIsclimatologyEnum,405 404 SmbIsconstrainsurfaceTEnum, 406 405 SmbIsd18opdEnum, … … 471 470 TimesteppingCouplingTimeEnum, 472 471 TimesteppingFinalTimeEnum, 473 TimesteppingInterpForcing sEnum,472 TimesteppingInterpForcingEnum, 474 473 TimesteppingCycleForcingEnum, 475 474 TimesteppingStartTimeEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26204 r26208 410 410 case SmbIsaccumulationEnum : return "SmbIsaccumulation"; 411 411 case SmbIsalbedoEnum : return "SmbIsalbedo"; 412 case SmbIsclimatologyEnum : return "SmbIsclimatology";413 412 case SmbIsconstrainsurfaceTEnum : return "SmbIsconstrainsurfaceT"; 414 413 case SmbIsd18opdEnum : return "SmbIsd18opd"; … … 479 478 case TimesteppingCouplingTimeEnum : return "TimesteppingCouplingTime"; 480 479 case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime"; 481 case TimesteppingInterpForcing sEnum : return "TimesteppingInterpForcings";480 case TimesteppingInterpForcingEnum : return "TimesteppingInterpForcing"; 482 481 case TimesteppingCycleForcingEnum : return "TimesteppingCycleForcing"; 483 482 case TimesteppingStartTimeEnum : return "TimesteppingStartTime"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26204 r26208 419 419 else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum; 420 420 else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum; 421 else if (strcmp(name,"SmbIsclimatology")==0) return SmbIsclimatologyEnum;422 421 else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum; 423 422 else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum; … … 488 487 else if (strcmp(name,"TimesteppingCouplingTime")==0) return TimesteppingCouplingTimeEnum; 489 488 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 490 else if (strcmp(name,"TimesteppingInterpForcing s")==0) return TimesteppingInterpForcingsEnum;489 else if (strcmp(name,"TimesteppingInterpForcing")==0) return TimesteppingInterpForcingEnum; 491 490 else if (strcmp(name,"TimesteppingCycleForcing")==0) return TimesteppingCycleForcingEnum; 492 491 else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum; … … 506 505 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum; 507 506 else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum; 507 else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum; 508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum; 512 else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum; 511 if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum; 513 512 else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; 514 513 else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum; … … 629 628 else if (strcmp(name,"EplHead")==0) return EplHeadEnum; 630 629 else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum; 630 else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum; 631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum; 635 else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum; 634 if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum; 636 635 else if (strcmp(name,"EplHeadSubstep")==0) return EplHeadSubstepEnum; 637 636 else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum; … … 752 751 else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum; 753 752 else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum; 753 else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum; 758 else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum; 757 if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum; 759 758 else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum; 760 759 else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum; … … 875 874 else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum; 876 875 else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum; 876 else if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum; 877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum; 881 else if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum; 880 if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum; 882 881 else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum; 883 882 else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum; … … 998 997 else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum; 999 998 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 999 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 1004 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 1003 if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 1005 1004 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 1006 1005 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; … … 1121 1120 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 1122 1121 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 1122 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1127 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1126 if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1128 1127 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 1129 1128 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; … … 1244 1243 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 1245 1244 else if (strcmp(name,"ElementInput")==0) return ElementInputEnum; 1245 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1250 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 1249 if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 1251 1250 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 1252 1251 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; … … 1367 1366 else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum; 1368 1367 else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum; 1368 else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1373 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1372 if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1374 1373 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1375 1374 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; -
issm/trunk-jpl/src/m/classes/SMBcomponents.m
r24806 r26208 6 6 classdef SMBcomponents 7 7 properties (SetAccess=public) 8 isclimatology = 0;9 8 accumulation = NaN; 10 9 runoff = NaN; … … 65 64 md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]); 66 65 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 67 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]);68 if (self.isclimatology)69 md = checkfield(md,'fieldname', 'smb.accumulation', 'size',[md.mesh.numberofvertices+1],...70 'message',['accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology']);71 md = checkfield(md,'fieldname', 'smb.runoff', 'size',[md.mesh.numberofvertices+1],...72 'message',['runoff must have md.mesh.numberofvertices+1 rows in order to force a climatology']);73 md = checkfield(md,'fieldname', 'smb.evaporation', 'size',[md.mesh.numberofvertices+1],...74 'message',['evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology']);75 end76 66 end % }}} 77 67 function disp(self) % {{{ … … 80 70 fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'); 81 71 fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]'); 82 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)');83 72 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 84 73 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); … … 106 95 end 107 96 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray'); 108 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean');109 97 110 98 end % }}} -
issm/trunk-jpl/src/m/classes/SMBcomponents.py
r25688 r26208 15 15 16 16 def __init__(self, *args): # {{{ 17 self.isclimatology = 018 17 self.accumulation = np.nan 19 18 self.runoff = np.nan … … 35 34 s += '{}\n'.format(fielddisplay(self, 'runoff', 'amount of ice melt lost from the ice column [m/yr ice eq]')) 36 35 s += '{}\n'.format(fielddisplay(self, 'evaporation', 'mount of ice lost to evaporative processes [m/yr ice eq]')) 37 s += '{}\n'.format(fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))38 36 s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 39 37 s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) … … 82 80 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 83 81 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 84 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])85 if self.isclimatology:86 md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices + 1],87 'message', 'accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology')88 md = checkfield(md, 'fieldname', 'smb.runoff', 'size', [md.mesh.numberofvertices + 1], 'message', 'runoff must have md.mesh.numberofvertices+1 rows in order to force a climatology')89 md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices + 1], 'message', 'evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology')90 82 return md 91 83 # }}} … … 107 99 outputs = outputscopy 108 100 WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray') 109 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')110 if (self.isclimatology > 0):111 md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices + 1], 'message', 'accumulation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')112 md = checkfield(md, 'fieldname', 'smb.runoff', 'size', [md.mesh.numberofvertices + 1], 'message', 'runoff must have md.mesh.numberofvertices + 1 rows in order to force a climatology')113 md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices + 1], 'message', 'evaporation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')114 101 115 102 # }}} -
issm/trunk-jpl/src/m/classes/SMBforcing.m
r25688 r26208 6 6 classdef SMBforcing 7 7 properties (SetAccess=public) 8 isclimatology = 0;9 8 mass_balance = NaN; 10 9 steps_per_step = 1; … … 55 54 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 56 55 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 57 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]);58 56 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]); 59 if (self.isclimatology)60 md = checkfield(md,'fieldname', 'smb.mass_balance', 'size',[md.mesh.numberofvertices+1],...61 'message',['mass_balance must have md.mesh.numberofvertices+1 rows in order to force a climatology']);62 end63 57 end % }}} 64 58 function disp(self) % {{{ 65 59 disp(sprintf(' surface forcings parameters:')); 66 60 fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'); 67 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)');68 61 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 69 62 fielddisplay(self,'requested_outputs','additional outputs requested'); … … 90 83 end 91 84 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray'); 92 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean');93 85 94 86 end % }}} … … 97 89 writejs1Darray(fid,[modelname '.smb.mass_balance'],self.mass_balance); 98 90 writejscellstring(fid,[modelname '.smb.requested_outputs'],self.requested_outputs); 99 writejs1Darray(fid,[modelname '.smb.isclimatology'],self.isclimatology);100 91 101 92 end % }}} -
issm/trunk-jpl/src/m/classes/SMBforcing.py
r25688 r26208 15 15 16 16 def __init__(self, *args): # {{{ 17 self.isclimatology = 018 17 self.mass_balance = np.nan 19 18 self.steps_per_step = 1 … … 31 30 s = ' surface forcings parameters:\n' 32 31 s += '{}\n'.format(fielddisplay(self, 'mass_balance', 'surface mass balance [m/yr ice eq]')) 33 s += '{}\n'.format(fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))34 32 s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 35 33 s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) … … 67 65 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 68 66 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 69 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])70 if self.isclimatology:71 md = checkfield(md, 'fieldname', 'smb.mass_balance', 'size', [md.mesh.numberofvertices + 1], 'message', 'mass_balance must have md.mesh.numberofvertices + 1 rows in order to force a climatology')72 67 return md 73 68 # }}} … … 87 82 outputs = outputscopy 88 83 WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray') 89 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')90 84 # }}} -
issm/trunk-jpl/src/m/classes/SMBgemb.m
r25997 r26208 22 22 isdensification; 23 23 isturbulentflux; 24 isclimatology;25 24 isconstrainsurfaceT; 26 25 … … 65 64 % 4: exponential time decay & wetness [Bougamont & Bamber, 2005] 66 65 67 swIdx = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, with snow density (taken from Bassford, 2004))66 swIdx = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)) 68 67 69 68 denIdx = NaN; %densification model to use (default is 2): … … 79 78 % 0 = Original GEMB value, 150 kg/m^3 80 79 % 1 = Antarctica value of fresh snow density, 350 kg/m^3 81 % 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (20 08)80 % 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018) 82 81 % 3 = Antarctica model of Kaspers et al. (2004) 83 82 % 4 = Greenland model of Kuipers Munneke et al. (2015) … … 217 216 self.isdensification=1; 218 217 self.isturbulentflux=1; 219 self.isclimatology=0;220 218 self.isconstrainsurfaceT=0; 221 219 … … 280 278 md = checkfield(md,'fieldname','smb.isdensification','values',[0 1]); 281 279 md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0 1]); 282 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]);283 280 md = checkfield(md,'fieldname','smb.isconstrainsurfaceT','values',[0 1]); 284 281 … … 290 287 md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',200,'size',size(self.Ta)); 291 288 md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1,'size',size(self.Ta)); 292 293 if (self.isclimatology)294 md = checkfield(md,'fieldname', 'smb.Ta', 'size',[md.mesh.numberofelements+1],...295 'message',['Ta must have md.mesh.numberofelements+1 rows in order to force a climatology']);296 md = checkfield(md,'fieldname', 'smb.V', 'size',[md.mesh.numberofelements+1],...297 'message',['V must have md.mesh.numberofelements+1 rows in order to force a climatology']);298 md = checkfield(md,'fieldname', 'smb.dswrf', 'size',[md.mesh.numberofelements+1],...299 'message',['dswrf must have md.mesh.numberofelements+1 rows in order to force a climatology']);300 md = checkfield(md,'fieldname', 'smb.dlwrf', 'size',[md.mesh.numberofelements+1],...301 'message',['dlwrf must have md.mesh.numberofelements+1 rows in order to force a climatology']);302 md = checkfield(md,'fieldname', 'smb.P', 'size',[md.mesh.numberofelements+1],...303 'message',['P must have md.mesh.numberofelements+1 rows in order to force a climatology']);304 md = checkfield(md,'fieldname', 'smb.eAir', 'size',[md.mesh.numberofelements+1],...305 'message',['eAir must have md.mesh.numberofelements+1 rows in order to force a climatology']);306 end307 289 308 290 md = checkfield(md,'fieldname','smb.Tmean','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value … … 371 353 fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)'); 372 354 fielddisplay(self,'isconstrainsurfaceT','constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change'); 373 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)');374 355 fielddisplay(self,'Ta','2 m air temperature, in Kelvin'); 375 356 fielddisplay(self,'V','wind speed (m s-1)'); … … 437 418 end 438 419 439 fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, with snow density (taken from Bassford, 2004)]');420 fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]'); 440 421 fielddisplay(self,'denIdx',{'densification model to use (default is 2):',... 441 422 '1 = emperical model of Herron and Langway (1980)',... … … 449 430 '0 = Original GEMB value, 150 kg/m^3',... 450 431 '1 = Antarctica value of fresh snow density, 350 kg/m^3',... 451 '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (20 08)',...432 '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)',... 452 433 '3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately',... 453 434 '4 = Greenland model of Kuipers Munneke et al. (2015)'}); … … 476 457 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdensification','format','Boolean'); 477 458 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean'); 478 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean');479 459 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isconstrainsurfaceT','format','Boolean'); 480 460 -
issm/trunk-jpl/src/m/classes/SMBgemb.py
r25997 r26208 71 71 # 4: exponential time decay & wetness [Bougamont & Bamber, 2005] 72 72 73 self.swIdx = np.nan # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, with snow density (taken from Bassford, 2004))73 self.swIdx = np.nan # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)) 74 74 self.denIdx = np.nan # densification model to use (default is 2): 75 75 # 1 = emperical model of Herron and Langway (1980) … … 84 84 # 0 = Original GEMB value, 150 kg/m^3 85 85 # 1 = Antarctica value of fresh snow density, 350 kg/m^3 86 # 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (20 08)86 # 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018) 87 87 # 3 = Antarctica model of Kaspers et al. (2004) 88 88 # 4 = Greenland model of Kuipers Munneke et al. (2015) … … 156 156 string = "%s\n%s" % (string, fielddisplay(self, 'isturbulentflux', 'run turbulant heat fluxes module (default true)')) 157 157 string = "%s\n%s" % (string, fielddisplay(self, 'isconstrainsurfaceT', 'constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change')) 158 string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))159 158 string = "%s\n%s" % (string, fielddisplay(self, 'Ta', '2 m air temperature, in Kelvin')) 160 159 string = "%s\n%s" % (string, fielddisplay(self, 'V', 'wind speed (m s-1)')) … … 218 217 string = "%s\n%s" % (string, fielddisplay(self, 'K', 'time scale temperature coef. (7) [d]')) 219 218 220 string = "%s\n%s" % (string, fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, with snow density (taken from Bassford, 2004)]'))219 string = "%s\n%s" % (string, fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]')) 221 220 string = "%s\n%s" % (string, fielddisplay(self, 'denIdx', ['densification model to use (default is 2):', 222 221 '1 = emperical model of Herron and Langway (1980)', … … 230 229 '0 = Original GEMB value, 150 kg/m^3', 231 230 '1 = Antarctica value of fresh snow density, 350 kg/m^3', 232 '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (20 08)',231 '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)', 233 232 '3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately', 234 233 '4 = Greenland model of Kuipers Munneke et al. (2015)'])) … … 304 303 self.isdensification = 1 305 304 self.isturbulentflux = 1 306 self.isclimatology = 0307 305 self.isconstrainsurfaceT = 0 308 306 … … 368 366 md = checkfield(md, 'fieldname', 'smb.isdensification', 'values', [0, 1]) 369 367 md = checkfield(md, 'fieldname', 'smb.isturbulentflux', 'values', [0, 1]) 370 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])371 368 md = checkfield(md, 'fieldname', 'smb.isconstrainsurfaceT', 'values', [0, 1]) 372 369 … … 378 375 md = checkfield(md, 'fieldname', 'smb.P', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 200, 'size', np.shape(self.Ta)) 379 376 md = checkfield(md, 'fieldname', 'smb.eAir', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', np.shape(self.Ta)) 380 381 if (self.isclimatology > 0):382 md = checkfield(md, 'fieldname', 'smb.Ta', 'size', [md.mesh.numberofelements + 1], 'message', 'Ta must have md.mesh.numberofelements+1 rows in order to force a climatology')383 md = checkfield(md, 'fieldname', 'smb.V', 'size', [md.mesh.numberofelements + 1], 'message', 'V must have md.mesh.numberofelements+1 rows in order to force a climatology')384 md = checkfield(md, 'fieldname', 'smb.dswrf', 'size', [md.mesh.numberofelements + 1], 'message', 'dswrf must have md.mesh.numberofelements+1 rows in order to force a climatology')385 md = checkfield(md, 'fieldname', 'smb.dlwrf', 'size', [md.mesh.numberofelements + 1], 'message', 'dlwrf must have md.mesh.numberofelements+1 rows in order to force a climatology')386 md = checkfield(md, 'fieldname', 'smb.P', 'size', [md.mesh.numberofelements + 1], 'message', 'P must have md.mesh.numberofelements+1 rows in order to force a climatology')387 md = checkfield(md, 'fieldname', 'smb.eAir', 'size', [md.mesh.numberofelements + 1], 'message', 'eAir must have md.mesh.numberofelements+1 rows in order to force a climatology')388 377 389 378 md = checkfield(md, 'fieldname', 'smb.Tmean', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100) #-100/100 celsius min/max value … … 451 440 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdensification', 'format', 'Boolean') 452 441 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isturbulentflux', 'format', 'Boolean') 453 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')454 442 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isconstrainsurfaceT', 'format', 'Boolean') 455 443 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Ta', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts) -
issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m
r24806 r26208 6 6 classdef SMBmeltcomponents 7 7 properties (SetAccess=public) 8 isclimatology = 0;9 8 accumulation = NaN; 10 9 evaporation = NaN; … … 71 70 md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]); 72 71 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 73 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]);74 if (self.isclimatology)75 md = checkfield(md,'fieldname', 'smb.accumulation', 'size',[md.mesh.numberofvertices+1],...76 'message',['accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology']);77 md = checkfield(md,'fieldname', 'smb.melt', 'size',[md.mesh.numberofvertices+1],...78 'message',['melt must have md.mesh.numberofvertices+1 rows in order to force a climatology']);79 md = checkfield(md,'fieldname', 'smb.refreeze', 'size',[md.mesh.numberofvertices+1],...80 'message',['refreeze must have md.mesh.numberofvertices+1 rows in order to force a climatology']);81 md = checkfield(md,'fieldname', 'smb.evaporation', 'size',[md.mesh.numberofvertices+1],...82 'message',['evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology']);83 end84 72 end % }}} 85 73 function disp(self) % {{{ … … 89 77 fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]'); 90 78 fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]'); 91 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)');92 79 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 93 80 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); … … 117 104 end 118 105 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray'); 119 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean');120 106 121 107 end % }}} -
issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
r24793 r26208 17 17 self.runoff = float('NaN') 18 18 self.evaporation = float('NaN') 19 self.isclimatology = 020 19 self.steps_per_step = 1 21 20 self.averaging = 0 … … 29 28 string = "%s\n%s" % (string, fielddisplay(self, 'melt', 'amount of ice melt in the ice column [m/yr ice eq]')) 30 29 string = "%s\n%s" % (string, fielddisplay(self, 'refreeze', 'amount of ice melt refrozen in the ice column [m/yr ice eq]')) 31 string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))32 30 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 33 31 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) … … 87 85 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 88 86 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 89 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])90 87 return md 91 88 # }}} … … 109 106 outputs = outputscopy 110 107 WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray') 111 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')112 if (self.isclimatology > 0):113 md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices + 1], 'message', 'accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology')114 md = checkfield(md, 'fieldname', 'smb.melt', 'size', [md.mesh.numberofvertices + 1], 'message', 'melt must have md.mesh.numberofvertices+1 rows in order to force a climatology')115 md = checkfield(md, 'fieldname', 'smb.refreeze', 'size', [md.mesh.numberofvertices + 1], 'message', 'refreeze must have md.mesh.numberofvertices+1 rows in order to force a climatology')116 md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices + 1], 'message', 'evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology')117 108 118 109 # }}} -
issm/trunk-jpl/src/m/classes/model.m
r26161 r26208 166 166 end 167 167 end 168 %2019 Mar 28 168 %2019 Mar 28, updated 2021 April 23 169 169 if isa(md.smb,'SMBcomponents') | isa(md.smb,'SMBmeltcomponents') | isa(md.smb,'SMBforcing') | isa(md.smb,'SMBgemb') 170 170 if isa(md.smb.isclimatology,'double') … … 172 172 md.smb.isclimatology = 0; 173 173 end 174 md.timestepping.cycle_forcing=md.smb.isclimatology; 174 175 end 175 176 end -
issm/trunk-jpl/src/m/classes/timestepping.m
r26195 r26208 9 9 final_time = 0.; 10 10 time_step = 0.; 11 interp_forcing s= 1;11 interp_forcing = 1; 12 12 cycle_forcing = 0; 13 13 coupling_time = 0.; … … 32 32 self.final_time=10.*self.time_step; 33 33 34 %should we interpolate forcing sbetween timesteps?35 self.interp_forcing s=1;34 %should we interpolate forcing between timesteps? 35 self.interp_forcing=1; 36 36 self.cycle_forcing=0; 37 37 end % }}} … … 41 41 md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1); 42 42 md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1); 43 md = checkfield(md,'fieldname','timestepping.interp_forcing s','numel',[1],'values',[0 1]);43 md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]); 44 44 md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]); 45 45 if self.final_time-self.start_time<0, … … 58 58 fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']); 59 59 fielddisplay(self,'time_step',['length of time steps [' unit ']']); 60 fielddisplay(self,'interp_forcing s','interpolate in time between requested forcing values ? (0 or 1)');60 fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)'); 61 61 fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)'); 62 62 fielddisplay(self,'coupling_time',['length of coupling time step with ocean model [' unit ']']); … … 70 70 WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',scale); 71 71 WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale); 72 WriteData(fid,prefix,'object',self,'fieldname','interp_forcing s','format','Boolean');72 WriteData(fid,prefix,'object',self,'fieldname','interp_forcing','format','Boolean'); 73 73 WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean'); 74 74 WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale); … … 79 79 writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time); 80 80 writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step); 81 writejsdouble(fid,[modelname '.timestepping.interp_forcing s'],self.interp_forcings);81 writejsdouble(fid,[modelname '.timestepping.interp_forcing'],self.interp_forcing); 82 82 writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing); 83 83 -
issm/trunk-jpl/src/m/classes/timestepping.py
r26195 r26208 16 16 self.final_time = 0. 17 17 self.time_step = 0. 18 self.interp_forcing s= 118 self.interp_forcing = 1 19 19 self.cycle_forcing = 0 20 20 self.coupling_time = 0. … … 30 30 string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]")) 31 31 string = "%s\n%s" % (string, fielddisplay(self, "time_step", "length of time steps [yr]")) 32 string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing s", "interpolate in time between requested forcing values ? (0 or 1)"))32 string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)")) 33 33 string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)")) 34 34 string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "length of coupling time steps with ocean model [yr]")) … … 41 41 #final time 42 42 self.final_time = 10. * self.time_step 43 #should we interpolate forcing sbetween timesteps?44 self.interp_forcing s= 143 #should we interpolate forcing between timesteps? 44 self.interp_forcing = 1 45 45 self.cycle_forcing = 0 46 46 … … 56 56 md.checkmessage("timestepping.final_time should be larger than timestepping.start_time") 57 57 md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1) 58 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing s', 'numel', [1], 'values', [0, 1])58 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1]) 59 59 md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1]) 60 60 … … 69 69 WriteData(fid, prefix, 'object', self, 'fieldname', 'final_time', 'format', 'Double', 'scale', yts) 70 70 WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', yts) 71 WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing s', 'format', 'Boolean')71 WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing', 'format', 'Boolean') 72 72 WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean') 73 73 WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts) -
issm/trunk-jpl/src/m/classes/timesteppingadaptive.m
r26195 r26208 11 11 time_step_max = 0.; 12 12 cfl_coefficient = 0.; 13 interp_forcing s= 1;13 interp_forcing = 1; 14 14 cycle_forcing = 1; 15 15 coupling_time = 0.; … … 38 38 self.cfl_coefficient=0.5; 39 39 40 %should we interpolate forcing sbetween timesteps?41 self.interp_forcing s=1;40 %should we interpolate forcing between timesteps? 41 self.interp_forcing=1; 42 42 self.cycle_forcing=0; 43 43 end % }}} … … 49 49 md = checkfield(md,'fieldname','timestepping.time_step_max','numel',[1],'>=',md.timestepping.time_step_min,'NaN',1,'Inf',1); 50 50 md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1); 51 md = checkfield(md,'fieldname','timestepping.interp_forcing s','numel',[1],'values',[0 1]);51 md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]); 52 52 md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]); 53 53 md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1); … … 65 65 fielddisplay(self,'time_step_max',['maximum length of time step [' unit ']']); 66 66 fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition'); 67 fielddisplay(self,'interp_forcing s','interpolate in time between requested forcing values ? (0 or 1)');67 fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)'); 68 68 fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)'); 69 69 fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']); … … 79 79 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_max','format','Double','scale',scale); 80 80 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double'); 81 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing s','format','Boolean');81 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing','format','Boolean'); 82 82 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean'); 83 83 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale); … … 90 90 writejsdouble(fid,[modelname '.timesteppingadaptive.time_step_max'],self.time_step_max); 91 91 writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient); 92 writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing s'],self.interp_forcings);92 writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing'],self.interp_forcing); 93 93 writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing); 94 94 writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max); -
issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
r26195 r26208 19 19 self.time_step_max = 0. 20 20 self.cfl_coefficient = 0. 21 self.interp_forcing s= 121 self.interp_forcing = 1 22 22 self.cycle_forcing = 0 23 23 self.coupling_time = 0. … … 32 32 self.start_time = old.start_time 33 33 self.final_time = old.final_time 34 self.interp_forcing s = old.interp_forcings34 self.interp_forcing = old.interp_forcing 35 35 self.cycle_forcing = old.cycle_forcing 36 36 self.coupling_time = old.coupling_time … … 47 47 string = "%s\n%s" % (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]")) 48 48 string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition")) 49 string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing s", "interpolate in time between requested forcing values ? (0 or 1)"))49 string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)")) 50 50 string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)")) 51 51 string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]")) … … 61 61 #time adaptation? 62 62 self.cfl_coefficient = 0.5 63 #should we interpolate forcing sbetween timesteps?64 self.interp_forcing s= 163 #should we interpolate forcing between timesteps? 64 self.interp_forcing = 1 65 65 self.cycle_forcing = 0 66 66 return self … … 75 75 if self.final_time - self.start_time < 0: 76 76 md.checkmessage("timestepping.final_time should be larger than timestepping.start_time") 77 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing s', 'numel', [1], 'values', [0, 1])77 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1]) 78 78 md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1]) 79 79 md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1) … … 90 90 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_max', 'format', 'Double', 'scale', yts) 91 91 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double') 92 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing s', 'format', 'Boolean')92 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing', 'format', 'Boolean') 93 93 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean') 94 94 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts) -
issm/trunk-jpl/test/NightlyRun/test240.m
r24584 r26208 39 39 md.settings.output_frequency=1; 40 40 md.timestepping.final_time=2; 41 md.timestepping.interp_forcing s=0;41 md.timestepping.interp_forcing=0; 42 42 43 43 md=setflowequation(md,'SSA','all'); -
issm/trunk-jpl/test/NightlyRun/test240.py
r24584 r26208 45 45 md.settings.output_frequency = 1 46 46 md.timestepping.final_time = 2 47 md.timestepping.interp_forcing s= 047 md.timestepping.interp_forcing = 0 48 48 49 49 md = setflowequation(md, 'SSA', 'all') -
issm/trunk-jpl/test/NightlyRun/test241.m
r21056 r26208 9 9 md.settings.output_frequency=1; 10 10 md.timestepping.final_time=4.; 11 md.timestepping.interp_forcing s=0;11 md.timestepping.interp_forcing=0; 12 12 13 13 %Set up transient -
issm/trunk-jpl/test/NightlyRun/test241.py
r24384 r26208 19 19 md.settings.output_frequency = 1 20 20 md.timestepping.final_time = 4. 21 md.timestepping.interp_forcing s= False21 md.timestepping.interp_forcing = False 22 22 23 23 #Set up transient -
issm/trunk-jpl/test/NightlyRun/test242.m
r21056 r26208 10 10 md.settings.output_frequency=1; 11 11 md.timestepping.final_time=4; 12 md.timestepping.interp_forcing s=0;12 md.timestepping.interp_forcing=0; 13 13 14 14 %Set up transient -
issm/trunk-jpl/test/NightlyRun/test242.py
r24384 r26208 20 20 md.settings.output_frequency = 1 21 21 md.timestepping.final_time = 4. 22 md.timestepping.interp_forcing s= False22 md.timestepping.interp_forcing = False 23 23 24 24 #Set up transient -
issm/trunk-jpl/test/NightlyRun/test243.m
r25853 r26208 42 42 md.timestepping.final_time=1966; 43 43 md.timestepping.time_step=1/365.0; 44 md.timestepping.interp_forcing s=0;44 md.timestepping.interp_forcing=0; 45 45 46 46 %Run transient -
issm/trunk-jpl/test/NightlyRun/test243.py
r25853 r26208 60 60 md.timestepping.final_time = 1966. 61 61 md.timestepping.time_step = 1.0 / 365 62 md.timestepping.interp_forcing s= 0.62 md.timestepping.interp_forcing = 0. 63 63 64 64 #Run transient -
issm/trunk-jpl/test/NightlyRun/test244.m
r25005 r26208 40 40 md.timestepping.final_time=1965.75; 41 41 md.timestepping.time_step=1/365.0; 42 md.timestepping.interp_forcing s=0;42 md.timestepping.interp_forcing=0; 43 43 44 44 %dakota version -
issm/trunk-jpl/test/NightlyRun/test244.py
r25709 r26208 60 60 md.timestepping.final_time = 1965.75 61 61 md.timestepping.time_step = 1. / 365.0 62 md.timestepping.interp_forcing s= 0.62 md.timestepping.interp_forcing = 0. 63 63 64 64 #dakota version -
issm/trunk-jpl/test/NightlyRun/test247.m
r25374 r26208 99 99 md.settings.output_frequency=1; 100 100 md.timestepping.final_time=2; 101 md.timestepping.interp_forcing s=0;101 md.timestepping.interp_forcing=0; 102 102 103 103 %md.transient.requested_outputs={'default','IceVolumeAboveFloatation','IceVolume','TemperaturePDD','SmbMonthlytemperatures','SmbPrecipitation'}; -
issm/trunk-jpl/test/NightlyRun/test247.py
r25385 r26208 113 113 md.settings.output_frequency = 1 114 114 md.timestepping.final_time = 2 115 md.timestepping.interp_forcing s= 0115 md.timestepping.interp_forcing = 0 116 116 117 117 md.transient.requested_outputs = ['default', 'IceVolumeAboveFloatation','IceVolume','TemperaturePDD'] -
issm/trunk-jpl/test/NightlyRun/test252.m
r25853 r26208 35 35 md.smb.pAir=md.smb.pAir(:,1:365*8); 36 36 37 md. smb.isclimatology=1;37 md.timestepping.cycle_forcing=1; 38 38 39 39 %smb settings … … 49 49 md.timestepping.final_time=1966.6; 50 50 md.timestepping.time_step=1/365.0; 51 md.timestepping.interp_forcing s=0;51 md.timestepping.interp_forcing=0; 52 52 53 53 %Run transient -
issm/trunk-jpl/test/NightlyRun/test252.py
r25853 r26208 51 51 md.smb.pAir = md.smb.pAir[:, 0:365 * 8] 52 52 53 md. smb.isclimatology= 153 md.timestepping.cycle_forcing = 1 54 54 55 55 #smb settings … … 65 65 md.timestepping.final_time = 1966.6 66 66 md.timestepping.time_step = 1. / 365.0 67 md.timestepping.interp_forcing s= 0.67 md.timestepping.interp_forcing = 0. 68 68 69 69 #Run transient -
issm/trunk-jpl/test/NightlyRun/test253.m
r24760 r26208 37 37 md.smb.pAir=md.smb.pAir(:,1:365*8); 38 38 39 md. smb.isclimatology=1;39 md.timestepping.cycle_forcing=1; 40 40 md.smb.isconstrainsurfaceT=1; 41 41 … … 52 52 md.timestepping.final_time=1966.6; 53 53 md.timestepping.time_step=1/365.0; 54 md.timestepping.interp_forcing s=0;54 md.timestepping.interp_forcing=0; 55 55 56 56 %Run transient -
issm/trunk-jpl/test/NightlyRun/test253.py
r25709 r26208 51 51 md.smb.pAir = md.smb.pAir[:, 0:365 * 8] 52 52 53 md. smb.isclimatology= 153 md.timestepping.cycle_forcing = 1 54 54 md.smb.isconstrainsurfaceT = 1 55 55 … … 66 66 md.timestepping.final_time = 1966.6 67 67 md.timestepping.time_step = 1. / 365.0 68 md.timestepping.interp_forcing s= 0.68 md.timestepping.interp_forcing = 0. 69 69 70 70 #Run transient -
issm/trunk-jpl/test/NightlyRun/test292.m
r22341 r26208 7 7 md.basalforcings=linearbasalforcings(md.basalforcings); 8 8 md.basalforcings.deepwater_melting_rate=[50 100;0 5]; 9 md.timestepping.interp_forcing s=0;9 md.timestepping.interp_forcing=0; 10 10 md=solve(md,'Transient'); 11 11 -
issm/trunk-jpl/test/NightlyRun/test292.py
r23793 r26208 19 19 md.basalforcings = linearbasalforcings(md.basalforcings) 20 20 md.basalforcings.deepwater_melting_rate = np.array([[50., 100.], [0., 5.]]) 21 md.timestepping.interp_forcing s= 021 md.timestepping.interp_forcing = 0 22 22 md = solve(md, 'Transient') 23 23 -
issm/trunk-jpl/test/NightlyRun/test3201.m
r25470 r26208 10 10 11 11 %Create real time series for B 12 md.timestepping.interp_forcing s= 0;12 md.timestepping.interp_forcing = 0; 13 13 md.timestepping.final_time = 2*md.timestepping.time_step; 14 14 md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofelements,2); -
issm/trunk-jpl/test/NightlyRun/test3202.m
r25416 r26208 10 10 11 11 %Create real time series for B 12 md.timestepping.interp_forcing s= 0;12 md.timestepping.interp_forcing = 0; 13 13 md.timestepping.final_time = 2*md.timestepping.time_step; 14 14 md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofvertices,2); -
issm/trunk-jpl/test/NightlyRun/test3480.m
r25565 r26208 38 38 'datatime',0.75); 39 39 40 md.timestepping.interp_forcing s=0;40 md.timestepping.interp_forcing=0; 41 41 md.timestepping.time_step=0.5; 42 42 md.timestepping.final_time=1.5; -
issm/trunk-jpl/test/NightlyRun/test3481.m
r24862 r26208 45 45 'datatime',0.75); 46 46 47 md.timestepping.interp_forcing s=1;47 md.timestepping.interp_forcing=1; 48 48 md.timestepping.time_step=0.5; 49 49 md.timestepping.final_time=1.5; -
issm/trunk-jpl/test/NightlyRun/test352.m
r23816 r26208 16 16 md.transient.isthermal=0; 17 17 18 md. smb.isclimatology=1;18 md.timestepping.cycle_forcing=1; 19 19 20 20 md=solve(md,'Transient'); -
issm/trunk-jpl/test/NightlyRun/test352.py
r24384 r26208 26 26 md.transient.isthermal = False 27 27 28 md. smb.isclimatology= 128 md.timestepping.cycle_forcing = 1 29 29 30 30 md = solve(md, 'Transient') -
issm/trunk-jpl/test/NightlyRun/test353.m
r23816 r26208 20 20 md.transient.isthermal=0; 21 21 22 md. smb.isclimatology=1;22 md.timestepping.cycle_forcing=1; 23 23 24 24 md=solve(md,'Transient'); -
issm/trunk-jpl/test/NightlyRun/test353.py
r24384 r26208 30 30 md.transient.isthermal = False 31 31 32 md. smb.isclimatology= 132 md.timestepping.cycle_forcing = 1 33 33 34 34 md = solve(md, 'Transient') -
issm/trunk-jpl/test/NightlyRun/test354.m
r23816 r26208 21 21 md.transient.isthermal=0; 22 22 23 md. smb.isclimatology=1;23 md.timestepping.cycle_forcing=1; 24 24 25 25 md=solve(md,'Transient'); -
issm/trunk-jpl/test/NightlyRun/test354.py
r24384 r26208 31 31 md.transient.isthermal = False 32 32 33 md. smb.isclimatology= 133 md.timestepping.cycle_forcing = 1 34 34 35 35 md = solve(md, 'Transient')
Note:
See TracChangeset
for help on using the changeset viewer.