Changeset 19373


Ignore:
Timestamp:
05/21/15 11:43:14 (10 years ago)
Author:
seroussi
Message:

CHG: updated friction law water layer for Derrick

Location:
issm/trunk-jpl
Files:
1 added
11 edited

Legend:

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

    r19162 r19373  
    891891        if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
    892892        if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject(FrictionCouplingEnum));
     893        if(frictionlaw==5) parameters->AddObject(iomodel->CopyConstantObject(FrictionFEnum));
    893894
    894895}/*}}}*/
  • issm/trunk-jpl/src/c/classes/Loads/Friction.cpp

    r19151 r19373  
    390390        IssmDouble  r,s;
    391391        IssmDouble  drag_p, drag_q;
    392         IssmDouble  Neff;
     392        IssmDouble  Neff,F;
    393393        IssmDouble  thickness,bed;
    394394        IssmDouble  vx,vy,vz,vmag;
     
    397397
    398398        /*Recover parameters: */
     399        element->parameters->FindParam(&F,FrictionFEnum);
    399400        element->GetInputValue(&drag_p,FrictionPEnum);
    400401        element->GetInputValue(&drag_q,FrictionQEnum);
     
    413414        //From bed and thickness, compute effective pressure when drag is viscous:
    414415        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");
    416419        if(Neff<0) Neff=0;
    417420
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r19363 r19373  
    9999        FrictionLawEnum,
    100100        FrictionGammaEnum,
     101        FrictionFEnum,
    101102        FrictionWaterLayerEnum,
    102103        FrictionEffectivePressureEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r19317 r19373  
    105105                case FrictionLawEnum : return "FrictionLaw";
    106106                case FrictionGammaEnum : return "FrictionGamma";
     107                case FrictionFEnum : return "FrictionF";
    107108                case FrictionWaterLayerEnum : return "FrictionWaterLayer";
    108109                case FrictionEffectivePressureEnum : return "FrictionEffectivePressure";
     
    576577                case TemperatureEnum : return "Temperature";
    577578                case TemperaturePicardEnum : return "TemperaturePicard";
     579                case TemperaturePDDEnum : return "TemperaturePDD";
    578580                case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit";
    579581                case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r19317 r19373  
    105105              else if (strcmp(name,"FrictionLaw")==0) return FrictionLawEnum;
    106106              else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum;
     107              else if (strcmp(name,"FrictionF")==0) return FrictionFEnum;
    107108              else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
    108109              else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
     
    136137              else if (strcmp(name,"HydrologydcEplCompressibility")==0) return HydrologydcEplCompressibilityEnum;
    137138              else if (strcmp(name,"HydrologydcEplPorosity")==0) return HydrologydcEplPorosityEnum;
    138               else if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum;
    139139         else stage=2;
    140140   }
    141141   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;
    143144              else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum;
    144145              else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
     
    259260              else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
    260261              else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
    261               else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
    262262         else stage=3;
    263263   }
    264264   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;
    266267              else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
    267268              else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
     
    382383              else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
    383384              else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
    384               else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
    385385         else stage=4;
    386386   }
    387387   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;
    389390              else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
    390391              else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
     
    505506              else if (strcmp(name,"Matice")==0) return MaticeEnum;
    506507              else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
    507               else if (strcmp(name,"Matpar")==0) return MatparEnum;
    508508         else stage=5;
    509509   }
    510510   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;
    512513              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    513514              else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
     
    588589              else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
    589590              else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
     591              else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum;
    590592              else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
    591593              else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
     
    627629              else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    628630              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;
    631631         else stage=6;
    632632   }
    633633   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;
    635637              else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
    636638              else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
     
    750752              else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
    751753              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;
    754754         else stage=7;
    755755   }
    756756   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;
    758760              else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
    759761              else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
     
    873875              else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
    874876              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;
    877877         else stage=8;
    878878   }
    879879   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;
    881883              else if (strcmp(name,"Sset")==0) return SsetEnum;
    882884              else if (strcmp(name,"Verbose")==0) return VerboseEnum;
  • issm/trunk-jpl/src/m/classes/frictionwaterlayer.m

    r19048 r19373  
    77        properties (SetAccess=public)
    88                coefficient = NaN;
     9                f           = NaN;
    910                p           = NaN;
    1011                q           = NaN;
     
    3132
    3233                        md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1);
     34                        md = checkfield(md,'fieldname','friction.f','size',[1 1],'NaN',1);
    3335                        md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]);
    3436                        md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]);
     
    4547                        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)'));
    4648                        fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
     49                        fielddisplay(self,'f','f variable for effective pressure');
    4750                        fielddisplay(self,'p','p exponent');
    4851                        fielddisplay(self,'q','q exponent');
     
    5356                        WriteData(fid,'enum',FrictionLawEnum,'data',5,'format','Integer');
    5457                        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');
    5559                        WriteData(fid,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
    5660                        WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r19363 r19373  
    9797def FrictionLawEnum(): return StringToEnum("FrictionLaw")[0]
    9898def FrictionGammaEnum(): return StringToEnum("FrictionGamma")[0]
     99def FrictionFEnum(): return StringToEnum("FrictionF")[0]
    99100def FrictionWaterLayerEnum(): return StringToEnum("FrictionWaterLayer")[0]
    100101def FrictionEffectivePressureEnum(): return StringToEnum("FrictionEffectivePressure")[0]
  • issm/trunk-jpl/test/NightlyRun/test438.m

    r19051 r19373  
    88md.friction.water_layer(:,2)=1;
    99md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
     10md.friction.f=0.8;
    1011md.cluster=generic('name',oshostname(),'np',3);
    1112md=solve(md,TransientSolutionEnum());
  • issm/trunk-jpl/test/NightlyRun/test439.m

    r19051 r19373  
    99md.friction.water_layer(:,2)=1;
    1010md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
     11md.friction.f=0.8;
    1112md.cluster=generic('name',oshostname(),'np',3);
    1213md=solve(md,TransientSolutionEnum());
Note: See TracChangeset for help on using the changeset viewer.