Back to OASIS3-MCT home

Arborescence of the mct library (in oasis3-mct/lib/mct/mct)



in oasis_def_partition (file mod_oasis_part.F90):
call mct_gsmap_init (=> init in m_GlobalSegMap.F90) ! all the def_partition calls and def_partition parameters will be stored in one global structure type(prism_part_type),public :: prism_part(mpart)
=> call initd_ (in m_GlobalSegMap.F90)
=> call initr_ (in m_GlobalSegMap.F90)


in oasis_enddef (file mod_oasis_method.F90)
call mct_world_init (=> init in m_MCTWorld.F90)
in oasis_enddef/oasis_coupler_setup (file mod_oasis_coupler.F90)
gsize = mct_gsmap_gsize(prism_part(part1)%gsmap) (=> gsize in m_GlobalSegMap) ! returns global vector size
lsize = mct_gsmap_lsize(prism_part(part1)%gsmap,mpi_comm_local) (=> lsize in m_GlobalSegMap) ! returns local vector size
call mct_avect_init (=> init in  m_AttrVect.F90)
call mct_avect_zero (=> zero in  m_AttrVect.F90)
...
call  oasis_coupler_sMatReaddnc
call mct_avect_init (=> init in  m_AttrVect.F90)
call mct_die (=> die in m_die.F90)
call mct_aVect_scatter (=> scatter in m_AttrVectComms.F90)
call mct_perr_die (=> mp_perr_die in m_die.F90)
call mct_sMat_init (=> init in m_SparseMatrix.F90)
igrow = mct_sMat_indexIA(sMat(1),'grow') (=> indexIA in m_SparseMatrix.F90)
igcol = mct_sMat_indexIA(sMat(1),'gcol') (=> indexIA in m_SparseMatrix.F90)
iwgt  = mct_sMat_indexRA(sMat(1),'weight') (=> indexRA in m_SparseMatrix.F90)
...
call mct_sMatP_Init (=> init in m_SparseMatrixPlus.F90)
call mct_sMatP_clean (=> clean in m_SparseMatrixPlus.F90)
lsize = mct_smat_gNumEl(prism_mapper(mapID)%sMatP(1)%Matrix,mpi_comm_local) (=> GlobalNumElements in m_SparseMatrix.F90)
...
! The routine {initd_()} exchanges the {GSMap} with the
! component identified by {othercomp} and then calls {initp_()}
! to build a Router {Rout} between them.
call mct_router_init (prism_coupler(nc)%comp,prism_part(rpart)%gsmap, mpi_comm_local,prism_router(prism_coupler(nc)%routerID)%router) (=> init in m_Router.F90) ! prism_coupler(nc)%comp is the other comp with which the actual comp exchanges a coupling field == initd_(othercomp,GSMap,mycomm,Rout )
use m_ExchangeMaps,only: MCT_ExGSMap => ExchangeMap (define in m_ExchangeMaps)
! This module contains routines that support the exchange of domain
! decomposition descriptors (DDDs) between two MCT components.  There is
! support for {\em handshaking} between the two components to determine
! the types of domain decomposition descriptors they employ, {\em loading}
! of data contained within domain decomposition descriptors, and {\em
! map exchange}, resulting in the creation of a remote component's domain
! decomposition descriptor for use by a local component.  These routines
! are largely used by MCT's {\tt Router} to create intercomponent
! communications scheduler, and normally should not be used by an MCT
! user.
!
! The routine MCT_ExGSMap effects the exchange between two components of their
! data decomposition descriptors, each of which is a {GlobalSegMap}.
! The component invoking this routine provides its domain decomposition
! in the form of the input {GlobalSegMap} argument {LocalGSMap}.
! The component with which map exchange takes place is specified by the
! MCT integer component identification number defined by the input
! {INTEGER} argument {RemoteCompID}.
call MCT_ExGSMap(GSMap,mycomm,RGSMap,othercomp,ier) == ExGSMapGSMap_(LocalGSMap, LocalComm, RemoteGSMap, RemoteCompID, ierr)
call initp_(GSMap,RGSMap, mycomm, Rout)