/[MITgcm]/MITgcm/pkg/exch2/exch2_recv_rx1.template
ViewVC logotype

Annotation of /MITgcm/pkg/exch2/exch2_recv_rx1.template

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.12 - (hide annotations) (download)
Tue Sep 4 00:45:25 2012 UTC (11 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63s, checkpoint64, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.11: +3 -3 lines
rename "exch2_tProc" to "W2_tileProc"

1 jmc 1.12 C $Header: /u/gcmpack/MITgcm/pkg/exch2/exch2_recv_rx1.template,v 1.11 2010/04/23 20:21:07 jmc Exp $
2 edhill 1.2 C $Name: $
3    
4 jmc 1.4 #include "CPP_EEOPTIONS.h"
5     #include "W2_OPTIONS.h"
6 afe 1.1
7 jmc 1.10 CBOP 0
8     C !ROUTINE: EXCH2_RECV_RX1
9    
10     C !INTERFACE:
11 afe 1.1 SUBROUTINE EXCH2_RECV_RX1(
12 jmc 1.10 I thisTile, nN,
13     I e2BufrRecSize,
14     I iBufr,
15     O e2Bufr1_RX,
16     I commSetting, myThid )
17    
18     C !DESCRIPTION:
19     C Scalar field (1 component) Exchange:
20     C Receive into buffer exchanged data from the source Process.
21     C buffer data will be used to fill in the tile-edge overlap region.
22 afe 1.1
23 jmc 1.10 C !USES:
24 afe 1.1 IMPLICIT NONE
25    
26 jmc 1.4 #include "SIZE.h"
27     #include "EEPARAMS.h"
28     #include "EESUPPORT.h"
29 jmc 1.8 #include "W2_EXCH2_SIZE.h"
30 afe 1.1 #include "W2_EXCH2_TOPOLOGY.h"
31    
32 jmc 1.10 C !INPUT/OUTPUT PARAMETERS:
33 afe 1.1 C === Routine arguments ===
34 jmc 1.11 C thisTile :: receiving tile Id. number
35 jmc 1.10 C nN :: Neighbour entry that we are processing
36     C e2BufrRecSize :: Number of elements in each entry of e2Bufr1_RX
37 jmc 1.11 C iBufr :: number of buffer elements to transfer
38 jmc 1.10 C e2Bufr1_RX :: Data transport buffer array. This array is used in one of
39     C :: two ways. For PUT communication the entry in the buffer
40     C :: associated with the source for this receive (determined
41     C :: from the opposing_send index) is read.
42     C :: For MSG communication the entry in the buffer associated
43     C :: with this neighbor of this tile is used as a receive
44     C :: location for loading a linear stream of bytes.
45     C commSetting :: Mode of communication used to exchange with this neighbor
46     C myThid :: my Thread Id. number
47    
48     INTEGER thisTile, nN
49 jmc 1.9 INTEGER e2BufrRecSize
50 jmc 1.10 INTEGER iBufr
51     _RX e2Bufr1_RX( e2BufrRecSize )
52     CHARACTER commSetting
53 afe 1.1 INTEGER myThid
54 jmc 1.10 CEOP
55 afe 1.1
56 jmc 1.10 #ifdef ALLOW_USE_MPI
57     C !LOCAL VARIABLES:
58 afe 1.1 C == Local variables ==
59 jmc 1.10 C soT :: Source tile Id. number
60     C oNb :: Opposing send record number
61     INTEGER soT
62     INTEGER oNb
63 afe 1.1
64     C MPI setup
65 jmc 1.3 INTEGER theTag, theType
66 afe 1.1 INTEGER sProc, tProc
67     INTEGER mpiStatus(MPI_STATUS_SIZE), mpiRc
68 jmc 1.3 #ifdef W2_E2_DEBUG_ON
69 jmc 1.10 CHARACTER*(MAX_LEN_MBUF) msgBuf
70 afe 1.1 #endif
71    
72 jmc 1.10 soT = exch2_neighbourId(nN, thisTile )
73     oNb = exch2_opposingSend(nN, thisTile )
74 afe 1.1
75 jmc 1.10 C Handle receive end data transport according to communication mechanism
76     C between source and target tile
77     IF ( commSetting .EQ. 'M' ) THEN
78 afe 1.1 C Setup MPI stuff here
79 jmc 1.10 theTag = (soT-1)*W2_maxNeighbours + oNb
80 jmc 1.12 tProc = W2_tileProc(thisTile)-1
81     sProc = W2_tileProc(soT)-1
82 jmc 1.9 theType = _MPI_TYPE_RX
83 jmc 1.10 CALL MPI_Recv( e2Bufr1_RX, iBufr, theType, sProc,
84     & theTag, MPI_COMM_MODEL, mpiStatus, mpiRc )
85 afe 1.1 #ifdef W2_E2_DEBUG_ON
86 jmc 1.10 WRITE(msgBuf,'(A,I4,A,I4,A)')
87     & ' RECV FROM TILE=', soT, ' (proc = ',sProc,')'
88     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
89     I SQUEEZE_RIGHT, myThid )
90     WRITE(msgBuf,'(A,I4,A,I4,A)')
91     & ' INTO TILE=', thisTile, ' (proc = ',tProc,')'
92     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
93     I SQUEEZE_RIGHT, myThid )
94     WRITE(msgBuf,'(A,I10)') ' TAG=', theTag
95     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
96     I SQUEEZE_RIGHT, myThid )
97     WRITE(msgBuf,'(A,I4)') ' NEL=', iBufr
98     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
99     I SQUEEZE_RIGHT, myThid )
100 afe 1.1 #endif /* W2_E2_DEBUG_ON */
101     ENDIF
102 jmc 1.10 #endif /* ALLOW_USE_MPI */
103 jmc 1.9
104 afe 1.1 RETURN
105     END
106 edhill 1.2
107     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
108    
109     CEH3 ;;; Local Variables: ***
110     CEH3 ;;; mode:fortran ***
111     CEH3 ;;; End: ***

  ViewVC Help
Powered by ViewVC 1.1.22