Ignore:
Timestamp:
Apr 3, 2015, 12:16:36 PM (10 years ago)
Author:
fhourdin
Message:

Modification du calcul des flux air/mer
1) Introduction d'un facteur f_qsat_oce=0.98 devant qsat dans le calcul
de l'évaporation sur océan pour tenir compte de la moindre évaporation
de l'eau salée.
2) Introduction d'une différentiation entre z0 pour le sensible, z0h,
et le latent, z0q, imposé constant z0q=f_z0qh_oce*z0h

Modification of air/sea fluxes computation
1) Introduction of a correcting factor f_qsat_oce=0.98 on qsat
to account for the weaker evaporation of salty water.
2) Introduction of z0q=f_z0qh_oce*z0h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90

    r2243 r2254  
    66CONTAINS
    77!
    8 !****************************************************************************************
     8!******************************************************************************
    99!
    1010  SUBROUTINE surf_ocean(rlon, rlat, swnet, lwnet, alb1, &
    1111       windsp, rmu0, fder, tsurf_in, &
    1212       itime, dtime, jour, knon, knindex, &
    13        p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
     13       p1lay, z1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
    1414       AcoefH, AcoefQ, BcoefH, BcoefQ, &
    1515       AcoefU, AcoefV, BcoefU, BcoefV, &
     
    3838
    3939! Input variables
    40 !****************************************************************************************
     40!******************************************************************************
    4141    INTEGER, INTENT(IN)                      :: itime, jour, knon
    4242    INTEGER, DIMENSION(klon), INTENT(IN)     :: knindex
     
    5050    REAL, DIMENSION(klon), INTENT(IN)        :: fder
    5151    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
    52     REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
     52    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay,z1lay ! pression (Pa) et altitude (m) du premier niveau
    5353    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh
    5454    REAL, DIMENSION(klon), INTENT(IN)        :: cdragm
     
    6363
    6464! In/Output variables
    65 !****************************************************************************************
     65!******************************************************************************
    6666    REAL, DIMENSION(klon), INTENT(INOUT)     :: snow
    6767    REAL, DIMENSION(klon), INTENT(INOUT)     :: qsurf
     
    6969
    7070! Output variables
    71 !****************************************************************************************
     71!******************************************************************************
    7272    REAL, DIMENSION(klon), INTENT(OUT)       :: z0m, z0h
    7373!albedo SB >>>
     
    8484
    8585! Local variables
    86 !****************************************************************************************
     86!******************************************************************************
    8787    INTEGER               :: i, k
    8888    REAL                  :: tmp
     
    9090    REAL, DIMENSION(klon) :: alb_eau
    9191    REAL, DIMENSION(klon) :: radsol
     92    REAL, DIMENSION(klon) :: cdragq ! Cdrag pour l'evaporation
    9293
    9394! End definition
    94 !****************************************************************************************
    95 
    96 
    97 !****************************************************************************************
     95!******************************************************************************
     96
     97
     98!******************************************************************************
    9899! Calculate total net radiance at surface
    99100!
    100 !****************************************************************************************
     101!******************************************************************************
    101102    radsol(:) = 0.0
    102103    radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
    103104
    104 !****************************************************************************************
     105!******************************************************************************
     106! Cdragq computed from cdrag
     107! The difference comes only from a factor (f_z0qh_oce) on z0, so that
     108! it can be computed inside surf_ocean
     109! More complicated appraches may require the propagation through
     110! pbl_surface of an independant cdragq variable.
     111!******************************************************************************
     112
     113    IF ( f_z0qh_oce .ne. 1.) THEN
     114       cdragq(:)=cdragh(:)*                                      &
     115       log(z1lay(:)/z0h(:))/log(z1lay(:)/(f_z0qh_oce*z0h(:)))
     116    ELSE
     117       cdragq(:)=cdragh(:)
     118    ENDIF
     119
     120!******************************************************************************
    105121! Switch according to type of ocean (couple, slab or forced)
    106 !****************************************************************************************
     122!******************************************************************************
    107123    SELECT CASE(type_ocean)
    108124    CASE('couple')
     
    111127            windsp, fder, &
    112128            itime, dtime, knon, knindex, &
    113             p1lay, cdragh, cdragm, precip_rain, precip_snow,temp_air,spechum,&
     129            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow,temp_air,spechum,&
    114130            AcoefH, AcoefQ, BcoefH, BcoefQ, &
    115131            AcoefU, AcoefV, BcoefU, BcoefV, &
     
    122138       CALL ocean_slab_noice( &
    123139            itime, dtime, jour, knon, knindex, &
    124             p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum,&
     140            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum,&
    125141            AcoefH, AcoefQ, BcoefH, BcoefQ, &
    126142            AcoefU, AcoefV, BcoefU, BcoefV, &
     
    133149       CALL ocean_forced_noice( &
    134150            itime, dtime, jour, knon, knindex, &
    135             p1lay, cdragh, cdragm, precip_rain, precip_snow, &
     151            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, &
    136152            temp_air, spechum, &
    137153            AcoefH, AcoefQ, BcoefH, BcoefQ, &
     
    143159    END SELECT
    144160
    145 !****************************************************************************************
     161!******************************************************************************
    146162! fcodron: compute lmt_bils  forced case (same as wfbils_oce / 1.-contfracatm)
    147 !****************************************************************************************
     163!******************************************************************************
    148164    IF (type_ocean.NE.'slab') THEN
    149165        lmt_bils(:)=0.
     
    154170    END IF
    155171
    156 !****************************************************************************************
     172!******************************************************************************
    157173! Calculate albedo
    158 !
    159 !****************************************************************************************
     174!******************************************************************************
    160175!albedo SB >>>
    161 
    162 
    163176  if(iflag_albedo==1)then
    164177    call ocean_albedo(knon,rmu0,knindex,windsp,SFRWL,alb_dir_new,alb_dif_new)
     
    180193!albedo SB <<<
    181194
    182 !****************************************************************************************
     195!******************************************************************************
    183196! Calculate the rugosity
    184 !
    185 !****************************************************************************************
     197!******************************************************************************
    186198IF (iflag_z0_oce==0) THEN
    187199    DO i = 1, knon
     
    197209ENDIF
    198210!
    199 !****************************************************************************************
    200 !   
     211!******************************************************************************
    201212  END SUBROUTINE surf_ocean
    202 !
    203 !****************************************************************************************
     213!******************************************************************************
    204214!
    205215END MODULE surf_ocean_mod
Note: See TracChangeset for help on using the changeset viewer.