63 CHARACTER(LEN=28),
INTENT(IN ) :: hnamelist
64 INTEGER,
INTENT(OUT) :: klocal_comm
65 CHARACTER(LEN=3),
INTENT(IN ),
OPTIONAL :: hinit
70 CHARACTER(LEN=9) :: yword, ytimerun
71 CHARACTER(LEN=1000):: yline, yfound
72 INTEGER :: ierr, iwork, irank
76 CHARACTER(LEN=3) :: yinit
82 CHARACTER(LEN=6) :: cmodel_name
84 namelist/nam_oasis/loasis,cmodel_name
94 cmodel_name =
'surfex'
98 IF(present(hinit))yinit=hinit
105 IF(len_trim(hnamelist)/=0)
THEN
107 OPEN(unit=11,file=hnamelist,action=
'READ',form=
"FORMATTED",position=
"REWIND",status=
'OLD',iostat=ierr)
110 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
111 WRITE(*,
'(2A)')
'SFX_OASIS_INIT: SFX NAMELIST NOT FOUND: ',trim(hnamelist)
112 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
117 READ (unit=11,nml=nam_oasis,iostat=ierr)
131 CALL oasis_init_comp(icomp_id,cmodel_name,ierr)
132 IF (ierr/=oasis_ok)
THEN
133 WRITE(*,
'(A)' )
'SFX : Error initializing OASIS'
134 WRITE(*,
'(A,I4)')
'SFX : Return code from oasis_init_comp : ',ierr
135 CALL oasis_abort(icomp_id,cmodel_name,
'SFX_OASIS_INIT: Error initializing OASIS')
139 CALL mpi_comm_rank(mpi_comm_world,irank,iwork)
143 WRITE(*,
'(A)')
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
144 WRITE(*,
'(A)')
'OASIS used for model : ',trim(cmodel_name)
145 WRITE(*,
'(A)')
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
160 CALL oasis_get_localcomm(klocal_comm,ierr)
161 IF (ierr/=oasis_ok)
THEN
163 WRITE(*,
'(A)' )
'SFX : Error getting local communicator from OASIS'
164 WRITE(*,
'(A,I4)')
'SFX : Return code from oasis_get_local_comm : ',ierr
166 CALL oasis_abort(icomp_id,cmodel_name,
'SFX_OASIS_INIT: Error getting local communicator')
182 OPEN (unit=11,file =
'namcouple',status=
'OLD',form =
'FORMATTED',position=
"REWIND",iostat=ierr)
185 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
186 WRITE(*,
'(A)' )
'SFX : OASIS namcouple not found'
187 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
196 DO WHILE (itimerun==-1)
197 READ (unit = 11,fmt =
'(A9)',iostat=ierr) yword
200 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
201 WRITE(*,
'(A)' )
'SFX : Problem $RUNTIME empty in namcouple'
202 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
207 IF (yword==ytimerun)
THEN
208 READ (unit = 11,fmt =
'(A1000)',iostat=ierr) yline
211 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
212 WRITE(*,
'(A)' )
'SFX : Problem looking for $RUNTIME in namcouple'
213 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
220 READ (yfound,fmt =
'(I100)',iostat=ierr) itimerun
223 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
224 WRITE(*,
'(A)' )
'SFX : Problem reading $RUNTIME in namcouple'
225 WRITE(*,
'(2A)' )
'$RUNTIME = ', trim(yfound)
226 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
236 xruntime =
REAL(itimerun)
238 WRITE(*,
'(A)' )
'-----------------------------'
248 INTEGER ,
INTENT (IN ) :: klen
249 CHARACTER (LEN=*),
INTENT (INOUT) :: hin
250 CHARACTER (LEN=*),
INTENT (INOUT) :: hout
251 LOGICAL,
INTENT (OUT ) :: ofound
255 CHARACTER(LEN=1),
PARAMETER :: yblank =
' '
256 CHARACTER(LEN=1),
PARAMETER :: ynada =
'#'
258 CHARACTER(LEN=KLEN) :: yline
259 CHARACTER(LEN=KLEN) :: ywork
268 DO WHILE (hin(1:1)==ynada)
269 READ (unit = 11, fmt =
'(A9)',iostat=ierr) yline
272 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
273 WRITE(*,
'(A)' )
'SFX : Problem looking for $RUNTINE line in namcouple'
274 WRITE(*,
'(A)' )
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
279 hin(1:klen) = yline(1:klen)
290 IF(len_trim(ywork)<=0)
THEN
297 ilen = index(ywork,yblank) - 1
301 hout(1:ilen) = ywork(1:ilen)
subroutine found_timerun(HIN, HOUT, KLEN, OFOUND)
subroutine sfx_oasis_init(HNAMELIST, KLOCAL_COMM, HINIT)