6 SUBROUTINE pgd_flake (DTCO, FG, F, UG, U, USS, &
7 hprogram,oecoclimap,orm_river)
65 USE modi_get_surf_size_n
68 USE modi_open_namelist
69 USE modi_close_namelist
71 USE modi_treat_global_lake_depth
76 USE yomhook
,ONLY : lhook, dr_hook
77 USE parkind1
,ONLY : jprb
79 USE modi_write_cover_tex_water
89 TYPE(flake_t),
INTENT(INOUT) :: f
94 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
95 LOGICAL,
INTENT(IN) :: oecoclimap
96 LOGICAL,
INTENT(IN) :: orm_river
105 INTEGER,
DIMENSION(:),
ALLOCATABLE :: iwater_status
110 CHARACTER(LEN=28) :: ywater_depth
111 CHARACTER(LEN=28) :: ywater_depth_status
112 CHARACTER(LEN=28) :: ywater_fetch
113 CHARACTER(LEN=28) :: yt_bs
114 CHARACTER(LEN=28) :: ydepth_bs
115 CHARACTER(LEN=28) :: yextcoef_water
117 CHARACTER(LEN=6) :: ywater_depthfiletype
118 CHARACTER(LEN=6) :: ywater_fetchfiletype
119 CHARACTER(LEN=6) :: yt_bsfiletype
120 CHARACTER(LEN=6) :: ydepth_bsfiletype
121 CHARACTER(LEN=6) :: yextcoef_waterfiletype
123 REAL :: xunif_water_depth
124 REAL :: xunif_water_fetch
126 REAL :: xunif_depth_bs
127 REAL :: xunif_extcoef_water
129 REAL(KIND=JPRB) :: zhook_handle
131 namelist/nam_data_flake/ ywater_depth, ywater_depth_status, ywater_depthfiletype, &
132 xunif_water_depth, ywater_fetch, ywater_fetchfiletype, &
133 xunif_water_fetch, yt_bs, yt_bsfiletype, xunif_t_bs, &
134 ydepth_bs, ydepth_bsfiletype, xunif_depth_bs, &
135 yextcoef_water, yextcoef_waterfiletype, xunif_extcoef_water, &
139 IF (lhook) CALL dr_hook(
'PGD_FLAKE',0,zhook_handle)
147 xunif_water_depth = 10.
148 xunif_water_fetch = 1000.
151 xunif_extcoef_water= 3.
154 ywater_depth_status =
' '
160 ywater_depthfiletype =
' '
161 ywater_fetchfiletype =
' '
163 ydepth_bsfiletype =
' '
164 yextcoef_waterfiletype =
' '
175 CALL
posnam(ilunam,
'NAM_DATA_FLAKE',gfound,iluout)
176 IF (gfound)
READ(unit=ilunam,nml=nam_data_flake)
193 ALLOCATE(f%LCOVER (jpcover))
194 ALLOCATE(f%XZS (fg%NDIM))
195 ALLOCATE(fg%XLAT (fg%NDIM))
196 ALLOCATE(fg%XLON (fg%NDIM))
197 ALLOCATE(fg%XMESH_SIZE (fg%NDIM))
200 hprogram,
'WATER ', &
201 fg%CGRID, fg%XGRID_PAR, &
202 f%LCOVER, f%XCOVER, f%XZS, &
203 fg%XLAT, fg%XLON, fg%XMESH_SIZE )
210 ALLOCATE(f%XWATER_DEPTH (fg%NDIM))
212 IF (trim(ywater_depth)==trim(clakeldb) .AND. trim(ywater_depthfiletype)==
'DIRECT')
THEN
214 IF (trim(ywater_depth_status)==
'')
THEN
215 WRITE(iluout,*)
'Depth Status file name not initialized'
216 WRITE(iluout,*)
'add YWATER_DEPTH_STATUS="GlobalLakeStatus" in NAM_DATA_FLAKE'
217 CALL
abor1_sfx(
'PGD_FLAKE: STATUS INPUT FILE NAME NOT SET')
218 ELSEIF (trim(ywater_depth_status)==trim(cstatusldb))
THEN
219 ALLOCATE(iwater_status(fg%NDIM))
221 hprogram,f%XWATER_DEPTH(:),iwater_status(:))
223 WRITE(iluout,*)
'Wrong name for Depth Status file :',
' expected: ',trim(cstatusldb),
' input: ',trim(ywater_depth_status)
224 CALL
abor1_sfx(
'PGD_FLAKE: WRONG STATUS INPUT FILE NAME')
229 IF(oecoclimap.AND.(.NOT.orm_river))
THEN
230 WRITE(iluout,*)
'With this version of Flake, river must be removed'
231 WRITE(iluout,*)
'Indeed, river energy budget can not be computed '
232 WRITE(iluout,*)
'using static lake scheme without 2D informations.'
233 WRITE(iluout,*)
'Please add LRM_RIVER = T in NAM_COVER '
235 WRITE(iluout,*)
'If you still want to use Flake to comput river '
236 WRITE(iluout,*)
'energy budget, please use the two files for the '
237 WRITE(iluout,*)
'Kourzeneva 2009 method: ',clakeldb(1:len_trim(clakeldb)),
' ',&
238 cstatusldb(1:len_trim(cstatusldb))
239 CALL
abor1_sfx(
'PGD_FLAKE: WITH THIS VERSION OF FLAKE, LRM_RIVER MUST BE TRUE')
244 hprogram,
'water depth',
'WAT',ywater_depth,ywater_depthfiletype,xunif_water_depth,f%XWATER_DEPTH(:))
248 f%XWATER_DEPTH(:) = min(f%XWATER_DEPTH(:),xmax_depth)
249 WRITE(iluout,*)
'MAXIMUM LAKE DEPTH = ',xmax_depth
256 ALLOCATE(f%XWATER_FETCH (fg%NDIM))
260 hprogram,
'wind fetch',
'WAT',ywater_fetch,ywater_fetchfiletype,xunif_water_fetch,f%XWATER_FETCH(:))
267 ALLOCATE(f%XT_BS (fg%NDIM))
271 hprogram,
'sediments bottom temperature ',
'WAT',yt_bs,yt_bsfiletype,xunif_t_bs,f%XT_BS(:))
278 ALLOCATE(f%XDEPTH_BS (fg%NDIM))
282 hprogram,
'depth of sediments layer',
'WAT',ydepth_bs,ydepth_bsfiletype,xunif_depth_bs,f%XDEPTH_BS(:))
289 ALLOCATE(f%XEXTCOEF_WATER(fg%NDIM))
293 hprogram,
'water extinction coefficient',
'WAT', &
294 yextcoef_water,yextcoef_waterfiletype,xunif_extcoef_water, &
302 CALL write_cover_tex_water
304 IF (lhook) CALL dr_hook(
'PGD_FLAKE',1,zhook_handle)
subroutine get_surf_size_n(DTCO, U, HTYPE, KL)
subroutine pack_pgd(DTCO, U, HPROGRAM, HSURF, HGRID, PGRID_PAR, OCOVER, PCOVER, PZS, PLAT, PLON, PMESH_SIZE, PDIR)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine pgd_flake(DTCO, FG, F, UG, U, USS, HPROGRAM, OECOCLIMAP, ORM_RIVER)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine treat_global_lake_depth(DTCO, UG, U, USS, HPROGRAM, PDEPTH, KSTATUS)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)