Changeset 19373
- Timestamp:
- 05/21/15 11:43:14 (10 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r19162 r19373 891 891 if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum)); 892 892 if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject(FrictionCouplingEnum)); 893 if(frictionlaw==5) parameters->AddObject(iomodel->CopyConstantObject(FrictionFEnum)); 893 894 894 895 }/*}}}*/ -
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r19151 r19373 390 390 IssmDouble r,s; 391 391 IssmDouble drag_p, drag_q; 392 IssmDouble Neff ;392 IssmDouble Neff,F; 393 393 IssmDouble thickness,bed; 394 394 IssmDouble vx,vy,vz,vmag; … … 397 397 398 398 /*Recover parameters: */ 399 element->parameters->FindParam(&F,FrictionFEnum); 399 400 element->GetInputValue(&drag_p,FrictionPEnum); 400 401 element->GetInputValue(&drag_q,FrictionQEnum); … … 413 414 //From bed and thickness, compute effective pressure when drag is viscous: 414 415 if(bed>0) bed=0; 415 Neff=gravity*(rho_ice*thickness+rho_water*(bed-water_layer)); 416 if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*bed; 417 else if(water_layer>0) Neff=gravity*rho_ice*thickness*F; 418 else _error_("negative water layer thickness"); 416 419 if(Neff<0) Neff=0; 417 420 -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r19363 r19373 99 99 FrictionLawEnum, 100 100 FrictionGammaEnum, 101 FrictionFEnum, 101 102 FrictionWaterLayerEnum, 102 103 FrictionEffectivePressureEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r19317 r19373 105 105 case FrictionLawEnum : return "FrictionLaw"; 106 106 case FrictionGammaEnum : return "FrictionGamma"; 107 case FrictionFEnum : return "FrictionF"; 107 108 case FrictionWaterLayerEnum : return "FrictionWaterLayer"; 108 109 case FrictionEffectivePressureEnum : return "FrictionEffectivePressure"; … … 576 577 case TemperatureEnum : return "Temperature"; 577 578 case TemperaturePicardEnum : return "TemperaturePicard"; 579 case TemperaturePDDEnum : return "TemperaturePDD"; 578 580 case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit"; 579 581 case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r19317 r19373 105 105 else if (strcmp(name,"FrictionLaw")==0) return FrictionLawEnum; 106 106 else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum; 107 else if (strcmp(name,"FrictionF")==0) return FrictionFEnum; 107 108 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 108 109 else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum; … … 136 137 else if (strcmp(name,"HydrologydcEplCompressibility")==0) return HydrologydcEplCompressibilityEnum; 137 138 else if (strcmp(name,"HydrologydcEplPorosity")==0) return HydrologydcEplPorosityEnum; 138 else if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum; 142 if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum; 143 else if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum; 143 144 else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum; 144 145 else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum; … … 259 260 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 260 261 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; 261 else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 265 if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum; 266 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 266 267 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 267 268 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum; … … 382 383 else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum; 383 384 else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; 384 else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 388 if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; 389 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 389 390 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; 390 391 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; … … 505 506 else if (strcmp(name,"Matice")==0) return MaticeEnum; 506 507 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 507 else if (strcmp(name,"Matpar")==0) return MatparEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Node")==0) return NodeEnum; 511 if (strcmp(name,"Matpar")==0) return MatparEnum; 512 else if (strcmp(name,"Node")==0) return NodeEnum; 512 513 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 513 514 else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum; … … 588 589 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 589 590 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 591 else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum; 590 592 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 591 593 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; … … 627 629 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 628 630 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 629 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;630 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 634 if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 635 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 636 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 635 637 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 636 638 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; … … 750 752 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 751 753 else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 752 else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;753 else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum; 757 if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum; 758 else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum; 759 else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum; 758 760 else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum; 759 761 else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum; … … 873 875 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 874 876 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 875 else if (strcmp(name,"Regular")==0) return RegularEnum;876 else if (strcmp(name,"Scaled")==0) return ScaledEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Separate")==0) return SeparateEnum; 880 if (strcmp(name,"Regular")==0) return RegularEnum; 881 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 882 else if (strcmp(name,"Separate")==0) return SeparateEnum; 881 883 else if (strcmp(name,"Sset")==0) return SsetEnum; 882 884 else if (strcmp(name,"Verbose")==0) return VerboseEnum; -
issm/trunk-jpl/src/m/classes/frictionwaterlayer.m
r19048 r19373 7 7 properties (SetAccess=public) 8 8 coefficient = NaN; 9 f = NaN; 9 10 p = NaN; 10 11 q = NaN; … … 31 32 32 33 md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1); 34 md = checkfield(md,'fieldname','friction.f','size',[1 1],'NaN',1); 33 35 md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]); 34 36 md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]); … … 45 47 disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)')); 46 48 fielddisplay(self,'coefficient','frictiontemp coefficient [SI]'); 49 fielddisplay(self,'f','f variable for effective pressure'); 47 50 fielddisplay(self,'p','p exponent'); 48 51 fielddisplay(self,'q','q exponent'); … … 53 56 WriteData(fid,'enum',FrictionLawEnum,'data',5,'format','Integer'); 54 57 WriteData(fid,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 58 WriteData(fid,'class','friction','object',self,'fieldname','f','format','Double'); 55 59 WriteData(fid,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2); 56 60 WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2); -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r19363 r19373 97 97 def FrictionLawEnum(): return StringToEnum("FrictionLaw")[0] 98 98 def FrictionGammaEnum(): return StringToEnum("FrictionGamma")[0] 99 def FrictionFEnum(): return StringToEnum("FrictionF")[0] 99 100 def FrictionWaterLayerEnum(): return StringToEnum("FrictionWaterLayer")[0] 100 101 def FrictionEffectivePressureEnum(): return StringToEnum("FrictionEffectivePressure")[0] -
issm/trunk-jpl/test/NightlyRun/test438.m
r19051 r19373 8 8 md.friction.water_layer(:,2)=1; 9 9 md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2]; 10 md.friction.f=0.8; 10 11 md.cluster=generic('name',oshostname(),'np',3); 11 12 md=solve(md,TransientSolutionEnum()); -
issm/trunk-jpl/test/NightlyRun/test439.m
r19051 r19373 9 9 md.friction.water_layer(:,2)=1; 10 10 md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2]; 11 md.friction.f=0.8; 11 12 md.cluster=generic('name',oshostname(),'np',3); 12 13 md=solve(md,TransientSolutionEnum());
Note:
See TracChangeset
for help on using the changeset viewer.