Ignore:
Timestamp:
01/02/23 00:15:34 (2 years ago)
Author:
rueckamp
Message:

CHG: MinThickness Mask and minor changes for Debris Analysis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp

    r27466 r27491  
    522522        IssmDouble AccG=0.1;                    // m w.e. /100m
    523523        IssmDouble AccMax=1.;                    // m w.e.
    524         IssmDouble ReferenceElevation=2200.;     // m M&L
     524        IssmDouble ReferenceElevation;
    525525        IssmDouble AblationDays=120.;            //
    526526
     
    537537        IssmDouble Alphad=0.07;            //              debris albedo                 0.07
    538538        IssmDouble Alphai=0.4;             //              ice ablbedo
     539        IssmDouble Alphaeff;
    539540        IssmDouble Ustar=0.16;             // ms^-1        friction velocity             0.16
    540541        IssmDouble Ca=1000.;                // jkg^-1K^-1   specific heat capacity of air
     
    552553        IssmDouble smb,yts,z,debris;
    553554        IssmDouble MassBalanceCmDayDebris,MassBalanceMYearDebris;
     555        bool isdebris;
     556        int domaintype;
     557        femmodel->parameters->FindParam(&isdebris,TransientIsdebrisEnum);
    554558
    555559        /*Get material parameters and constants */
     
    558562        femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
    559563        PhiD=0.;
    560         //if(isdebris) femmodel->parameters->FindParam(&PhiD,DebrisPackingFractionEnum);
     564        if(isdebris) femmodel->parameters->FindParam(&PhiD,DebrisPackingFractionEnum);
    561565
    562566        /* Loop over all the elements of this partition */
     
    573577                /* Get inputs */
    574578                element->GetInputListOnVertices(debriscover,DebrisThicknessEnum);
     579                element->FindParam(&domaintype,DomainTypeEnum);         
    575580
    576581                /*Loop over all vertices of element and calculate SMB as function of Debris Cover and z */
    577582                for(int v=0;v<numvertices;v++){
    578583
    579                         /*Get vertex elevation */
    580                         z=surfacelist[v];
    581 
    582                         /* Get debris cover */
    583                         debris=debriscover[v];
    584 
    585                         /*IssmDouble dk=1e-5; // TODO make Alphad and Alphai a user input
    586                         IssmDouble n=debris/dk;
    587                         IssmDouble nmax=1000;
    588                         IssmDouble Alphaeff;
    589                         if(n>nmax){
    590                                 Alphaeff=Alphad;
    591                         } else {
    592                                 Alphaeff=Alphai+n*(Alphad-Alphai)/nmax;
    593                         }*/
    594 
    595                         // M&L
    596                        IssmDouble Alphaeff=Alphad;
    597 
    598                         /* compute smb */
    599                         for (int ismb=0;ismb<2;ismb++){
    600                                 if(ismb==0){
    601                                         // calc a reference smb to identify accum and melt region; debris only develops in ablation area
    602                                         debris=0.;
    603                                 }else{
    604                                         // only in the meltregime debris develops
    605                                         if(-MassBalanceCmDayDebris<0) debris=debriscover[v];
    606                                 }
    607                                 MassBalanceCmDayDebris=(((In-(z-ReferenceElevation)*LW/100.)-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
    608                                     (Q+(z-ReferenceElevation)*SW/100.)*(1.-Alphaeff)+
    609                                     (Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
    610                                     WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))*(Tm-(z-
    611                                     ReferenceElevation)*AirTemp/100.))/((1-PhiD)*Rhoi*Lm)/(1.+
    612                                     ((Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
    613                                     WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
    614                                     K*debris)-(Lv*Ustar*Ustar*(Qh-(Qh*(Humidity-(z-
    615                                     ReferenceElevation)*HumidityG/100.)))*(exp(-Gamma*Xr)))/((1.-PhiD)*
    616                                     Rhoi*Lm*Ustar)/((((Um-(z-ReferenceElevation)*WindSpeed/100.)
     584                        /*Get vertex elevation */
     585                        z=surfacelist[v];
     586
     587                        /*Get top element*/
     588                        //if(domaintype==Domain3DEnum){
     589
     590                        //}else{
     591                        //      Alphaeff=Alphad;
     592                        //      ReferenceElevation=2200.;     // m M&L                         
     593                        //}
     594
     595                        /* compute smb */
     596                        for (int ismb=0;ismb<2;ismb++){
     597                                if(ismb==0){
     598                                        // calc a reference smb to identify accum and melt region; debris only develops in ablation area
     599                                        debris=0.;
     600                                        PhiD=0.;
     601                                }else{
     602                                        // only in the meltregime debris develops
     603                                        if(-MassBalanceCmDayDebris<1e-14) debris=debriscover[v];
     604                                }
     605                                if(debris<=0.) debris=0.;
     606                                IssmDouble dk=1e-5; // TODO make Alphad and Alphai a user input
     607                                IssmDouble n=debris/dk;
     608                                IssmDouble nmax=1000;
     609                                IssmDouble Alphaeff;
     610                                if(n>nmax){
     611                                        Alphaeff=Alphad;
     612                                } else {
     613                                        Alphaeff=Alphai+n*(Alphad-Alphai)/nmax;
     614                                }
     615                                ReferenceElevation=3200.;     // m HEF
     616
     617
     618                                Alphaeff=Alphad;
     619                                ReferenceElevation=2200.;     // m M&L 
     620
     621                                MassBalanceCmDayDebris=(((In-(z-ReferenceElevation)*LW/100.)-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
     622                                                        (Q+(z-ReferenceElevation)*SW/100.)*(1.-Alphaeff)+
     623                                                        (Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
     624                                                                        WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))*(Tm-(z-
     625                                                                                ReferenceElevation)*AirTemp/100.))/((1-PhiD)*Rhoi*Lm)/(1.+
     626                                                                        ((Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)*
     627                                                                                        WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
     628                                                                        K*debris)-(Lv*Ustar*Ustar*(Qh-(Qh*(Humidity-(z-
     629                                                                                                                ReferenceElevation)*HumidityG/100.)))*(exp(-Gamma*Xr)))/((1.-PhiD)*
     630                                                                                        Rhoi*Lm*Ustar)/((((Um-(z-ReferenceElevation)*WindSpeed/100.)
    617631                                    -2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)))*100.*24.*60.*60.;
    618632                        }
Note: See TracChangeset for help on using the changeset viewer.