Changeset 18511
- Timestamp:
- 09/12/14 09:21:30 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r18064 r18511 48 48 case 2: 49 49 GetAlpha2Weertman(palpha2,gauss); 50 break; 51 default: 50 case 3: 51 GetAlpha2Hydro(palpha2,gauss); 52 break; 53 default: 52 54 _error_("not supported"); 53 55 } … … 155 157 *palpha2=alpha2; 156 158 }/*}}}*/ 159 void Friction::GetAlpha2Hydro(IssmDouble* palpha2, Gauss* gauss){/*{{{*/ 160 161 /*This routine calculates the basal friction coefficient 162 Based on Gagliardini 2007, needs a good effective pressure computation 163 alpha2= C*Neff*[|vel|/{(C^n*Neff^n*As)*(1+alpha*Chi^q)}]^(1/n) with 164 -Chi=|vel|/(C^n*Neff^n*As) 165 -alpha=(q-1)^(q-1)/q^q **/ 166 167 /*diverse: */ 168 IssmDouble q_exp; 169 IssmDouble C_param; 170 IssmDouble As; 171 172 IssmDouble Neff; 173 IssmDouble n; 174 175 IssmDouble alpha; 176 IssmDouble Chi; 177 178 IssmDouble vx,vy,vz,vmag; 179 IssmDouble alpha2; 180 181 /*Recover parameters: */ 182 element->GetInputValue(&q_exp,FrictionQEnum); 183 element->GetInputValue(&C_param,FrictionCEnum); 184 element->GetInputValue(&As,FrictionAsEnum); 185 186 element->GetInputValue(&Neff,gauss,EffectivePressureEnum); 187 element->GetInputValue(&n,gauss,MaterialsRheologyNEnum); 188 189 if(Neff<0)Neff=0; 190 191 switch(dim){ 192 case 1: 193 element->GetInputValue(&vx,gauss,VxEnum); 194 vmag=sqrt(vx*vx); 195 break; 196 case 2: 197 element->GetInputValue(&vx,gauss,VxEnum); 198 element->GetInputValue(&vy,gauss,VyEnum); 199 vmag=sqrt(vx*vx+vy*vy); 200 break; 201 case 3: 202 element->GetInputValue(&vx,gauss,VxEnum); 203 element->GetInputValue(&vy,gauss,VyEnum); 204 element->GetInputValue(&vz,gauss,VzEnum); 205 vmag=sqrt(vx*vx+vy*vy+vz*vz); 206 break; 207 default: 208 _error_("not supported"); 209 } 210 211 //compute alpha and Chi coefficients: */ 212 alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp); 213 Chi=vmag/(pow(C_param,n)*pow(Neff,n)*As); 214 215 alpha2=C_param*Neff*pow((Chi/(1+alpha*pow(Chi,q_exp))),1./n); 216 _assert_(!xIsNan<IssmDouble>(alpha2)); 217 218 /*Assign output pointers:*/ 219 *palpha2=alpha2; 220 }/*}}}*/ 157 221 void Friction::GetAlphaComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/ 158 222 -
issm/trunk-jpl/src/c/classes/Loads/Friction.h
r17952 r18511 32 32 void GetAlpha2Viscous(IssmDouble* palpha2,Gauss* gauss); 33 33 void GetAlpha2Weertman(IssmDouble* palpha2,Gauss* gauss); 34 void GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss); 34 35 void GetAlphaComplement(IssmDouble* alpha_complement,Gauss* gauss); 35 36 }; -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18504 r18511 88 88 FlowequationFeFSEnum, 89 89 FlowequationVertexEquationEnum, 90 FrictionAsEnum, 90 91 FrictionCoefficientEnum, 91 92 FrictionPEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18504 r18511 96 96 case FlowequationFeFSEnum : return "FlowequationFeFS"; 97 97 case FlowequationVertexEquationEnum : return "FlowequationVertexEquation"; 98 case FrictionAsEnum : return "FrictionAs"; 98 99 case FrictionCoefficientEnum : return "FrictionCoefficient"; 99 100 case FrictionPEnum : return "FrictionP"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18504 r18511 96 96 else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum; 97 97 else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum; 98 else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum; 98 99 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum; 99 100 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; … … 136 137 else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum; 137 138 else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; 138 else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum; 142 if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum; 143 else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum; 143 144 else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum; 144 145 else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum; … … 259 260 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; 260 261 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 261 else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum; 265 if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum; 266 else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum; 266 267 else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum; 267 268 else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum; … … 382 383 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 383 384 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 384 else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; 388 if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum; 389 else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; 389 390 else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum; 390 391 else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum; … … 505 506 else if (strcmp(name,"Friction")==0) return FrictionEnum; 506 507 else if (strcmp(name,"Internal")==0) return InternalEnum; 507 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 511 if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 512 else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 512 513 else if (strcmp(name,"Misfit")==0) return MisfitEnum; 513 514 else if (strcmp(name,"Pressure")==0) return PressureEnum; … … 628 629 else if (strcmp(name,"MisfitTimeinterpolation")==0) return MisfitTimeinterpolationEnum; 629 630 else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum; 630 else if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum; 634 if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum; 635 else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum; 635 636 else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum; 636 637 else if (strcmp(name,"MinVel")==0) return MinVelEnum; … … 751 752 else if (strcmp(name,"MaterialsTimeRelaxationDamage")==0) return MaterialsTimeRelaxationDamageEnum; 752 753 else if (strcmp(name,"MaterialsRidgingExponent")==0) return MaterialsRidgingExponentEnum; 753 else if (strcmp(name,"MaterialsCohesion")==0) return MaterialsCohesionEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum; 757 if (strcmp(name,"MaterialsCohesion")==0) return MaterialsCohesionEnum; 758 else if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum; 758 759 else if (strcmp(name,"MaterialsCompressionCoef")==0) return MaterialsCompressionCoefEnum; 759 760 else if (strcmp(name,"MaterialsTractionCoef")==0) return MaterialsTractionCoefEnum;
Note:
See TracChangeset
for help on using the changeset viewer.