Index: branches/devukmo2010/NEMO/OPA_SRC/SBC/geo2ocean.F90
===================================================================
--- branches/devukmo2010/NEMO/OPA_SRC/SBC/geo2ocean.F90	(revision 2128)
+++ branches/devukmo2010/NEMO/OPA_SRC/SBC/geo2ocean.F90	(revision 2129)
@@ -26,4 +26,6 @@
                                              ! repcmo and repere are keep only for compatibility.
                                              ! they are only a useless overlay of rot_rep
+
+   PUBLIC   obs_rot
 
    REAL(wp), DIMENSION(jpi,jpj) ::   &
@@ -522,4 +524,42 @@
    END SUBROUTINE repere
 
+
+   SUBROUTINE obs_rot ( psinu, pcosu, psinv, pcosv )
+      !!----------------------------------------------------------------------
+      !!                  ***  ROUTINE obs_rot  ***
+      !!
+      !! ** Purpose :   Copy gsinu, gcosu, gsinv and gsinv
+      !!                to input data for rotations of
+      !!                current at observation points
+      !!
+      !! History :
+      !!   9.2  !  09-02  (K. Mogensen)
+      !!----------------------------------------------------------------------
+      REAL(wp), DIMENSION(jpi,jpj), INTENT( OUT )::   &
+         & psinu, pcosu, psinv, pcosv! copy of data
+
+      !!----------------------------------------------------------------------
+
+      ! Initialization of gsin* and gcos* at first call
+      ! -----------------------------------------------
+
+      IF( lmust_init ) THEN
+         IF(lwp) WRITE(numout,*)
+         IF(lwp) WRITE(numout,*) ' obs_rot : geographic <--> stretched'
+         IF(lwp) WRITE(numout,*) ' ~~~~~~~   coordinate transformation'
+
+         CALL angle       ! initialization of the transformation
+         lmust_init = .FALSE.
+
+      ENDIF
+
+      psinu(:,:) = gsinu(:,:)
+      pcosu(:,:) = gcosu(:,:)
+      psinv(:,:) = gsinv(:,:)
+      pcosv(:,:) = gcosv(:,:)
+
+   END SUBROUTINE obs_rot
+
+
   !!======================================================================
 END MODULE geo2ocean
Index: branches/devukmo2010/NEMO/OPA_SRC/opa.F90
===================================================================
--- branches/devukmo2010/NEMO/OPA_SRC/opa.F90	(revision 2128)
+++ branches/devukmo2010/NEMO/OPA_SRC/opa.F90	(revision 2129)
@@ -58,4 +58,5 @@
    USE sshwzv          ! vertical velocity used in asm
    USE diaptr          ! poleward transports           (dia_ptr_init routine)
+   USE diaobs          ! Observation diagnostics       (dia_obs_init routine)
    USE step            ! OPA time-stepping                  (stp     routine)
 #if defined key_oasis3
@@ -160,4 +161,6 @@
          END DO
       ENDIF
+
+      IF( lk_diaobs ) CALL dia_obs_wri
        
       !                            !------------------------!
@@ -294,4 +297,10 @@
       !                                     ! diagnostics
       CALL iom_init                             ! iom_put initialization
+
+      IF( lk_diaobs ) THEN
+         CALL dia_obs_init                  ! Initialize observational data
+         CALL dia_obs( nit000 - 1 )         ! Observation operator for restart
+      ENDIF      
+
       CALL dia_ptr_init                         ! Poleward TRansports initialization
       CALL trd_mod_init                         ! Mixed-layer/Vorticity/Integral constraints trends
Index: branches/devukmo2010/NEMO/OPA_SRC/step.F90
===================================================================
--- branches/devukmo2010/NEMO/OPA_SRC/step.F90	(revision 2128)
+++ branches/devukmo2010/NEMO/OPA_SRC/step.F90	(revision 2129)
@@ -111,4 +111,5 @@
    USE diahth          ! thermocline depth                (dia_hth routine)
    USE diafwb          ! freshwater budget                (dia_fwb routine)
+   USE diaobs          ! obs-minus-model (assimilation)   (dia_obs routine)
    USE flo_oce         ! floats variables
    USE floats          ! floats computation               (flo_stp routine)
@@ -250,4 +251,5 @@
       IF( lk_diahdy  )   CALL dia_hdy( kstp )         ! dynamical heigh diagnostics
       IF( lk_diafwb  )   CALL dia_fwb( kstp )         ! Fresh water budget diagnostics
+      IF( lk_diaobs  )   CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics
       IF( ln_diaptr  )   CALL dia_ptr( kstp )         ! Poleward TRansports diagnostics
       IF( lk_diaar5  )   CALL dia_ar5( kstp )         ! ar5 diag
