Index: /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/cpl_oasis3.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/cpl_oasis3.F90	(revision 13442)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/cpl_oasis3.F90	(revision 13443)
@@ -76,5 +76,5 @@
    TYPE, PUBLIC ::   FLD_CPL               !: Type for coupling field information
       LOGICAL               ::   laction   ! To be coupled or not
-      CHARACTER(len = 8)    ::   clname    ! Name of the coupling field   
+      CHARACTER(len = 30)    ::   clname    ! Name of the coupling field   
       CHARACTER(len = 1)    ::   clgrid    ! Grid type  
       REAL(wp)              ::   nsgn      ! Control of the sign change
@@ -164,4 +164,6 @@
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~'
       IF(lwp) WRITE(numout,*)
+
+      WRITE(numout,*) "RSRH inside cpl_define" ; flush(numout)
 
       ncplmodel = kcplmodel
@@ -212,6 +214,9 @@
          WRITE(numout,*) ' multiexchg: nldj, nlej, njmpp =', nldj, nlej, njmpp
       ENDIF
-   
+       WRITE(numout,*) "RSRH calling def partition" ; flush(numout)
+
+  
       CALL oasis_def_partition ( id_part, paral, nerror, jpiglo*jpjglo )
+       WRITE(numout,*) "RSRH called def partition" ; flush(numout)
       !
       ! ... Announce send variables. 
@@ -247,6 +252,8 @@
 #endif
                   IF( ln_ctl ) WRITE(numout,*) "Define", ji, jc, jm, " "//TRIM(zclname), " for ", OASIS_Out
+       WRITE(numout,*) "RSRH calling def var send", zclname , ji; flush(numout)
                   CALL oasis_def_var (ssnd(ji)%nid(jc,jm), zclname, id_part   , (/ 2, 1 /),   &
                      &                OASIS_Out          , ishape , OASIS_REAL, nerror )
+       WRITE(numout,*) "RSRH called def var", zclname , ji, nerror; flush(numout)
                   IF ( nerror /= OASIS_Ok ) THEN
                      WRITE(numout,*) 'Failed to define transient ', ji, jc, jm, " "//TRIM(zclname)
@@ -292,6 +299,8 @@
 #endif
                   IF( ln_ctl ) WRITE(numout,*) "Define", ji, jc, jm, " "//TRIM(zclname), " for ", OASIS_In
+       WRITE(numout,*) "RSRH calling def var recv", zclname , ji; flush(numout)
                   CALL oasis_def_var (srcv(ji)%nid(jc,jm), zclname, id_part   , (/ 2, 1 /),   &
                      &                OASIS_In           , ishape , OASIS_REAL, nerror )
+       WRITE(numout,*) "RSRH called def var recv", zclname , ji, nerror; flush(numout)
                   IF ( nerror /= OASIS_Ok ) THEN
                      WRITE(numout,*) 'Failed to define transient ', ji, jc, jm, " "//TRIM(zclname)
@@ -309,6 +318,8 @@
       ! End of definition phase
       !------------------------------------------------------------------
+       WRITE(numout,*) "RSRH calling endef "; flush(numout)
       
       CALL oasis_enddef(nerror)
+       WRITE(numout,*) "RSRH called endef "; flush(numout)
       IF( nerror /= OASIS_Ok )   CALL oasis_abort ( ncomp_id, 'cpl_define', 'Failure in oasis_enddef')
       !
Index: /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbc_oce.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbc_oce.F90	(revision 13442)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbc_oce.F90	(revision 13443)
@@ -40,4 +40,5 @@
 #endif
    LOGICAL , PUBLIC ::   ln_cpl         !: ocean-atmosphere coupled formulation
+   LOGICAL , PUBLIC ::   ln_couple_test !: ocean-atmosphere test coupling ONLY - non-coupled forcing
    LOGICAL , PUBLIC ::   ln_mixcpl      !: ocean-atmosphere forced-coupled mixed formulation
    LOGICAL , PUBLIC ::   ln_dm2dc       !: Daily mean to Diurnal Cycle short wave (qsr)
Index: /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbccpl.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbccpl.F90	(revision 13442)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbccpl.F90	(revision 13443)
@@ -116,6 +116,7 @@
    INTEGER, PARAMETER ::   jpr_tauwy  = 56   ! y component of the ocean stress from waves
    INTEGER, PARAMETER ::   jpr_ts_ice = 57   ! Sea ice surface temp
-
-   INTEGER, PARAMETER ::   jprcv      = 57   ! total number of fields received  
+   INTEGER, PARAMETER ::   jpr_dummy_t = 58  ! Dummy test incoming coupling tracer grid field
+
+   INTEGER, PARAMETER ::   jprcv      = 58   ! total number of fields received  
 
    INTEGER, PARAMETER ::   jps_fice   =  1   ! ice fraction sent to the atmosphere
@@ -157,6 +158,7 @@
    INTEGER, PARAMETER ::   jps_sstfrz = 37   ! sea surface freezing temperature
    INTEGER, PARAMETER ::   jps_ttilyr = 38   ! sea ice top layer temp
