Changeset 2946 for LMDZ5


Ignore:
Timestamp:
Jul 12, 2017, 8:28:32 PM (7 years ago)
Author:
oboucher
Message:

Put under the ok_lic_cond flag the option of depositing water vapour
onto snow, especially over ice sheets (lic). The default for the flag is
FALSE in order to keep backward compatibility, but should be turned to TRUE
in order to close the water budget. Tested in CM6.0.11.

Location:
LMDZ5/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/clesphys.h

    r2788 r2946  
    2929!OM Fonte calotte dans bilan eau
    3030       LOGICAL ok_lic_melt
     31!OB Depot de vapeur d eau sur la calotte pour le bilan eau
     32       LOGICAL ok_lic_cond
    3133
    3234!IM simulateur ISCCP
     
    129131     &     , ip_ebil_phy                                                &
    130132     &     , iflag_gusts ,iflag_z0_oce                                  &
    131      &     , ok_lic_melt,           aer_type                            &
     133     &     , ok_lic_melt, ok_lic_cond, aer_type                         &
    132134     &     , iflag_rrtm, ok_strato,ok_hines, ok_qch4                    &
    133135     &     , iflag_ice_thermo, ok_gwd_rando, NSW, iflag_albedo          &
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r2945 r2946  
    207207    REAL,SAVE :: cvl_corr_omp
    208208    LOGICAL,SAVE :: ok_lic_melt_omp
     209    LOGICAL,SAVE :: ok_lic_cond_omp
    209210    !
    210211    LOGICAL,SAVE  :: cycle_diurne_omp,soil_model_omp,new_oliq_omp
     
    13831384    ok_lic_melt_omp = .FALSE.
    13841385    CALL getin('ok_lic_melt', ok_lic_melt_omp)
     1386
     1387
     1388    !Config Key = ok_lic_cond
     1389    !Config Desc = Prise en compte depot de vapeur d'eau sur la calotte dans le bilan d'eau
     1390    !Config Def  = .FALSE.
     1391    !Config Help = mettre a .TRUE. pour assurer la conservation en eau
     1392    ok_lic_cond_omp = .FALSE.
     1393    CALL getin('ok_lic_cond', ok_lic_cond_omp)
    13851394
    13861395    !
  • LMDZ5/trunk/libf/phylmd/fonte_neige_mod.F90

    r2619 r2946  
    213213
    214214    snow_evap = 0.
    215     WHERE (evap > 0. )
    216        snow_evap = MIN (snow / dtime, evap)
    217        snow = snow - snow_evap * dtime
    218        snow = MAX(0.0, snow)
    219     END WHERE
     215 
     216    IF (.NOT. ok_lic_cond) THEN
     217!---only positive evaporation has an impact on snow
     218!---note that this could create a bit of water
     219!---this was the default until CMIP6
     220      WHERE (evap > 0. )
     221         snow_evap = MIN (snow / dtime, evap)    !---one cannot evaporate more than the amount of snow
     222         snow = snow - snow_evap * dtime         !---snow that remains on the ground
     223         snow = MAX(0.0, snow)                   !---just in case
     224      END WHERE
     225    ELSE
     226!--now considers both positive and negative evaporation in the budget of snow
     227      snow_evap = MIN (snow / dtime, evap)    !---one cannot evaporate more than the amount of snow
     228      snow = snow - snow_evap * dtime         !---snow that remains or deposits on the ground
     229      snow = MAX(0.0, snow)                   !---just in case
     230   ENDIF
    220231   
    221232    bil_eau_s(:) = (precip_rain(:) * dtime) - (evap(:) - snow_evap(:)) * dtime
     
    232243    fqcalving(:) = 0.0
    233244    fqfonte(:) = 0.0
     245
    234246    DO i = 1, knon
    235247       ! Y'a-t-il fonte de neige?
    236        neige_fond = ((snow(i) > epsfra .OR. nisurf == is_sic .OR. nisurf == is_lic) &
    237             .AND. tsurf_new(i) >= RTT)
     248       neige_fond = (snow(i)>epsfra .OR. nisurf==is_sic .OR. nisurf==is_lic) .AND. tsurf_new(i)>=RTT
    238249       IF (neige_fond) THEN
    239250          fq_fonte     = MIN( MAX((tsurf_new(i)-RTT )/chasno,0.0),snow(i))
     
    258269       ENDIF
    259270
    260        ! s'il y a une hauteur trop importante de neige, elle s'coule
     271       ! s'il y a une hauteur trop importante de neige, elle est ecretee
    261272       fqcalving(i) = MAX(0., snow(i) - snow_max)/dtime
    262273       snow(i)=MIN(snow(i),snow_max)
    263     END DO
    264 
     274    ENDDO
    265275
    266276    IF (nisurf == is_ter) THEN
     
    269279          run_off_ter(i) = run_off_ter(i) + MAX(qsol(i) - max_eau_sol, 0.0)
    270280          qsol(i) = MIN(qsol(i), max_eau_sol)
    271        END DO
     281       ENDDO
    272282    ELSE IF (nisurf == is_lic) THEN
    273283       DO i = 1, knon
    274284          j = knindex(i)
    275           run_off_lic(i)   = (coeff_rel *  fqcalving(i)) + &
    276                (1. - coeff_rel) * run_off_lic_0(j)
     285          !--temporal filtering
     286          run_off_lic(i)   = coeff_rel*fqcalving(i) + (1.-coeff_rel)*run_off_lic_0(j)
    277287          run_off_lic_0(j) = run_off_lic(i)
     288          !--add melting snow and liquid precip to runoff of ice cap
    278289          run_off_lic(i)   = run_off_lic(i) + fqfonte(i) + precip_rain(i)
    279        END DO
     290       ENDDO
    280291    ENDIF
    281292   
Note: See TracChangeset for help on using the changeset viewer.