C $Header: /u/gcmpack/MITgcm/eesupp/inc/EEBUFF_SCPU.h,v 1.1 2009/05/16 13:33:33 jmc Exp $ C $Name: $ CBOP C !ROUTINE: EEBUFF_SCPU.h C !INTERFACE: C include "EEBUFF_SCPU.h" C C !DESCRIPTION: C *==========================================================* C | EEBUFF_SCPU.h C | o Buffers used by S/R gather_2d and scatter_2d, C | in mapping 2-D local array from all processes to/from C | 2-D Global (X,Y) array from Master-Proc (SingleCPU) C | o Contain both 2-D Global (X,Y) buffers and C | Shared Local Buffer (for multi-threaded). C *==========================================================* C | presently used with: C | - SingleCpu IO C | - global-sum SingleCpu C *==========================================================* CEOP INTEGER xyBuffer_size #ifdef ALLOW_EXCH2 PARAMETER ( xyBuffer_size = W2_ioBufferSize ) #else /* ALLOW_EXCH2 */ PARAMETER ( xyBuffer_size = Nx*Ny ) #endif /* ALLOW_EXCH2 */ C-- COMMON /EE_BUFFERS_GLOBAL/ 2-D Global Buffers C Those buffers are in common block to save some memory C xy_buffer_r8 :: 2-D global Real*8 buffer. C xy_buffer_r4 :: 2-D global Real*4 buffer. COMMON /EE_BUFFERS_GLOBAL/ xy_buffer_r8, xy_buffer_r4 Real*8 xy_buffer_r8(xyBuffer_size) Real*4 xy_buffer_r4(xyBuffer_size) C-- COMMON /EE_BUFFERS_LOCAL/ 2-D Shared Local Buffers C Those buffers have be in common block to be shared by all threads C sharedLocBuf_rx :: Heap storage buffer to which master thread copies C data (during read) as part of a scatter/gather and C from which all threads read data (during read). COMMON /EE_BUFFERS_LOCAL/ sharedLocBuf_r8, sharedLocBuf_r4 Real*8 sharedLocBuf_r8(1:sNx,1:sNy,nSx,nSy) Real*4 sharedLocBuf_r4(1:sNx,1:sNy,nSx,nSy) C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|