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