Changeset 24666
- Timestamp:
- 03/16/20 02:01:18 (5 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r24556 r24666 287 287 int frictionlaw; 288 288 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 289 if(frictionlaw== 4 || frictionlaw==6){289 if(frictionlaw==6){ 290 290 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 291 291 } 292 if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){ 292 if(frictionlaw==4){ 293 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 293 294 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 295 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 296 } 297 if(frictionlaw==1 || frictionlaw==3 || frictionlaw==7){ 298 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 299 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 294 300 } 295 301 if(frictionlaw==9){ 296 302 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 303 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 297 304 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 298 305 } -
issm/trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp
r24335 r24666 185 185 int frictionlaw; 186 186 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 187 if(frictionlaw== 4 || frictionlaw==6){187 if(frictionlaw==6){ 188 188 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 189 189 } 190 if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){ 190 if(frictionlaw==4){ 191 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 191 192 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 193 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 194 } 195 if(frictionlaw==1 || frictionlaw==3 || frictionlaw==7){ 196 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 197 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 192 198 } 193 199 if(frictionlaw==9){ 194 200 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 201 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 195 202 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 196 203 } 197 204 198 199 200 201 202 205 /*Requested outputs*/ 206 iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs"); 207 parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs)); 208 if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs)); 209 iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs"); 203 210 }/*}}}*/ 204 211 -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r24479 r24666 966 966 case 1: 967 967 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 968 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 968 969 break; 969 970 case 2: … … 971 972 case 3: 972 973 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 974 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 973 975 break; 974 976 case 4: 975 977 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 976 978 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 979 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 977 980 break; 978 981 case 5: … … 984 987 case 7: 985 988 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 989 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 986 990 break; 987 991 case 8: … … 989 993 case 9: 990 994 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 995 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 991 996 break; 992 997 case 10: … … 998 1003 case 11: 999 1004 parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); 1005 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 1000 1006 break; 1001 1007 case 12: 1002 1008 parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); 1009 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 1003 1010 break; 1004 1011 default: _error_("Friction law "<<frictionlaw<<" not implemented yet"); -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r24335 r24666 275 275 int frictionlaw; 276 276 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 277 if(frictionlaw== 4 || frictionlaw==6){277 if(frictionlaw==6){ 278 278 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 279 279 } 280 if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){ 280 if(frictionlaw==4){ 281 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 281 282 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 283 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 284 } 285 if(frictionlaw==1 || frictionlaw==3 || frictionlaw==7){ 286 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 287 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 282 288 } 283 289 if(frictionlaw==9){ 284 290 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 291 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 285 292 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 286 293 } -
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r24551 r24666 684 684 IssmDouble thickness,base,sealevel; 685 685 IssmDouble p_ice,p_water; 686 IssmDouble Neff ;686 IssmDouble Neff,Neff_limit; 687 687 688 688 /*Recover parameters: */ 689 689 element->parameters->FindParam(&coupled_flag,FrictionCouplingEnum); 690 element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum); 690 691 691 692 /*From base and thickness, compute effective pressure when drag is viscous, or get Neff from forcing:*/ … … 726 727 case 3: 727 728 element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum); 729 p_ice = 0.; // FIXME 728 730 break; 729 731 case 4: 730 732 element->GetInputValue(&Neff,gauss,EffectivePressureEnum); 733 p_ice = 0.; // FIXME 731 734 break; 732 735 default: … … 735 738 736 739 /*Make sure Neff is positive*/ 737 if(Neff< 0.) Neff=0.;740 if(Neff<Neff_limit*p_ice) Neff=Neff_limit*p_ice; 738 741 739 742 /*Return effective pressure*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r24626 r24666 143 143 FrictionCouplingEnum, 144 144 FrictionDeltaEnum, 145 FrictionEffectivePressureLimitEnum, 145 146 FrictionFEnum, 146 147 FrictionGammaEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r24626 r24666 151 151 case FrictionCouplingEnum : return "FrictionCoupling"; 152 152 case FrictionDeltaEnum : return "FrictionDelta"; 153 case FrictionEffectivePressureLimitEnum : return "FrictionEffectivePressureLimit"; 153 154 case FrictionFEnum : return "FrictionF"; 154 155 case FrictionGammaEnum : return "FrictionGamma"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r24626 r24666 154 154 else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum; 155 155 else if (strcmp(name,"FrictionDelta")==0) return FrictionDeltaEnum; 156 else if (strcmp(name,"FrictionEffectivePressureLimit")==0) return FrictionEffectivePressureLimitEnum; 156 157 else if (strcmp(name,"FrictionF")==0) return FrictionFEnum; 157 158 else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum; … … 259 260 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 260 261 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 261 else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum; 265 if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum; 266 else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum; 266 267 else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum; 267 268 else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum; … … 382 383 else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum; 383 384 else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum; 384 else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum; 388 if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum; 389 else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum; 389 390 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 390 391 else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum; … … 505 506 else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum; 506 507 else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum; 507 else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum; 511 if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum; 512 else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum; 512 513 else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum; 513 514 else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum; … … 628 629 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; 629 630 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 630 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 634 if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 635 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 635 636 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; 636 637 else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; … … 751 752 else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum; 752 753 else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum; 753 else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum; 757 if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum; 758 else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum; 758 759 else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum; 759 760 else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum; … … 874 875 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 875 876 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 876 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 880 if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 881 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 881 882 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; 882 883 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; … … 997 998 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 998 999 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 999 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1003 if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1004 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1004 1005 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 1005 1006 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; … … 1120 1121 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 1121 1122 else if (strcmp(name,"Indexed")==0) return IndexedEnum; 1122 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"IntInput")==0) return IntInputEnum; 1126 if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 1127 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 1127 1128 else if (strcmp(name,"ElementInput2")==0) return ElementInput2Enum; 1128 1129 else if (strcmp(name,"SegInput2")==0) return SegInput2Enum; … … 1243 1244 else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum; 1244 1245 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 1245 else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1249 if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1250 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1250 1251 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1251 1252 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; -
issm/trunk-jpl/src/m/classes/friction.m
r23621 r24666 11 11 coupling = 0; 12 12 effective_pressure = NaN; 13 effective_pressure_limit = 0; 13 14 end 14 15 methods … … 42 43 43 44 self.coupling = 0; 45 self.effective_pressure_limit = 0; 44 46 45 47 end % }}} … … 54 56 md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 55 57 md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0:4]); 58 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 56 59 switch self.coupling 57 60 case 0 … … 73 76 fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'); 74 77 fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: use coupled model (not implemented yet)'); 78 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 75 79 end % }}} 76 80 function marshall(self,prefix,md,fid) % {{{ … … 82 86 WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2); 83 87 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer'); 88 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 84 89 switch self.coupling 85 90 case 0 … … 101 106 writejs1Darray(fid,[modelname '.friction.coupling'],self.coupling); 102 107 writejs1Darray(fid,[modelname '.friction.effective_pressure'],self.effective_pressure); 103 108 writejs1Darray(fid,[modelname '.friction.effective_pressure_limit'],self.effective_pressure_limit); 104 109 end % }}} 105 110 end -
issm/trunk-jpl/src/m/classes/frictioncoulomb.m
r22051 r24666 12 12 coupling = 0; 13 13 effective_pressure = NaN; 14 effective_pressure_limit = 0; 14 15 end 15 16 methods … … 39 40 function self = setdefaultparameters(self) % {{{ 40 41 42 self.effective_pressure_limit = 0; 43 41 44 end % }}} 42 45 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 49 52 md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 50 53 md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]); 54 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 51 55 switch self.coupling 52 56 case 0 … … 67 71 fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'); 68 72 fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure) and 2 for coupled(not implemented yet)'); 69 end % }}} 73 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 74 end % }}} 70 75 function marshall(self,prefix,md,fid) % {{{ 71 76 … … 76 81 WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2); 77 82 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer'); 83 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 78 84 switch self.coupling 79 85 case 0 -
issm/trunk-jpl/src/m/classes/frictionhydro.m
r21739 r24666 10 10 C = NaN; 11 11 As = NaN; 12 effective_pressure = NaN; 12 effective_pressure = NaN; 13 effective_pressure_limit = 0; 13 14 end 14 15 methods … … 23 24 function self = setdefaultparameters(self) % {{{ 24 25 26 self.effective_pressure_limit = 0; 27 25 28 end % }}} 26 29 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 32 35 md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 33 36 md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 37 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 34 38 switch self.coupling 35 39 case 0 … … 64 68 fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]'); 65 69 fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'); 70 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 66 71 end % }}} 67 72 function marshall(self,prefix,md,fid) % {{{ … … 70 75 WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2); 71 76 WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2); 72 WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2); 77 WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',3); 78 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 73 79 switch self.coupling 74 80 case 0 -
issm/trunk-jpl/src/m/classes/frictionjosh.m
r24562 r24666 9 9 pressure_adjusted_temperature = NaN; 10 10 gamma = 0.; 11 effective_pressure_limit = 0; 11 12 end 12 13 methods … … 30 31 self.gamma = 1.; 31 32 33 %Default 0 34 self.effective_pressure_limit = 0; 35 32 36 end % }}} 33 37 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 39 43 md = checkfield(md,'fieldname','friction.pressure_adjusted_temperature','NaN',1,'Inf',1); 40 44 md = checkfield(md,'fieldname','friction.gamma','numel',1,'NaN',1,'Inf',1,'>',0.); 45 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 41 46 42 47 %Check that temperature is provided … … 48 53 fielddisplay(self,'pressure_adjusted_temperature','friction pressure_adjusted_temperature (T - Tpmp) [K]'); 49 54 fielddisplay(self,'gamma','(T - Tpmp)/gamma [K]'); 55 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 50 56 end % }}} 51 57 function marshall(self,prefix,md,fid) % {{{ … … 55 61 WriteData(fid,prefix,'class','friction','object',self,'fieldname','pressure_adjusted_temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 56 62 WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double'); 63 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 57 64 end % }}} 58 65 end -
issm/trunk-jpl/src/m/classes/frictionschoof.m
r24392 r24666 9 9 Cmax = NaN; 10 10 m = NaN; 11 effective_pressure_limit = 0; 11 12 end 12 13 methods … … 28 29 function self = setdefaultparameters(self) % {{{ 29 30 31 self.effective_pressure_limit = 0; 32 30 33 end % }}} 31 34 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 36 39 md = checkfield(md,'fieldname','friction.Cmax','timeseries',1,'NaN',1,'Inf',1,'>',0.); 37 40 md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]); 41 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 38 42 end % }}} 39 43 function disp(self) % {{{ … … 48 52 fielddisplay(self,'Cmax','Iken''s bound (typically between 0.17 and 0.84) [SI]'); 49 53 fielddisplay(self,'m','m exponent (generally taken as m = 1/n = 1/3)'); 54 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 50 55 end % }}} 51 56 function marshall(self,prefix,md,fid) % {{{ … … 56 61 WriteData(fid,prefix,'class','friction','object',self,'fieldname','Cmax','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 57 62 WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2); 63 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 58 64 end % }}} 59 65 end -
issm/trunk-jpl/src/m/classes/frictiontemp.m
r24586 r24666 11 11 q = NaN; 12 12 coupling = 0; 13 effective_pressure = NaN; 13 effective_pressure = NaN; 14 effective_pressure_limit = 0; 14 15 end 15 16 methods … … 45 46 self.gamma = 1; 46 47 self.coupling = 0; 48 self.effective_pressure_limit = 0; 47 49 48 50 end % }}} … … 55 57 md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 56 58 md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 57 md = checkfield(md,'fieldname','friction.gamma','NaN',1,'Inf',1,'numel',1,'>',0.); 59 md = checkfield(md,'fieldname','friction.gamma','NaN',2,'Inf',1,'numel',1,'>',0.); 60 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 58 61 59 62 %Check that temperature is provided … … 68 71 fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'); 69 72 fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'); 73 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 70 74 end % }}} 71 75 function marshall(self,prefix,md,fid) % {{{ … … 77 81 WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2); 78 82 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer'); 83 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 79 84 switch self.coupling 80 85 case 0 -
issm/trunk-jpl/src/m/classes/frictiontsai.m
r23897 r24666 9 9 f = NaN; 10 10 m = NaN; 11 effective_pressure_limit = 0; 11 12 end 12 13 methods … … 27 28 function self = setdefaultparameters(self) % {{{ 28 29 30 self.effective_pressure_limit = 0; 31 29 32 end % }}} 30 33 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 35 38 md = checkfield(md,'fieldname','friction.f','timeseries',1,'NaN',1,'Inf',1,'>',0.); 36 39 md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]); 40 md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0); 37 41 end % }}} 38 42 function disp(self) % {{{ … … 47 51 fielddisplay(self,'f','Iken''s bound (typically between 0.17 and 0.84) [SI]'); 48 52 fielddisplay(self,'m','m exponent (generally taken as m = 1/n = 1/3)'); 53 fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'); 49 54 end % }}} 50 55 function marshall(self,prefix,md,fid) % {{{ … … 55 60 WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 56 61 WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2); 62 WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double'); 57 63 end % }}} 58 64 end
Note:
See TracChangeset
for help on using the changeset viewer.