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
32 INTEGER,
INTENT(IN) :: klon,klev
33 REAL,
INTENT(IN) :: pdtphys
34 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: puo,pvo,pto,pqo
35 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pun,pvn,ptn,pqn
36 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: masse,exner
37 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: dtke
38 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_t_ec
42 REAL,
DIMENSION(klon,klev+1) :: fluxu,fluxv,fluxt
43 REAL,
DIMENSION(klon,klev+1) :: dddu,dddv,dddt
44 REAL,
DIMENSION(klon,klev) :: d_u,d_v,d_t,zv,zu,d_t_ech
47 character*80 abort_message
48 character*20 :: modname
54 IF (iflag_ener_conserv==-1)
THEN
58 zrcpd = rcpd*(1.0+rvtmp2*pqn(i,k))
59 d_t_ec(i,k)=0.5/zrcpd &
60 & *(puo(i,k)**2+pvo(i,k)**2-pun(i,k)**2-pvn(i,k)**2)
67 ELSEIF (iflag_ener_conserv>=1)
THEN
69 IF (iflag_ener_conserv<=2)
THEN
73 d_u(:,:)=d_u_ajs(:,:)+d_u_con(:,:)
74 d_v(:,:)=d_v_ajs(:,:)+d_v_con(:,:)
76 d_t(:,:)=d_t_vdf(:,:)+d_t_ajs(:,:)
77 d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)
78 d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)
80 ELSEIF (iflag_ener_conserv==101)
THEN
82 d_u(:,:)=d_u_vdf(:,:)+d_u_ajs(:,:)+d_u_con(:,:)
83 d_v(:,:)=d_v_vdf(:,:)+d_v_ajs(:,:)+d_v_con(:,:)
84 ELSEIF (iflag_ener_conserv==110)
THEN
85 d_t(:,:)=d_t_vdf(:,:)+d_t_ajs(:,:)
89 abort_message =
'iflag_ener_conserv non prevu'
97 if (iflag_ener_conserv==2)
then
102 zu(:,:)=puo(:,:)+d_u_vdf(:,:)+0.5*d_u(:,:)
103 zv(:,:)=pvo(:,:)+d_v_vdf(:,:)+0.5*d_v(:,:)
105 zu(:,:)=puo(:,:)+0.5*d_u(:,:)
106 zv(:,:)=pvo(:,:)+0.5*d_v(:,:)
115 fluxu(:,k)=fluxu(:,k+1)+masse(:,k)*d_u(:,k)
116 fluxv(:,k)=fluxv(:,k+1)+masse(:,k)*d_v(:,k)
117 fluxt(:,k)=fluxt(:,k+1)+masse(:,k)*d_t(:,k)/exner(:,k)
120 dddu(:,1)=2*zu(:,1)*fluxu(:,1)
121 dddv(:,1)=2*zv(:,1)*fluxv(:,1)
122 dddt(:,1)=(exner(:,1)-1.)*fluxt(:,1)
125 dddu(:,k)=(zu(:,k)-zu(:,k-1))*fluxu(:,k)
126 dddv(:,k)=(zv(:,k)-zv(:,k-1))*fluxv(:,k)
127 dddt(:,k)=(exner(:,k)-exner(:,k-1))*fluxt(:,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)
165 & (pun(:,k)*pun(:,k)+pvn(:,k)*pvn(:,k) &
166 & -puo(:,k)*puo(:,k)-pvo(:,k)*pvo(:,k))
181 IF (iflag_ener_conserv>=1)
THEN
real, dimension(:,:), allocatable, save d_t_con
real, dimension(:), allocatable bils_latent
real, dimension(:,:), allocatable, save d_q_lsc
real, dimension(:), allocatable bils_enthalp
real, dimension(:,:), allocatable, save d_t_ajs
real, dimension(:), allocatable bils_diss
real, dimension(:), allocatable bils_ech
real, dimension(:,:), allocatable, save d_t_diss
!$Id iflag_pbl_split common compbl iflag_pbl
real, dimension(:,:), allocatable, save d_v_con
real, dimension(:,:), allocatable, save d_u_con
real, dimension(:,:), allocatable, save d_v_ajs
real, dimension(:,:), allocatable, save d_t_eva
nrlmd
real, dimension(:), allocatable bils_kinetic
real, dimension(:,:), allocatable, save d_u_vdf
real, dimension(:,:), allocatable, save d_u_ajs
real, dimension(:,:), allocatable, save d_v_vdf
subroutine abort_physic(modname, message, ierr)
real, dimension(:,:), allocatable, save d_t_vdf
real, dimension(:,:), allocatable, save d_q_eva
real, dimension(:), allocatable bils_tke
real, dimension(:,:), allocatable, save d_t_lsc
real, dimension(:), allocatable bils_ec
subroutine ener_conserv(klon, klev, pdtphys, puo, pvo, pto, pqo, pun, pvn, ptn, pqn, dtke, masse, exner, d_t_ec)