123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- %--------------------------------------------------------------------------------
- \begin{center}
- \begin{tabular}{|p{15cm}|}
- \hline
- \vspace{-5mm} \section{mpimod.f90 / mpimod\_stub.f90} \vspace{-5mm}
- \\
- \hline
- \vspace{1mm} {\bf General} The module {\module mpimod.f90} contains interface
- subroutines
- to the MPI (Message Passing Interface) needed for (massive) parallel computing. Several MPI
- routines are called from the module. The interface to other modules are given by numerous
- subroutines which name starts with {\sub mp}. Subroutines from {\module mpimod.f90} are
- called in sveral other modules. There are no direct calls to MPI other than
- in {\module mpimod.f90}. This encapsulation makes it possible to
- use {\module mpimod\_stub.f90} for single CPU runs without
- changing any other part of the model code.
- The selection is done automatically by using MoSt or manually
- by editing "Most15/puma/src/make\_puma". \vspace{3mm}
- \\
- \hline
- \vspace{1mm} {\bf Input/Output} {\module mpimod.f90} and {\module mpimod\underline{
- }stub} do not use any extra input file or
- output file. No namelist input is required \vspace{3mm} \\
- \hline
- \vspace{2mm} {\bf Structure} Internally, {\module mpimod.f90} uses the FORTRAN-90
- module
- {\module mpimod}, which uses the global common module {\module pumamod} from
- {\module pumamod.f90} and the MPI module {\module mpi}. {\module mpimod\underline{
- }stub.f90} does not use any module. The following subroutines are included in {\module
- mpimod.f90}:
- \begin{center}
- \begin{tabular}{l p{2cm} l}
- Subroutine & &Purpose \\
- && \\
- {\sub mpbci} && broadcast 1 integer \\
- {\sub mpbcin} & &broadcast n integers \\
- {\sub mpbcr} & &broadcast 1 real \\
- {\sub mpbcrn} & &broadcast n reals \\
- {\sub mpbcl} && broadcast 1 logical \\
- {\sub mpscin} & &scatter n integers \\
- {\sub mpscrn} && scatter n reals \\
- {\sub mpscgp} && scatter grid point field \\
- {\sub mpgagp} && gather grid point field \\
- {\sub mpgallgp} && gather grid point field to all \\
- {\sub mpscsp} & &scatter spectral field \\
- {\sub mpgasp} && gather spectral field \\
- {\sub mpgacs} && gather cross section \\
- {\sub mpgallsp} && gather spectral field to all \\
- {\sub mpsum} && sum spectral field \\
- {\sub mpsumsc} && sum and scatter spectral field \\
- {\sub mpsumr} && sum n reals \\
- {\sub mpsumbcr}& & sum and broadcast n reals \\
- {\sub mpstart} & &initialize MPI \\
- {\sub mpstop} & &finalize MPI \\
- \end{tabular}
- \end{center}
- \vspace{3mm} \\
- \hline
- \end{tabular}
- \end{center}
- \newpage
- \begin{center}
- \begin{tabular}{|p{15cm}|}
- \hline
- \begin{center}
- \begin{tabular}{l p{2cm} l}
- Subroutine & &Purpose \\
- && \\
- {\sub mpreadgp}& & read and scatter grid point field \\
- {\sub mpwritegp}& & gather and write grid point field \\
- {\sub mpwritegph} && gather and write (with header) grid point field \\
- {\sub mpreadsp} & &read and scatter spectral field \\
- {\sub mpwritesp} &&gather and write spectral field \\
- {\sub mpi\_info} && give information about setup \\
- {\sub mpgetsp} && read spectral array from restart file \\
- {\sub mpgetgp} && read gridpoint array from restart file \\
- {\sub mpputsp} && write spectral array to restart file \\
- {\sub mpputgp} && write gridpoint array to restart file \\
- {\sub mpmaxval} && compute maximum value of an array \\
- {\sub mpsumval} && compute sum of all array elements \\
- \end{tabular}
- \end{center}
- \vspace{3mm} \\
- \hline
- \end{tabular}
- \end{center}
- \newpage
- %--------------------------------------------------------------------------------
|