Changeset 19479
- Timestamp:
- 08/04/15 16:22:56 (10 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 7 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r19386 r19479 828 828 iomodel->FetchDataToInput(elements,TemperatureEnum); 829 829 break; 830 case 7: 831 iomodel->FetchDataToInput(elements,FrictionCoefficientEnum); 832 iomodel->FetchDataToInput(elements,FrictionCoefficientcoulombEnum); 833 iomodel->FetchDataToInput(elements,FrictionPEnum); 834 iomodel->FetchDataToInput(elements,FrictionQEnum); 835 break; 830 836 default: 831 837 _error_("not supported"); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r19395 r19479 9 9 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!" 10 10 #endif 11 #include <math.h> 11 12 #include <stdio.h> 12 13 #include <string.h> … … 1648 1649 } 1649 1650 /*}}}*/ 1651 void Element::MismipFloatingiceMeltingRate(){/*{{{*/ 1652 1653 int numvertices = this->GetNumberOfVertices(); 1654 IssmDouble meltratefactor,thresholdthickness,upperdepthmelt; 1655 IssmDouble* base = xNew<IssmDouble>(numvertices); 1656 IssmDouble* bed = xNew<IssmDouble>(numvertices); 1657 IssmDouble* values = xNew<IssmDouble>(numvertices); 1658 1659 parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum); 1660 parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum); 1661 parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum); 1662 1663 this->GetInputListOnVertices(base,BaseEnum); 1664 this->GetInputListOnVertices(bed,BedEnum); 1665 for(int i=0;i<numvertices;i++){ 1666 if(base[i]<upperdepthmelt) values[i]=0; 1667 else values[i]=meltratefactor*(tanh(base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-bed[i]); 1668 } 1669 1670 this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum); 1671 xDelete<IssmDouble>(base); 1672 xDelete<IssmDouble>(bed); 1673 xDelete<IssmDouble>(values); 1674 1675 }/*}}}*/ 1650 1676 ElementMatrix* Element::NewElementMatrix(int approximation_enum){/*{{{*/ 1651 1677 return new ElementMatrix(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r19476 r19479 123 123 void MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses); 124 124 void MigrateGroundingLine(IssmDouble* sheet_ungrounding); 125 void MismipFloatingiceMeltingRate(); 125 126 ElementMatrix* NewElementMatrix(int approximation_enum=NoneApproximationEnum); 126 127 ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum); -
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r19373 r19479 211 211 GetAlpha2WeertmanTemp(palpha2,gauss); 212 212 break; 213 case 7: 214 GetAlpha2Coulomb(palpha2,gauss); 215 break; 213 216 default: 214 217 _error_("not supported"); 215 218 } 216 219 220 }/*}}}*/ 221 void Friction::GetAlpha2Coulomb(IssmDouble* palpha2, Gauss* gauss){/*{{{*/ 222 223 /*This routine calculates the basal friction coefficient 224 alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p**/ 225 226 /*diverse: */ 227 IssmDouble r,s; 228 IssmDouble drag_p, drag_q; 229 IssmDouble Neff; 230 IssmDouble thickness,base,bed,floatation_thickness; 231 IssmDouble vx,vy,vz,vmag; 232 IssmDouble drag_coefficient,drag_coefficient_coulomb; 233 IssmDouble alpha2,alpha2_coulomb; 234 235 /*Recover parameters: */ 236 element->GetInputValue(&drag_p,FrictionPEnum); 237 element->GetInputValue(&drag_q,FrictionQEnum); 238 element->GetInputValue(&thickness, gauss,ThicknessEnum); 239 element->GetInputValue(&base, gauss,BaseEnum); 240 element->GetInputValue(&bed, gauss,BedEnum); 241 element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum); 242 element->GetInputValue(&drag_coefficient_coulomb, gauss,FrictionCoefficientcoulombEnum); 243 IssmDouble rho_freshwater = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum); 244 IssmDouble rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum); 245 IssmDouble rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum); 246 IssmDouble gravity = element->GetMaterialParameter(ConstantsGEnum); 247 248 //compute r and q coefficients: */ 249 r=drag_q/drag_p; 250 s=1./drag_p; 251 252 //From base and thickness, compute effective pressure when drag is viscous: 253 Neff=gravity*(rho_ice*thickness+rho_water*base); 254 if(Neff<0)Neff=0; 255 256 switch(dim){ 257 case 1: 258 element->GetInputValue(&vx,gauss,VxEnum); 259 vmag=sqrt(vx*vx); 260 break; 261 case 2: 262 element->GetInputValue(&vx,gauss,VxEnum); 263 element->GetInputValue(&vy,gauss,VyEnum); 264 vmag=sqrt(vx*vx+vy*vy); 265 break; 266 case 3: 267 element->GetInputValue(&vx,gauss,VxEnum); 268 element->GetInputValue(&vy,gauss,VyEnum); 269 element->GetInputValue(&vz,gauss,VzEnum); 270 vmag=sqrt(vx*vx+vy*vy+vz*vz); 271 break; 272 default: 273 _error_("not supported"); 274 } 275 276 /*Check to prevent dividing by zero if vmag==0*/ 277 if(vmag==0. && (s-1.)<0.) alpha2=0.; 278 else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.)); 279 280 floatation_thickness=0; 281 if(bed<0) floatation_thickness=-rho_freshwater/rho_ice*bed; 282 if(vmag==0.) alpha2_coulomb=0.; 283 else alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_water*gravity*(thickness-floatation_thickness)/vmag; 284 285 if(alpha2_coulomb<alpha2) alpha2=alpha2_coulomb; 286 287 _assert_(!xIsNan<IssmDouble>(alpha2)); 288 289 /*Assign output pointers:*/ 290 *palpha2=alpha2; 217 291 }/*}}}*/ 218 292 void Friction::GetAlpha2Hydro(IssmDouble* palpha2, Gauss* gauss){/*{{{*/ -
issm/trunk-jpl/src/c/classes/Loads/Friction.h
r18992 r19479 33 33 void GetAlphaHydroComplement(IssmDouble* alpha_complement,Gauss* gauss); 34 34 void GetAlpha2(IssmDouble* palpha2,Gauss* gauss); 35 void GetAlpha2Coulomb(IssmDouble* palpha2,Gauss* gauss); 35 36 void GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss); 36 37 void GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss); -
issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
r18521 r19479 24 24 LinearFloatingiceMeltingRatex(femmodel); 25 25 break; 26 case MismipFloatingMeltRateEnum: 27 if(VerboseSolution())_printf_(" call Mismip Floating melting rate module\n"); 28 MismipFloatingiceMeltingRatex(femmodel); 29 break; 26 30 default: 27 31 _error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet"); … … 38 42 39 43 }/*}}}*/ 44 void MismipFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/ 45 46 for(int i=0;i<femmodel->elements->Size();i++){ 47 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 48 element->MismipFloatingiceMeltingRate(); 49 } 50 51 }/*}}}*/ -
issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h
r18093 r19479 11 11 void FloatingiceMeltingRatex(FemModel* femmodel); 12 12 void LinearFloatingiceMeltingRatex(FemModel* femmodel); 13 void MismipFloatingiceMeltingRatex(FemModel* femmodel); 13 14 14 15 #endif /* _FloatingiceMeltingRatex_H*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r19333 r19479 182 182 parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUpperwaterElevationEnum)); 183 183 break; 184 case MismipFloatingMeltRateEnum: 185 parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsMeltrateFactorEnum)); 186 parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsThresholdThicknessEnum)); 187 parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUpperdepthMeltEnum)); 188 break; 184 189 default: 185 190 _error_("Basal forcing model "<<EnumToStringx(smb_model)<<" not supported yet"); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r19381 r19479 48 48 BasalforcingsDeepwaterElevationEnum, 49 49 BasalforcingsUpperwaterElevationEnum, 50 BasalforcingsMeltrateFactorEnum, 51 BasalforcingsThresholdThicknessEnum, 52 BasalforcingsUpperdepthMeltEnum, 50 53 FloatingMeltRateEnum, 51 54 LinearFloatingMeltRateEnum, 55 MismipFloatingMeltRateEnum, 52 56 BedEnum, 53 57 BaseEnum, … … 93 97 FrictionAsEnum, 94 98 FrictionCoefficientEnum, 99 FrictionCoefficientcoulombEnum, 95 100 FrictionPEnum, 96 101 FrictionQEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r19381 r19479 54 54 case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation"; 55 55 case BasalforcingsUpperwaterElevationEnum : return "BasalforcingsUpperwaterElevation"; 56 case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor"; 57 case BasalforcingsThresholdThicknessEnum : return "BasalforcingsThresholdThickness"; 58 case BasalforcingsUpperdepthMeltEnum : return "BasalforcingsUpperdepthMelt"; 56 59 case FloatingMeltRateEnum : return "FloatingMeltRate"; 57 60 case LinearFloatingMeltRateEnum : return "LinearFloatingMeltRate"; 61 case MismipFloatingMeltRateEnum : return "MismipFloatingMeltRate"; 58 62 case BedEnum : return "Bed"; 59 63 case BaseEnum : return "Base"; … … 99 103 case FrictionAsEnum : return "FrictionAs"; 100 104 case FrictionCoefficientEnum : return "FrictionCoefficient"; 105 case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb"; 101 106 case FrictionPEnum : return "FrictionP"; 102 107 case FrictionQEnum : return "FrictionQ"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r19381 r19479 54 54 else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum; 55 55 else if (strcmp(name,"BasalforcingsUpperwaterElevation")==0) return BasalforcingsUpperwaterElevationEnum; 56 else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum; 57 else if (strcmp(name,"BasalforcingsThresholdThickness")==0) return BasalforcingsThresholdThicknessEnum; 58 else if (strcmp(name,"BasalforcingsUpperdepthMelt")==0) return BasalforcingsUpperdepthMeltEnum; 56 59 else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum; 57 60 else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum; 61 else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum; 58 62 else if (strcmp(name,"Bed")==0) return BedEnum; 59 63 else if (strcmp(name,"Base")==0) return BaseEnum; … … 99 103 else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum; 100 104 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum; 105 else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum; 101 106 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; 102 107 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; … … 132 137 else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum; 133 138 else if (strcmp(name,"HydrologydcWaterCompressibility")==0) return HydrologydcWaterCompressibilityEnum; 134 else if (strcmp(name,"HydrologydcSpceplHead")==0) return HydrologydcSpceplHeadEnum; 139 else stage=2; 140 } 141 if(stage==2){ 142 if (strcmp(name,"HydrologydcSpceplHead")==0) return HydrologydcSpceplHeadEnum; 135 143 else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum; 136 144 else if (strcmp(name,"HydrologydcMaskEplactiveElt")==0) return HydrologydcMaskEplactiveEltEnum; 137 145 else if (strcmp(name,"HydrologydcEplCompressibility")==0) return HydrologydcEplCompressibilityEnum; 138 146 else if (strcmp(name,"HydrologydcEplPorosity")==0) return HydrologydcEplPorosityEnum; 139 else stage=2; 140 } 141 if(stage==2){ 142 if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum; 147 else if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum; 143 148 else if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum; 144 149 else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum; … … 255 260 else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum; 256 261 else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum; 257 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 258 266 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 259 267 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; 260 268 else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum; 261 269 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 270 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 266 271 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum; 267 272 else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum; … … 378 383 else if (strcmp(name,"SurfaceforcingsDpermil")==0) return SurfaceforcingsDpermilEnum; 379 384 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 380 else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; 381 389 else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum; 382 390 else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; 383 391 else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; 384 392 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; 393 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; 389 394 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 390 395 else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum; … … 501 506 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 502 507 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 503 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 504 512 else if (strcmp(name,"Matice")==0) return MaticeEnum; 505 513 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 506 514 else if (strcmp(name,"Matpar")==0) return MatparEnum; 507 515 else if (strcmp(name,"Node")==0) return NodeEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 516 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 512 517 else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum; 513 518 else if (strcmp(name,"Param")==0) return ParamEnum; … … 624 629 else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum; 625 630 else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum; 626 else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum; 627 635 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 628 636 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 629 637 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 630 638 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 639 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 635 640 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 636 641 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; … … 747 752 else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum; 748 753 else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum; 749 else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 750 758 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 751 759 else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 752 760 else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum; 753 761 else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum; 762 else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum; 758 763 else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum; 759 764 else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum; … … 870 875 else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum; 871 876 else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum; 872 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 873 881 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 874 882 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 875 883 else if (strcmp(name,"Regular")==0) return RegularEnum; 876 884 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"Separate")==0) return SeparateEnum; 885 else if (strcmp(name,"Separate")==0) return SeparateEnum; 881 886 else if (strcmp(name,"Sset")==0) return SsetEnum; 882 887 else if (strcmp(name,"Verbose")==0) return VerboseEnum; -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r19381 r19479 46 46 def BasalforcingsDeepwaterElevationEnum(): return StringToEnum("BasalforcingsDeepwaterElevation")[0] 47 47 def BasalforcingsUpperwaterElevationEnum(): return StringToEnum("BasalforcingsUpperwaterElevation")[0] 48 def BasalforcingsMeltrateFactorEnum(): return StringToEnum("BasalforcingsMeltrateFactor")[0] 49 def BasalforcingsThresholdThicknessEnum(): return StringToEnum("BasalforcingsThresholdThickness")[0] 50 def BasalforcingsUpperdepthMeltEnum(): return StringToEnum("BasalforcingsUpperdepthMelt")[0] 48 51 def FloatingMeltRateEnum(): return StringToEnum("FloatingMeltRate")[0] 49 52 def LinearFloatingMeltRateEnum(): return StringToEnum("LinearFloatingMeltRate")[0] 53 def MismipFloatingMeltRateEnum(): return StringToEnum("MismipFloatingMeltRate")[0] 50 54 def BedEnum(): return StringToEnum("Bed")[0] 51 55 def BaseEnum(): return StringToEnum("Base")[0] … … 91 95 def FrictionAsEnum(): return StringToEnum("FrictionAs")[0] 92 96 def FrictionCoefficientEnum(): return StringToEnum("FrictionCoefficient")[0] 97 def FrictionCoefficientcoulombEnum(): return StringToEnum("FrictionCoefficientcoulomb")[0] 93 98 def FrictionPEnum(): return StringToEnum("FrictionP")[0] 94 99 def FrictionQEnum(): return StringToEnum("FrictionQ")[0]
Note:
See TracChangeset
for help on using the changeset viewer.