Index: /issm/trunk-jpl/test/MITgcm/coupling_rules.txt
===================================================================
--- /issm/trunk-jpl/test/MITgcm/coupling_rules.txt	(revision 22704)
+++ /issm/trunk-jpl/test/MITgcm/coupling_rules.txt	(revision 22705)
@@ -15,54 +15,137 @@
 >>>> INITIALIZATION FROM SCRATCH
 
-Initialization (CouplingTime=0)
-1. ISSM sends CouplingTime for the interval at which we couple
-2. ISSM sends ice model time IceTimeTag
-3. MITgcm sends ocean model time OceanTimeTag
-4. MITgcm sends grid size (NX and NY) and grid coordinates of
-   center of cells (longitude -180 <= XC < 180 and latitude YC)
-5. MITgcm integrates for CouplingTime=0:1
-6. MITgcm sends CouplingTime=0:1-time-mean melt rate to ISSM
+Initialization:
+IceModelTime   = 0
+OceanModelTime = 0
 
-CouplingTime=1
-1. ISSM sends ice model time IceTimeTag
-2. MITgcm sends ocean model time OceanTimeTag
-3. ISSM sends CouplingTime=0 base to MITgcm (this is duplicate of Initialization)
-		base should be 9999 in areas not covered by the ice grid
-4. ISSM integrates for CouplingTime=0:1
-5. MITgcm integrates for CouplingTime=1:2
-6. MITgcm sends CouplingTime=1:2-time-mean melt rate to ISSM
+  I1. ISSM sends CouplingTime
+      (the interval at which we couple)
+
+  I2. MITgcm sends grid size (NX and NY)
+
+  I3. MITgcm sends grid coordinates of center of cells
+      (longitude -180 <= XC < 180 and latitude YC)
+
+  I4. ISSM sends ice model time IceTimeTag
+
+  I5. MITgcm sends ocean model time OceanTimeTag
+
+  I6. ISSM sends IceModelTime=0 base to MITgcm
+      (base should be 9999 in areas not covered by ice grid)
+
+  I7. MITgcm integrates from OceanModelTime=0
+                          to OceanModelTime=CouplingTime
+
+First Coupling Exchange:
+IceModelTime   = 0
+OceanModelTime = CouplingTime
+
+  C1. ISSM sends ice model time IceTimeTag
+
+  C2. MITgcm sends ocean model time OceanTimeTag
+
+  C3. MITgcm sends
+      0 <= OceanModelTime < CouplingTime
+      time-mean melt rate to ISSM
+  
+  C4. ISSM sends IceModelTime=0 base to MITgcm
+      (this is duplicate of Initialization)
+
+  C5i. ISSM integrates from IceModelTime=0
+                         to IceModelTime=CouplingTime
+
+  C5o. MITgcm integrates from OceanModelTime=CouplingTime
+                           to OceanModelTime=2*CouplingTime
 
 ...
 
-CouplingTime=N
-1. ISSM sends ice model time IceTimeTag
-2. MITgcm sends ocean model time OceanTimeTag
-3. ISSM sends CouplingTime=N-1 base to MITgcm
-		base should be 9999 in areas not covered by the ice grid
-4. ISSM integrates for CouplingTime=(N-1):N
-5. MITgcm integrates for CouplingTime=N:(N+1)
-6. MITgcm sends CouplingTime=N:(N+1)-time-mean melt rate to ISSM
+Coupling Exchange N:
+IceModelTime   = (N-1) * CouplingTime
+OceanModelTime =   N   * CouplingTime
 
