| 1 |  | 
| 2 | # $Header: /u/gcmpack/MITgcm/pkg/ex3/README.txt,v 1.1 2005/10/14 05:49:42 edhill Exp $ | 
| 3 | # $Name:  $ | 
| 4 |  | 
| 5 | ======= | 
| 6 | EX3 | 
| 7 | ======= | 
| 8 |  | 
| 9 |  | 
| 10 | =====  WARNING  ===== | 
| 11 |  | 
| 12 | THIS PACKAGE IS *** UNFINISHED *** AND CONTAINS SHARP, JAGGED BITS | 
| 13 | THAT ARE LIKELY TO LEAVE NASTY CUTS !!! | 
| 14 |  | 
| 15 | HANDLE IT AT YOUR OWN RISK ! | 
| 16 |  | 
| 17 | =====  WARNING  ===== | 
| 18 |  | 
| 19 |  | 
| 20 | This is the "ex3" package which stands for "EXchange v3" and it has | 
| 21 | been designed to do everything that exch2 does with the following | 
| 22 | advantages: | 
| 23 |  | 
| 24 | 0) EX3 works on more general topologies -- not just cubes! | 
| 25 |  | 
| 26 | 1) A simplified topology "encoding" is used that expresses how the | 
| 27 | tiles are connected to each other only in terms of cell indicies. | 
| 28 | It allows for all of the topologies within exch2 plus it has the | 
| 29 | following advantages: | 
| 30 |  | 
| 31 | a) Only the cell indicies need to be input by a user -- all the | 
| 32 | "offsets" needed for exchanging quantities at cell corners, | 
| 33 | cell faces, etc. are calculated by the exchange routines | 
| 34 | themselves based upon the simpler cell indicies. | 
| 35 |  | 
| 36 | b) Any number [n=0,1,2,3,4,...] of tiles may be adjacent at | 
| 37 | corner points with sufficient information supplied for the | 
| 38 | vorticity path integrals, | 
| 39 |  | 
| 40 | c) The array-to-buffer and buffer-to-array copying have been | 
| 41 | almost completely separated from the logic and data structures | 
| 42 | which determine where the data sources/sinks are located. | 
| 43 | This should allow the "encoding" to change without altering | 
| 44 | the copying routines. | 
| 45 |  | 
| 46 | d) Tiles with "internal" or "overlapping" connections are now | 
| 47 | easily represented. | 
| 48 |  | 
| 49 | 2) A more efficient exchange algorithm: | 
| 50 |  | 
| 51 | a) For vector quantities and scalars defined at vorticity points, | 
| 52 | a simple "N+1" exchange is first performed to fill the values | 
| 53 | at the sNx+1 and sNy+1 points.  A second pass then fills all | 
| 54 | the remaining points within the exchange regions.  This | 
| 55 | correctly populates the values around the corners for any | 
| 56 | number of tiles meeting at a corner point.  This is also in | 
| 57 | contrast to the three-pass algorithm required by exch2. | 
| 58 |  | 
| 59 | b) Vectors are packed into a single buffer, reducing the number | 
| 60 | of MPI messages. | 
| 61 |  | 
| 62 |  | 
| 63 | The main disadvantage of the ex3 package is the removal of support for | 
| 64 | MDSIO "global" files.  With the arrival of non-cube topologies, the | 
| 65 | cube-oriented MDSIO global file option is not practical since it is | 
| 66 | (1) not a dense encoding of the data and (2) will require a re-working | 
| 67 | of the existing MDSIO code. | 
| 68 |  |