Changeset 27508
- Timestamp:
- 01/10/23 15:49:52 (2 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r27494 r27508 400 400 case 14: 401 401 GetAlpha2RegCoulomb(palpha2,gauss); 402 break; 403 case 15: 404 GetAlpha2RegCoulomb2(palpha2,gauss); 402 405 break; 403 406 default: … … 1015 1018 *palpha2=alpha2; 1016 1019 }/*}}}*/ 1020 void Friction::GetAlpha2RegCoulomb2(IssmDouble* palpha2, Gauss* gauss){/*{{{*/ 1021 1022 /*This routine calculates the basal friction coefficient 1023 * 1024 * C N |u_b|^(1/m-1) 1025 * alpha2= __________________________ 1026 * (|u_b| + K N^m )^(1/m) 1027 * 1028 * */ 1029 1030 /*diverse: */ 1031 IssmDouble C,K,m,alpha2; 1032 1033 /*Recover parameters: */ 1034 element->GetInputValue(&C,gauss,FrictionCEnum); 1035 element->GetInputValue(&m,gauss,FrictionMEnum); 1036 element->GetInputValue(&K,gauss,FrictionKEnum); 1037 1038 /*Get velocity magnitude*/ 1039 IssmDouble ub = VelMag(gauss); 1040 IssmDouble Neff = EffectivePressure(gauss); 1041 1042 /*Check to prevent dividing by zero if vmag==0*/ 1043 if(ub==0. && (m-1.)<0) { 1044 alpha2=0.; 1045 } 1046 else { 1047 /*Compute alpha^2*/ 1048 alpha2= (C*pow(ub,1./m-1.)) * Neff / pow((ub+pow(K*Neff,m)),1./m); 1049 } 1050 1051 /*Assign output pointers:*/ 1052 *palpha2=alpha2; 1053 }/*}}}*/ 1017 1054 IssmDouble Friction::EffectivePressure(Gauss* gauss){/*{{{*/ 1018 1055 /*Get effective pressure as a function of flag */ … … 1300 1337 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 1301 1338 break; 1339 case 15: 1340 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 1341 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 1342 iomodel->FetchDataToInput(inputs,elements,"md.friction.K",FrictionKEnum); 1343 break; 1302 1344 default: 1303 1345 _error_("friction law "<< frictionlaw <<" not supported"); … … 1376 1418 parameters->AddObject(iomodel->CopyConstantObject("md.friction.u0",FrictionU0Enum)); 1377 1419 break; 1420 case 15: 1421 parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); 1422 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 1423 break; 1378 1424 default: _error_("Friction law "<<frictionlaw<<" not implemented yet"); 1379 1425 } -
issm/trunk-jpl/src/c/classes/Loads/Friction.h
r27476 r27508 57 57 void GetAlpha2Schoof(IssmDouble* palpha2,Gauss* gauss); 58 58 void GetAlpha2RegCoulomb(IssmDouble* palpha2,Gauss* gauss); 59 void GetAlpha2RegCoulomb2(IssmDouble* palpha2,Gauss* gauss); 59 60 void GetAlpha2Tsai(IssmDouble* palpha2,Gauss* gauss); 60 61 -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r27498 r27508 819 819 syn keyword cConstant FrictionCoefficientcoulombEnum 820 820 syn keyword cConstant FrictionEffectivePressureEnum 821 syn keyword cConstant FrictionKEnum 821 822 syn keyword cConstant FrictionMEnum 822 823 syn keyword cConstant FrictionPEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27498 r27508 815 815 FrictionCoefficientcoulombEnum, 816 816 FrictionEffectivePressureEnum, 817 FrictionKEnum, 817 818 FrictionMEnum, 818 819 FrictionPEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r27498 r27508 821 821 case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb"; 822 822 case FrictionEffectivePressureEnum : return "FrictionEffectivePressure"; 823 case FrictionKEnum : return "FrictionK"; 823 824 case FrictionMEnum : return "FrictionM"; 824 825 case FrictionPEnum : return "FrictionP"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r27498 r27508 812 812 syn keyword juliaConstC FrictionCoefficientcoulombEnum 813 813 syn keyword juliaConstC FrictionEffectivePressureEnum 814 syn keyword juliaConstC FrictionKEnum 814 815 syn keyword juliaConstC FrictionMEnum 815 816 syn keyword juliaConstC FrictionPEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r27498 r27508 839 839 else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum; 840 840 else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum; 841 else if (strcmp(name,"FrictionK")==0) return FrictionKEnum; 841 842 else if (strcmp(name,"FrictionM")==0) return FrictionMEnum; 842 843 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; … … 874 875 else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum; 875 876 else if (strcmp(name,"HydrologydcMaskThawedElt")==0) return HydrologydcMaskThawedEltEnum; 876 else if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum; 880 if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum; 881 else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum; 881 882 else if (strcmp(name,"HydrologyDrainageRate")==0) return HydrologyDrainageRateEnum; 882 883 else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum; … … 997 998 else if (strcmp(name,"BslcIce")==0) return BslcIceEnum; 998 999 else if (strcmp(name,"BslcHydro")==0) return BslcHydroEnum; 999 else if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"BslcRate")==0) return BslcRateEnum; 1003 if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum; 1004 else if (strcmp(name,"BslcRate")==0) return BslcRateEnum; 1004 1005 else if (strcmp(name,"Gmtslc")==0) return GmtslcEnum; 1005 1006 else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum; … … 1120 1121 else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum; 1121 1122 else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum; 1122 else if (strcmp(name,"SmbRain")==0) return SmbRainEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"SmbRe")==0) return SmbReEnum; 1126 if (strcmp(name,"SmbRain")==0) return SmbRainEnum; 1127 else if (strcmp(name,"SmbRe")==0) return SmbReEnum; 1127 1128 else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum; 1128 1129 else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum; … … 1243 1244 else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum; 1244 1245 else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum; 1245 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"Waterheight")==0) return WaterheightEnum; 1249 if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 1250 else if (strcmp(name,"Waterheight")==0) return WaterheightEnum; 1250 1251 else if (strcmp(name,"WaterPressureArmaPerturbation")==0) return WaterPressureArmaPerturbationEnum; 1251 1252 else if (strcmp(name,"WaterPressureValuesAutoregression")==0) return WaterPressureValuesAutoregressionEnum; … … 1366 1367 else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum; 1367 1368 else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum; 1368 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 1372 if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 1373 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 1373 1374 else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum; 1374 1375 else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; … … 1489 1490 else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; 1490 1491 else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum; 1491 else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"Gset")==0) return GsetEnum; 1495 if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum; 1496 else if (strcmp(name,"Gset")==0) return GsetEnum; 1496 1497 else if (strcmp(name,"Gsl")==0) return GslEnum; 1497 1498 else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum; … … 1612 1613 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 1613 1614 else if (strcmp(name,"None")==0) return NoneEnum; 1614 else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;1615 1615 else stage=14; 1616 1616 } 1617 1617 if(stage==14){ 1618 if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1618 if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum; 1619 else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1619 1620 else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum; 1620 1621 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; … … 1735 1736 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 1736 1737 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 1737 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;1738 1738 else stage=15; 1739 1739 } 1740 1740 if(stage==15){ 1741 if (strcmp(name,"Tria")==0) return TriaEnum; 1741 if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 1742 else if (strcmp(name,"Tria")==0) return TriaEnum; 1742 1743 else if (strcmp(name,"TriaInput")==0) return TriaInputEnum; 1743 1744 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
Note:
See TracChangeset
for help on using the changeset viewer.