-Termination (CouplingTime=N+1)
-1. ISSM saves CouplingTime=N ISSM state and N:(N+1)-time-mean melt rate
-2. MITgcm saves CouplingTime=N+1 MITgcm state
+  C1. ISSM sends ice model time IceTimeTag
+
+  C2. MITgcm sends ocean model time OceanTimeTag
+
+  C3. MITgcm sends
+      (N-1)*CouplingTime <= OceanModelTime < N*CouplingTime
+      time-mean melt rate to ISSM
+  
+  C4. ISSM sends IceModelTime=(N-1)*CouplingTime base to MITgcm
+
+  C5i. ISSM integrates from IceModelTime=(N-1)*CouplingTime
+                         to IceModelTime=N*CouplingTime
+
+  C5o. MITgcm integrates from OceanModelTime=N*CouplingTime
+                           to OceanModelTime=(N+1)*CouplingTime
+
+Termination:
+IceModelTime   =   N   * CouplingTime
+OceanModelTime = (N+1) * CouplingTime
+
+  C1. ISSM sends ice model time IceTimeTag
+
+  C2. MITgcm sends ocean model time OceanTimeTag
+
+  C3. MITgcm sends
+      N*CouplingTime <= OceanModelTime < (N+1)*CouplingTime
+      time-mean melt rate to ISSM
+  
+  C4i. ISSM saves to restart files the IceModelTime=N state and
+       the N*CouplingTime to (N+1)*CouplingTime mean melt rate
+
+  C4o. MITgcm saves to restart files
+       the OceanModelTime=(N+1)*CouplingTime state
 
 
 >>>> RESTART FROM SAVED STATE
 
-Initialization (CouplingTime=N+1)
-1. ISSM sends ice model time IceTimeTag
-2. MITgcm sends ocean model time OceanTimeTag
-3. ISSM reads CouplingTime=N ISSM state and N:(N+1)-time-mean melt rate
-4. MITgcm reads CouplingTime=N+1 MITgcm state
+Initialization:
+IceModelTime   =   N   * CouplingTime
+OceanModelTime = (N+1) * CouplingTime
 
-CouplingTime=N+1
-1. ISSM sends ice model time IceTimeTag
-2. MITgcm sends ocean model time OceanTimeTag
-3. ISSM sends CouplingTime=N base to MITgcm
-		base should be 9999 in areas not covered by the ice grid
-4. ISSM integrates for CouplingTime=N:(N+1)
-5. MITgcm integrates for CouplingTime=(N+1):(N+2)
-6. MITgcm sends CouplingTime=(N+1):(N+2)-time-mean melt rate to ISSM
+  I1. ISSM sends CouplingTime
+
+  I2. MITgcm sends grid size (NX and NY)
+
+  I3. MITgcm sends grid coordinates (XC and YC)
+
+  I4i. ISSM reads from restart files the IceModelTime=N state and
+       the N*CouplingTime to (N+1)*CouplingTime mean melt rate
+
+  I4o. MITgcm reads from restart files
+       the OceanModelTime=(N+1)*CouplingTime state
+
+  I5. ISSM sends ice model time IceTimeTag
+
+  I6. MITgcm sends ocean model time OceanTimeTag
+
+  I7. ISSM sends IceModelTime=N base to MITgcm
+
+  I8i. ISSM integrates from IceModelTime=N*CouplingTime
+                         to IceModelTime=(N+1)*CouplingTime
+
+  I8o. MITgcm integrates from OceanModelTime=(N+1)*CouplingTime
+                          to OceanModelTime=(N+2)*CouplingTime
+
+First Coupling Exchange:
+IceModelTime   = (N+1)   * CouplingTime
+OceanModelTime = (N+2) * CouplingTime
+
+  C1. ISSM sends ice model time IceTimeTag
+
+  C2. MITgcm sends ocean model time OceanTimeTag
+
+  C3. MITgcm sends
+      (N+1)*CouplingTime <= OceanModelTime < (N+2)*CouplingTime
+      time-mean melt rate to ISSM
+  
+  C4. ISSM sends IceModelTime=(N+1)*CouplingTime base to MITgcm
+
+  C5i. ISSM integrates from IceModelTime=(N+1)*CouplingTime
+                         to IceModelTime=(N+2)*CouplingTime
+
+  C5o. MITgcm integrates from OceanModelTime=(N+2)*CouplingTime
+                           to OceanModelTime=(N+3)*CouplingTime
 
 ...
