63 USE xios
, ONLY : xios_initialize
79 CHARACTER(LEN=28),
INTENT(IN ) :: HNAMELIST
80 INTEGER,
INTENT(OUT) :: KLOCAL_COMM
81 CHARACTER(LEN=3),
INTENT(IN ),
OPTIONAL :: HINIT
86 CHARACTER(LEN=9) :: YWORD, YTIMERUN
87 CHARACTER(LEN=1000):: YLINE, YFOUND
88 INTEGER :: IERR, IWORK, IRANK
92 CHARACTER(LEN=3) :: YINIT
112 IF(
PRESENT(hinit))yinit=hinit
119 IF(len_trim(hnamelist)/=0)
THEN 121 OPEN(unit=11,file=hnamelist,action=
'READ',form=
"FORMATTED",position=
"REWIND",status=
'OLD',iostat=ierr)
124 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 125 WRITE(*,
'(A)' )
' WARNING WARNING WARNING WARNING WARNING ' 126 WRITE(*,
'(A)' )
' --------------------------------------- ' 127 WRITE(*,
'(2A)')
'SFX_OASIS_INIT: SFX NAMELIST FILE NOT FOUND: ',
trim(hnamelist)
128 WRITE(*,
'(A)' )
'------------------------------------------- ' 129 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 135 READ (unit=11,nml=nam_oasis,iostat=ierr)
153 CALL xios_initialize(
cmodel_name, return_comm=klocal_comm)
158 WRITE(*,*)
'SFX_OASIS_INIT : BINARY WAS NOT COMPILED WITH XIOS SUPPORT ' 159 CALL abor1_sfx(
'SFX_OASIS_INIT : BINARY WAS NOT COMPILED WITH XIOS SUPPORT')
171 IF (ierr/=oasis_ok)
THEN 172 WRITE(*,
'(A)' )
'SFX : Error initializing OASIS' 173 WRITE(*,
'(A,I4)')
'SFX : Return code from oasis_init_comp : ',ierr
174 CALL oasis_abort(icomp_id,
cmodel_name,
'SFX_OASIS_INIT: Error initializing OASIS')
178 CALL oasis_get_localcomm(klocal_comm,ierr)
179 IF (ierr/=oasis_ok)
THEN 181 WRITE(*,
'(A)' )
'SFX : Error getting local communicator from OASIS' 182 WRITE(*,
'(A,I4)')
'SFX : Return code from oasis_get_local_comm : ',ierr
184 CALL oasis_abort(icomp_id,
cmodel_name,
'SFX_OASIS_INIT: Error getting local communicator')
204 CALL mpi_comm_rank(klocal_comm,irank,iwork)
207 WRITE(*,
'(A)')
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 210 WRITE(*,
'(A)')
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 225 OPEN (unit=11,file =
'namcouple',status=
'OLD',form =
'FORMATTED',position=
"REWIND",iostat=ierr)
228 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 229 WRITE(*,
'(A)' )
'SFX : OASIS namcouple not found' 230 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 239 DO WHILE (itimerun==-1)
240 READ (unit = 11,fmt =
'(A9)',iostat=ierr) yword
243 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 244 WRITE(*,
'(A)' )
'SFX : Problem $RUNTIME empty in namcouple' 245 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 250 IF (yword==ytimerun)
THEN 251 READ (unit = 11,fmt =
'(A1000)',iostat=ierr) yline
254 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 255 WRITE(*,
'(A)' )
'SFX : Problem looking for $RUNTIME in namcouple' 256 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 263 READ (yfound,fmt =
'(I100)',iostat=ierr) itimerun
266 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 267 WRITE(*,
'(A)' )
'SFX : Problem reading $RUNTIME in namcouple' 268 WRITE(*,
'(2A)' )
'$RUNTIME = ',
trim(yfound)
269 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 292 INTEGER ,
INTENT (IN ) :: KLEN
293 CHARACTER (LEN=*),
INTENT (INOUT) :: HIN
294 CHARACTER (LEN=*),
INTENT (INOUT) :: HOUT
295 LOGICAL,
INTENT (OUT ) :: OFOUND
299 CHARACTER(LEN=1),
PARAMETER :: YBLANK =
' ' 300 CHARACTER(LEN=1),
PARAMETER :: YNADA =
'#' 302 CHARACTER(LEN=KLEN) :: YLINE
303 CHARACTER(LEN=KLEN) :: YWORK
312 DO WHILE (hin(1:1)==ynada)
313 READ (unit = 11, fmt =
'(A9)',iostat=ierr) yline
316 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 317 WRITE(*,
'(A)' )
'SFX : Problem looking for $RUNTINE line in namcouple' 318 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 323 hin(1:klen) = yline(1:klen)
334 IF(len_trim(ywork)<=0)
THEN 341 ilen =
index(ywork,yblank) - 1
345 hout(1:ilen) = ywork(1:ilen)
static const char * trim(const char *name, int *n)
subroutine found_timerun(HIN, HOUT, KLEN, OFOUND)
subroutine abor1_sfx(YTEXT)
subroutine sfx_oasis_init(HNAMELIST, KLOCAL_COMM, HINIT)
character(len=6) cmodel_name