7 hsurf_filetype, hforcing_filetype, &
8 pduration, ptstep_forc, kni, &
9 kyear, kmonth, kday, ptime, &
52 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_comm_read, xtime_npio_read
58 USE modi_init_io_surf_n
60 USE modi_end_io_surf_n
61 USE modi_get_size_full_n
65 USE modi_set_surfex_filein
67 USE yomhook
,ONLY : lhook, dr_hook
68 USE parkind1
,ONLY : jprb
79 CHARACTER(LEN=6),
INTENT(IN) :: hsurf_filetype
80 CHARACTER(LEN=6),
INTENT(IN) :: hforcing_filetype
81 INTEGER,
INTENT(OUT) :: kni
82 INTEGER,
INTENT(OUT) :: kyear, kmonth, kday
83 REAL,
INTENT(OUT) :: pduration,ptstep_forc
84 REAL,
INTENT(OUT) :: ptime
85 REAL,
DIMENSION(:),
POINTER :: plat, plon
86 REAL,
DIMENSION(:),
POINTER :: pzs
87 REAL,
DIMENSION(:),
POINTER :: pzref, puref
89 REAL,
DIMENSION(:),
ALLOCATABLE :: zwork
92 CHARACTER(LEN=1) :: yswap
94 INTEGER :: ini, idim_full
95 INTEGER :: iyear, imonth, iday
97 INTEGER :: iret, inb_forc
99 DOUBLE PRECISION :: xtime0
100 REAL(KIND=JPRB) :: zhook_handle
104 IF (lhook) CALL dr_hook(
'OL_READ_ATM_CONF_ASCII',0,zhook_handle)
106 IF (nrank==npio)
THEN
117 IF (hforcing_filetype ==
'BINARY')
READ(21,*) yswap
118 IF (yswap.EQ.
'Y')
THEN
119 little_endian_arch=.NOT.little_endian_arch
120 WRITE(iluout,*)
'*******************************************************************'
121 WRITE(iluout,*)
'Architecture of the machine needs to swap LITTLE_ENDIAN_ARCH to ', &
123 WRITE(iluout,*)
'*******************************************************************'
130 READ(21,*) ptstep_forc
131 pduration = ( inb_forc - 1 ) * ptstep_forc
139 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
147 CALL mpi_bcast(ptstep_forc,kind(ptstep_forc)/4,mpi_real,npio,ncomm,infompi)
148 CALL mpi_bcast(pduration,kind(pduration)/4,mpi_real,npio,ncomm,infompi)
149 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
157 hsurf_filetype,
'FULL ',
'SURF ',
'READ ')
160 hsurf_filetype,
'DIM_FULL',idim_full,iret)
162 hsurf_filetype,
'DTCUR',ttime,iret)
166 kyear = ttime%TDATE%YEAR
167 kmonth = ttime%TDATE%MONTH
168 kday = ttime%TDATE%DAY
174 'OFFLIN ',idim_full,kni)
182 IF (nrank==npio)
THEN
183 ALLOCATE(zwork(idim_full))
188 IF (nrank==npio)
THEN
195 READ(unit=21,fmt=
'(F15.8)') zwork0
198 READ(unit=21,fmt=
'(50(F15.8))') zwork
202 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
207 IF (nrank==npio)
THEN
214 READ(unit=21,fmt=
'(F15.8)') zwork0
217 READ(unit=21,fmt=
'(50(F15.8))') zwork
221 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
226 IF (nrank==npio)
THEN
233 READ(unit=21,fmt=
'(F15.8)') zwork0
236 READ(unit=21,fmt=
'(50(F15.8))') zwork
240 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
245 IF (nrank==npio)
THEN
252 READ(unit=21,fmt=
'(F15.8)') zwork0
255 READ(unit=21,fmt=
'(50(F15.8))') zwork
259 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
264 IF (nrank==npio)
THEN
271 READ(unit=21,fmt=
'(F15.8)') zwork0
274 READ(unit=21,fmt=
'(50(F15.8))') zwork
278 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
287 IF (nrank==npio)
THEN
289 IF (idim_full /= ini .AND. ini/=1)
THEN
290 WRITE(iluout,*)
' NUMBER OF GRID POINTS INCONSISTENCY: ',kni,
'/',ini
291 CALL
abor1_sfx(
'OL_READ_ATM_CONF_ASCII: NUMBER OF GRID POINTS INCONSISTENCY')
296 IF ( (kyear /= iyear) .OR. (kmonth /= imonth) .OR. (kday /= iday) )
THEN
297 WRITE(iluout,*)
' DATE INCONSISTANCY: ',kyear,kmonth,kday,
'/',iyear,imonth,iday
298 CALL
abor1_sfx(
'OL_READ_ATM_CONF_ASCII: DATE INCONSISTENCY')
301 IF ( ptime /= ztime )
THEN
302 WRITE(iluout,*)
' TIME INCONSISTANCY: ',ptime,
'/',ztime
303 CALL
abor1_sfx(
'OL_READ_ATM_CONF_ASCII: TIME INCONSISTENCY')
308 IF (lhook) CALL dr_hook(
'OL_READ_ATM_CONF_ASCII',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine ol_read_atm_conf_ascii(YSC, HSURF_FILETYPE, HFORCING_FILETYPE, PDURATION, PTSTEP_FORC, KNI, KYEAR, KMONTH, KDAY, PTIME, PLAT, PLON, PZS, PZREF, PUREF)
subroutine abor1_sfx(YTEXT)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine get_size_full_n(U, HPROGRAM, KDIM_FULL, KSIZE_FULL)