2 & puo,pvo,pto,pqo,pun,pvn,ptn,pqn,dtke,masse,exner,d_t_ec)
21 USE 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
31 INTEGER,
INTENT(IN) :: klon,
klev
33 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: puo,pvo,pto,pqo
34 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pun,pvn,ptn,pqn
35 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: masse,exner
36 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: dtke
37 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_t_ec
41 REAL,
DIMENSION(klon,klev+1) :: fluxu,fluxv,fluxt
42 REAL,
DIMENSION(klon,klev+1) :: dddu,dddv,dddt
43 REAL,
DIMENSION(klon,klev) :: d_u,d_v,d_t,
zv,zu
46 character*80 abort_message
47 character*20 :: modname
53 IF (iflag_ener_conserv==-1)
THEN
57 zrcpd = rcpd*(1.0+rvtmp2*pqn(
i,
k))
58 d_t_ec(
i,
k)=0.5/zrcpd &
59 & *(puo(
i,
k)**2+pvo(
i,
k)**2-pun(
i,
k)**2-pvn(
i,
k)**2)
66 ELSEIF (iflag_ener_conserv>=1)
THEN
68 IF (iflag_ener_conserv<=2)
THEN
70 IF (iflag_pbl>=20 .AND. iflag_pbl<=27)
THEN
72 d_u(:,:)=d_u_ajs(:,:)+d_u_con(:,:)
73 d_v(:,:)=d_v_ajs(:,:)+d_v_con(:,:)
75 d_t(:,:)=d_t_vdf(:,:)+d_t_ajs(:,:)
76 d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)
77 d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)
79 ELSEIF (iflag_ener_conserv==101)
THEN
81 d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)
82 d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)
83 ELSEIF (iflag_ener_conserv==110)
THEN
84 d_t(:,:)=d_t_vdf(:,:)+d_t_ajs(:,:)
88 abort_message =
'iflag_ener_conserv non prevu'
96 if (iflag_ener_conserv==2)
then
100 IF (iflag_pbl>=20 .AND. iflag_pbl<=27)
THEN
101 zu(:,:)=puo(:,:)+d_u_vdf(:,:)+0.5*d_u(:,:)
102 zv(:,:)=pvo(:,:)+d_v_vdf(:,:)+0.5*d_v(:,:)
104 zu(:,:)=puo(:,:)+0.5*d_u(:,:)
105 zv(:,:)=pvo(:,:)+0.5*d_v(:,:)
114 fluxu(:,
k)=fluxu(:,
k+1)+masse(:,
k)*d_u(:,
k)
115 fluxv(:,
k)=fluxv(:,
k+1)+masse(:,
k)*d_v(:,
k)
116 fluxt(:,
k)=fluxt(:,
k+1)+masse(:,
k)*d_t(:,
k)/exner(:,
k)
119 dddu(:,1)=2*zu(:,1)*fluxu(:,1)
120 dddv(:,1)=2*
zv(:,1)*fluxv(:,1)
121 dddt(:,1)=(exner(:,1)-1.)*fluxt(:,1)
124 dddu(:,
k)=(zu(:,
k)-zu(:,
k-1))*fluxu(:,
k)
125 dddv(:,
k)=(
zv(:,
k)-
zv(:,
k-1))*fluxv(:,
k)
126 dddt(:,
k)=(exner(:,
k)-exner(:,
k-1))*fluxt(:,
k)
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))
152 bils_ec(:)=bils_ec(:)-d_t_ec(:,
k)*masse(:,
k)
153 bils_tke(:)=bils_tke(:)+0.5*(dtke(:,
k)+dtke(:,
k+1))*masse(:,
k)
154 bils_diss(:)=bils_diss(:)-d_t_diss(:,
k)*masse(:,
k)
155 bils_kinetic(:)=bils_kinetic(:)+masse(:,
k)* &
156 & (pun(:,
k)*pun(:,
k)+pvn(:,
k)*pvn(:,
k) &
157 & -puo(:,
k)*puo(:,
k)-pvo(:,
k)*pvo(:,
k))
159 & bils_enthalp(:)+masse(:,
k)*(ptn(:,
k)-pto(:,
k)+d_t_ec(:,
k))
160 bils_latent(:)=bils_latent(:)+masse(:,
k)* &
161 & (pqn(:,
k)-pqo(:,
k))
163 bils_ec(:)=rcpd*bils_ec(:)/
pdtphys
164 bils_tke(:)=bils_tke(:)/
pdtphys
165 bils_diss(:)=rcpd*bils_diss(:)/
pdtphys
166 bils_kinetic(:)= 0.5*bils_kinetic(:)/
pdtphys
167 bils_enthalp(:)=rcpd*bils_enthalp(:)/
pdtphys
168 bils_latent(:)=rlvtt*bils_latent(:)/
pdtphys