8 prn, ph, ple, plei, pgflux, pri, pcd, pch, pce, pqs,&
9 pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m,&
10 pswd, pswu, pswbd, pswbu, plwd, plwu, pfmu, pfmv, &
11 prnc, phc, plec, pgfluxc, pswdc, pswuc, plwdc, &
12 plwuc, pfmuc, pfmvc, pt2m_min, pt2m_max, pleic, &
13 phu2m_min, phu2m_max, pwind10m, pwind10m_max, &
14 pevap, pevapc, psubl, psublc )
57 USE yomhook
,ONLY : lhook, dr_hook
58 USE parkind1
,ONLY : jprb
69 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
71 REAL,
DIMENSION(:),
INTENT(OUT) :: prn
72 REAL,
DIMENSION(:),
INTENT(OUT) :: ph
73 REAL,
DIMENSION(:),
INTENT(OUT) :: ple
74 REAL,
DIMENSION(:),
INTENT(OUT) :: plei
75 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux
76 REAL,
DIMENSION(:),
INTENT(OUT) :: pevap
77 REAL,
DIMENSION(:),
INTENT(OUT) :: psubl
78 REAL,
DIMENSION(:),
INTENT(OUT) :: pri
79 REAL,
DIMENSION(:),
INTENT(OUT) :: pcd
80 REAL,
DIMENSION(:),
INTENT(OUT) :: pch
81 REAL,
DIMENSION(:),
INTENT(OUT) :: pce
82 REAL,
DIMENSION(:),
INTENT(OUT) :: pqs
83 REAL,
DIMENSION(:),
INTENT(OUT) :: pz0
84 REAL,
DIMENSION(:),
INTENT(OUT) :: pz0h
85 REAL,
DIMENSION(:),
INTENT(OUT) :: pts
86 REAL,
DIMENSION(:),
INTENT(OUT) :: pt2m
87 REAL,
DIMENSION(:),
INTENT(OUT) :: pq2m
88 REAL,
DIMENSION(:),
INTENT(OUT) :: phu2m
89 REAL,
DIMENSION(:),
INTENT(OUT) :: pzon10m
90 REAL,
DIMENSION(:),
INTENT(OUT) :: pmer10m
91 REAL,
DIMENSION(:),
INTENT(OUT) :: pswd
92 REAL,
DIMENSION(:),
INTENT(OUT) :: pswu
93 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pswbd
94 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pswbu
95 REAL,
DIMENSION(:),
INTENT(OUT) :: plwd
96 REAL,
DIMENSION(:),
INTENT(OUT) :: plwu
97 REAL,
DIMENSION(:),
INTENT(OUT) :: pfmu
98 REAL,
DIMENSION(:),
INTENT(OUT) :: pfmv
99 REAL,
DIMENSION(:),
INTENT(OUT) :: prnc
100 REAL,
DIMENSION(:),
INTENT(OUT) :: phc
101 REAL,
DIMENSION(:),
INTENT(OUT) :: plec
102 REAL,
DIMENSION(:),
INTENT(OUT) :: pleic
103 REAL,
DIMENSION(:),
INTENT(OUT) :: pgfluxc
104 REAL,
DIMENSION(:),
INTENT(OUT) :: pevapc
105 REAL,
DIMENSION(:),
INTENT(OUT) :: psublc
106 REAL,
DIMENSION(:),
INTENT(OUT) :: pswdc
107 REAL,
DIMENSION(:),
INTENT(OUT) :: pswuc
108 REAL,
DIMENSION(:),
INTENT(OUT) :: plwdc
109 REAL,
DIMENSION(:),
INTENT(OUT) :: plwuc
110 REAL,
DIMENSION(:),
INTENT(OUT) :: pfmuc
111 REAL,
DIMENSION(:),
INTENT(OUT) :: pfmvc
112 REAL,
DIMENSION(:),
INTENT(OUT) :: pt2m_min
113 REAL,
DIMENSION(:),
INTENT(OUT) :: pt2m_max
114 REAL,
DIMENSION(:),
INTENT(OUT) :: phu2m_min
115 REAL,
DIMENSION(:),
INTENT(OUT) :: phu2m_max
116 REAL,
DIMENSION(:),
INTENT(OUT) :: pwind10m
117 REAL,
DIMENSION(:),
INTENT(OUT) :: pwind10m_max
121 REAL,
DIMENSION(SIZE(PRN)) :: zdelta
123 REAL(KIND=JPRB) :: zhook_handle
126 IF (lhook) CALL dr_hook(
'DIAG_TOWN_N',0,zhook_handle)
127 IF (u%CTOWN==
'TEB ')
THEN
130 prn, ph, ple, pgflux, pri, pcd, pch, pce, pqs, &
131 pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m,&
132 pswd, pswu, plwd, plwu, pswbd, pswbu, pfmu, pfmv, &
133 pt2m_min, pt2m_max, phu2m_min, phu2m_max, &
134 pwind10m, pwind10m_max )
144 IF (
SIZE(plei)>0)
THEN
148 WHERE(ple(:)/=xundef)
149 zdelta(:) = max(0.0,sign(1.0,xtt-pts(:)))
150 pevap(:) = (ple(:) * zdelta(:))/xlstt + (ple(:) * (1.0-zdelta(:)))/xlvtt
151 plei(:) = ple(:) * zdelta(:)
152 psubl(:) = plei(:)/xlstt
172 ELSE IF (u%CTOWN==
'FLUX ')
THEN
174 prn, ph, ple, plei, pgflux, pri, pcd, pch, pce, pqs,&
175 pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m,&
176 pswd, pswu, plwd, plwu, pswbd, pswbu, pfmu, pfmv, &
177 prnc, phc, plec, pgfluxc, pswdc, pswuc, plwdc, &
178 plwuc, pfmuc, pfmvc, pt2m_min, pt2m_max, pleic, &
179 phu2m_min, phu2m_max, pwind10m, pwind10m_max, &
180 pevap, pevapc, psubl, psublc )
181 ELSE IF (u%CTOWN==
'NONE ')
THEN
228 pwind10m_max = xundef
230 IF (lhook) CALL dr_hook(
'DIAG_TOWN_N',1,zhook_handle)
subroutine diag_ideal_n(DGL, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
subroutine diag_town_n(DGL, DGT, U, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
subroutine diag_teb_n(DGT, HPROGRAM, PRN, PH, PLE, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV, PT2M_MIN, PT2M_MAX, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX)