40 USE modd_surfex_mpi, ONLY : nrank, npio, nindex, xtime_comm_read, xtime_npio_read
54 USE yomhook
,ONLY : lhook, dr_hook
55 USE parkind1
,ONLY : jprb
64 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pfield
65 INTEGER,
INTENT(IN) :: kforc_step
66 INTEGER,
INTENT(IN) :: knb
67 INTEGER,
INTENT(IN) :: kinit
68 CHARACTER(LEN=6) ,
INTENT(IN) :: hprogram
71 INTEGER :: i, ini, j, i1
72 CHARACTER(LEN=4),
DIMENSION(:),
ALLOCATABLE :: yf
73 CHARACTER(LEN=4) :: ywork
74 DOUBLE PRECISION :: xtime0
76 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zfield
79 REAL(KIND=JPRB) :: zhook_handle
81 IF (lhook) CALL dr_hook(
'READ_SURF_ATM',0,zhook_handle)
85 ALLOCATE(zfield(ini,
SIZE(pfield,2)))
86 IF (hprogram ==
'BINARY')
THEN
102 IF (hprogram ==
'ASCII ')
THEN
104 IF (kforc_step .EQ. 1)
THEN
109 zfield(:,1) = zfield(:,knb)
112 IF (nni_forc==1)
THEN
113 READ(unit=kinit,fmt=*) zwork
116 READ(unit=kinit,fmt=*) zfield(:,i)
120 ELSE IF (hprogram ==
'BINARY')
THEN
122 IF (kforc_step .EQ. 1)
THEN
127 zfield(:,1) = zfield(:,knb)
130 IF (nni_forc==1)
THEN
131 READ(unit=kinit,rec=kforc_step+i-1) ywork
134 READ(unit=kinit,rec=kforc_step+i-1) yf(:)
137 IF ( any(abs(zfield(:,i))>0. .AND. abs(zfield(:,i))<1.e-30) &
138 .OR. any(abs(zfield(:,i))>1.e6) )
THEN
139 CALL
abor1_sfx(
'READ_SURF_ATM: SWAP SET IN YOUR PARAMS_CONFIG FILE SEEMS '//&
140 'INAPPROPRIATE - VERIFY ')
147 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
155 IF (hprogram==
'BINARY')
THEN
161 IF (lhook) CALL dr_hook(
'READ_SURF_ATM',1,zhook_handle)
subroutine read_surf_atm(HPROGRAM, PFIELD, KFORC_STEP, KNB, KINIT)
subroutine abor1_sfx(YTEXT)