Changeset 27925
- Timestamp:
- 09/27/23 13:18:06 (18 months ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp
r27913 r27925 146 146 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum); 147 147 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sheet_conductivity",HydrologySheetConductivityEnum); 148 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.omega",HydrologyOmegaEnum); 149 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sheet_alpha",HydrologySheetAlphaEnum); 150 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sheet_beta",HydrologySheetBetaEnum); 148 151 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.channel_conductivity",HydrologyChannelConductivityEnum); 149 152 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum); … … 183 186 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.melt_flag",HydrologyMeltFlagEnum)); 184 187 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_sheet_width",HydrologyChannelSheetWidthEnum)); 188 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_alpha",HydrologyChannelAlphaEnum)); 189 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_beta",HydrologyChannelBetaEnum)); 185 190 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.islaminar",HydrologyIsLaminarEnum)); 186 191 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.englacial_void_ratio",HydrologyEnglacialVoidRatioEnum)); … … 217 222 /*Intermediaries */ 218 223 IssmDouble Jdet,dphi[3],h,k; 224 IssmDouble alpha,beta,omega,h_r; 219 225 IssmDouble A,B,n,phi_old,phi,phi_0,H,b,v1; 220 226 IssmDouble* xyz_list = NULL; 221 227 222 228 /*Hard coded coefficients*/ 223 const IssmPDouble alpha= 5./4.;224 const IssmPDouble beta= 3./2.;229 const IssmPDouble ALPHA = 5./4.; 230 const IssmPDouble BETA = 3./2.; 225 231 226 232 /*Fetch number of nodes and dof for this finite element*/ … … 236 242 237 243 /*Get all inputs and parameters*/ 244 int islaminar; 245 element->FindParam(&islaminar,HydrologyIsLaminarEnum); 238 246 IssmDouble dt = element->FindParam(TimesteppingTimeStepEnum); 239 247 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); 248 IssmDouble mu_water = element->FindParam(MaterialsMuWaterEnum); 240 249 IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum); 241 250 IssmDouble g = element->FindParam(ConstantsGEnum); 242 251 IssmDouble e_v = element->FindParam(HydrologyEnglacialVoidRatioEnum); 252 Input* hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input); 243 253 Input* k_input = element->GetInput(HydrologySheetConductivityEnum);_assert_(k_input); 254 Input* alpha_input = element->GetInput(HydrologySheetAlphaEnum);_assert_(alpha_input); 255 Input* beta_input = element->GetInput(HydrologySheetBetaEnum);_assert_(beta_input); 256 Input* omega_input = element->GetInput(HydrologyOmegaEnum);_assert_(omega_input); 244 257 Input* phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input); 245 258 Input* h_input = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input); … … 261 274 h_input->GetInputValue(&h,gauss); 262 275 k_input->GetInputValue(&k,gauss); 276 omega_input->GetInputValue(&omega,gauss); 277 alpha_input->GetInputValue(&alpha,gauss); 278 beta_input->GetInputValue(&beta,gauss); 263 279 B_input->GetInputValue(&B,gauss); 264 280 n_input->GetInputValue(&n,gauss); 281 hr_input->GetInputValue(&h_r,gauss); 265 282 b_input->GetInputValue(&b,gauss); 266 283 H_input->GetInputValue(&H,gauss); … … 268 285 /*Hard code B*/ 269 286 B = Cuffey(273.15-2); 270 287 271 288 /*Get norm of gradient of hydraulic potential and make sure it is >0*/ 272 289 IssmDouble normgradphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]); 273 290 if(normgradphi < AEPS) normgradphi = AEPS; 274 275 IssmDouble coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.); 291 292 /*Use Laminar flow if specified*/ 293 IssmDouble nu = mu_water/rho_water; 294 IssmDouble coeff; 295 if(islaminar==1 && omega>=AEPS){ 296 IssmDouble hratio = fabs(h/h_r); 297 IssmDouble coarg = 1. + 4.*pow(hratio,3-2*alpha)*omega*k*pow(h,3)*normgradphi/nu; 298 coeff = nu/2./omega*pow(hratio,2*alpha-3) * (-1 + pow(coarg, 0.5))/normgradphi; 299 } 300 else { 301 /*If omega is zero, use standard model, otherwise transition model*/ 302 coeff = k*pow(h,ALPHA)*pow(normgradphi,BETA-2.); 303 } 276 304 277 305 /*Diffusive term*/ … … 440 468 /*Intermediaries*/ 441 469 IssmDouble dphi[3],h,k,phi; 470 IssmDouble alpha,beta,omega,h_r; 442 471 IssmDouble oceanLS,iceLS; 443 472 IssmDouble* xyz_list = NULL; 444 473 445 474 /*Hard coded coefficients*/ 446 const IssmPDouble alpha= 5./4.;447 const IssmPDouble beta= 3./2.;475 const IssmPDouble ALPHA = 5./4.; 476 const IssmPDouble BETA = 3./2.; 448 477 449 478 /*Fetch number vertices for this element*/ … … 466 495 467 496 /*Retrieve all inputs and parameters*/ 497 int islaminar; 498 element->FindParam(&islaminar,HydrologyIsLaminarEnum); 468 499 element->GetVerticesCoordinates(&xyz_list); 500 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); 501 IssmDouble mu_water = element->FindParam(MaterialsMuWaterEnum); 469 502 Input *k_input = element->GetInput(HydrologySheetConductivityEnum); _assert_(k_input); 503 Input *omega_input = element->GetInput(HydrologyOmegaEnum); _assert_(omega_input); 504 Input *alpha_input = element->GetInput(HydrologySheetAlphaEnum); _assert_(alpha_input); 505 Input *beta_input = element->GetInput(HydrologySheetBetaEnum); _assert_(bet_input); 470 506 Input *phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input); 507 Input *hr_input = element->GetInput(HydrologyBumpHeightEnum); _assert_(hr_input); 471 508 Input *h_input = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input); 472 509 Input *oceanLS_input = element->GetInput(MaskOceanLevelsetEnum); _assert_(oceanLS_input); … … 482 519 phi_input->GetInputValue(&phi,gauss); 483 520 h_input->GetInputValue(&h,gauss); 521 hr_input->GetInputValue(&h_r,gauss); 484 522 k_input->GetInputValue(&k,gauss); 523 omega_input->GetInputValue(&omega,gauss); 524 alpha_input->GetInputValue(&alpha,gauss); 525 beta_input->GetInputValue(&beta,gauss); 485 526 oceanLS_input->GetInputValue(&oceanLS,gauss); 486 527 iceLS_input->GetInputValue(&iceLS,gauss); … … 496 537 IssmDouble normgradphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]); 497 538 if(normgradphi < AEPS) normgradphi = AEPS; 498 499 IssmDouble coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.)/max(AEPS,h); // divide by h to get speed instead of discharge 539 540 /*If omega is zero, use standard model, otherwise transition model*/ 541 IssmDouble nu = mu_water/rho_water; 542 IssmDouble coeff; 543 if(islaminar==1 && omega>=AEPS){ 544 IssmDouble hratio = fabs(h/h_r); 545 IssmDouble coarg = 1. + 4.*pow(hratio,3-2*alpha)*omega*k*pow(h,3)*normgradphi/nu; 546 coeff = nu/2./omega*pow(hratio,2*alpha-3) * (-1 + pow(coarg, 0.5))/normgradphi/max(AEPS,h); // divide by h to get speed instead of discharge 547 coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.)/max(AEPS,h); // divide by h to get speed instead of discharge 548 } 549 else { 550 coeff = k*pow(h,ALPHA)*pow(normgradphi,BETA-2.)/max(AEPS,h); // divide by h to get speed instead of discharge 551 } 552 500 553 501 554 vx[iv] = -coeff*dphi[0]; -
issm/trunk-jpl/src/c/classes/Loads/Channel.cpp
r27545 r27925 367 367 IssmDouble Jdet,v1,qc,fFactor,Afactor,Bfactor,Xifactor; 368 368 IssmDouble A,B,n,phi_old,phi,phi_0,dPw,ks,kc,Ngrad; 369 IssmDouble alpha_s,beta_s,omega,h_r; 369 370 IssmDouble H,h,b,dphi[2],dphids,dphimds,db[2],dbds; 370 371 IssmDouble xyz_list[NUMVERTICES][3]; … … 382 383 GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3); 383 384 385 int islaminar; 386 element->FindParam(&islaminar,HydrologyIsLaminarEnum); 384 387 IssmDouble L = element->FindParam(MaterialsLatentheatEnum); 388 IssmDouble mu_water = element->FindParam(MaterialsMuWaterEnum); 385 389 IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum); 386 390 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); … … 388 392 IssmDouble lc = element->FindParam(HydrologyChannelSheetWidthEnum); 389 393 IssmDouble c_t = element->FindParam(HydrologyPressureMeltCoefficientEnum); 394 IssmDouble alpha_c = element->FindParam(HydrologyChannelAlphaEnum); 395 IssmDouble beta_c = element->FindParam(HydrologyChannelBetaEnum); 390 396 391 397 Input* h_input = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input); … … 396 402 Input* ks_input = element->GetInput(HydrologySheetConductivityEnum); _assert_(ks_input); 397 403 Input* kc_input = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input); 404 Input* omega_input = element->GetInput(HydrologyOmegaEnum); _assert_(ks_input); 405 Input* alpha_s_input= element->GetInput(HydrologySheetAlphaEnum); _assert_(alpha_s_input); 406 Input* beta_s_input = element->GetInput(HydrologySheetBetaEnum); _assert_(beta_s_input); 407 Input* hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input); 398 408 Input* phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input); 399 409 … … 422 432 ks_input->GetInputValue(&ks,gauss); 423 433 kc_input->GetInputValue(&kc,gauss); 434 alpha_s_input->GetInputValue(&alpha_s,gauss); 435 beta_s_input->GetInputValue(&beta_s,gauss); 436 omega_input->GetInputValue(&omega,gauss); 437 hr_input->GetInputValue(&h_r,gauss); 424 438 B_input->GetInputValue(&B,gauss); 425 439 n_input->GetInputValue(&n,gauss); … … 436 450 Ngrad = fabs(dphids); 437 451 if(Ngrad<AEPS) Ngrad = AEPS; 438 439 /*Compute the effective conductivity Kc = k h^alpha |grad Phi|^{beta-2} (same for sheet)*/ 440 IssmDouble Kc = kc * pow(this->S,ALPHA_C) * pow(Ngrad,BETA_C-2.); 441 IssmDouble Ks = ks * pow(h ,ALPHA_S) * pow(Ngrad,BETA_S-2.); 452 453 /*Compute the effective conductivity Kc = k h^alpha |grad Phi|^{beta-2} (same for sheet) and use laminar if specified*/ 454 IssmDouble Kc; 455 IssmDouble Ks; 456 IssmDouble nu = mu_water/rho_water; 457 if(islaminar==1 && omega>=AEPS){ 458 IssmDouble hratio = h/h_r; 459 IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*Ngrad/nu; 460 Ks = nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))/Ngrad; 461 Kc = kc * pow(this->S,alpha_c) * pow(Ngrad,beta_c-2.); 462 } 463 else { 464 Ks = ks*pow(h,ALPHA_S)*pow(Ngrad,BETA_S-2.); 465 Kc = kc * pow(this->S,ALPHA_C) * pow(Ngrad,BETA_C-2.); 466 } 442 467 443 468 /*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc*/ … … 504 529 IssmDouble A,B,n,phi_old,phi,phi_0,dphimds,dphi[2]; 505 530 IssmDouble H,h,b,db[2],dphids,qc,dPw,ks,kc,Ngrad; 531 IssmDouble alpha_s,beta_s,omega,h_r; 506 532 IssmDouble xyz_list[NUMVERTICES][3]; 507 533 IssmDouble xyz_list_tria[3][3]; … … 516 542 GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3); 517 543 544 int islaminar; 545 element->FindParam(&islaminar,HydrologyIsLaminarEnum); 518 546 IssmDouble L = element->FindParam(MaterialsLatentheatEnum); 547 IssmDouble mu_water = element->FindParam(MaterialsMuWaterEnum); 519 548 IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum); 520 549 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); … … 530 559 Input* ks_input = element->GetInput(HydrologySheetConductivityEnum); _assert_(ks_input); 531 560 Input* kc_input = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input); 561 Input* omega_input = element->GetInput(HydrologyOmegaEnum); _assert_(omega_input); 532 562 Input* phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input); 563 Input* alpha_s_input= element->GetInput(HydrologySheetAlphaEnum);_assert_(alpha_s_input); 564 Input* beta_s_input = element->GetInput(HydrologySheetBetaEnum);_assert_(beta_s_input); 565 Input* hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input); 533 566 534 567 /*Get tangent vector*/ … … 552 585 ks_input->GetInputValue(&ks,gauss); 553 586 kc_input->GetInputValue(&kc,gauss); 587 omega_input->GetInputValue(&omega,gauss); 554 588 B_input->GetInputValue(&B,gauss); 555 589 n_input->GetInputValue(&n,gauss); … … 557 591 b_input->GetInputValue(&b,gauss); 558 592 H_input->GetInputValue(&H,gauss); 593 alpha_s_input->GetInputValue(&alpha_s,gauss); 594 beta_s_input->GetInputValue(&beta_s,gauss); 595 hr_input->GetInputValue(&h_r,gauss); 559 596 560 597 /*Hard code B*/ … … 568 605 if(Ngrad<AEPS) Ngrad = AEPS; 569 606 570 /*Compute the effective conductivity Ks = k h^alpha |grad Phi|^{beta-2} (same for sheet)*/ 571 IssmDouble Ks = ks * pow(h,ALPHA_S) * pow(Ngrad,BETA_S-2.); 607 608 /*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc, use laminar if specified*/ 609 IssmDouble Ks; 610 if (islaminar==1 && omega>=AEPS){ 611 IssmDouble hratio = h/h_r; 612 IssmDouble nu = mu_water/rho_water; 613 IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*Ngrad/nu; 614 Ks = nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))/Ngrad; 615 } 616 else { 617 Ks = ks * pow(h,ALPHA_S) * pow(Ngrad,BETA_S-2.); 618 } 572 619 573 620 /*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc*/ … … 636 683 /*Intermediaries */ 637 684 IssmDouble A,B,n,phi,phi_0,ks,kc,Ngrad; 685 IssmDouble alpha_s,beta_s,omega,h_r; 638 686 IssmDouble H,h,b,dphi[2],dphids,dphimds,db[2],dbds; 639 687 IssmDouble xyz_list[NUMVERTICES][3]; … … 644 692 GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3); 645 693 694 int islaminar; 695 element->FindParam(&islaminar,HydrologyIsLaminarEnum); 646 696 IssmDouble L = element->FindParam(MaterialsLatentheatEnum); 647 697 IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum); 648 698 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); 699 IssmDouble mu_water = element->FindParam(MaterialsMuWaterEnum); 649 700 IssmDouble g = element->FindParam(ConstantsGEnum); 650 701 IssmDouble lc = element->FindParam(HydrologyChannelSheetWidthEnum); 651 702 IssmDouble c_t = element->FindParam(HydrologyPressureMeltCoefficientEnum); 652 703 IssmDouble dt = element->FindParam(TimesteppingTimeStepEnum); 704 IssmDouble alpha_c = element->FindParam(HydrologyChannelAlphaEnum); 705 IssmDouble beta_c = element->FindParam(HydrologyChannelBetaEnum); 653 706 654 707 Input* h_input = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input); … … 659 712 Input* ks_input = element->GetInput(HydrologySheetConductivityEnum); _assert_(ks_input); 660 713 Input* kc_input = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input); 714 Input* omega_input = element->GetInput(HydrologyOmegaEnum); _assert_(omega_input); 661 715 Input* phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input); 716 Input* alpha_s_input= element->GetInput(HydrologySheetAlphaEnum);_assert_(alpha_s_input); 717 Input* beta_s_input = element->GetInput(HydrologySheetBetaEnum); _assert_(beta_s_input); 718 Input* hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input); 662 719 663 720 /*Get tangent vector*/ … … 674 731 ks_input->GetInputValue(&ks,gauss); 675 732 kc_input->GetInputValue(&kc,gauss); 733 omega_input->GetInputValue(&omega,gauss); 676 734 B_input->GetInputValue(&B,gauss); 677 735 n_input->GetInputValue(&n,gauss); … … 679 737 b_input->GetInputDerivativeValue(&db[0],&xyz_list_tria[0][0],gauss); 680 738 H_input->GetInputValue(&H,gauss); 739 hr_input->GetInputValue(&h_r,gauss); 740 alpha_s_input->GetInputValue(&alpha_s,gauss); 741 beta_s_input->GetInputValue(&beta_s,gauss); 742 681 743 682 744 /*Hard code B*/ … … 693 755 IssmDouble dPw = dphids - dphimds; 694 756 695 /*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc*/ 696 IssmDouble qc = - ks * pow(h,ALPHA_S) * pow(Ngrad,BETA_S-2.) * dphids; 757 /*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc, use laminar if necessary*/ 758 IssmDouble qc; 759 if (islaminar==1 && omega>=AEPS){ 760 IssmDouble hratio = h/h_r; 761 IssmDouble nu = mu_water/rho_water; 762 IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*fabs(Ngrad)/nu; 763 qc = -nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))*dphids/Ngrad; 764 } 765 else { 766 qc = - ks * pow(h,ALPHA_S) * pow(Ngrad,BETA_S-2.) * dphids; 767 } 697 768 698 769 /*Ice rate factor*/ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r27920 r27925 261 261 syn keyword cConstant HydrologyarmaTimestepEnum 262 262 syn keyword cConstant HydrologyAveragingEnum 263 syn keyword cConstant HydrologyChannelAlphaEnum 264 syn keyword cConstant HydrologyChannelBetaEnum 263 265 syn keyword cConstant HydrologyCavitySpacingEnum 264 266 syn keyword cConstant HydrologyChannelSheetWidthEnum … … 896 898 syn keyword cConstant HydrologyMoulinInputEnum 897 899 syn keyword cConstant HydrologyNeumannfluxEnum 900 syn keyword cConstant HydrologyOmegaEnum 898 901 syn keyword cConstant HydrologyReynoldsEnum 902 syn keyword cConstant HydrologySheetAlphaEnum 903 syn keyword cConstant HydrologySheetBetaEnum 899 904 syn keyword cConstant HydrologySheetConductivityEnum 900 905 syn keyword cConstant HydrologySheetThicknessEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27920 r27925 255 255 HydrologyarmaTimestepEnum, 256 256 HydrologyAveragingEnum, 257 HydrologyChannelAlphaEnum, 258 HydrologyChannelBetaEnum, 257 259 HydrologyCavitySpacingEnum, 258 260 HydrologyChannelSheetWidthEnum, … … 892 894 HydrologyMoulinInputEnum, 893 895 HydrologyNeumannfluxEnum, 896 HydrologyOmegaEnum, 894 897 HydrologyReynoldsEnum, 898 HydrologySheetAlphaEnum, 899 HydrologySheetBetaEnum, 895 900 HydrologySheetConductivityEnum, 896 901 HydrologySheetThicknessEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r27920 r27925 263 263 case HydrologyarmaTimestepEnum : return "HydrologyarmaTimestep"; 264 264 case HydrologyAveragingEnum : return "HydrologyAveraging"; 265 case HydrologyChannelAlphaEnum : return "HydrologyChannelAlpha"; 266 case HydrologyChannelBetaEnum : return "HydrologyChannelBeta"; 265 267 case HydrologyCavitySpacingEnum : return "HydrologyCavitySpacing"; 266 268 case HydrologyChannelSheetWidthEnum : return "HydrologyChannelSheetWidth"; … … 898 900 case HydrologyMoulinInputEnum : return "HydrologyMoulinInput"; 899 901 case HydrologyNeumannfluxEnum : return "HydrologyNeumannflux"; 902 case HydrologyOmegaEnum : return "HydrologyOmega"; 900 903 case HydrologyReynoldsEnum : return "HydrologyReynolds"; 904 case HydrologySheetAlphaEnum : return "HydrologySheetAlpha"; 905 case HydrologySheetBetaEnum : return "HydrologySheetBeta"; 901 906 case HydrologySheetConductivityEnum : return "HydrologySheetConductivity"; 902 907 case HydrologySheetThicknessEnum : return "HydrologySheetThickness"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r27920 r27925 254 254 syn keyword juliaConstC HydrologyarmaTimestepEnum 255 255 syn keyword juliaConstC HydrologyAveragingEnum 256 syn keyword juliaConstC HydrologyChannelAlphaEnum 257 syn keyword juliaConstC HydrologyChannelBetaEnum 256 258 syn keyword juliaConstC HydrologyCavitySpacingEnum 257 259 syn keyword juliaConstC HydrologyChannelSheetWidthEnum … … 889 891 syn keyword juliaConstC HydrologyMoulinInputEnum 890 892 syn keyword juliaConstC HydrologyNeumannfluxEnum 893 syn keyword juliaConstC HydrologyOmegaEnum 891 894 syn keyword juliaConstC HydrologyReynoldsEnum 895 syn keyword juliaConstC HydrologySheetAlphaEnum 896 syn keyword juliaConstC HydrologySheetBetaEnum 892 897 syn keyword juliaConstC HydrologySheetConductivityEnum 893 898 syn keyword juliaConstC HydrologySheetThicknessEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r27920 r27925 269 269 else if (strcmp(name,"HydrologyarmaTimestep")==0) return HydrologyarmaTimestepEnum; 270 270 else if (strcmp(name,"HydrologyAveraging")==0) return HydrologyAveragingEnum; 271 else if (strcmp(name,"HydrologyChannelAlpha")==0) return HydrologyChannelAlphaEnum; 272 else if (strcmp(name,"HydrologyChannelBeta")==0) return HydrologyChannelBetaEnum; 271 273 else if (strcmp(name,"HydrologyCavitySpacing")==0) return HydrologyCavitySpacingEnum; 272 274 else if (strcmp(name,"HydrologyChannelSheetWidth")==0) return HydrologyChannelSheetWidthEnum; … … 381 383 else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum; 382 384 else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum; 383 else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;384 else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum; 388 if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum; 389 else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum; 390 else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum; 389 391 else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum; 390 392 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; … … 504 506 else if (strcmp(name,"SolidearthSettingsSealevelLoading")==0) return SolidearthSettingsSealevelLoadingEnum; 505 507 else if (strcmp(name,"SolidearthSettingsGRD")==0) return SolidearthSettingsGRDEnum; 506 else if (strcmp(name,"SolidearthSettingsRunFrequency")==0) return SolidearthSettingsRunFrequencyEnum;507 else if (strcmp(name,"SolidearthSettingsTimeAcc")==0) return SolidearthSettingsTimeAccEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SolidearthSettingsHoriz")==0) return SolidearthSettingsHorizEnum; 511 if (strcmp(name,"SolidearthSettingsRunFrequency")==0) return SolidearthSettingsRunFrequencyEnum; 512 else if (strcmp(name,"SolidearthSettingsTimeAcc")==0) return SolidearthSettingsTimeAccEnum; 513 else if (strcmp(name,"SolidearthSettingsHoriz")==0) return SolidearthSettingsHorizEnum; 512 514 else if (strcmp(name,"SolidearthSettingsMaxiter")==0) return SolidearthSettingsMaxiterEnum; 513 515 else if (strcmp(name,"SolidearthSettingsGrdOcean")==0) return SolidearthSettingsGrdOceanEnum; … … 627 629 else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum; 628 630 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; 629 else if (strcmp(name,"SmbSWgrad")==0) return SmbSWgradEnum;630 else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum; 634 if (strcmp(name,"SmbSWgrad")==0) return SmbSWgradEnum; 635 else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum; 636 else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum; 635 637 else if (strcmp(name,"SmbTcIdx")==0) return SmbTcIdxEnum; 636 638 else if (strcmp(name,"SmbTeThresh")==0) return SmbTeThreshEnum; … … 750 752 else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum; 751 753 else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum; 752 else if (strcmp(name,"BasalforcingsSpatialUpperwaterElevation")==0) return BasalforcingsSpatialUpperwaterElevationEnum;753 else if (strcmp(name,"BasalforcingsSpatialUpperwaterMeltingRate")==0) return BasalforcingsSpatialUpperwaterMeltingRateEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"BasalforcingsIsmip6BasinId")==0) return BasalforcingsIsmip6BasinIdEnum; 757 if (strcmp(name,"BasalforcingsSpatialUpperwaterElevation")==0) return BasalforcingsSpatialUpperwaterElevationEnum; 758 else if (strcmp(name,"BasalforcingsSpatialUpperwaterMeltingRate")==0) return BasalforcingsSpatialUpperwaterMeltingRateEnum; 759 else if (strcmp(name,"BasalforcingsIsmip6BasinId")==0) return BasalforcingsIsmip6BasinIdEnum; 758 760 else if (strcmp(name,"BasalforcingsIsmip6Tf")==0) return BasalforcingsIsmip6TfEnum; 759 761 else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; … … 873 875 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; 874 876 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 875 else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;876 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum; 880 if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 881 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 882 else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum; 881 883 else if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum; 882 884 else if (strcmp(name,"Frictionf")==0) return FrictionfEnum; … … 919 921 else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum; 920 922 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 923 else if (strcmp(name,"HydrologyOmega")==0) return HydrologyOmegaEnum; 921 924 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 925 else if (strcmp(name,"HydrologySheetAlpha")==0) return HydrologySheetAlphaEnum; 926 else if (strcmp(name,"HydrologySheetBeta")==0) return HydrologySheetBetaEnum; 922 927 else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 923 928 else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum; … … 993 998 else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum; 994 999 else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum; 995 else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum; 996 1004 else if (strcmp(name,"Sealevel")==0) return SealevelEnum; 997 1005 else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum; 998 1006 else if (strcmp(name,"SatGraviGRD")==0) return SatGraviGRDEnum; 999 1007 else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum; 1008 else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum; 1004 1009 else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum; 1005 1010 else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum; … … 1116 1121 else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum; 1117 1122 else if (strcmp(name,"SmbEC")==0) return SmbECEnum; 1118 else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum; 1119 1127 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 1120 1128 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 1121 1129 else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum; 1122 1130 else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum; 1131 else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum; 1127 1132 else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum; 1128 1133 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum; … … 1239 1244 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 1240 1245 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 1241 else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum; 1242 1250 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 1243 1251 else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum; 1244 1252 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 1245 1253 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum; 1254 else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum; 1250 1255 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 1251 1256 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; … … 1362 1367 else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum; 1363 1368 else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum; 1364 else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum; 1365 1373 else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 1366 1374 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 1367 1375 else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 1368 1376 else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum; 1377 else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum; 1373 1378 else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum; 1374 1379 else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum; … … 1485 1490 else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum; 1486 1491 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum; 1487 else if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum; 1492 else stage=13; 1493 } 1494 if(stage==13){ 1495 if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum; 1488 1496 else if (strcmp(name,"DebrisSolution")==0) return DebrisSolutionEnum; 1489 1497 else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum; … … 1491 1499 else if (strcmp(name,"Dense")==0) return DenseEnum; 1492 1500 else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum; 1493 else stage=13; 1494 } 1495 if(stage==13){ 1496 if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; 1501 else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; 1497 1502 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum; 1498 1503 else if (strcmp(name,"Divergence")==0) return DivergenceEnum; … … 1608 1613 else if (strcmp(name,"Loads")==0) return LoadsEnum; 1609 1614 else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 1610 else if (strcmp(name,"LoveHf")==0) return LoveHfEnum; 1615 else stage=14; 1616 } 1617 if(stage==14){ 1618 if (strcmp(name,"LoveHf")==0) return LoveHfEnum; 1611 1619 else if (strcmp(name,"LoveHt")==0) return LoveHtEnum; 1612 1620 else if (strcmp(name,"LoveKernelsImag")==0) return LoveKernelsImagEnum; … … 1614 1622 else if (strcmp(name,"LoveKf")==0) return LoveKfEnum; 1615 1623 else if (strcmp(name,"LoveKt")==0) return LoveKtEnum; 1616 else stage=14; 1617 } 1618 if(stage==14){ 1619 if (strcmp(name,"LoveLf")==0) return LoveLfEnum; 1624 else if (strcmp(name,"LoveLf")==0) return LoveLfEnum; 1620 1625 else if (strcmp(name,"LoveLt")==0) return LoveLtEnum; 1621 1626 else if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum; … … 1731 1736 else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum; 1732 1737 else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum; 1733 else if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum; 1738 else stage=15; 1739 } 1740 if(stage==15){ 1741 if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum; 1734 1742 else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum; 1735 1743 else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum; … … 1737 1745 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 1738 1746 else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum; 1739 else stage=15; 1740 } 1741 if(stage==15){ 1742 if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum; 1747 else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum; 1743 1748 else if (strcmp(name,"SealevelchangePolarMotionX")==0) return SealevelchangePolarMotionXEnum; 1744 1749 else if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum; -
issm/trunk-jpl/src/m/classes/hydrologyglads.m
r27913 r27925 11 11 cavity_spacing = 0.; 12 12 bump_height = NaN; 13 omega = 0; % TH 14 sheet_alpha = 5.0/4.0; % TH 15 sheet_beta = 3.0/2.0; % TH 13 16 14 17 %Channels … … 16 19 channel_conductivity = NaN; 17 20 channel_sheet_width = 0.; 18 islaminar = 0; 21 channel_alpha = 5.0/4.0; % TH 22 channel_beta = 3.0/2.0; % TH 19 23 20 24 %Other … … 25 29 requested_outputs = {}; 26 30 melt_flag = 0; 31 islaminar = 0; 27 32 end 28 33 methods … … 46 51 self.pressure_melt_coefficient = 7.5e-8; %K/Pa (See table 1 in Erder et al. 2013) 47 52 self.cavity_spacing = 2.; %m 53 self.omega = 1./2000.; % TH 48 54 49 55 %Channel parameters … … 51 57 self.channel_conductivity = 5.e-2; %Dow's default, Table uses 0.1 52 58 self.channel_sheet_width = 2.; %m 53 self.islaminar = 0; %by default use GlaDS default turbulent code54 59 55 %Other 60 %Otherself.omega = 1./2000.; % TH 56 61 self.englacial_void_ratio = 1.e-5;% Dow's default, Table from Werder et al. uses 1e-3; 57 62 self.requested_outputs={'default'}; 58 63 self.melt_flag=0; 64 self.islaminar = 0; %by default use GlaDS default turbulent code 59 65 end % }}} 60 66 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 70 76 md = checkfield(md,'fieldname','hydrology.cavity_spacing','numel',[1],'>',0); 71 77 md = checkfield(md,'fieldname','hydrology.bump_height','size',[md.mesh.numberofvertices 1],'>=',0,'NaN',1,'Inf',1); 78 md = checkfield(md,'fieldname','hydrology.omega', 'numel', [1], '>=', 0); % TH 79 md = checkfield(md,'fieldname','hydrology.sheet_alpha', 'numel', [1], '>', 0); % TH 80 md = checkfield(md,'fieldname','hydrology.sheet_beta', 'numel', [1], '>', 0); % TH 72 81 73 82 %Channels … … 75 84 md = checkfield(md,'fieldname','hydrology.channel_conductivity','size',[md.mesh.numberofvertices 1],'>=',0,'NaN',1,'Inf',1); 76 85 md = checkfield(md,'fieldname','hydrology.channel_sheet_width','numel',[1],'>=',0); 77 md = checkfield(md,'fieldname','hydrology.islaminar','numel',[1],'values',[0 1]); 86 md = checkfield(md,'fieldname','hydrology.channel_alpha', 'numel', [1], '>', 0); % TH 87 md = checkfield(md,'fieldname','hydrology.channel_beta', 'numel', [1], '>', 0); % TH 78 88 79 89 %Other … … 84 94 md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1); 85 95 md = checkfield(md,'fieldname','hydrology.melt_flag','numel',[1],'values',[0 1 2]); 96 md = checkfield(md,'fieldname','hydrology.islaminar','numel',[1],'values',[0 1]); 86 97 if self.melt_flag==1 || self.melt_flag==2 87 98 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1); … … 93 104 fielddisplay(self,'pressure_melt_coefficient','Pressure melt coefficient (c_t) [K Pa^-1]'); 94 105 fielddisplay(self,'sheet_conductivity','sheet conductivity (k) [m^(7/4) kg^(-1/2)]'); 106 fielddisplay(self,'sheet_alpha','First sheet-flow exponent (alpha_s) []'); % TH 107 fielddisplay(self,'sheet_beta','Second sheet-flow exponent (beta_s) []'); % TH 95 108 fielddisplay(self,'cavity_spacing','cavity spacing (l_r) [m]'); 96 109 fielddisplay(self,'bump_height','typical bump height (h_r) [m]'); 110 fielddisplay(self,'omega','transition parameter (omega) []'); % TH 97 111 disp(sprintf(' CHANNELS')); 98 112 fielddisplay(self,'ischannels','Do we allow for channels? 1: yes, 0: no'); 99 113 fielddisplay(self,'channel_conductivity','channel conductivity (k_c) [m^(3/2) kg^(-1/2)]'); 114 fielddisplay(self,'channel_alpha','First channel-flow exponent (alpha_s) []'); % TH 115 fielddisplay(self,'channel_beta','Second channel-flow exponent (beta_s) []'); % TH 100 116 fielddisplay(self,'channel_sheet_width','channel sheet width [m]'); 101 fielddisplay(self,'islaminar','do we use laminar [1] or turbulent physics [0, default]');102 117 disp(sprintf(' OTHER')); 103 118 fielddisplay(self,'spcphi','Hydraulic potential Dirichlet constraints [Pa]'); … … 107 122 fielddisplay(self,'requested_outputs','additional outputs requested'); 108 123 fielddisplay(self,'melt_flag','User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate'); 124 fielddisplay(self,'islaminar','do we use laminar [1] or turbulent physics [0, default]'); 109 125 end % }}} 110 126 function marshall(self,prefix,md,fid) % {{{ … … 120 136 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','cavity_spacing','format','Double'); 121 137 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',1); 138 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','omega','format','Double'); % TH 139 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_alpha','format','Double'); % TH 140 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_beta','format','Double'); % TH 122 141 123 142 %Channels … … 125 144 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_conductivity','format','DoubleMat','mattype',1); 126 145 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_sheet_width','format','Double'); 127 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','islaminar','format','Boolean'); 146 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_alpha','format','Double'); % TH 147 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_beta','format','Double'); % TH 128 148 129 149 %Others … … 133 153 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','englacial_void_ratio','format','Double'); 134 154 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','melt_flag','format','Integer'); 155 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','islaminar','format','Integer'); 135 156 outputs = self.requested_outputs; 136 157 pos = find(ismember(outputs,'default')); -
issm/trunk-jpl/src/m/classes/hydrologyglads.py
r27913 r27925 19 19 self.cavity_spacing = 0. 20 20 self.bump_height = np.nan 21 self.omega = 0.; #TH 22 self.sheet_alpha = 5.0/4.0; # TH 23 self.sheet_beta = 3.0/2.0; # TH 21 24 22 25 # Channels … … 24 27 self.channel_conductivity = np.nan 25 28 self.channel_sheet_width = 0. 26 self.islaminar = 0 29 self.channel_alpha = 5.0/4.0; # TH 30 self.channel_beta = 3.0/2.0; # TH 27 31 28 32 # Other … … 33 37 self.requested_outputs = [] 34 38 self.melt_flag = 0 39 self.islaminar = 0 35 40 36 41 nargs = len(args) … … 49 54 s += '{}\n'.format(fielddisplay(self, 'pressure_melt_coefficient', 'Pressure melt coefficient (c_t) [K Pa^ - 1]')) 50 55 s += '{}\n'.format(fielddisplay(self, 'sheet_conductivity', 'sheet conductivity (k) [m^(7 / 4) kg^(- 1 / 2)]')) 56 s += '{}\n'.format(fielddisplay(self, 'sheet_alpha', 'First sheet-flow exponent (alpha_s) []')) #TH 57 s += '{}\n'.format(fielddisplay(self, 'sheet_beta', 'Second sheet-flow exponent (beta_s) []')) #TH 51 58 s += '{}\n'.format(fielddisplay(self, 'cavity_spacing', 'cavity spacing (l_r) [m]')) 52 59 s += '{}\n'.format(fielddisplay(self, 'bump_height', 'typical bump height (h_r) [m]')) 60 s += '{}\n'.format(fielddisplay(self, 'omega', 'transition parameter (omega) []')) #TH 53 61 s = '\t--CHANNELS\n' 54 62 s += '{}\n'.format(fielddisplay(self, 'ischannels', 'Do we allow for channels? 1: yes, 0: no')) 55 63 s += '{}\n'.format(fielddisplay(self, 'channel_conductivity', 'channel conductivity (k_c) [m^(3 / 2) kg^(- 1 / 2)]')) 56 64 s += '{}\n'.format(fielddisplay(self, 'channel_sheet_width', 'channel sheet width [m]')) 57 s += '{}\n'.format(fielddisplay(self, 'islaminar','do we use laminar [1] or turbulent physics [0, default]')) 65 s += '{}\n'.format(fielddisplay(self, 'channel_alpha', 'First channel-flow exponent (alpha_s) []')) #TH 66 s += '{}\n'.format(fielddisplay(self, 'channel_beta', 'Second channel-flow exponent (beta_s) []')) #TH 58 67 s = '\t--OTHER\n' 59 68 s += '{}\n'.format(fielddisplay(self, 'spcphi', 'Hydraulic potential Dirichlet constraints [Pa]')) … … 63 72 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 64 73 s += '{}\n'.format(fielddisplay(self, 'melt_flag', 'User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate')) 74 s += '{}\n'.format(fielddisplay(self, 'islaminar','do we use laminar [1] or turbulent physics [0, default]')) 65 75 return string 66 76 # }}} … … 86 96 self.pressure_melt_coefficient = 7.5e-8 #K / Pa (See table 1 in Erder et al. 2013) 87 97 self.cavity_spacing = 2. #m 98 self.omega = 1./2000.; #TH 88 99 89 100 # Channel parameters … … 97 108 self.requested_outputs = ['default'] 98 109 self.melt_flag = 0 110 self.islaminar = 0 #by default use turbulent physics 99 111 100 112 return self … … 111 123 md = checkfield(md, 'fieldname', 'hydrology.cavity_spacing', 'numel', [1], '>', 0) 112 124 md = checkfield(md, 'fieldname', 'hydrology.bump_height', 'size', [md.mesh.numberofvertices], '>=', 0, 'np.nan', 1, 'Inf', 1) 125 md = checkfield(md,'fieldname','hydrology.omega', 'numel', [1], '>=', 0); # TH 126 md = checkfield(md,'fieldname','hydrology.sheet_alpha', 'numel', [1], '>', 0); # TH 127 md = checkfield(md,'fieldname','hydrology.sheet_beta', 'numel', [1], '>', 0); # TH 113 128 114 129 # Channels … … 116 131 md = checkfield(md, 'fieldname', 'hydrology.channel_conductivity', 'size', [md.mesh.numberofvertices], '>', 0) 117 132 md = checkfield(md, 'fieldname', 'hydrology.channel_sheet_width', 'numel', [1], '>=', 0) 118 md = checkfield(md, 'fieldname', 'hydrology.islaminar', 'numel', [1], 'values', [0, 1]) 133 md = checkfield(md,'fieldname','hydrology.channel_alpha', 'numel', [1], '>', 0); # TH 134 md = checkfield(md,'fieldname','hydrology.channel_beta', 'numel', [1], '>', 0); # TH 119 135 120 136 # Other … … 125 141 md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1) 126 142 md = checkfield(md, 'fieldname', 'hydrology.melt_flag', 'numel', [1], 'values', [0, 1]) 143 md = checkfield(md, 'fieldname', 'hydrology.islaminar', 'numel', [1], 'values', [0, 1]) 127 144 if self.melt_flag == 1 or self.melt_flag == 2: 128 145 md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) … … 139 156 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'cavity_spacing', 'format', 'Double') 140 157 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 1) 158 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','omega','format','Double'); # TH 159 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_alpha','format','Double'); # TH 160 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_beta','format','Double'); # TH 141 161 142 162 # Channels … … 144 164 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_conductivity', 'format', 'DoubleMat', 'mattype', 1) 145 165 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_sheet_width', 'format', 'Double') 146 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'islaminar', 'format', 'Boolean') 166 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_alpha','format','Double'); # TH 167 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_beta','format','Double'); # TH 147 168 148 169 # Others … … 152 173 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'englacial_void_ratio', 'format', 'Double') 153 174 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'melt_flag', 'format', 'Integer') 175 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'islaminar', 'format', 'Integer') 154 176 155 177 outputs = self.requested_outputs
Note:
See TracChangeset
for help on using the changeset viewer.