Changeset 24666


Ignore:
Timestamp:
03/16/20 02:01:18 (5 years ago)
Author:
rueckamp
Message:

CHG: add a limit for effective pressure

Location:
issm/trunk-jpl/src
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp

    r24556 r24666  
    287287        int frictionlaw;
    288288        iomodel->FindConstant(&frictionlaw,"md.friction.law");
    289         if(frictionlaw==4 || frictionlaw==6){
     289        if(frictionlaw==6){
    290290                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    291291        }
    292         if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){
     292        if(frictionlaw==4){
     293                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    293294                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));
    294300        }
    295301        if(frictionlaw==9){
    296302                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
     303                parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));         
    297304                parameters->AddObject(new IntParam(FrictionCouplingEnum,0));
    298305        }
  • issm/trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp

    r24335 r24666  
    185185        int frictionlaw;
    186186        iomodel->FindConstant(&frictionlaw,"md.friction.law");
    187         if(frictionlaw==4 || frictionlaw==6){
     187        if(frictionlaw==6){
    188188                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    189189        }
    190         if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){
     190        if(frictionlaw==4){
     191                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    191192                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));
    192198        }
    193199        if(frictionlaw==9){
    194200                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
     201                parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
    195202                parameters->AddObject(new IntParam(FrictionCouplingEnum,0));
    196203        }
    197204
    198   /*Requested outputs*/
    199   iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
    200   parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
    201   if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
    202   iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
     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");
    203210}/*}}}*/
    204211
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r24479 r24666  
    966966                case 1:
    967967                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
     968                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
    968969                        break;
    969970                case 2:
     
    971972                case 3:
    972973                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
     974                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));                 
    973975                        break;
    974976                case 4:
    975977                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    976978                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
     979                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));                 
    977980                        break;
    978981                case 5:
     
    984987                case 7:
    985988                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
     989                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
    986990                        break;
    987991                case 8:
     
    989993                case 9:
    990994                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
     995                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));                 
    991996                        break;
    992997                case 10:
     
    9981003                case 11:
    9991004                        parameters->AddObject(new IntParam(FrictionCouplingEnum,2));
     1005                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));                 
    10001006                        break;
    10011007                case 12:
    10021008                        parameters->AddObject(new IntParam(FrictionCouplingEnum,2));
     1009                        parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));                 
    10031010                        break;
    10041011                default: _error_("Friction law "<<frictionlaw<<" not implemented yet");
  • issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp

    r24335 r24666  
    275275        int frictionlaw;
    276276        iomodel->FindConstant(&frictionlaw,"md.friction.law");
    277         if(frictionlaw==4 || frictionlaw==6){
     277        if(frictionlaw==6){
    278278                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    279279        }
    280         if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){
     280        if(frictionlaw==4){
     281                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
    281282                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));
    282288        }
    283289        if(frictionlaw==9){
    284290                parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
     291                parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
    285292                parameters->AddObject(new IntParam(FrictionCouplingEnum,0));
    286293        }
  • issm/trunk-jpl/src/c/classes/Loads/Friction.cpp

    r24551 r24666  
    684684        IssmDouble  thickness,base,sealevel;
    685685        IssmDouble  p_ice,p_water;
    686         IssmDouble  Neff;
     686        IssmDouble  Neff,Neff_limit;
    687687
    688688        /*Recover parameters: */
    689689        element->parameters->FindParam(&coupled_flag,FrictionCouplingEnum);
     690        element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
    690691
    691692        /*From base and thickness, compute effective pressure when drag is viscous, or get Neff from forcing:*/
     
    726727                case 3:
    727728                        element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
     729                        p_ice = 0.; // FIXME
    728730                        break;
    729731                case 4:
    730732                        element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
     733                        p_ice = 0.; // FIXME
    731734                        break;
    732735                default:
     
    735738
    736739        /*Make sure Neff is positive*/
    737         if(Neff<0.) Neff=0.;
     740        if(Neff<Neff_limit*p_ice) Neff=Neff_limit*p_ice;
    738741
    739742        /*Return effective pressure*/
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24626 r24666  
    143143        FrictionCouplingEnum,
    144144        FrictionDeltaEnum,
     145        FrictionEffectivePressureLimitEnum,
    145146        FrictionFEnum,
    146147        FrictionGammaEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24626 r24666  
    151151                case FrictionCouplingEnum : return "FrictionCoupling";
    152152                case FrictionDeltaEnum : return "FrictionDelta";
     153                case FrictionEffectivePressureLimitEnum : return "FrictionEffectivePressureLimit";
    153154                case FrictionFEnum : return "FrictionF";
    154155                case FrictionGammaEnum : return "FrictionGamma";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24626 r24666  
    154154              else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum;
    155155              else if (strcmp(name,"FrictionDelta")==0) return FrictionDeltaEnum;
     156              else if (strcmp(name,"FrictionEffectivePressureLimit")==0) return FrictionEffectivePressureLimitEnum;
    156157              else if (strcmp(name,"FrictionF")==0) return FrictionFEnum;
    157158              else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum;
     
    259260              else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
    260261              else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
    261               else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum;
    262262         else stage=3;
    263263   }
    264264   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;
    266267              else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
    267268              else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
     
    382383              else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
    383384              else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum;
    384               else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
    385385         else stage=4;
    386386   }
    387387   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;
    389390              else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
    390391              else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
     
    505506              else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
    506507              else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
    507               else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;
    508508         else stage=5;
    509509   }
    510510   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;
    512513              else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum;
    513514              else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;
     
    628629              else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
    629630              else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
    630               else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    631631         else stage=6;
    632632   }
    633633   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;
    635636              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
    636637              else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
     
    751752              else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum;
    752753              else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum;
    753               else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
    754754         else stage=7;
    755755   }
    756756   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;
    758759              else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
    759760              else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
     
    874875              else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
    875876              else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
    876               else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum;
    877877         else stage=8;
    878878   }
    879879   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;
    881882              else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
    882883              else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
     
    997998              else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
    998999              else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
    999               else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum;
    10001000         else stage=9;
    10011001   }
    10021002   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;
    10041005              else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum;
    10051006              else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
     
    11201121              else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
    11211122              else if (strcmp(name,"Indexed")==0) return IndexedEnum;
    1122               else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
    11231123         else stage=10;
    11241124   }
    11251125   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;
    11271128              else if (strcmp(name,"ElementInput2")==0) return ElementInput2Enum;
    11281129              else if (strcmp(name,"SegInput2")==0) return SegInput2Enum;
     
    12431244              else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
    12441245              else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
    1245               else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
    12461246         else stage=11;
    12471247   }
    12481248   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;
    12501251              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
    12511252              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
  • issm/trunk-jpl/src/m/classes/friction.m

    r23621 r24666  
    1111                coupling    = 0;
    1212                effective_pressure = NaN;
     13                effective_pressure_limit = 0;
    1314        end
    1415        methods
     
    4243
    4344                        self.coupling = 0;
     45                        self.effective_pressure_limit = 0;
    4446
    4547                end % }}}
     
    5456                        md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    5557                        md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0:4]);
     58                        md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
    5659                        switch self.coupling
    5760                                case 0
     
    7376                        fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
    7477                        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)');
    7579                end % }}}
    7680                function marshall(self,prefix,md,fid) % {{{
     
    8286                        WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
    8387                        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');
    8489                        switch self.coupling
    8590                                case 0
     
    101106                        writejs1Darray(fid,[modelname '.friction.coupling'],self.coupling);
    102107                        writejs1Darray(fid,[modelname '.friction.effective_pressure'],self.effective_pressure);
    103 
     108                        writejs1Darray(fid,[modelname '.friction.effective_pressure_limit'],self.effective_pressure_limit);
    104109                end % }}}
    105110        end
  • issm/trunk-jpl/src/m/classes/frictioncoulomb.m

    r22051 r24666  
    1212                coupling        = 0;
    1313                effective_pressure = NaN;
     14                effective_pressure_limit = 0;
    1415        end
    1516        methods
     
    3940                function self = setdefaultparameters(self) % {{{
    4041
     42                        self.effective_pressure_limit = 0;
     43
    4144                end % }}}
    4245                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    4952                        md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    5053                        md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]);
     54                        md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);                 
    5155                        switch self.coupling
    5256                                case 0
     
    6771                        fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
    6872                        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 % }}}
    7075                function marshall(self,prefix,md,fid) % {{{
    7176
     
    7681                        WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
    7782                        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');
    7884                        switch self.coupling
    7985                                case 0
  • issm/trunk-jpl/src/m/classes/frictionhydro.m

    r21739 r24666  
    1010                C                  = NaN;
    1111                As                 = NaN;
    12                 effective_pressure = NaN;
     12                effective_pressure = NaN;
     13                effective_pressure_limit = 0;
    1314        end
    1415        methods
     
    2324                function self = setdefaultparameters(self) % {{{
    2425
     26                        self.effective_pressure_limit = 0;
     27
    2528                end % }}}
    2629                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    3235                        md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    3336                        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);
    3438                        switch self.coupling
    3539                                case 0
     
    6468                        fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
    6569                        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)');
    6671                end % }}}
    6772                function marshall(self,prefix,md,fid) % {{{
     
    7075                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
    7176                        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');
    7379                        switch self.coupling
    7480                                case 0
  • issm/trunk-jpl/src/m/classes/frictionjosh.m

    r24562 r24666  
    99                pressure_adjusted_temperature = NaN;
    1010                gamma      = 0.;
     11                effective_pressure_limit = 0;
    1112        end
    1213        methods
     
    3031                        self.gamma = 1.;
    3132
     33                        %Default 0
     34                        self.effective_pressure_limit = 0;
     35
    3236                end % }}}
    3337                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    3943                        md = checkfield(md,'fieldname','friction.pressure_adjusted_temperature','NaN',1,'Inf',1);
    4044                        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);
    4146
    4247                        %Check that temperature is provided
     
    4853                        fielddisplay(self,'pressure_adjusted_temperature','friction pressure_adjusted_temperature (T - Tpmp) [K]');
    4954                        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)');
    5056                end % }}}
    5157                function marshall(self,prefix,md,fid) % {{{
     
    5561                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','pressure_adjusted_temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    5662                        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');
    5764                end % }}}
    5865        end
  • issm/trunk-jpl/src/m/classes/frictionschoof.m

    r24392 r24666  
    99                Cmax = NaN;
    1010                m    = NaN;
     11                effective_pressure_limit = 0;
    1112        end
    1213        methods
     
    2829                function self = setdefaultparameters(self) % {{{
    2930
     31                        self.effective_pressure_limit = 0;
     32
    3033                end % }}}
    3134                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    3639                        md = checkfield(md,'fieldname','friction.Cmax','timeseries',1,'NaN',1,'Inf',1,'>',0.);
    3740                        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);
    3842                end % }}}
    3943                function disp(self) % {{{
     
    4852                        fielddisplay(self,'Cmax','Iken''s bound (typically between 0.17 and 0.84) [SI]');
    4953                        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)');
    5055                end % }}}
    5156                function marshall(self,prefix,md,fid) % {{{
     
    5661                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','Cmax','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    5762                        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');
    5864                end % }}}
    5965        end
  • issm/trunk-jpl/src/m/classes/frictiontemp.m

    r24586 r24666  
    1111                q           = NaN;
    1212                coupling    = 0;
    13       effective_pressure = NaN;
     13                effective_pressure = NaN;
     14                effective_pressure_limit = 0;
    1415        end
    1516        methods
     
    4546                        self.gamma = 1;
    4647                        self.coupling = 0;
     48                        self.effective_pressure_limit = 0;
    4749
    4850                end % }}}
     
    5557                        md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    5658                        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);
    5861
    5962                        %Check that temperature is provided
     
    6871                        fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
    6972                        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)');
    7074                end % }}}
    7175                function marshall(self,prefix,md,fid) % {{{
     
    7781                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
    7882                        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');
    7984                        switch self.coupling
    8085                                case 0
  • issm/trunk-jpl/src/m/classes/frictiontsai.m

    r23897 r24666  
    99                f = NaN;
    1010                m = NaN;
     11                effective_pressure_limit = 0;
    1112        end
    1213        methods
     
    2728                function self = setdefaultparameters(self) % {{{
    2829
     30                        self.effective_pressure_limit = 0;
     31
    2932                end % }}}
    3033                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    3538                        md = checkfield(md,'fieldname','friction.f','timeseries',1,'NaN',1,'Inf',1,'>',0.);
    3639                        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);
    3741                end % }}}
    3842                function disp(self) % {{{
     
    4751                        fielddisplay(self,'f','Iken''s bound (typically between 0.17 and 0.84) [SI]');
    4852                        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)');
    4954                end % }}}
    5055                function marshall(self,prefix,md,fid) % {{{
     
    5560                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    5661                        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');
    5763                end % }}}
    5864        end
Note: See TracChangeset for help on using the changeset viewer.