-
-   INTEGER, PARAMETER ::   jpsnd      = 38   ! total number of fields sent 
+   INTEGER, PARAMETER ::   jps_dummy_t = 39  ! Dummy test outgoing coupling tracer grid field
+
+   INTEGER, PARAMETER ::   jpsnd      = 39   ! total number of fields sent 
 
    !                                  !!** namelist namsbc_cpl **
@@ -278,5 +280,5 @@
          WRITE(numout,*)'~~~~~~~~~~~~'
       ENDIF
-      IF( lwp .AND. ln_cpl ) THEN                        ! control print
+      IF( lwp .AND. (ln_cpl .OR. ln_couple_test) ) THEN                        ! control print
          WRITE(numout,*)'  received fields (mutiple ice categogies)'
          WRITE(numout,*)'      10m wind module                 = ', TRIM(sn_rcv_w10m%cldes  ), ' (', TRIM(sn_rcv_w10m%clcat  ), ')'
@@ -723,5 +725,16 @@
          ENDIF
       ENDIF
-      
+
+
+      IF (ln_couple_test) THEN
+         ! If we're just running a test coupled job then set all 
+         ! actions to false for all fields apart from our test field(s)
+         srcv(:)%laction = .FALSE.
+
+
+         srcv(jpr_dummy_t)%clname = 'R_OC_DUMMY_T'   
+         srcv(jpr_dummy_t)%laction = .TRUE.
+      ENDIF
+
       ! =================================================== !
       ! Allocate all parts of frcv used for received fields !
@@ -742,4 +755,8 @@
          IF ( .NOT. srcv(jpr_ity1)%laction ) ALLOCATE( frcv(jpr_ity1)%z3(jpi,jpj,srcv(jpr_ity1)%nct) )
       END IF
+
+
+
+
 
       ! ================================ !
@@ -1031,4 +1048,15 @@
       ENDIF
 
+      IF (ln_couple_test) THEN
+         ! If we're just running a test coupled job then set all 
+         ! actions to false for all fields apart from our test field(s)
+         ssnd(:)%laction = .FALSE.
+
+
+         ssnd(jps_dummy_t)%clname = 'S_OC_DUMMY_T'   
+         ssnd(jps_dummy_t)%laction = .TRUE.
+      ENDIF
+
+
       !
       ! ================================ !
@@ -1037,6 +1065,12 @@
 
       ! If ln_cpl is false, clearly we don't want to call cpl_dfine!
-      if (ln_cpl) CALL cpl_define(jprcv, jpsnd, nn_cplmodel)
-      
+      IF (ln_cpl .OR. ln_couple_test) THEN
+           write(numout,*) "RSRH call cpl_define", ln_cpl ,ln_couple_test ; flush(numout)
+         CALL cpl_define(jprcv, jpsnd, nn_cplmodel)
+
+      ENDIF      
+           write(numout,*) "RSRH after cpl_define", ln_cpl ,ln_couple_test ; flush(numout)
+
+
       IF (ln_usecplmask) THEN 
          xcplmask(:,:,:) = 0.
@@ -1127,8 +1161,20 @@
       !                                                      ! ======================================================= !
       isec = ( kt - nit000 ) * NINT( rdt )                      ! date of exchanges
+
+
+      WRITE(numout,*) "RSRH in sbc_cpl_rcv" ; flush(numout)
+
       DO jn = 1, jprcv                                          ! received fields sent by the atmosphere
-         IF( srcv(jn)%laction )   CALL cpl_rcv( jn, isec, frcv(jn)%z3, xcplmask(:,:,1:nn_cplmodel), nrcvinfo(jn) )
+
+        WRITE(numout,*) "RSRH in sbc_cpl_rcv for field" ,jn, srcv(jn)%laction ;flush(numout)
+
+         IF( srcv(jn)%laction ) THEN
+        WRITE(numout,*) "RSRH call cpl_rcv for field", jn, srcv(jn)%laction ;flush(numout)
+               CALL cpl_rcv( jn, isec, frcv(jn)%z3, xcplmask(:,:,1:nn_cplmodel), nrcvinfo(jn) )
+        WRITE(numout,*) "RSRH  done cpl_rcv for field", jn, srcv(jn)%laction, nrcvinfo(jn) ;flush(numout)
+         ENDIF
       END DO
 
+      WRITE(numout,*) "RSRH in sbc_cpl_rcv after all gets" ; flush(numout)
       !                                                      ! ========================= !
       IF( srcv(jpr_otx1)%laction ) THEN                      !  ocean stress components  !
@@ -2595,4 +2641,15 @@
       IF( ssnd(jps_sstfrz)%laction )  CALL cpl_snd( jps_sstfrz, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info)
 #endif
+
+      WRITE(numout,*) "RSRH at send for ocean dummy_t"; flush(numout)
+
+      IF ( ssnd(jps_dummy_t)%laction ) THEN
+         ! RSRH Just set up some arbitrary test pattern for now
+         ztmp1(:,:) = 1.23456
+      WRITE(numout,*) "RSRH call send for ocean dummy_t"; flush(numout)
+         CALL cpl_snd( jps_dummy_t, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info )
+      WRITE(numout,*) "RSRH done send for ocean dummy_t", info; flush(numout)
+      ENDIF
+
       !
    END SUBROUTINE sbc_cpl_snd
