Changeset 28115


Ignore:
Timestamp:
02/29/24 15:22:20 (13 months ago)
Author:
poinelli
Message:

NEW: Add IntrusionMelt module to include melt under grounding zones, edits after Robel, Wilson, Seroussi TC (2022)

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

Legend:

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

    r28093 r28115  
    354354        /*Intermediaries*/
    355355        int         domaintype,dim,stabilization;
    356         IssmDouble  Jdet,dt;
    357         IssmDouble  gmb,fmb,mb,bed,vx,vy,vz,tau;
     356        IssmDouble  Jdet,dt,intrusiondist;
     357        IssmDouble  gmb,fmb,mb,bed,vx,vy,vz,tau,gldistance;
    358358        Element*    basalelement = NULL;
    359359        IssmDouble *xyz_list  = NULL;
     
    361361        /*Get basal element*/
    362362        element->FindParam(&domaintype,DomainTypeEnum);
     363       
    363364        switch(domaintype){
    364365                case Domain2DhorizontalEnum:
     
    394395        basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
    395396        basalelement->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
     397        basalelement->FindParam(&intrusiondist,GroundinglineIntrusionDistanceEnum);
     398
    396399        Input* groundedice_input   = basalelement->GetInput(MaskOceanLevelsetEnum);              _assert_(groundedice_input);
    397400        Input* gmb_input           = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
     
    424427                gauss = basalelement->NewGauss(point1,fraction1,fraction2,3);
    425428        }
     429        if(melt_style==IntrusionMeltEnum){
     430                basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
     431                gauss = basalelement->NewGauss(point1,fraction1,fraction2,3);
     432        }
    426433        else{
    427434                gauss = basalelement->NewGauss(3);   
     
    459466                        else mb=gmb;
    460467                }
     468                else if(melt_style==IntrusionMeltEnum){
     469                        Input* gldistance_input = basalelement->GetInput(DistanceToGroundinglineEnum);              _assert_(gldistance_input);
     470                gldistance_input->GetInputValue(&gldistance,gauss);
     471                        if (intrusiondist==0)
     472                                if(gllevelset>0.) mb=gmb;
     473                                else mb=fmb;
     474                else if(gldistance>intrusiondist)
     475                                mb=gmb;
     476                        else if(gldistance<=intrusiondist && gldistance>0)
     477                                mb=fmb*(1-gldistance/intrusiondist);
     478                        else
     479                                mb=fmb;
     480        }
    461481                else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
    462482
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r27869 r28115  
    156156        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
    157157        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
     158       
    158159        if(isgroundingline)     iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
    159160        /*Initialize ThicknessResidual input*/
     
    272273        parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.min_thickness",MasstransportMinThicknessEnum));
    273274        parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.penalty_factor",MasstransportPenaltyFactorEnum));
     275        parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.intrusion_distance",GroundinglineIntrusionDistanceEnum));
    274276
    275277        iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.masstransport.requested_outputs");
     
    622624        bool        mainlyfloating;
    623625        IssmDouble  fraction1,fraction2;
    624         IssmDouble  Jdet,dt;
    625         IssmDouble  ms,mb,gmb,fmb,thickness,fmb_pert;
     626        IssmDouble  Jdet,dt,intrusiondist;
     627        IssmDouble  ms,mb,gmb,fmb,thickness,fmb_pert,gldistance;
    626628        IssmDouble  vx,vy,vel,dvxdx,dvydy,xi,h,tau;
    627629        IssmDouble  dvx[2],dvy[2];
     
    652654        element->FindParam(&dt,TimesteppingTimeStepEnum);
    653655        element->FindParam(&stabilization,MasstransportStabilizationEnum);
     656        element->FindParam(&intrusiondist,GroundinglineIntrusionDistanceEnum);
     657
    654658        Input* gmb_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
    655659        Input* fmb_input        = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
     
    660664        Input* vxaverage_input  = element->GetInput(VxAverageEnum);                                                                             _assert_(vxaverage_input);
    661665        Input* vyaverage_input  = element->GetInput(VyAverageEnum);                                                                             _assert_(vyaverage_input);
    662 
     666        //Input* gldistance_input = element->GetInput(DistanceToGroundinglineEnum);              _assert_(gldistance_input);
    663667        h=element->CharacteristicLength();
    664668
     
    667671        if(melt_style==SubelementMelt2Enum){
    668672                element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
    669            gauss = element->NewGauss(point1,fraction1,fraction2,3);
     673            gauss = element->NewGauss(point1,fraction1,fraction2,3);
     674        }
     675        else if(melt_style==IntrusionMeltEnum){
     676            element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
     677       gauss = element->NewGauss(point1,fraction1,fraction2,3);
    670678        }
    671679        else{
     
    704712                        else mb=gmb;
    705713                }
     714        else if(melt_style==IntrusionMeltEnum){
     715                        Input* gldistance_input = element->GetInput(DistanceToGroundinglineEnum);              _assert_(gldistance_input);
     716                gldistance_input->GetInputValue(&gldistance,gauss);
     717                        if (intrusiondist==0)
     718                                if(gllevelset>0.) mb=gmb;
     719                                else mb=fmb;
     720                else if(gldistance>intrusiondist)
     721                                mb=gmb;
     722                        else if(gldistance<=intrusiondist && gldistance>0)
     723                                mb=fmb*(1-gldistance/intrusiondist);
     724                        else
     725                                mb=fmb;
     726        }
    706727                else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
    707728
     
    750771        bool mainlyfloating;
    751772        IssmDouble  fraction1,fraction2,gllevelset;
    752         IssmDouble  Jdet,dt;
    753         IssmDouble  ms,mb,gmb,fmb,thickness,phi=1.;
     773        IssmDouble  Jdet,dt,intrusiondist;
     774        IssmDouble  ms,mb,gmb,fmb,thickness,phi=1.,gldistance;
    754775        IssmDouble* xyz_list = NULL;
    755776
     
    765786        element->FindParam(&dt,TimesteppingTimeStepEnum);
    766787        element->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
     788        element->FindParam(&intrusiondist,GroundinglineIntrusionDistanceEnum);
     789
    767790        Input* gmb_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input);
    768791        Input* fmb_input        = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input);
     
    778801      gauss = element->NewGauss(point1,fraction1,fraction2,3);
    779802   }
     803   else if(melt_style==IntrusionMeltEnum){
     804            element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
     805       gauss = element->NewGauss(point1,fraction1,fraction2,3);
     806        }
    780807   else{
    781808      gauss = element->NewGauss(3);
     
    798825         else mb=(1-phi)*fmb+phi*gmb; // phi is the fraction of grounded ice so (1-phi) is floating
    799826      }
    800       else if(melt_style==SubelementMelt2Enum){
     827        else if(melt_style==SubelementMelt2Enum){
    801828         if(gllevelset>0.) mb=gmb;
    802829         else mb=fmb;
    803830      }
    804       else if(melt_style==NoMeltOnPartiallyFloatingEnum){
     831        else if(melt_style==NoMeltOnPartiallyFloatingEnum){
    805832         if (phi<0.00000001) mb=fmb;
    806833         else mb=gmb;
    807834      }
    808       else if(melt_style==FullMeltOnPartiallyFloatingEnum){
     835        else if(melt_style==FullMeltOnPartiallyFloatingEnum){
    809836         if (phi<0.99999999) mb=fmb;
    810837         else mb=gmb;
    811       }
    812       else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
     838        }
     839                else if(melt_style==IntrusionMeltEnum){
     840                        Input* gldistance_input = element->GetInput(DistanceToGroundinglineEnum);              _assert_(gldistance_input);
     841                gldistance_input->GetInputValue(&gldistance,gauss);
     842                        if (intrusiondist==0)
     843                                if(gllevelset>0.) mb=gmb;
     844                                else mb=fmb;
     845                else if(gldistance>intrusiondist)
     846                                mb=gmb;
     847                        else if(gldistance<=intrusiondist && gldistance>0)
     848                                mb=fmb*(1-gldistance/intrusiondist);
     849                        else
     850                                mb=fmb;
     851        }
     852        else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
    813853
    814854                for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*basis[i];
  • issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp

    r27320 r28115  
    77#include "../../toolkits/toolkits.h"
    88#include "./../../classes/Inputs/DatasetInput.h"
     9#include "../InputDuplicatex/InputDuplicatex.h"
     10
    911
    1012void FloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
    1113
    1214        /*Intermediaties*/
    13         int  basalforcing_model;
     15        int basalforcing_model;
     16        int melt_style;
     17
     18        /*First, get melt_interpolation model from parameters*/
     19    femmodel->parameters->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
     20
     21        switch(melt_style){
     22        case IntrusionMeltEnum:
     23                        if(VerboseSolution())_printf0_("          call Intrusion melting module\n");
     24            DistanceToGroundingline(femmodel);
     25            break;
     26                default:
     27            /*Nothing to be done*/
     28            break;
     29        }
    1430
    1531        /*First, get BMB model from parameters*/
     
    288304        xDelete<IssmDouble>(perturbation);
    289305}/*}}}*/
     306
     307void DistanceToGroundingline(FemModel* femmodel){/*{{{*/
     308
     309        int         numvertices;
     310        IssmDouble* distances=NULL;
     311
     312        InputDuplicatex(femmodel,MaskOceanLevelsetEnum,DistanceToGroundinglineEnum);
     313                femmodel->DistanceToFieldValue(MaskOceanLevelsetEnum,0.,DistanceToGroundinglineEnum);
     314}
     315/*}}}*/
  • issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h

    r27250 r28115  
    1111/* local prototypes: */
    1212void FloatingiceMeltingRatex(FemModel* femmodel);
     13
    1314void LinearFloatingiceMeltingRatex(FemModel* femmodel);
    1415void SpatialLinearFloatingiceMeltingRatex(FemModel* femmodel);
     
    1718void BeckmannGoosseFloatingiceMeltingRatex(FemModel* femmodel);
    1819void LinearFloatingiceMeltingRatearmax(FemModel* femmodel);
     20void DistanceToGroundingline(FemModel* femmodel);
    1921
    2022#endif  /* _FloatingiceMeltingRatex_H*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r27856 r28115  
    7676                parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.friction_interpolation",GroundinglineFrictionInterpolationEnum));
    7777                parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.melt_interpolation",GroundinglineMeltInterpolationEnum));
     78                parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.intrusion_distance",GroundinglineIntrusionDistanceEnum));
    7879                parameters->AddObject(iomodel->CopyConstantObject("md.transient.isstressbalance",TransientIsstressbalanceEnum));
    7980                parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismasstransport",TransientIsmasstransportEnum));
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r28067 r28115  
    868868syn keyword cConstant FrontalForcingsSubglacialDischargeEnum
    869869syn keyword cConstant GeometryHydrostaticRatioEnum
     870syn keyword cConstant GroundinglineIntrusionDistanceEnum
    870871syn keyword cConstant NGiaEnum
    871872syn keyword cConstant NGiaRateEnum
     
    925926syn keyword cConstant InversionVxObsEnum
    926927syn keyword cConstant InversionVyObsEnum
     928syn keyword cConstant IntrusionMeltEnum
    927929syn keyword cConstant LevelsetfunctionSlopeXEnum
    928930syn keyword cConstant LevelsetfunctionSlopeYEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r28067 r28115  
    240240        GrdModelEnum,
    241241        GroundinglineFrictionInterpolationEnum,
     242        GroundinglineIntrusionDistanceEnum,
    242243        GroundinglineMeltInterpolationEnum,
    243244        GroundinglineMigrationEnum,
     
    17391740        SubelementFriction1Enum,
    17401741        SubelementFriction2Enum,
     1742        IntrusionMeltEnum,
    17411743        SubelementMelt1Enum,
    17421744        SubelementMelt2Enum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r28067 r28115  
    870870                case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
    871871                case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
     872                case GroundinglineIntrusionDistanceEnum : return "GroundinglineIntrusionDistance";
    872873                case NGiaEnum : return "NGia";
    873874                case NGiaRateEnum : return "NGiaRate";
     
    927928                case InversionVxObsEnum : return "InversionVxObs";
    928929                case InversionVyObsEnum : return "InversionVyObs";
     930                case IntrusionMeltEnum : return "IntrusionMelt";
    929931                case LevelsetfunctionSlopeXEnum : return "LevelsetfunctionSlopeX";
    930932                case LevelsetfunctionSlopeYEnum : return "LevelsetfunctionSlopeY";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r28067 r28115  
    861861syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
    862862syn keyword juliaConstC GeometryHydrostaticRatioEnum
     863syn keyword juliaConstC GroundinglineIntrusionDistanceEnum
    863864syn keyword juliaConstC NGiaEnum
    864865syn keyword juliaConstC NGiaRateEnum
     
    918919syn keyword juliaConstC InversionVxObsEnum
    919920syn keyword juliaConstC InversionVyObsEnum
     921syn keyword juliaConstC IntrusionMeltEnum
    920922syn keyword juliaConstC LevelsetfunctionSlopeXEnum
    921923syn keyword juliaConstC LevelsetfunctionSlopeYEnum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r28067 r28115  
    891891              else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
    892892              else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
     893              else if (strcmp(name,"GroundinglineIntrusionDistance")==0) return GroundinglineIntrusionDistanceEnum;
    893894              else if (strcmp(name,"NGia")==0) return NGiaEnum;
    894895              else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum;
     
    948949              else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    949950              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
     951              else if (strcmp(name,"IntrusionMelt")==0) return IntrusionMeltEnum;
    950952              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
    951953              else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
     
    996998              else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
    997999              else if (strcmp(name,"Sample")==0) return SampleEnum;
    998               else if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
    999               else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
     1003              if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
     1004              else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
     1005              else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
    10041006              else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
    10051007              else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
     
    11191121              else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
    11201122              else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
    1121               else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
    1122               else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
     1126              if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
     1127              else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
     1128              else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
    11271129              else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
    11281130              else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
     
    12421244              else if (strcmp(name,"SubglacialdischargeValuesMovingaverage")==0) return SubglacialdischargeValuesMovingaverageEnum;
    12431245              else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
    1244               else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
    1245               else if (strcmp(name,"Area")==0) return AreaEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
     1249              if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
     1250              else if (strcmp(name,"Area")==0) return AreaEnum;
     1251              else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
    12501252              else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
    12511253              else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
     
    13651367              else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum;
    13661368              else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum;
    1367               else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
    1368               else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
     1372              if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
     1373              else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
     1374              else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
    13731375              else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
    13741376              else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
     
    14881490              else if (strcmp(name,"Cuffey")==0) return CuffeyEnum;
    14891491              else if (strcmp(name,"CuffeyTemperate")==0) return CuffeyTemperateEnum;
    1490               else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
    1491               else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
    14921492         else stage=13;
    14931493   }
    14941494   if(stage==13){
    1495               if (strcmp(name,"DataSet")==0) return DataSetEnum;
     1495              if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
     1496              else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
     1497              else if (strcmp(name,"DataSet")==0) return DataSetEnum;
    14961498              else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
    14971499              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
     
    16111613              else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
    16121614              else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
    1613               else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
    1614               else if (strcmp(name,"LinearFloatingMeltRatearma")==0) return LinearFloatingMeltRatearmaEnum;
    16151615         else stage=14;
    16161616   }
    16171617   if(stage==14){
    1618               if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
     1618              if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
     1619              else if (strcmp(name,"LinearFloatingMeltRatearma")==0) return LinearFloatingMeltRatearmaEnum;
     1620              else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
    16191621              else if (strcmp(name,"Loads")==0) return LoadsEnum;
    16201622              else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
     
    17341736              else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    17351737              else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
    1736               else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
    1737               else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
    17381738         else stage=15;
    17391739   }
    17401740   if(stage==15){
    1741               if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
     1741              if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
     1742              else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
     1743              else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
    17421744              else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
    17431745              else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
  • issm/trunk-jpl/src/m/classes/groundingline.m

    r26826 r28115  
    99                friction_interpolation = '';
    1010                melt_interpolation     = '';
     11                intrusion_distance     = 0;
    1112                requested_outputs      = {};
    1213        end
     
    2627                        self.friction_interpolation= 'SubelementFriction1';
    2728                        self.melt_interpolation    = 'NoMeltOnPartiallyFloating';
     29                        self.intrusion_distance    = 0;
    2830                        %default output
    29          self.requested_outputs     = {'default'};
     31                self.requested_outputs     = {'default'};
    3032
    3133                end % }}}
     
    3436                        md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'SubelementMigration' 'AggressiveMigration' 'SoftMigration' 'Contact' 'GroundingOnly'});
    3537                        md = checkfield(md,'fieldname','groundingline.friction_interpolation','values',{'NoFrictionOnPartiallyFloating' 'SubelementFriction1' 'SubelementFriction2'});
    36                         md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',{'NoMeltOnPartiallyFloating' 'SubelementMelt1' 'SubelementMelt2' 'FullMeltOnPartiallyFloating'});
     38                        md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',{'NoMeltOnPartiallyFloating' 'SubelementMelt1' 'SubelementMelt2' 'IntrusionMelt' 'FullMeltOnPartiallyFloating'});
     39                        md = checkfield(md,'fieldname','groundingline.intrusion_distance','>=',0);
    3740                        md = checkfield(md,'fieldname','groundingline.requested_outputs','stringrow',1);
    3841
     
    6164                        fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''SubelementMigration'',''AggressiveMigration'',''Contact'' or ''None''');
    6265                        fielddisplay(self,'friction_interpolation','type of friction interpolation for partially floating elements: ''NoFrictionOnPartiallyFloating'',''SubelementFriction1'', or ''SubelementFriction2''');
    63                         fielddisplay(self,'melt_interpolation','type of melt interpolation for partially floating elements: ''NoMeltOnPartiallyFloating'',''SubelementMelt1'',''SubelementMelt2'', or ''FullMeltOnPartiallyFloating''');
     66                        fielddisplay(self,'melt_interpolation','type of melt interpolation for partially floating elements: ''NoMeltOnPartiallyFloating'',''SubelementMelt1'',''SubelementMelt2'',''IntrusionMelt'' or ''FullMeltOnPartiallyFloating''');
     67                        fielddisplay(self,'intrusion_distance','distance of seawater intrusion from grounding line [m]');
    6468                        fielddisplay(self,'requested_outputs','additional outputs requested');
    6569
     
    6973                        WriteData(fid,prefix,'data',self.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String');
    7074                        WriteData(fid,prefix,'data',self.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String');
     75                        WriteData(fid,prefix,'object',self,'fieldname','intrusion_distance','format','Double');
    7176                       
    7277                        %process requested outputs
Note: See TracChangeset for help on using the changeset viewer.