Back to OASIS3-MCT home
In
oasis3-mct/lib/psmile/src :
mod_oasis_method.F90
:
CONTAINS
SUBROUTINE oasis_init_comp(mynummod,cdnam,kinfo)
write(filename,'(a,i6.6)')
'nout.',mpi_rank_global
open(nulprt,file=filename)
write(filename,'(a,i2.2,a,i6.6)') 'pout.',compid,'.',mpi_rank_local
open(nulprt,file=filename)
=> oasis_data_zero()
=> oasis_unitsetmin(1024)
=>
oasis_unitget(iu)
! for nout.* file
=>
oasis_namcouple_init ()
=> oasis_mpi_barrier
=>
oasis_namcouple_init ()
size_namfld=0
DO n = 1,nnamcpl
size_namfld
= size_namfld + oasis_string_listGetNum(namsrcfld(n))
ENDDO
maxvar = size_namfld *
2 ! multiply by
2 to allow sending to self =>
ALLOCATE(prism_var(maxvar))
compnm=trim(cdnam)
=> MPI_GATHER (compnm, ic_lvar, MPI_CHARACTER, compnmlist,
ic_lvar, MPI_CHARACTER, 0, MPI_COMM_WORLD, ierr)
=> MPI_GATHER (oasis_coupled, 1, MPI_LOGICAL, coupledlist, 1,
MPI_LOGICAL, 0, MPI_COMM_WORLD, ierr)
if (.not.oasis_coupled) then
return
endif
=> oasis_unitget
(iu)
! for debug.* files
=> oasis_unitget
(iu)
! for lucia files
=> oasis_debug_enter(subname)
=> mod_oasis_setrootglobal()
! Set mpi_root_global
=> oasis_mem_init(nulprt)
=> call oasis_mem_print(nulprt,subname)
=> mct_world_init
(prism_nmodels,mpi_comm_global,mpi_comm_local,compid)
=> oasis_timer_init (trim(cdnam), trim(cdnam)//'.timers',nt)
=> oasis_timer_start ('total')
=> oasis_timer_start ('init_thru_enddef')
=> oasis_debug_exit(subname)
SUBROUTINE oasis_terminate(kinfo)
=> oasis_debug_enter(subname)
if (.not. oasis_coupled) then
call
oasis_debug_exit(subname)
return
endif
=> oasis_timer_stop ('total')
=> oasis_timer_print
IF ( .NOT. lg_mpiflag ) THEN
IF (OASIS_debug >= 2) THEN
WRITE
(nulprt,FMT='(A)') subname//': Calling MPI_Finalize'
CALL
oasis_flush(nulprt)
ENDIF
CALL MPI_Finalize ( ierr )
else
IF (OASIS_debug >= 2) THEN
WRITE
(nulprt,FMT='(A)') subname//': Not Calling MPI_Finalize'
CALL
oasis_flush(nulprt)
ENDIF
ENDIF
=> oasis_mem_print(nulprt,subname)
IF (mpi_rank_local == 0) THEN
WRITE(nulprt,*) subname,' SUCCESSFUL RUN'
CALL oasis_flush(nulprt)
ENDIF
=> oasis_debug_exit(subname)
SUBROUTINE oasis_get_localcomm(localcomm,kinfo)
=> oasis_debug_enter(subname)
! from prism_data
localcomm = mpi_comm_local
=> oasis_debug_exit(subname)
SUBROUTINE oasis_get_debug(debug,kinfo)
SUBROUTINE oasis_set_debug(debug,kinfo)
SUBROUTINE oasis_get_intercomm(new_comm,
cdnam, kinfo)
SUBROUTINE
oasis_get_intracomm(new_comm,
cdnam,
kinfo)
SUBROUTINE oasis_enddef(kinfo)
(see arborescence of the Psmile)
SUBROUTINE mod_oasis_setrootglobal()
=> oasis_mpi_max