Ignore:
Timestamp:
05/03/24 15:49:57 (2 months ago)
Author:
dumas
Message:

ablation_mod : PDD compatible with negative accumulation due to sublimation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GRISLIv3/SOURCES/ablation_mod.f90

    r467 r496  
    191191  IF (methode_abl.EQ.0) THEN 
    192192     IF (pdd_type.EQ.1) THEN 
    193         PDS(:,:)=ACC(:,:)/Csnow_2D(:,:) 
    194         SIMAX(:,:)=ACC(:,:)*CSI_2D(:,:) 
     193        PDS(:,:)=max(ACC(:,:),0.)/Csnow_2D(:,:) 
     194        SIMAX(:,:)=max(ACC(:,:),0.)*CSI_2D(:,:) 
    195195        PDSI(:,:)=SIMAX(:,:)/Cice_2D(:,:) 
    196196! avec regel de 60% puis fonte (2 premiers where) : 
     
    216216        endwhere 
    217217     ELSEIF (PDD_type.EQ.2) THEN  ! PDD Tarasov 
    218         PDS(:,:)=ACC(:,:)/Csnow_2D(:,:) 
    219         pr_ice_eq(:,:) = amax1(0.,((PRECIP(:,:)/DICE)-ACC(:,:)))  ! precipe liquide (ice equivalent) 
     218        PDS(:,:)=max(ACC(:,:),0.)/Csnow_2D(:,:) 
     219        pr_ice_eq(:,:) = amax1(0.,((PRECIP(:,:)/DICE)-max(ACC(:,:),0.)))  ! precipe liquide (ice equivalent) 
    220220 
    221221        WHERE (PDD(:,:).LE.PDS(:,:)) 
     
    225225        ENDWHERE 
    226226 
    227         snowmelt(:,:) = amin1(totmelt(:,:),ACC(:,:)) 
     227        snowmelt(:,:) = amin1(totmelt(:,:),max(ACC(:,:),0.)) 
    228228 
    229229! Deux formules possibles pour la capacité calorifique (en J/kg.K): 
     
    234234 
    235235!        where(snowmelt(:,:).lt.ACC(:,:)) 
    236         refr2(:,:) = 2.2*(ACC(:,:)-snowmelt(:,:))-(cpsurf(:,:)/CL)*amin1(TANN(:,:),0.) 
     236        refr2(:,:) = 2.2*(max(ACC(:,:),0.)-snowmelt(:,:))-(cpsurf(:,:)/CL)*amin1(TANN(:,:),0.) 
    237237        refreezed_ice(:,:) = amin1(pr_ice_eq(:,:)+snowmelt(:,:),refr2(:,:)) 
    238238!        elsewhere 
     
    246246     ELSE ! pdd standard reeh 
    247247!       (* Positive degrees required to melt the snow layer *) 
    248         PDS(:,:)=ACC(:,:)/Csnow_2D(:,:) 
     248        PDS(:,:)=max(ACC(:,:),0.)/Csnow_2D(:,:) 
    249249!       (* Maximum amount of super. ice that can be formed *) 
    250         SIMAX(:,:)=ACC(:,:)*CSI_2D(:,:) 
     250        SIMAX(:,:)=max(ACC(:,:),0.)*CSI_2D(:,:) 
    251251!       (* Pos. degrees required to melt the superimposed ice *) 
    252252        PDSI(:,:)=SIMAX(:,:)/Cice_2D(:,:) 
     
    274274     ENDIF 
    275275  ELSEIF ( methode_abl.EQ.1 ) THEN ! Insolation Temperature Melt equation, van den Berg, 2008 
    276      SIMAX(:,:)=ACC(:,:)*CSI 
     276     SIMAX(:,:)=max(ACC(:,:),0.)*CSI 
    277277     SIF(:,:)=SIMAX(:,:) 
    278278  ELSE 
Note: See TracChangeset for help on using the changeset viewer.