Index: /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbcmod.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbcmod.F90	(revision 13442)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/SBC/sbcmod.F90	(revision 13443)
@@ -98,5 +98,5 @@
          &             ln_rnf   , nn_fwb   , ln_ssr   , ln_isf    , ln_apr_dyn ,     &
          &             ln_wave  , ln_cdgw  , ln_sdw   , ln_tauwoc  , ln_stcor   ,     &
-         &             ln_tauw  , nn_lsm, nn_sdrift
+         &             ln_tauw  , nn_lsm, nn_sdrift, ln_couple_test
       !!----------------------------------------------------------------------
       !
@@ -139,4 +139,5 @@
          WRITE(numout,*) '      Type of coupling (Ocean/Ice/Atmosphere) : '
          WRITE(numout,*) '         ocean-atmosphere coupled formulation       ln_cpl        = ', ln_cpl
+         WRITE(numout,*) '         ocean-atmos test coupling ONLY             ln_couple_test   = ', ln_couple_test
          WRITE(numout,*) '         mixed forced-coupled     formulation       ln_mixcpl     = ', ln_mixcpl
 !!gm  lk_oasis is controlled by key_oasis3  ===>>>  It shoud be removed from the namelist 
@@ -208,5 +209,5 @@
       END SELECT
       !                             !* coupled options
-      IF( ln_cpl ) THEN
+      IF( ln_cpl .OR. ln_couple_test ) THEN
          IF( .NOT. lk_oasis )   CALL ctl_stop( 'sbc_init : coupled mode with an atmosphere model (ln_cpl=T)',   &
             &                                  '           required to defined key_oasis3' )
@@ -275,5 +276,5 @@
       IF( icpt /= 1 )    CALL ctl_stop( 'sbc_init : choose ONE and only ONE sbc option' )
       !
-      IF(lwp) THEN                     !- print the choice of surface flux formulation
+!RSRH      IF(lwp) THEN                     !- print the choice of surface flux formulation
          WRITE(numout,*)
          SELECT CASE( nsbc )
@@ -287,5 +288,5 @@
          END SELECT
          IF( ll_not_nemo  )       WRITE(numout,*) '               + OASIS coupled SAS'
-      ENDIF
+!RSRH      ENDIF
       !
       !                             !* OASIS initialization
@@ -421,4 +422,8 @@
       !                                            !==  sbc formulation  ==!
       !                                                   
+WRITE(numout,*) "RSRH nsbc setting=", nsbc ;flush(numout)
+      
+
+
       SELECT CASE( nsbc )                                ! Compute ocean surface boundary condition
       !                                                  ! (i.e. utau,vtau, qns, qsr, emp, sfx)
@@ -432,7 +437,16 @@
       CASE( jp_none    )
          IF( ll_opa    )       CALL sbc_cpl_rcv   ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS
+
       END SELECT
       !
       IF( ln_mixcpl )          CALL sbc_cpl_rcv   ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing
+
+      ! RSRH for test/dev only  
+      IF( ln_couple_test )      CALL sbc_cpl_rcv   ( kt, nn_fsbc, nn_ice )   ! Purely for testing/development of
+                                                                             ! coupled models if none of the above
+                                                                             ! cases are true. In this case we are likely
+                                                                             ! be running a forced configuration and
+                                                                             ! simply exchanging dummy fields which
+                                                                             ! have no bearing on model evolution.         
       !
       IF ( ln_wave .AND. (ln_tauwoc .OR. ln_tauw) ) CALL sbc_wstress( )      ! Wind stress provided by waves 
Index: /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/nemogcm.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/nemogcm.F90	(revision 13442)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_NGMS_couple_stage2/src/OCE/nemogcm.F90	(revision 13443)
@@ -203,5 +203,8 @@
             ! RSRH. You can compile with OASIS but not want to do any
             ! coupling. We need to cater for that properly!
-            IF (ln_cpl) CALL sbc_cpl_snd( istp )  ! Coupling to atmos
+            IF (ln_cpl .OR. ln_couple_test) CALL sbc_cpl_snd( istp )  ! Coupling to atmos
+            ! RSRH. For test purposes we call the receive here. For proper
+            ! runs we need to do this elsewhere (reference UKESM/GC3 etc)  
+            !IF (ln_cpl .OR. ln_couple_test) CALL sbc_cpl_rcv( istp )  ! Coupling from atmos
 
             CALL stp        ( istp ) 
@@ -303,5 +306,5 @@
       IF( lk_oasis ) THEN
           CALL mpi_init(nerror)
-          CALL oasis_init_comp ( ncomp_id, "toyoce", nerror, .FALSE. )
+          CALL oasis_init_comp ( ncomp_id, "toyoce", nerror, .TRUE. )
 !          CALL cpl_init( "toyoce", ilocal_comm ) 
           CALL oasis_get_localcomm ( ilocal_comm , nerror )
