7 hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype)
45 USE modi_prep_hor_flake_field
46 USE modi_prep_ver_flake
47 USE modi_prep_flake_sbl
48 USE modi_prep_output_grid
64 USE yomhook
,ONLY : lhook, dr_hook
65 USE parkind1
,ONLY : jprb
67 USE modi_clean_prep_output_grid
83 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
84 CHARACTER(LEN=28),
INTENT(IN) :: hatmfile
85 CHARACTER(LEN=6),
INTENT(IN) :: hatmfiletype
86 CHARACTER(LEN=28),
INTENT(IN) :: hpgdfile
87 CHARACTER(LEN=6),
INTENT(IN) :: hpgdfiletype
93 REAL(KIND=JPRB) :: zhook_handle
99 IF (lhook) CALL dr_hook(
'PREP_FLAKE',0,zhook_handle)
103 iluout,fm%FG%CGRID,fm%FG%XGRID_PAR,fm%FG%XLAT,fm%FG%XLON)
114 hprogram,
'ZS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype)
120 IF (.NOT.lclim_lake)
THEN
124 hprogram,
'TS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,gnovalue)
125 IF (gnovalue) CALL
abor1_sfx(
'PREP_FLAKE: AT LEAST TS SHOULD BE GIVEN!')
129 hprogram,
'T_SNOW ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,gnovalue)
133 hprogram,
'T_ICE ',hatmfile,hatmfiletype,&
134 hpgdfile,hpgdfiletype,gnovalue)
138 hprogram,
'T_WML ',hatmfile,hatmfiletype,&
139 hpgdfile,hpgdfiletype,gnovalue)
141 ALLOCATE(fm%F%XT_MNW(
SIZE(fm%FG%XLAT)))
145 hprogram,
'T_BOT ',hatmfile,hatmfiletype,&
146 hpgdfile,hpgdfiletype,gnovalue)
150 hprogram,
'T_B1 ',hatmfile,hatmfiletype,&
151 hpgdfile,hpgdfiletype,gnovalue)
155 hprogram,
'CT ',hatmfile,hatmfiletype,&
156 hpgdfile,hpgdfiletype,gnovalue)
160 hprogram,
'H_SNOW ',hatmfile,hatmfiletype,&
161 hpgdfile,hpgdfiletype,gnovalue)
165 hprogram,
'H_ICE ',hatmfile,hatmfiletype,&
166 hpgdfile,hpgdfiletype,gnovalue)
170 hprogram,
'H_ML ',hatmfile,hatmfiletype,&
171 hpgdfile,hpgdfiletype,gnovalue)
175 hprogram,
'H_B1 ',hatmfile,hatmfiletype,&
176 hpgdfile,hpgdfiletype,gnovalue)
180 IF (lclim_lake .OR. gnovalue)
THEN
182 ALLOCATE(fm%F%XTS(
SIZE(fm%FG%XLAT)))
185 ALLOCATE(fm%F%XT_SNOW(
SIZE(fm%FG%XLAT)))
186 ALLOCATE(fm%F%XT_ICE(
SIZE(fm%FG%XLAT)))
187 ALLOCATE(fm%F%XT_WML(
SIZE(fm%FG%XLAT)))
188 ALLOCATE(fm%F%XT_MNW(
SIZE(fm%FG%XLAT)))
189 ALLOCATE(fm%F%XT_BOT(
SIZE(fm%FG%XLAT)))
190 ALLOCATE(fm%F%XT_B1(
SIZE(fm%FG%XLAT)))
191 ALLOCATE(fm%F%XCT(
SIZE(fm%FG%XLAT)))
192 ALLOCATE(fm%F%XH_SNOW(
SIZE(fm%FG%XLAT)))
193 ALLOCATE(fm%F%XH_ICE(
SIZE(fm%FG%XLAT)))
194 ALLOCATE(fm%F%XH_ML(
SIZE(fm%FG%XLAT)))
195 ALLOCATE(fm%F%XH_B1(
SIZE(fm%FG%XLAT)))
196 fm%F%XT_SNOW(:)=xundef
197 fm%F%XT_ICE(:)=xundef
198 fm%F%XT_WML(:)=xundef
199 fm%F%XT_MNW(:)=xundef
200 fm%F%XT_BOT(:)=xundef
203 fm%F%XH_SNOW(:)=xundef
204 fm%F%XH_ICE(:)=xundef
215 ALLOCATE(fm%F%XZ0(
SIZE(fm%F%XTS)))
220 ALLOCATE(fm%F%XUSTAR(
SIZE(fm%F%XTS)))
228 IF(.NOT.lclim_lake)
THEN
231 WRITE(iluout,*)
"WARNING: You want the vertical shift for lakes?"
232 WRITE(iluout,*)
"WARNING: Vertical shift for the lake temperature profile is impossible!"
233 WRITE(iluout,*)
"WARNING: So, set the default vertical profiles from the shifted surface temperature."
246 ELSEIF (.NOT.gnovalue)
THEN
247 fm%F%XT_MNW(:)=fm%F%XT_WML(:)-(fm%F%XT_WML(:)-fm%F%XT_BOT(:))*(1.-fm%F%XH_ML(:)/fm%F%XWATER_DEPTH(:))*fm%F%XCT(:)
249 WRITE(iluout,*)
"WARNING! One of the lake profile variales was not indicated, so set the default profile!"
250 fm%F%XT_WML=max(fm%F%XTS(:),xtt)
251 fm%F%XT_SNOW=min(fm%F%XTS(:),xtt)
252 fm%F%XT_ICE=min(fm%F%XTS(:),xtt)
256 WHERE (fm%F%XTS <= xtt)
260 fm%F%XH_ML=fm%F%XWATER_DEPTH/2.
261 fm%F%XT_MNW=fm%F%XT_WML-(fm%F%XT_WML-fm%F%XT_BOT)*(1.-fm%F%XH_ML/fm%F%XWATER_DEPTH)*fm%F%XCT
264 fm%F%XT_B1=fm%F%XTS-0.1
266 fm%F%XH_ML=fm%F%XWATER_DEPTH
277 IF (lhook) CALL dr_hook(
'PREP_FLAKE',1,zhook_handle)
subroutine prep_ver_flake(F)
subroutine prep_flake(DTCO, USS, FM, UG, U, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE)
subroutine clean_prep_output_grid
subroutine prep_hor_flake_field(DTCO, UG, U, USS, FG, F, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, ONOVALUE)
subroutine abor1_sfx(YTEXT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine prep_flake_sbl(FG, FSB)
subroutine cli_lake(FG, F)
subroutine prep_output_grid(UG, U, KLUOUT, HGRID, PGRID_PAR, PLAT, PLON)