Changeset 2042


Ignore:
Timestamp:
May 14, 2014, 11:18:03 AM (10 years ago)
Author:
fhourdin
Message:

Ajout d'un diagnostique pour la conservation de l'energie.
Added diagnostic for energie conservation.

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

Legend:

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

    r1907 r2042  
    2020! From module
    2121USE phys_local_var_mod, ONLY : d_u_vdf,d_v_vdf,d_t_vdf,d_u_ajs,d_v_ajs,d_t_ajs,d_u_con,d_v_con,d_t_con,d_t_diss
    22 USE phys_output_var_mod, ONLY : bils_ec,bils_tke,bils_kinetic,bils_enthalp,bils_latent,bils_diss
     22USE phys_local_var_mod, ONLY : d_t_eva,d_t_lsc,d_q_eva,d_q_lsc
     23USE phys_output_var_mod, ONLY : bils_ec,bils_ech,bils_tke,bils_kinetic,bils_enthalp,bils_latent,bils_diss
    2324
    2425IMPLICIT none
     
    4142REAL, DIMENSION(klon,klev+1) :: fluxu,fluxv,fluxt
    4243REAL, DIMENSION(klon,klev+1) :: dddu,dddv,dddt
    43 REAL, DIMENSION(klon,klev) :: d_u,d_v,d_t,zv,zu
     44REAL, DIMENSION(klon,klev) :: d_u,d_v,d_t,zv,zu,d_t_ech
    4445REAL ZRCPD
    4546
     
    131132
    132133   do k=1,klev
    133       d_t_ec(:,k)=-(dddu(:,k)+dddu(:,k+1)+dddv(:,k)+dddv(:,k+1) &
    134    &  +rcpd*(dddt(:,k)+dddt(:,k+1)))/(2.*rcpd*masse(:,k))
     134      d_t_ech(:,k)=-(rcpd*(dddt(:,k)+dddt(:,k+1)))/(2.*rcpd*masse(:,k))
     135      d_t_ec(:,k)=-(dddu(:,k)+dddu(:,k+1)+dddv(:,k)+dddv(:,k+1))/(2.*rcpd*masse(:,k))+d_t_ech(:,k)
    135136   enddo
    136 ! d_t_ec=0.
    137137
    138138ENDIF
     
    141141!  Computation of integrated enthalpie and kinetic energy variation
    142142!  FH (hourdin@lmd.jussieu.fr), 2013/04/25
     143!  bils_ec : energie conservation term
     144!  bils_ech : part of this term linked to temperature
     145!  bils_tke : change of TKE
     146!  bils_diss : dissipation of TKE (when activated)
     147!  bils_kinetic : change of kinetic energie of the column
     148!  bils_enthalp : change of enthalpie
     149!  bils_latent  : change of latent heat. Computed between
     150!          after reevaporation (at the beginning of the physics)
     151!          and before large scale condensation (fisrtilp)
    143152!================================================================
    144153
    145154      bils_ec(:)=0.
     155      bils_ech(:)=0.
    146156      bils_tke(:)=0.
    147157      bils_diss(:)=0.
     
    151161      DO k=1,klev
    152162        bils_ec(:)=bils_ec(:)-d_t_ec(:,k)*masse(:,k)
     163        bils_ech(:)=bils_ech(:)-d_t_ech(:,k)*masse(:,k)
    153164        bils_tke(:)=bils_tke(:)+0.5*(dtke(:,k)+dtke(:,k+1))*masse(:,k)
    154165        bils_diss(:)=bils_diss(:)-d_t_diss(:,k)*masse(:,k)
     
    157168     &            -puo(:,k)*puo(:,k)-pvo(:,k)*pvo(:,k))
    158169        bils_enthalp(:)= &
    159      &  bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k))
     170     &  bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k)-d_t_eva(:,k)-d_t_lsc(:,k))
     171!    &  bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k))
    160172        bils_latent(:)=bils_latent(:)+masse(:,k)* &
    161      &             (pqn(:,k)-pqo(:,k))
     173!    &             (pqn(:,k)-pqo(:,k))
     174     &             (pqn(:,k)-pqo(:,k)-d_q_eva(:,k)-d_q_lsc(:,k))
    162175      ENDDO
    163176      bils_ec(:)=rcpd*bils_ec(:)/pdtphys
     177      bils_ech(:)=rcpd*bils_ech(:)/pdtphys
    164178      bils_tke(:)=bils_tke(:)/pdtphys
    165179      bils_diss(:)=rcpd*bils_diss(:)/pdtphys
  • LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r2003 r2042  
    237237    'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /))
    238238  TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), &
    239     'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /))
     239    'bils_ec', 'Surf. total heat flux correction', 'W/m2', (/ ('', i=1, 9) /))
     240  TYPE(ctrl_out), SAVE :: o_bils_ech = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), &
     241    'bils_ech', 'Surf. total heat flux correction', 'W/m2', (/ ('', i=1, 9) /))
    240242  TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), &
    241243    'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /))
  • LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90

    r1938 r2042  
    1717  !$OMP THREADPRIVATE(itau_con)
    1818  REAL, ALLOCATABLE :: bils_ec(:) ! Contribution of energy conservation
     19  REAL, ALLOCATABLE :: bils_ech(:) ! Contribution of energy conservation
    1920  REAL, ALLOCATABLE :: bils_tke(:) ! Contribution of energy conservation
    2021  REAL, ALLOCATABLE :: bils_diss(:) ! Contribution of energy conservation
     
    2223  REAL, ALLOCATABLE :: bils_enthalp(:) ! bilan de chaleur au sol
    2324  REAL, ALLOCATABLE :: bils_latent(:) ! bilan de chaleur au sol
    24   !$OMP THREADPRIVATE(bils_ec,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
     25  !$OMP THREADPRIVATE(bils_ec,bils_ech,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
    2526
    2627
     
    8384    allocate(snow_o(klon), zfra_o(klon))
    8485    allocate(itau_con(klon))
    85     allocate (bils_ec(klon),bils_tke(klon),bils_diss(klon),bils_kinetic(klon),bils_enthalp(klon),bils_latent(klon))
     86    allocate (bils_ec(klon),bils_ech(klon),bils_tke(klon),bils_diss(klon),bils_kinetic(klon),bils_enthalp(klon),bils_latent(klon))
    8687
    8788    IF (ok_gwd_rando) allocate(zustr_gwd_rando(klon), zvstr_gwd_rando(klon))
     
    9596
    9697    deallocate(snow_o,zfra_o,itau_con)
    97     deallocate (bils_ec,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
     98    deallocate (bils_ec,bils_ech,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
    9899
    99100  END SUBROUTINE phys_output_var_end
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r2003 r2042  
    4545         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
    4646         o_LWdnSFCclr, o_bils, o_bils_diss, &
    47          o_bils_ec, o_bils_tke, o_bils_kinetic, &
     47         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
    4848         o_bils_latent, o_bils_enthalp, o_sens, &
    4949         o_fder, o_ffonte, o_fqcalving, o_fqfonte, &
     
    217217
    218218    USE phys_output_var_mod, only: vars_defined, snow_o, zfra_o, bils_diss, &
    219          bils_ec, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
     219         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
    220220         itau_con, nfiles, clef_files, nid_files, zvstr_gwd_rando
    221221    USE indice_sol_mod, only: nbsrf
     
    467467       CALL histwrite_phy(o_bils_diss, bils_diss)
    468468       CALL histwrite_phy(o_bils_ec, bils_ec)
     469       CALL histwrite_phy(o_bils_ech, bils_ech)
    469470       CALL histwrite_phy(o_bils_tke, bils_tke)
    470471       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
Note: See TracChangeset for help on using the changeset viewer.