Changeset 27297


Ignore:
Timestamp:
10/06/22 23:34:44 (2 years ago)
Author:
rueckamp
Message:

NEW: SMB debris model based on Mayer & Licuilli 2021

Location:
issm/trunk-jpl/src
Files:
1 added
9 edited

Legend:

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

    r27250 r27297  
    419419                        /*Nothing to add to parameters*/
    420420                        break;
     421                case SMBdebrisMLEnum:
     422                        /*Nothing to add to parameters*/
     423                        break;
    421424                default:
    422425                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
     
    484487                        break;
    485488                case SMBarmaEnum:
    486          if(VerboseSolution())_printf0_("    call smb arma module\n");
    487          Smbarmax(femmodel);
    488          break;
     489                        if(VerboseSolution())_printf0_("    call smb arma module\n");
     490                        Smbarmax(femmodel);
     491                        break;
    489492                case SMBhenningEnum:
    490493                        if(VerboseSolution())_printf0_("  call smb Henning module\n");
     
    514517                        #endif //_HAVE_SEMIC_
    515518                        break;
     519                case SMBdebrisMLEnum:
     520                        if(VerboseSolution())_printf0_("        call smb debris Mayer & Liculli module\n");
     521                        SmbDebrisMLx(femmodel);
     522                        break;
    516523                default:
    517524                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
  • TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r27278 r27297  
    485485                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.rdl",SmbRdlEnum));
    486486                        break;
     487                case SMBdebrisMLEnum:
     488                        break;
    487489                default:
    488490                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp

    r27260 r27297  
    506506
    507507}/*}}}*/
     508void SmbDebrisMLx(FemModel* femmodel){/*{{{*/
     509
     510        //      The function is based on:
     511        //      Evatt GW, Abrahams ID, Heil M, Mayer C, Kingslake J, Mitchell SL, et al. Glacial melt under a porous debris layer. Journal of Glaciology 61 (2015) 825–836, doi:10.3189/2
     512        //      Constants/Values are taken from Mayer, Licciulli (2021): https://www.frontiersin.org/articles/10.3389/feart.2021.710276/full#B7
     513        //      function taken from https://github.com/carlolic/DebrisExp/blob/main/USFs/USF_DebrisCoverage.f90
     514
     515        /*Intermediaries*/
     516        // altitude gradients of the crucial parameters (radiation from Marty et al., TaAClimat; 2002)
     517        IssmDouble LW=2.9;          // W/m^2 /100m                       2.9
     518        IssmDouble SW=1.3;          // W/m^2 /100m                       1.3
     519        IssmDouble HumidityG=0;     // % /100m         rough estimate
     520        IssmDouble AirTemp=0.7;     // C /100m
     521        IssmDouble WindSpeed=0.02;  // m/s /100m       rough estimate    0.2
     522
     523        // accumulation follows a linear increase above the ELA up to a plateau
     524        IssmDouble AccG=0.1;                    // m w.e. /100m
     525        IssmDouble AccMax=1.;                    // m w.e.
     526        IssmDouble ReferenceElevation=2200.;     // m M&L
     527        IssmDouble AblationDays=120.;            //
     528
     529        IssmDouble In=100.;                 // Wm^-2        incoming long wave
     530        IssmDouble Q=500.;                  // Wm^-2        incoming short wave
     531        IssmDouble K=0.585;                // Wm^-1K^-1    thermal conductivity          0.585
     532        IssmDouble Qm=0.0012;              // kg m^-3      measured humiditiy level
     533        IssmDouble Qh=0.006 ;              // kg m^-3      saturated humidity level
     534        IssmDouble Tm=2.;                   // C            air temperature
     535        IssmDouble Rhoaa=1.22;             // kgm^-3       air densitiy
     536        IssmDouble Um=1.5;                 // ms^-1        measured wind speed
     537        IssmDouble Xm=1.5;                 // ms^-1        measurement height
     538        IssmDouble Xr=0.01;                // ms^-1        surface roughness             0.01
     539        IssmDouble Alphad=0.07;            //              debris albedo                 0.07
     540        IssmDouble Alphai=0.4;             //              ice ablbedo
     541        IssmDouble Ustar=0.16;             // ms^-1        friction velocity             0.16
     542        IssmDouble Ca=1000.;                // jkg^-1K^-1   specific heat capacity of air
     543        IssmDouble Lm;//=3.34E+05;            // jkg^-1K^-1   latent heat of ice melt
     544        IssmDouble Lv=2.50E+06;            // jkg^-1K^-1   latent heat of evaporation
     545        IssmDouble Tf=273.;                 // K            water freeezing temperature
     546        IssmDouble Eps=0.95;               //              thermal emissivity
     547        IssmDouble Rhoi=900.;               // kgm^-3       ice density
     548        IssmDouble Sigma=5.67E-08;         // Wm^-2K^-4    Stefan Boltzmann constant
     549        IssmDouble Kstar=0.4;              //              von kármán constant
     550        IssmDouble Gamma=180.;              // m^-1         wind speed attenuation        234
     551        IssmDouble PhiD;//=0.005;              //              debris packing fraction       0.01
     552        IssmDouble Humidity=0.2;           //              relative humidity
     553
     554        IssmDouble smb,yts,z,debris;
     555        IssmDouble MassBalanceCmDayDebris,MassBalanceMYearDebris;
     556
     557        /*Get material parameters and constants */
     558        //femmodel->parameters->FindParam(&Rhoi,MaterialsRhoIceEnum); // Note Carlo's model used as  benchmark was run with different densities for debris and FS
     559        femmodel->parameters->FindParam(&Lm,MaterialsLatentheatEnum);
     560        femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
     561        PhiD=0.;
     562        //if(isdebris) femmodel->parameters->FindParam(&PhiD,DebrisPackingFractionEnum);
     563
     564        /* Loop over all the elements of this partition */
     565        for(Object* & object : femmodel->elements->objects){
     566                Element* element=xDynamicCast<Element*>(object);
     567
     568                /* Allocate all arrays */
     569                int         numvertices=element->GetNumberOfVertices();
     570                IssmDouble* surfacelist=xNew<IssmDouble>(numvertices);
     571                IssmDouble* smb=xNew<IssmDouble>(numvertices);
     572                IssmDouble* debriscover=xNew<IssmDouble>(numvertices);
     573                element->GetInputListOnVertices(surfacelist,SurfaceEnum);
     574
     575                /* Get inputs */
     576                element->GetInputListOnVertices(debriscover,DebrisThicknessEnum);
     577
     578                /*Loop over all vertices of element and calculate SMB as function of Debris Cover and z */
     579                for(int v=0;v<numvertices;v++){
     580
     581                        /*Get vertex elevation */
     582                        z=surfacelist[v];
     583
     584                        /* Get debris cover */
     585                        debris=debriscover[v];
     586
     587                        /*IssmDouble dk=1e-5; // TODO make Alphad and Alphai a user input
     588                        IssmDouble n=debris/dk;
     589                        IssmDouble nmax=1000;
     590                        IssmDouble Alphaeff;
     591                        if(n>nmax){
     592                                Alphaeff=Alphad;
     593                        } else {
     594                                Alphaeff=Alphai+n*(Alphad-Alphai)/nmax;
     595                        }*/
     596
     597                        // M&L
     598                       IssmDouble Alphaeff=Alphad;
     599
     600                        /* compute smb */
     601                        for (int ismb=0;ismb<2;ismb++){
     602                                if(ismb==0){
     603                                        // calc a reference smb to identify accum and melt region; debris only develops in ablation area
     604                                        debris=0.;
     605                                }else{
     606                                        // only in the meltregime debris develops
     607                                        if(-MassBalanceCmDayDebris<0) debris=debriscover[v];
     608                                }
     609                                MassBalanceCmDayDebris=(((In-(z-ReferenceElevation)*LW/100.)-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
     610                                    (Q+(z-ReferenceElevation)*SW/100.)*(1.-Alphaeff)+
     611                                    (Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
     612                                    WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))*(Tm-(z-
     613                                    ReferenceElevation)*AirTemp/100.))/((1-PhiD)*Rhoi*Lm)/(1.+
     614                                    ((Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
     615                                    WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
     616                                    K*debris)-(Lv*Ustar*Ustar*(Qh-(Qh*(Humidity-(z-
     617                                    ReferenceElevation)*HumidityG/100.)))*(exp(-Gamma*Xr)))/((1.-PhiD)*
     618                                    Rhoi*Lm*Ustar)/((((Um-(z-ReferenceElevation)*WindSpeed/100.)
     619                                    -2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)))*100.*24.*60.*60.;
     620                        }
     621
     622                        /* account form ablation days, and convert to m/s */
     623                        MassBalanceMYearDebris=-MassBalanceCmDayDebris/100.*AblationDays/yts;
     624
     625                        /*Update array accordingly*/
     626                        smb[v]=MassBalanceMYearDebris;
     627                }
     628
     629                /*Add input to element and Free memory*/
     630                element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
     631                xDelete<IssmDouble>(surfacelist);
     632                xDelete<IssmDouble>(smb);
     633                xDelete<IssmDouble>(debriscover);
     634        }
     635}/*}}}*/
    508636void SmbGradientsComponentsx(FemModel* femmodel){/*{{{*/
    509637
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h

    r27250 r27297  
    2323void SmbMeltComponentsx(FemModel* femmodel);
    2424void SmbGradientsComponentsx(FemModel* femmodel);
     25void SmbDebrisMLx(FemModel* femmodel);
    2526/* SEMIC: */
    2627void SmbSemicx(FemModel* femmodel);
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27287 r27297  
    157157        DamageStressUBoundEnum,
    158158        DebugProfilingEnum,
     159        DebrisThicknessEnum,
    159160        DomainDimensionEnum,
    160161        DomainTypeEnum,
     
    15411542        SMBarmaEnum,
    15421543        SMBcomponentsEnum,
     1544        SMBdebrisMLEnum,
    15431545        SMBd18opddEnum,
    15441546        SMBforcingEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r27287 r27297  
    165165                case DamageStressUBoundEnum : return "DamageStressUBound";
    166166                case DebugProfilingEnum : return "DebugProfiling";
     167                case DebrisThicknessEnum : return "DebrisThickness";
    167168                case DomainDimensionEnum : return "DomainDimension";
    168169                case DomainTypeEnum : return "DomainType";
     
    15441545                case SMBarmaEnum : return "SMBarma";
    15451546                case SMBcomponentsEnum : return "SMBcomponents";
     1547                case SMBdebrisMLEnum : return "SMBdebrisML";
    15461548                case SMBd18opddEnum : return "SMBd18opdd";
    15471549                case SMBforcingEnum : return "SMBforcing";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r27287 r27297  
    168168              else if (strcmp(name,"DamageStressUBound")==0) return DamageStressUBoundEnum;
    169169              else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
     170              else if (strcmp(name,"DebrisThickness")==0) return DebrisThicknessEnum;
    170171              else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
    171172              else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
     
    259260              else if (strcmp(name,"HydrologydcSedimentThickness")==0) return HydrologydcSedimentThicknessEnum;
    260261              else if (strcmp(name,"HydrologyStepAdapt")==0) return HydrologyStepAdaptEnum;
    261               else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"HydrologydcUnconfinedFlag")==0) return HydrologydcUnconfinedFlagEnum;
     265              if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
     266              else if (strcmp(name,"HydrologydcUnconfinedFlag")==0) return HydrologydcUnconfinedFlagEnum;
    266267              else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
    267268              else if (strcmp(name,"IcecapToEarthComm")==0) return IcecapToEarthCommEnum;
     
    382383              else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
    383384              else if (strcmp(name,"QmuVariableDescriptors")==0) return QmuVariableDescriptorsEnum;
    384               else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
     388              if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
     389              else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
    389390              else if (strcmp(name,"QmuVariablePartitionsNt")==0) return QmuVariablePartitionsNtEnum;
    390391              else if (strcmp(name,"QmuResponsePartitions")==0) return QmuResponsePartitionsEnum;
     
    505506              else if (strcmp(name,"SmbElevationBins")==0) return SmbElevationBinsEnum;
    506507              else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum;
    507               else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
     511              if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
     512              else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
    512513              else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum;
    513514              else if (strcmp(name,"SmbDt")==0) return SmbDtEnum;
     
    628629              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
    629630              else if (strcmp(name,"Velocity")==0) return VelocityEnum;
    630               else if (strcmp(name,"Xxe")==0) return XxeEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Yye")==0) return YyeEnum;
     634              if (strcmp(name,"Xxe")==0) return XxeEnum;
     635              else if (strcmp(name,"Yye")==0) return YyeEnum;
    635636              else if (strcmp(name,"Zze")==0) return ZzeEnum;
    636637              else if (strcmp(name,"Areae")==0) return AreaeEnum;
     
    751752              else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
    752753              else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
    753               else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
     757              if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
     758              else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
    758759              else if (strcmp(name,"Dummy")==0) return DummyEnum;
    759760              else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
     
    874875              else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum;
    875876              else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
    876               else if (strcmp(name,"Misfit")==0) return MisfitEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"MovingFrontalVx")==0) return MovingFrontalVxEnum;
     880              if (strcmp(name,"Misfit")==0) return MisfitEnum;
     881              else if (strcmp(name,"MovingFrontalVx")==0) return MovingFrontalVxEnum;
    881882              else if (strcmp(name,"MovingFrontalVy")==0) return MovingFrontalVyEnum;
    882883              else if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
     
    997998              else if (strcmp(name,"SmbC")==0) return SmbCEnum;
    998999              else if (strcmp(name,"SmbCcsnowValue")==0) return SmbCcsnowValueEnum;
    999               else if (strcmp(name,"SmbCciceValue")==0) return SmbCciceValueEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"SmbCotValue")==0) return SmbCotValueEnum;
     1003              if (strcmp(name,"SmbCciceValue")==0) return SmbCciceValueEnum;
     1004              else if (strcmp(name,"SmbCotValue")==0) return SmbCotValueEnum;
    10041005              else if (strcmp(name,"SmbD")==0) return SmbDEnum;
    10051006              else if (strcmp(name,"SmbDailyairdensity")==0) return SmbDailyairdensityEnum;
     
    11201121              else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
    11211122              else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
    1122               else if (strcmp(name,"Surface")==0) return SurfaceEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum;
     1126              if (strcmp(name,"Surface")==0) return SurfaceEnum;
     1127              else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum;
    11271128              else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
    11281129              else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
     
    12431244              else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
    12441245              else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
    1245               else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
     1249              if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
     1250              else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
    12501251              else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
    12511252              else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
     
    13661367              else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
    13671368              else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
    1368               else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"Element")==0) return ElementEnum;
     1372              if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
     1373              else if (strcmp(name,"Element")==0) return ElementEnum;
    13731374              else if (strcmp(name,"ElementHook")==0) return ElementHookEnum;
    13741375              else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
     
    14891490              else if (strcmp(name,"MantlePlumeGeothermalFlux")==0) return MantlePlumeGeothermalFluxEnum;
    14901491              else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    1491               else if (strcmp(name,"Masscon")==0) return MassconEnum;
    14921492         else stage=13;
    14931493   }
    14941494   if(stage==13){
    1495               if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
     1495              if (strcmp(name,"Masscon")==0) return MassconEnum;
     1496              else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
    14961497              else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
    14971498              else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
     
    15801581              else if (strcmp(name,"SMBarma")==0) return SMBarmaEnum;
    15811582              else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
     1583              else if (strcmp(name,"SMBdebrisML")==0) return SMBdebrisMLEnum;
    15821584              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
    15831585              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
     
    16111613              else if (strcmp(name,"Separate")==0) return SeparateEnum;
    16121614              else if (strcmp(name,"Seq")==0) return SeqEnum;
    1613               else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
    1614               else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
    16151615         else stage=14;
    16161616   }
    16171617   if(stage==14){
    1618               if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum;
     1618              if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
     1619              else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
     1620              else if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum;
    16191621              else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
    16201622              else if (strcmp(name,"SpatialLinearFloatingMeltRate")==0) return SpatialLinearFloatingMeltRateEnum;
  • TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r27287 r27297  
    240240                case 10: return SMBpddSicopolisEnum;
    241241                case 11: return SMBgradientscomponentsEnum;
    242                 case 12: return SMBsemicEnum;   
     242                case 12: return SMBsemicEnum;    
    243243                case 13: return SMBarmaEnum;
     244                case 14: return SMBdebrisMLEnum;
    244245                default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
    245246        }
  • TabularUnified issm/trunk-jpl/src/m/classes/initialization.m

    r27226 r27297  
    2525                str                 = NaN;
    2626                sample              = NaN;
     27                debris              = NaN;
    2728        end
    2829        methods
     
    121122                                if ~isnan(md.initialization.sample)
    122123                                        md = checkfield(md,'fieldname','initialization.sample','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
     124                                end
     125                        end
     126                        if ismember('DebrisAnalysis',analyses),
     127                                if ~isnan(md.initialization.debris)
     128                                        md = checkfield(md,'fieldname','initialization.debris','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    123129                                end
    124130                        end
     
    145151                        fielddisplay(self,'dsl','Dynamic sea level.');
    146152                        fielddisplay(self,'str','Steric sea level.');
     153                        fielddisplay(self,'debris','Surface debris layer [m]');
    147154                end % }}}
    148155                function marshall(self,prefix,md,fid) % {{{
     
    167174                        WriteData(fid,prefix,'object',self,'fieldname','hydraulic_potential','format','DoubleMat','mattype',1);
    168175                        WriteData(fid,prefix,'object',self,'fieldname','sample','format','DoubleMat','mattype',1);
     176                        WriteData(fid,prefix,'object',self,'fieldname','debris','format','DoubleMat','mattype',1);
    169177
    170178                        if md.thermal.isenthalpy,
     
    197205                        self.dsl=project3d(md,'vector',self.dsl,'type','node','layer',1);
    198206                        self.str=project3d(md,'vector',self.str,'type','node','layer',1);
     207                        self.str=project3d(md,'vector',self.debris,'type','node','layer',1);
    199208
    200209                        %Lithostatic pressure by default
     
    218227                        writejs1Darray(fid,[modelname '.initialization.channel'],self.channelarea);
    219228                        writejs1Darray(fid,[modelname '.initialization.sample'],self.sample);
     229                        writejs1Darray(fid,[modelname '.initialization.debris'],self.debris);
    220230
    221231                end % }}}
Note: See TracChangeset for help on using the changeset viewer.