Ignore:
Timestamp:
May 30, 2017, 8:15:56 AM (7 years ago)
Author:
fhourdin
Message:

Nouvelles options pour la conservation de l'energie.

File:
1 edited

Legend:

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

    r2881 r2894  
    2323 &                             d_u_con,d_v_con,d_t_con,d_t_diss
    2424USE phys_local_var_mod, ONLY : d_t_eva,d_t_lsc,d_q_eva,d_q_lsc
     25USE phys_local_var_mod, ONLY : d_u_oro,d_v_oro,d_u_lif,d_v_lif
     26USE phys_local_var_mod, ONLY : du_gwd_hines,dv_gwd_hines,dv_gwd_front,dv_gwd_rando
     27USE phys_state_var_mod, ONLY : du_gwd_front,du_gwd_rando
    2528USE phys_output_var_mod, ONLY : bils_ec,bils_ech,bils_tke,bils_kinetic,bils_enthalp,bils_latent,bils_diss
    26 USE add_phys_tend_mod, ONLY : fl_cor_ebil
    2729
    2830IMPLICIT none
     
    6062   DO k = 1, klev
    6163   DO i = 1, klon
    62      IF (fl_cor_ebil .GT. 0) then
    63        ZRCPD = RCPD*(1.0+RVTMP2*(pqn(i,k)+pqln(i,k)+pqsn(i,k)))
    64      ELSE
    65        ZRCPD = RCPD*(1.0+RVTMP2*pqn(i,k))
    66      ENDIF
    67      d_t_ec(i,k)=0.5/ZRCPD &
    68  &     *(puo(i,k)**2+pvo(i,k)**2-pun(i,k)**2-pvn(i,k)**2)
    69    ENDDO
    70    ENDDO
     64      ZRCPD = RCPD*(1.0+RVTMP2*(pqn(i,k)+pqln(i,k)+pqsn(i,k)))
     65      d_t_ec(i,k)=0.5/ZRCPD &
     66 &      *(puo(i,k)**2+pvo(i,k)**2-pun(i,k)**2-pvn(i,k)**2)
     67      ENDDO
     68      ENDDO
    7169!-jld ec_conser
    7270
     
    9492      d_u(:,:)=0.
    9593      d_v(:,:)=0.
     94
     95   ELSEIF (iflag_ener_conserv==3) THEN
     96      d_t(:,:)=0.
     97      d_u(:,:)=0.
     98      d_v(:,:)=0.
     99   ELSEIF (iflag_ener_conserv==4) THEN
     100      d_t(:,:)=0.
     101      d_u(:,:)=d_u_vdf(:,:)
     102      d_v(:,:)=d_v_vdf(:,:)
     103   ELSEIF (iflag_ener_conserv==5) THEN
     104      d_t(:,:)=d_t_vdf(:,:)
     105      d_u(:,:)=d_u_vdf(:,:)
     106      d_v(:,:)=d_v_vdf(:,:)
     107   ELSEIF (iflag_ener_conserv==6) THEN
     108      d_t(:,:)=d_t_vdf(:,:)
     109      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)
     110      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)
     111   ELSEIF (iflag_ener_conserv==7) THEN
     112      d_t(:,:)=d_t_vdf(:,:)+d_t_ajs(:,:)
     113      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)
     114      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)
     115   ELSEIF (iflag_ener_conserv==8) THEN
     116      d_t(:,:)=d_t_vdf(:,:)
     117      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)
     118      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)
     119   ELSEIF (iflag_ener_conserv==9) THEN
     120      d_t(:,:)=d_t_vdf(:,:)
     121      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)+d_u_oro(:,:)
     122      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)+d_v_oro(:,:)
     123   ELSEIF (iflag_ener_conserv==10) THEN
     124      d_t(:,:)=d_t_vdf(:,:)
     125      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)+d_u_oro(:,:)+d_u_lif(:,:)
     126      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)+d_v_oro(:,:)+d_v_lif(:,:)
     127   ELSEIF (iflag_ener_conserv==11) THEN
     128      d_t(:,:)=d_t_vdf(:,:)
     129      d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)+d_u_oro(:,:)+d_u_lif(:,:) &
     130   &  +du_gwd_hines(:,:)+du_gwd_front(:,:)+du_gwd_rando(:,:)
     131      d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)+d_v_oro(:,:)+d_v_lif(:,:) &
     132   &     +dv_gwd_hines(:,:)+dv_gwd_front(:,:)+dv_gwd_rando(:,:)
    96133   ELSE
    97134      abort_message = 'iflag_ener_conserv non prevu'
Note: See TracChangeset for help on using the changeset viewer.