Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 6545)
@@ -1062,5 +1062,8 @@
       ENDIF
 #endif
-       
+      IF (cdfile_name == "output.abort") THEN
+         CALL ctl_stop('STOP', 'NEMO abort from dia_wri_state')
+      END IF     
+  
 !     IF( nn_timing == 1 )   CALL timing_stop('dia_wri_state') ! not sure this works for routines not called in first timestep
       ! 
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri_dimg.h90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri_dimg.h90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri_dimg.h90	(revision 6545)
@@ -112,5 +112,5 @@
     IF( inbsel >  jpk ) THEN
        IF(lwp) WRITE(numout,*)  ' STOP inbsel =',inbsel,' is larger than jpk=',jpk
-       STOP
+       CALL ctl_stop('STOP', 'NEMO aborted from dia_wri')
     ENDIF
 
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 6545)
@@ -526,5 +526,5 @@
       IF(lwp) WRITE(numout,*) 'dom_msk_nsa : noslip accurate boundary condition'
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   using Schchepetkin and O Brian scheme'
-      IF( lk_mpp )   CALL ctl_stop( ' mpp version is not yet implemented' )
+      IF( lk_mpp )   CALL ctl_stop(('STOP', ' mpp version is not yet implemented' )
 
       ! mask for second order calculation of vorticity
@@ -548,5 +548,5 @@
          WRITE(numout,*) ' symetric boundary conditions need special'
          WRITE(numout,*) ' treatment not implemented. we stop.'
-         STOP
+         CALL ctl_stop('STOP', 'NEMO aborted from dia_wri')
       ENDIF
       
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 6545)
@@ -3785,17 +3785,19 @@
 100   CONTINUE
       IF( iost /= 0 ) THEN
-         IF(ldwp) THEN
-            WRITE(kout,*)
-            WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile
-            WRITE(kout,*) ' =======   ===  '
-            WRITE(kout,*) '           unit   = ', knum
-            WRITE(kout,*) '           status = ', cdstat
-            WRITE(kout,*) '           form   = ', cdform
-            WRITE(kout,*) '           access = ', cdacce
-            WRITE(kout,*) '           iostat = ', iost
-            WRITE(kout,*) '           we stop. verify the file '
-            WRITE(kout,*)
-         ENDIF
-         STOP 'ctl_opn bad opening'
+         ! If the run is about to fail we ALWAYS want to know
+         ! the full details! This must not be hidden behind
+         ! "IF(ldwp)" or other irrelevant conditional tests.
+         WRITE(kout,*)
+         WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile
+         WRITE(kout,*) ' =======   ===  '
+         WRITE(kout,*) '           unit   = ', knum
+         WRITE(kout,*) '           status = ', cdstat
+         WRITE(kout,*) '           form   = ', cdform
+         WRITE(kout,*) '           access = ', cdacce
+         WRITE(kout,*) '           iostat = ', iost
+         WRITE(kout,*) '           we stop. verify the file '
+         WRITE(kout,*)
+        
+         CALL ctl_stop ('STOP', 'NEMO abort ctl_opn bad opening')
       ENDIF
 
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 6545)
@@ -196,5 +196,5 @@
       ENDIF
       
-      CALL oasis_def_partition ( id_part, paral, nerror )
+      CALL oasis_def_partition ( id_part, paral, nerror, jpiglo*jpjglo)
       !
       ! ... Announce send variables. 
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 6545)
@@ -461,4 +461,9 @@
       IF( lk_asminc     )   CALL asm_inc_init   ! Initialize assimilation increments
       IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler
+
+      IF (nstop > 0) THEN
+	        CALL CTL_STOP('STOP','Critical errors in NEMO initialisation')
+      END IF
+
       !
    END SUBROUTINE nemo_init
Index: /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/wrk_nemo.F90
===================================================================
--- /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/wrk_nemo.F90	(revision 6544)
+++ /branches/UKMO/dev_r5518_MO_couple_package/NEMOGCM/NEMO/OPA_SRC/wrk_nemo.F90	(revision 6545)
@@ -72,4 +72,5 @@
    !!----------------------------------------------------------------------
    USE par_oce        ! ocean parameters
+   USE lib_mpp
 
    IMPLICIT NONE
@@ -483,6 +484,6 @@
          &      .AND. SUM( tree(ii)%ishape ) /= 0 )
          ii = ii + 1
-         IF (ii > jparray) STOP   ! increase the value of jparray (should not be needed as already very big!)
-      END DO
+         IF (ii > jparray) CALL ctl_stop('STOP', 'NEMO aborted wrk_allocbase')
+                           ! increase the value of jparray (should not be needed as already very big!)      END DO
       
       IF( SUM( tree(ii)%ishape ) == 0 ) THEN                    ! create a new branch 
