5 & debut,lafin,jd_cur, jh_cur,
pdtphys, &
9 & d_u, d_v, d_t, d_qx, d_ps &
13 USE dimphy, only : klon,klev
17 USE iophy, only : histbeg_phy,histwrite_phy
18 USE ioipsl
, only : getin,histvert,histdef,histend,ymds2ju
23 #include "dimensions.h"
25 integer,
parameter ::
jjmp1=jjm+1-1/jjm
26 integer,
parameter :: iip1=
iim+1
30 integer,
intent(in) :: nlon
31 integer,
intent(in) :: nlev
32 real,
intent(in) :: jd_cur
33 real,
intent(in) :: jh_cur
34 logical,
intent(in) :: debut
35 logical,
intent(in) :: lafin
37 real,
intent(in) :: paprs(klon,
klev+1)
39 real,
intent(in) :: pphi(klon,
klev)
40 real,
intent(in) :: pphis(klon)
42 integer,
parameter :: longcles=20
43 real,
intent(in) :: clesphy0(longcles)
44 real,
intent(in) ::
u(klon,
klev)
45 real,
intent(in) ::
v(klon,
klev)
46 real,
intent(in) :: t(klon,
klev)
47 real,
intent(in) :: qx(klon,
klev,nqtot)
48 real,
intent(in) :: flxmass_w(klon,
klev)
49 real,
intent(out) :: d_u(klon,
klev)
50 real,
intent(out) :: d_v(klon,
klev)
51 real,
intent(out) :: d_t(klon,
klev)
52 real,
intent(out) :: d_qx(klon,
klev,nqtot)
53 real,
intent(out) :: d_ps(klon)
57 real,
intent(in) :: pvteta(klon,3)
60 integer,
save :: itau=0
62 real :: temp_newton(klon,
klev)
64 logical,
save :: first=.true.
72 integer,
save :: nid_hist
75 integer,
save :: iwrite_phys
77 integer :: iwrite_phys_omp
92 call
getin(
"iwrite_phys",iwrite_phys_omp)
95 iwrite_phys=iwrite_phys_omp
105 call
histvert(nid_hist,
"presnivs",
"Vertical levels",
"Pa",
klev, &
108 call
histdef(nid_hist,
'temperature',
'Atmospheric temperature',
'K', &
110 'inst(X)',t_ops,t_wrt)
111 call
histdef(nid_hist,
'u',
'Eastward Zonal Wind',
'm/s', &
113 'inst(X)',t_ops,t_wrt)
114 call
histdef(nid_hist,
'v',
'Northward Meridional Wind',
'm/s', &
116 'inst(X)',t_ops,t_wrt)
117 call
histdef(nid_hist,
'ps',
'Surface Pressure',
'Pa', &
119 'inst(X)',t_ops,t_wrt)
121 call histend(nid_hist)
129 d_u(1:klon,1:
klev)=0.
130 d_v(1:klon,1:
klev)=0.
131 d_t(1:klon,1:
klev)=0.
132 d_qx(1:klon,1:
klev,1:nqtot)=0.
137 d_u(1:klon,1)=-
u(1:klon,1)/86400.
138 d_v(1:klon,1)=-
v(1:klon,1)/86400.
141 temp_newton(1:klon,
k)=280.+cos(
rlatd(1:klon))*40.-pphi(1:klon,
k)/rg*6.e-3
142 d_t(1:klon,
k)=(temp_newton(1:klon,
k)-t(1:klon,
k))/1.e5
149 if (modulo(itau,iwrite_phys)==0)
then