Changeset 2538 for LMDZ5/trunk


Ignore:
Timestamp:
Jun 3, 2016, 4:12:16 PM (9 years ago)
Author:
Laurent Fairhead
Message:

Computation of heat fluxes associated with solid and liquid precipitations
over ocean and seaice. Quantities are sent to the coupler
LF

Location:
LMDZ5/trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/DefLists/field_def_lmdz.xml

    r2519 r2538  
    379379        <field id="z0h_oce"    long_name="roughness length, enthalpy oce"    unit="m" />
    380380        <field id="z0h_sic"    long_name="roughness length, enthalpy sic"    unit="m" />
     381        <field id="sens_rain_oce"  long_name="Sensible heat flux associated withliquid prec. over ocean"    unit="W/m2" />
     382        <field id="sens_rain_sic"  long_name="Sensible heat flux associated with liquid prec. over seaice"    unit="W/m2" />
     383        <field id="sens_snow_oce"  long_name="Sensible heat flux associated with solid prec. over ocean"    unit="W/m2" />
     384        <field id="sens_snow_sic"  long_name="Sensible heat flux associated with solid prec. over seaice"    unit="W/m2" />
     385        <field id="lat_rain_oce"  long_name="Latent heat flux associated with liquid prec. over ocean"    unit="W/m2" />
     386        <field id="lat_rain_sic"  long_name="Latent heat flux associated with liquid prec. over seaice"    unit="W/m2" />
     387        <field id="lat_snow_oce"  long_name="Latent heat flux associated with solid prec. over ocean"    unit="W/m2" />
     388        <field id="lat_snow_sic"  long_name="Latent heat flux associated with solid prec. over seaice"    unit="W/m2" />
    381389        <field id="alb1"    long_name="Surface VIS albedo"    unit="-" />
    382390        <field id="alb2"    long_name="Surface Near IR albedo"    unit="-" />
  • LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90

    • Property svn:keywords changed from Author Date Id Revision to Id
    r2254 r2538  
     1!
     2! $Id$
    13!
    24MODULE calcul_fluxs_mod
     
    911       radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, &
    1012       fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, &
    11        tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     13       tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     14       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     15 
    1216   
    1317    USE dimphy, ONLY : klon
     
    4953!   dflux_s      derivee du flux de chaleur sensible / Ts
    5054!   dflux_l      derivee du flux de chaleur latente  / Ts
    51 !
     55!   sens_prec_liq flux sensible lié aux echanges de precipitations liquides
     56!   sens_prec_sol                                    precipitations solides
     57!   lat_prec_liq  flux latent lié aux echanges de precipitations liquides
     58!   lat_prec_sol                                  precipitations solides
    5259
    5360    INCLUDE "YOETHF.h"
     
    7784    REAL, DIMENSION(klon), INTENT(OUT)   :: tsurf_new, evap, fluxsens, fluxlat
    7885    REAL, DIMENSION(klon), INTENT(OUT)   :: dflux_s, dflux_l
     86    REAL, DIMENSION(klon), OPTIONAL      :: sens_prec_liq, sens_prec_sol
     87    REAL, DIMENSION(klon), OPTIONAL      :: lat_prec_liq, lat_prec_sol
    7988
    8089! Variables locales
     
    130139    dflux_s = 0.
    131140    dflux_l = 0.
     141    if (PRESENT(sens_prec_liq)) sens_prec_liq = 0.
     142    if (PRESENT(sens_prec_sol)) sens_prec_sol = 0.
     143    if (PRESENT(lat_prec_liq)) lat_prec_liq = 0.
     144    if (PRESENT(lat_prec_sol)) lat_prec_sol = 0.
    132145!
    133146! zx_qs = qsat en kg/kg
     
    243256!!$     &  run_off(i) = run_off(i) + max(qsol(i) - max_eau_sol, 0.0)
    244257!!$    qsol(i) = min(qsol(i), max_eau_sol)
     258!
     259! calcul de l'enthalpie des precipitations liquides et solides
     260!
     261!       if (PRESENT(enth_prec_liq))                   &
     262!       enth_prec_liq(i) = rcw * (t1lay(i) - tsurf(i)) * &
     263!                          precip_rain(i)
     264!       if (PRESENT(enth_prec_sol))                  &
     265!       enth_prec_sol(i) = rcs * (t1lay(i) - tsurf(i)) * &
     266!                          precip_snow(i)
     267! On calcule par rapport a T=0
     268       if (PRESENT(sens_prec_liq))                   &
     269         sens_prec_liq(i) = rcw * (t1lay(i) - RTT) * &
     270                          precip_rain(i)
     271       if (PRESENT(sens_prec_sol))                   &
     272         sens_prec_sol(i) = rcs * (t1lay(i) - RTT) * &
     273                          precip_snow(i)
     274       if (PRESENT(lat_prec_liq))                    &
     275         lat_prec_liq(i) =  precip_rain(i) * (RLVTT - RLVTT)
     276       if (PRESENT(lat_prec_sol))                    &
     277         lat_prec_sol(i) = precip_snow(i) * (RLSTT - RLVTT)
    245278    ENDDO
     279
     280   
     281!       if (PRESENT(sens_prec_liq))                  &
     282!          WRITE(*,*)' calculs_fluxs sens_prec_liq (min, max)', &
     283!          MINVAL(sens_prec_liq(1:knon)), MAXVAL(sens_prec_liq(1:knon))
     284!       if (PRESENT(sens_prec_sol))                  &
     285!          WRITE(*,*)' calculs_fluxs sens_prec_sol (min, max)', &
     286!          MINVAL(sens_prec_sol(1:knon)), MAXVAL(sens_prec_sol(1:knon))
     287 
    246288!
    247289!****************************************************************************************
  • LMDZ5/trunk/libf/phylmd/cpl_mod.F90

    r2429 r2538  
    5252  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp
    5353  !$OMP THREADPRIVATE(cpl_windsp)
     54  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_sens_rain, cpl_sens_snow
     55  !$OMP THREADPRIVATE(cpl_sens_rain, cpl_sens_snow)
    5456  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_taumod
    5557  !$OMP THREADPRIVATE(cpl_taumod)
     
    9092  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp2D
    9193  !$OMP THREADPRIVATE(cpl_windsp2D)
     94  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE   :: cpl_sens_rain2D, cpl_sens_snow2D
     95  !$OMP THREADPRIVATE(cpl_sens_rain2D, cpl_sens_snow2D)
    9296  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_atm_co22D
    9397  !$OMP THREADPRIVATE(cpl_atm_co22D)
     
    168172    ALLOCATE(cpl_windsp(klon,2), stat = error)
    169173    sum_error = sum_error + error
    170     ALLOCATE(cpl_taumod(klon,2), stat = error)
     174    ALLOCATE(cpl_sens_rain(klon,2), stat = error)
     175    sum_error = sum_error + error
     176    ALLOCATE(cpl_sens_snow(klon,2), stat = error)
    171177    sum_error = sum_error + error
    172178    ALLOCATE(cpl_rriv2D(nbp_lon,jj_nb), stat=error)
     
    531537  SUBROUTINE cpl_send_ocean_fields(itime, knon, knindex, &
    532538       swdown, lwdown, fluxlat, fluxsens, &
    533        precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp)
     539       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp,&
     540       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
    534541!
    535542! This subroutine cumulates some fields for each time-step during a coupling
     
    552559    REAL, DIMENSION(klon), INTENT(IN)       :: evap, tsurf, fder, albsol
    553560    REAL, DIMENSION(klon), INTENT(IN)       :: taux, tauy, windsp
     561    REAL, DIMENSION(klon), INTENT(IN)       :: sens_prec_liq, sens_prec_sol
     562    REAL, DIMENSION(klon), INTENT(IN)       :: lat_prec_liq, lat_prec_sol
    554563
    555564! Local variables
     
    583592       cpl_tauy(1:knon,cpl_index) = 0.0
    584593       cpl_windsp(1:knon,cpl_index) = 0.0
     594       cpl_sens_rain(1:knon,cpl_index) = 0.0
     595       cpl_sens_snow(1:knon,cpl_index) = 0.0
    585596       cpl_taumod(1:knon,cpl_index) = 0.0
    586597       IF (carbon_cycle_cpl) cpl_atm_co2(1:knon,cpl_index) = 0.0
     
    614625       cpl_windsp(ig,cpl_index) = cpl_windsp(ig,cpl_index) + &
    615626            windsp(ig)      / REAL(nexca)
     627       cpl_sens_rain(ig,cpl_index) = cpl_sens_rain(ig,cpl_index) + &
     628            sens_prec_liq(ig)      / REAL(nexca)
     629       cpl_sens_snow(ig,cpl_index) = cpl_sens_snow(ig,cpl_index) + &
     630            sens_prec_sol(ig)      / REAL(nexca)
    616631       cpl_taumod(ig,cpl_index) =   cpl_taumod(ig,cpl_index) + &
    617632          SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / REAL (nexca)
     
    654669          sum_error = sum_error + error
    655670          ALLOCATE(cpl_windsp2D(nbp_lon,jj_nb), stat=error)
     671          sum_error = sum_error + error
     672          ALLOCATE(cpl_sens_rain2D(nbp_lon,jj_nb,2), stat=error)
     673          sum_error = sum_error + error
     674          ALLOCATE(cpl_sens_snow2D(nbp_lon,jj_nb,2), stat=error)
    656675          sum_error = sum_error + error
    657676          ALLOCATE(cpl_taumod2D(nbp_lon,jj_nb,2), stat=error)
     
    706725            knon, knindex)
    707726
     727       CALL gath2cpl(cpl_sens_rain(:,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &
     728            knon, knindex)
     729
     730       CALL gath2cpl(cpl_sens_snow(:,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &
     731            knon, knindex)
     732
    708733       CALL gath2cpl(cpl_taumod(:,cpl_index), cpl_taumod2D(:,:,cpl_index), &
    709734            knon, knindex)
     
    722747       pctsrf, lafin, rlon, rlat, &
    723748       swdown, lwdown, fluxlat, fluxsens, &
    724        precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy)
     749       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy,&
     750       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
    725751!
    726752! This subroutine cumulates some fields for each time-step during a coupling
     
    746772    REAL, DIMENSION(klon), INTENT(IN)       :: albsol, taux, tauy
    747773    REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf
     774    REAL, DIMENSION(klon), INTENT(IN)       :: sens_prec_liq, sens_prec_sol
     775    REAL, DIMENSION(klon), INTENT(IN)       :: lat_prec_liq, lat_prec_sol
    748776    LOGICAL, INTENT(IN)                     :: lafin
    749777
     
    778806       cpl_taux(1:knon,cpl_index) = 0.0
    779807       cpl_tauy(1:knon,cpl_index) = 0.0
     808       cpl_sens_rain(1:knon,cpl_index) = 0.0
     809       cpl_sens_snow(1:knon,cpl_index) = 0.0
    780810       cpl_taumod(1:knon,cpl_index) = 0.0
    781811    ENDIF
     
    806836       cpl_tauy(ig,cpl_index) = cpl_tauy(ig,cpl_index) + &
    807837            tauy(ig)        / REAL(nexca)     
     838       cpl_sens_rain(ig,cpl_index) = cpl_sens_rain(ig,cpl_index) + &
     839            sens_prec_liq(ig)      / REAL(nexca)
     840       cpl_sens_snow(ig,cpl_index) = cpl_sens_snow(ig,cpl_index) + &
     841            sens_prec_sol(ig)      / REAL(nexca)
    808842       cpl_taumod(ig,cpl_index) = cpl_taumod(ig,cpl_index) + &
    809843            SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / REAL(nexca)
     
    839873          sum_error = sum_error + error
    840874          ALLOCATE(cpl_windsp2D(nbp_lon,jj_nb), stat=error)
     875          sum_error = sum_error + error
     876          ALLOCATE(cpl_sens_rain2D(nbp_lon,jj_nb,2), stat=error)
     877          sum_error = sum_error + error
     878          ALLOCATE(cpl_sens_snow2D(nbp_lon,jj_nb,2), stat=error)
    841879          sum_error = sum_error + error
    842880          ALLOCATE(cpl_taumod2D(nbp_lon,jj_nb,2), stat=error)
     
    889927
    890928       CALL gath2cpl(cpl_tauy(:,cpl_index), cpl_tauy2D(:,:,cpl_index), &
     929            knon, knindex)
     930
     931       CALL gath2cpl(cpl_sens_rain(:,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &
     932            knon, knindex)
     933
     934       CALL gath2cpl(cpl_sens_snow(:,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &
    891935            knon, knindex)
    892936
     
    10781122    tab_flds(:,:,ids_nsfice) = cpl_nsol2D(:,:,2)
    10791123    tab_flds(:,:,ids_dflxdt) = cpl_fder2D(:,:,2)
     1124    tab_flds(:,:,ids_qraioc) = cpl_sens_rain2D(:,:,1)
     1125    tab_flds(:,:,ids_qsnooc) = cpl_sens_snow2D(:,:,1)
     1126    tab_flds(:,:,ids_qraiic) = cpl_sens_rain2D(:,:,2)
     1127    tab_flds(:,:,ids_qsnoic) = cpl_sens_snow2D(:,:,2)
    10801128   
    10811129    IF (version_ocean=='nemo') THEN
     
    12791327    DEALLOCATE(cpl_taux2D, cpl_tauy2D, cpl_windsp2D, cpl_taumod2D, stat=error )
    12801328    sum_error = sum_error + error
     1329    DEALLOCATE(cpl_sens_rain2D, cpl_sens_snow2D, stat=error)
     1330    sum_error = sum_error + error
     1331
    12811332   
    12821333    IF (carbon_cycle_cpl) THEN
  • LMDZ5/trunk/libf/phylmd/oasis.F90

    r2429 r2538  
    5555  INTEGER, PARAMETER :: ids_atmco2 = 24
    5656  INTEGER, PARAMETER :: ids_taumod = 25
    57   INTEGER, PARAMETER :: maxsend    = 25  ! Maximum number of fields to send
     57  INTEGER, PARAMETER :: ids_qraioc = 26
     58  INTEGER, PARAMETER :: ids_qsnooc = 27
     59  INTEGER, PARAMETER :: ids_qraiic = 28
     60  INTEGER, PARAMETER :: ids_qsnoic = 29
     61  INTEGER, PARAMETER :: maxsend    = 29  ! Maximum number of fields to send
    5862 
    5963  ! Id for fields received from ocean
     
    177181            infosend(ids_atmco2)%action = .TRUE. ; infosend(ids_atmco2)%name = 'COATMCO2'
    178182        ENDIF
     183        infosend(ids_qraioc)%action = .TRUE. ; infosend(ids_qraioc)%name = 'COQRAIOC'
     184        infosend(ids_qsnooc)%action = .TRUE. ; infosend(ids_qsnooc)%name = 'COQSNOOC'
     185        infosend(ids_qraiic)%action = .TRUE. ; infosend(ids_qraiic)%name = 'COQRAIIC'
     186        infosend(ids_qsnoic)%action = .TRUE. ; infosend(ids_qsnoic)%name = 'COQSNOIC'
    179187       
    180188    ELSE IF (version_ocean=='opa8') THEN
  • LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90

    • Property svn:keywords changed from Author Date Id Revision to Id
    r2254 r2538  
     1!
     2! $Id$
    13!
    24MODULE ocean_cpl_mod
     
    1012
    1113  PUBLIC :: ocean_cpl_init, ocean_cpl_noice, ocean_cpl_ice
     14
    1215
    1316!****************************************************************************************
     
    6366    USE calcul_fluxs_mod
    6467    USE indice_sol_mod
     68    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
     69    USE cpl_mod,             ONLY : gath2cpl
    6570
    6671    INCLUDE "YOMCST.h"
     
    99104    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
    100105    REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l     
     106 
    101107
    102108! Local variables
    103109!****************************************************************************************
    104     INTEGER               :: i
     110    INTEGER               :: i, j
    105111    INTEGER, DIMENSION(1) :: iloc
    106112    REAL, DIMENSION(klon) :: cal, beta, dif_grnd
     
    110116    REAL, DIMENSION(klon) :: u1_lay, v1_lay
    111117    LOGICAL               :: check=.FALSE.
     118    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol   
     119    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol   
    112120
    113121! End definitions
     
    130138    dif_grnd = 0.
    131139    agesno(:) = 0.
     140    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
     141   
    132142
    133143    DO i = 1, knon
     
    141151         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
    142152         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    143          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     153         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     154         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     155    do j = 1, knon
     156      i = knindex(j)
     157      sens_prec_liq_o(i,1) = sens_prec_liq(j)
     158      sens_prec_sol_o(i,1) = sens_prec_sol(j)
     159      lat_prec_liq_o(i,1) = lat_prec_liq(j)
     160      lat_prec_sol_o(i,1) = lat_prec_sol(j)
     161    enddo
     162
     163
    144164   
    145165! - Flux calculation at first modele level for U and V
     
    171191    CALL cpl_send_ocean_fields(itime, knon, knindex, &
    172192         swnet, lwnet, fluxlat, fluxsens, &
    173          precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1, windsp)
     193         precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1, windsp,&
     194         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
    174195   
    175196
     
    199220    USE calcul_fluxs_mod
    200221    USE indice_sol_mod
     222    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
    201223
    202224    INCLUDE "YOMCST.h"
     
    237259    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
    238260    REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l     
     261 
    239262
    240263! Local variables
    241264!****************************************************************************************
    242     INTEGER                 :: i
     265    INTEGER                 :: i, j
    243266    INTEGER, DIMENSION(1)   :: iloc
    244267    LOGICAL                 :: check=.FALSE.
     
    249272    REAL, DIMENSION(klon)   :: u0, v0
    250273    REAL, DIMENSION(klon)   :: u1_lay, v1_lay
     274    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol   
     275    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol   
    251276
    252277! End definitions
     
    254279   
    255280    IF (check) WRITE(*,*)'Entering surface_seaice, knon=',knon
     281
     282    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
    256283
    257284!****************************************************************************************
     
    285312         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
    286313         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    287          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     314         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     315         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     316    do j = 1, knon
     317      i = knindex(j)
     318      sens_prec_liq_o(i,2) = sens_prec_liq(j)
     319      sens_prec_sol_o(i,2) = sens_prec_sol(j)
     320      lat_prec_liq_o(i,2) = lat_prec_liq(j)
     321      lat_prec_sol_o(i,2) = lat_prec_sol(j)
     322    enddo
    288323
    289324
     
    317352       pctsrf, lafin, rlon, rlat, &
    318353       swnet, lwnet, fluxlat, fluxsens, &
    319        precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1)
     354       precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1,&
     355       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     356
    320357 
    321358
  • LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90

    • Property svn:keywords changed from Author Date Id Revision to Id
    r2254 r2538  
     1!
     2! $Id$
    13!
    24MODULE ocean_forced_mod
     
    3234    USE mod_grid_phy_lmdz
    3335    USE indice_sol_mod
     36    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
     37
    3438    INCLUDE "YOMCST.h"
    3539    INCLUDE "clesphys.h"
     
    6670! Local variables
    6771!****************************************************************************************
    68     INTEGER                     :: i
     72    INTEGER                     :: i, j
    6973    REAL, DIMENSION(klon)       :: cal, beta, dif_grnd
    7074    REAL, DIMENSION(klon)       :: alb_neig, tsurf_lim, zx_sl
     
    7276    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
    7377    LOGICAL                     :: check=.FALSE.
     78    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol   
     79    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol   
    7480
    7581!****************************************************************************************
     
    103109    alb_neig(:) = 0.
    104110    agesno(:) = 0.
     111    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
     112
    105113! Suppose zero surface speed
    106114    u0(:)=0.0
     
    115123         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
    116124         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    117          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     125         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     126         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     127
     128    do j = 1, knon
     129      i = knindex(j)
     130      sens_prec_liq_o(i,1) = sens_prec_liq(j)
     131      sens_prec_sol_o(i,1) = sens_prec_sol(j)
     132      lat_prec_liq_o(i,1) = lat_prec_liq(j)
     133      lat_prec_sol_o(i,1) = lat_prec_sol(j)
     134    enddo
     135
    118136
    119137! - Flux calculation at first modele level for U and V
     
    148166    USE fonte_neige_mod,  ONLY : fonte_neige
    149167    USE indice_sol_mod
     168    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
    150169
    151170!    INCLUDE "indicesol.h"
     
    189208!****************************************************************************************
    190209    LOGICAL                     :: check=.FALSE.
    191     INTEGER                     :: i
     210    INTEGER                     :: i, j
    192211    REAL                        :: zfra
    193212    REAL, PARAMETER             :: t_grnd=271.35
     
    197216    REAL, DIMENSION(klon)       :: u0, v0
    198217    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
     218    REAL, DIMENSION(klon)       :: sens_prec_liq, sens_prec_sol   
     219    REAL, DIMENSION(klon)       :: lat_prec_liq, lat_prec_sol   
     220
    199221
    200222!****************************************************************************************
     
    208230!                    dflux_s, dflux_l and qsurf
    209231!****************************************************************************************
     232
    210233    tsurf_tmp(:) = tsurf_in(:)
    211234
     
    227250
    228251    beta = 1.0
     252    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
     253
    229254! Suppose zero surface speed
    230255    u0(:)=0.0
     
    237262         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
    238263         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    239          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     264         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     265         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     266    do j = 1, knon
     267      i = knindex(j)
     268      sens_prec_liq_o(i,2) = sens_prec_liq(j)
     269      sens_prec_sol_o(i,2) = sens_prec_sol(j)
     270      lat_prec_liq_o(i,2) = lat_prec_liq(j)
     271      lat_prec_sol_o(i,2) = lat_prec_sol(j)
     272    enddo
    240273
    241274! - Flux calculation at first modele level for U and V
  • LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r2536 r2538  
    162162  TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), &
    163163    'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 9) /))
     164
     165  TYPE(ctrl_out), SAVE :: o_sens_prec_liq_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     166    'sens_rain_oce', 'Sensible heat flux of liquid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
     167  TYPE(ctrl_out), SAVE :: o_sens_prec_liq_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     168    'sens_rain_sic', 'Sensible heat flux of liquid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
     169  TYPE(ctrl_out), SAVE :: o_sens_prec_sol_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     170    'sens_snow_oce', 'Sensible heat flux of solid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
     171  TYPE(ctrl_out), SAVE :: o_sens_prec_sol_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     172    'sens_snow_sic', 'Sensible heat flux of solid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
     173  TYPE(ctrl_out), SAVE :: o_lat_prec_liq_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     174    'lat_rain_oce', 'Latent heat flux of liquid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
     175  TYPE(ctrl_out), SAVE :: o_lat_prec_liq_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     176    'lat_rain_sic', 'Latent heat flux of liquid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
     177  TYPE(ctrl_out), SAVE :: o_lat_prec_sol_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     178    'lat_snow_oce', 'Latent heat flux of solid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
     179  TYPE(ctrl_out), SAVE :: o_lat_prec_sol_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
     180    'lat_snow_sic', 'Latent heat flux of solid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
     181
    164182
    165183  TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evap_srf     = (/ &
  • LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90

    r2529 r2538  
    7676  END TYPE ctrl_out
    7777
     78  REAL, SAVE, ALLOCATABLE :: sens_prec_liq_o(:,:), sens_prec_sol_o(:,:)
     79  REAL, SAVE, ALLOCATABLE :: lat_prec_liq_o(:,:), lat_prec_sol_o(:,:)
     80 !$OMP THREADPRIVATE(sens_prec_liq_o, sens_prec_sol_o,lat_prec_liq_o,lat_prec_sol_o)
     81
    7882CONTAINS
    7983
     
    9094    allocate(snow_o(klon), zfra_o(klon))
    9195    allocate(itau_con(klon))
     96    allocate(sens_prec_liq_o(klon,2))
     97    allocate(sens_prec_sol_o(klon,2))
     98    allocate(lat_prec_liq_o(klon,2))
     99    allocate(lat_prec_sol_o(klon,2))
     100    sens_prec_liq_o = 0.0 ; sens_prec_sol_o = 0.0
     101    lat_prec_liq_o = 0.0 ; lat_prec_sol_o = 0.0
     102
    92103    allocate (bils_ec(klon),bils_ech(klon),bils_tke(klon),bils_diss(klon),bils_kinetic(klon),bils_enthalp(klon),bils_latent(klon))
    93104
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r2536 r2538  
    163163         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
    164164         o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, &
    165          o_ustr_gwd_front,o_vstr_gwd_front
     165         o_ustr_gwd_front,o_vstr_gwd_front, &
     166         o_sens_prec_liq_oce, o_sens_prec_liq_sic, &
     167         o_sens_prec_sol_oce, o_sens_prec_sol_sic, &
     168         o_lat_prec_liq_oce, o_lat_prec_liq_sic, &
     169         o_lat_prec_sol_oce, o_lat_prec_sol_sic
    166170
    167171    USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, &
     
    257261         itau_con, nfiles, clef_files, nid_files, &
    258262         zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
    259          zustr_gwd_front, zvstr_gwd_front                                   
     263         zustr_gwd_front, zvstr_gwd_front,     &
     264         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
     265 
     266
    260267    USE ocean_slab_mod, only: tslab, slab_bils, slab_bilg, tice, seaice
    261268    USE pbl_surface_mod, only: snow
     
    621628
    622629       ENDDO
     630
     631       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
     632       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
     633       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
     634       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
     635       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
     636       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
     637       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
     638       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
     639
     640       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
     641       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
     642       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
     643       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
     644       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
     645       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
     646       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
     647       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
     648
    623649       DO nsrf=1,nbsrf+1
    624650          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
  • LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90

    r2455 r2538  
     1!
     2! $Id$
    13!
    24MODULE surf_ocean_mod
  • LMDZ5/trunk/libf/phylmd/surface_data.F90

    • Property svn:keywords changed from Author Date Id Revision to Id
    r2209 r2538  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44MODULE surface_data
Note: See TracChangeset for help on using the changeset viewer.