New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11129 for NEMO/branches/2019/ENHANCE-03_domcfg/src/domzgr.F90 – NEMO

Ignore:
Timestamp:
2019-06-18T17:11:36+02:00 (5 years ago)
Author:
mathiot
Message:

simplification of domcfg (rm all var_n and var_b as it is not needed) (ticket #2143)

Location:
NEMO/branches/2019/ENHANCE-03_domcfg
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domzgr.F90

    r10727 r11129  
    3535   !!       fgamma       : Siddorn and Furner 2012 stretching function 
    3636   !!--------------------------------------------------------------------- 
    37    USE oce               ! ocean variables 
    3837   USE dom_oce           ! ocean domain 
    3938!   USE closea            ! closed seas 
     
    4342   USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
    4443   USE lib_mpp           ! distributed memory computing library 
    45    USE wrk_nemo          ! Memory allocation 
    46    USE timing            ! Timing 
     44   USE lib_fortran 
    4745   USE dombat 
    4846 
     
    6361   REAL(wp), PUBLIC ::   e3zps_min       !: miminum thickness for partial steps (meters) 
    6462   REAL(wp), PUBLIC ::   e3zps_rat       !: minimum thickness ration for partial steps 
    65    INTEGER, PUBLIC ::   nperio            !: type of lateral boundary condition 
     63   INTEGER, PUBLIC  ::   nperio          !: type of lateral boundary condition 
    6664 
    6765   ! Song and Haidvogel 1994 stretching parameters 
     
    121119      !!---------------------------------------------------------------------- 
    122120      ! 
    123   !    IF( nn_timing == 1 )   CALL timing_start('dom_zgr') 
    124121      ! 
    125122      REWIND( numnam_ref )              ! Namelist namzgr in reference namelist : Vertical coordinate 
     
    189186      ENDIF 
    190187      ! 
    191     !  IF( nn_timing == 1 )  CALL timing_stop('dom_zgr') 
    192       ! 
    193188   END SUBROUTINE dom_zgr 
    194189 
     
    222217      REAL(wp) ::   za2, zkth2, zacr2      ! Values for optional double tanh function set from parameters  
    223218      !!---------------------------------------------------------------------- 
    224       ! 
    225    !   IF( nn_timing == 1 )  CALL timing_start('zgr_z') 
    226219      ! 
    227220      ! Set variables from parameters 
     
    355348      END DO 
    356349      ! 
    357    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_z') 
    358       ! 
    359350   END SUBROUTINE zgr_z 
    360351 
     
    401392      !!---------------------------------------------------------------------- 
    402393      ! 
    403    !   IF( nn_timing == 1 )  CALL timing_start('zgr_bat') 
    404       ! 
    405394      IF(lwp) WRITE(numout,*) 
    406395      IF(lwp) WRITE(numout,*) '    zgr_bat : defines level and meter bathymetry' 
     
    411400         !                                            ! global domain level and meter bathymetry (idta,zdta) 
    412401         ! 
    413          ALLOCATE( idta(jpidta,jpjdta), STAT=ierror ) 
     402         ALLOCATE( idta(jpiglo,jpjglo), STAT=ierror ) 
    414403         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate idta array' ) 
    415          ALLOCATE( zdta(jpidta,jpjdta), STAT=ierror ) 
     404         ALLOCATE( zdta(jpiglo,jpjglo), STAT=ierror ) 
    416405         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate zdta array' ) 
    417406         ! 
     
    439428            IF(lwp) WRITE(numout,*) 
    440429            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin with a bump' 
    441             ii_bump = jpidta / 2                           ! i-index of the bump center 
    442             ij_bump = jpjdta / 2                           ! j-index of the bump center 
     430            ii_bump = jpiglo / 2                           ! i-index of the bump center 
     431            ij_bump = jpjglo / 2                           ! j-index of the bump center 
    443432            r_bump  = 50000._wp                            ! bump radius (meters)        
    444433            h_bump  =  2700._wp                            ! bump height (meters) 
     
    450439            IF(lwp) WRITE(numout,*) '            background ocean depth = ', h_oce  , ' meters' 
    451440            !                                         
    452             DO jj = 1, jpjdta                              ! zdta : 
    453                DO ji = 1, jpidta 
     441            DO jj = 1, jpjglo                              ! zdta : 
     442               DO ji = 1, jpiglo 
    454443                  zi = FLOAT( ji - ii_bump ) * ppe1_m / r_bump 
    455444                  zj = FLOAT( jj - ij_bump ) * ppe2_m / r_bump 
     
    467456            ENDIF 
    468457         ENDIF 
     458         ! 
    469459         !                                            ! set GLOBAL boundary conditions  
    470          !                                            ! Caution : idta on the global domain: use of jperio, not nperio 
    471460         IF( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) THEN 
    472461            idta( :    , 1    ) = -1                ;      zdta( :    , 1    ) = -1._wp 
    473             idta( :    ,jpjdta) =  0                ;      zdta( :    ,jpjdta) =  0._wp 
     462            idta( :    ,jpjglo) =  0                ;      zdta( :    ,jpjglo) =  0._wp 
    474463         ELSEIF( jperio == 2 ) THEN 
    475464            idta( :    , 1    ) = idta( : ,  3  )   ;      zdta( :    , 1    ) = zdta( : ,  3  ) 
    476             idta( :    ,jpjdta) = 0                 ;      zdta( :    ,jpjdta) =  0._wp 
     465            idta( :    ,jpjglo) = 0                 ;      zdta( :    ,jpjglo) =  0._wp 
    477466            idta( 1    , :    ) = 0                 ;      zdta( 1    , :    ) =  0._wp 
    478             idta(jpidta, :    ) = 0                 ;      zdta(jpidta, :    ) =  0._wp 
     467            idta(jpiglo, :    ) = 0                 ;      zdta(jpiglo, :    ) =  0._wp 
    479468         ELSE 
    480469            ih = 0                                  ;      zh = 0._wp 
    481470            IF( ln_sco )   ih = jpkm1               ;      IF( ln_sco )   zh = h_oce 
    482471            idta( :    , 1    ) = ih                ;      zdta( :    , 1    ) =  zh 
    483             idta( :    ,jpjdta) = ih                ;      zdta( :    ,jpjdta) =  zh 
     472            idta( :    ,jpjglo) = ih                ;      zdta( :    ,jpjglo) =  zh 
    484473            idta( 1    , :    ) = ih                ;      zdta( 1    , :    ) =  zh 
    485             idta(jpidta, :    ) = ih                ;      zdta(jpidta, :    ) =  zh 
     474            idta(jpiglo, :    ) = ih                ;      zdta(jpiglo, :    ) =  zh 
    486475         ENDIF 
    487476 
     
    646635      ENDIF 
    647636      ! 
    648    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_bat') 
    649       ! 
    650637   END SUBROUTINE zgr_bat 
    651638 
     
    727714      INTEGER ::   ji, jj, jl                    ! dummy loop indices 
    728715      INTEGER ::   icompt, ibtest, ikmax         ! temporary integers 
    729       REAL(wp), POINTER, DIMENSION(:,:) ::  zbathy 
    730       !!---------------------------------------------------------------------- 
    731       ! 
    732   !    IF( nn_timing == 1 )  CALL timing_start('zgr_bat_ctl') 
    733       ! 
    734       CALL wrk_alloc( jpi, jpj, zbathy ) 
     716      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zbathy 
     717      !!---------------------------------------------------------------------- 
     718      ! 
     719      ALLOCATE(zbathy(jpi,jpj)) 
    735720      ! 
    736721      IF(lwp) WRITE(numout,*) 
     
    743728      icompt = 0 
    744729      DO jl = 1, 2 
    745          IF( nperio == 1 .OR. nperio  ==  4 .OR. nperio  ==  6 ) THEN 
     730         IF( l_Iperio ) THEN 
    746731            mbathy( 1 ,:) = mbathy(jpim1,:)           ! local domain is cyclic east-west 
    747732            mbathy(jpi,:) = mbathy(  2  ,:) 
    748733         ENDIF 
     734         zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     735         CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
     736         mbathy(:,:) = INT( zbathy(:,:) ) 
     737          
    749738         DO jj = 2, jpjm1 
    750739            DO ji = 2, jpim1 
     
    760749         END DO 
    761750      END DO 
    762    !   IF( lk_mpp )   CALL mpp_sum( icompt ) 
     751 
     752      IF( lk_mpp )   CALL mpp_sum( 'domzgr', icompt ) 
    763753      IF( icompt == 0 ) THEN 
    764754         IF(lwp) WRITE(numout,*)'     no isolated ocean grid points' 
     
    766756         IF(lwp) WRITE(numout,*)'    ',icompt,' ocean grid points suppressed' 
    767757      ENDIF 
    768       IF( lk_mpp ) THEN 
    769          zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    770          CALL lbc_lnk( 'toto',zbathy, 'T', 1._wp ) 
    771          mbathy(:,:) = INT( zbathy(:,:) ) 
    772       ENDIF 
     758 
     759      zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     760      CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
     761      mbathy(:,:) = INT( zbathy(:,:) ) 
     762 
    773763      !                                          ! East-west cyclic boundary conditions 
    774       IF( nperio == 0 ) THEN 
    775          IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: nperio = ', nperio 
     764      IF( jperio == 0 ) THEN 
     765         IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: jperio = ', jperio 
    776766         IF( lk_mpp ) THEN 
    777767            IF( nbondi == -1 .OR. nbondi == 2 ) THEN 
     
    790780            ENDIF 
    791781         ENDIF 
    792       ELSEIF( nperio == 1 .OR. nperio == 4 .OR. nperio ==  6 ) THEN 
    793          IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: nperio = ', nperio 
     782      ELSEIF( jperio == 1 .OR. jperio == 4 .OR. jperio ==  6 ) THEN 
     783         IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: jperio = ', jperio 
    794784         mbathy( 1 ,:) = mbathy(jpim1,:) 
    795785         mbathy(jpi,:) = mbathy(  2  ,:) 
    796       ELSEIF( nperio == 2 ) THEN 
    797          IF(lwp) WRITE(numout,*) '   equatorial boundary conditions on mbathy: nperio = ', nperio 
     786      ELSEIF( jperio == 2 ) THEN 
     787         IF(lwp) WRITE(numout,*) '   equatorial boundary conditions on mbathy: jperio = ', jperio 
    798788      ELSE 
    799789         IF(lwp) WRITE(numout,*) '    e r r o r' 
    800          IF(lwp) WRITE(numout,*) '    parameter , nperio = ', nperio 
     790         IF(lwp) WRITE(numout,*) '    parameter , jperio = ', jperio 
    801791         !         STOP 'dom_mba' 
    802792      ENDIF 
     793 
    803794      !  Boundary condition on mbathy 
    804795      IF( .NOT.lk_mpp ) THEN  
     
    806797         !   ... mono- or macro-tasking: T-point, >0, 2D array, no slab 
    807798         zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    808          CALL lbc_lnk( 'toto',zbathy, 'T', 1._wp ) 
     799         CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
    809800         mbathy(:,:) = INT( zbathy(:,:) ) 
    810801      ENDIF 
     802 
    811803      ! Number of ocean level inferior or equal to jpkm1 
    812       ikmax = 0 
    813       DO jj = 1, jpj 
    814          DO ji = 1, jpi 
    815             ikmax = MAX( ikmax, mbathy(ji,jj) ) 
    816          END DO 
    817       END DO 
    818 !!gm  !!! test to do:   ikmax = MAX( mbathy(:,:) )   ??? 
     804      zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     805      ikmax = glob_max( 'domzgr', zbathy(:,:) ) 
     806 
    819807      IF( ikmax > jpkm1 ) THEN 
    820808         IF(lwp) WRITE(numout,*) ' maximum number of ocean level = ', ikmax,' >  jpk-1' 
     
    825813      ENDIF 
    826814      ! 
    827       CALL wrk_dealloc( jpi, jpj, zbathy ) 
    828       ! 
    829    !!   IF( nn_timing == 1 )  CALL timing_stop('zgr_bat_ctl') 
     815      DEALLOCATE( zbathy ) 
    830816      ! 
    831817   END SUBROUTINE zgr_bat_ctl 
     
    845831      !!---------------------------------------------------------------------- 
    846832      INTEGER ::   ji, jj   ! dummy loop indices 
    847       REAL(wp), POINTER, DIMENSION(:,:) ::  zmbk 
    848       !!---------------------------------------------------------------------- 
    849       ! 
    850    !   IF( nn_timing == 1 )  CALL timing_start('zgr_bot_level') 
    851       ! 
    852       CALL wrk_alloc( jpi, jpj, zmbk ) 
     833      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zmbk 
     834      !!---------------------------------------------------------------------- 
     835      ! 
     836      ALLOCATE( zmbk(jpi,jpj) ) 
    853837      ! 
    854838      IF(lwp) WRITE(numout,*) 
     
    866850      END DO 
    867851      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    868       zmbk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk('toto',zmbk,'U',1.)   ;   mbku  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    869       zmbk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk('toto',zmbk,'V',1.)   ;   mbkv  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    870       ! 
    871       CALL wrk_dealloc( jpi, jpj, zmbk ) 
    872       ! 
    873    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_bot_level') 
     852      zmbk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmbk,'U',1.)   ;   mbku  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
     853      zmbk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmbk,'V',1.)   ;   mbkv  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
     854      ! 
     855      DEALLOCATE( zmbk ) 
    874856      ! 
    875857   END SUBROUTINE zgr_bot_level 
     
    889871      !!---------------------------------------------------------------------- 
    890872      INTEGER ::   ji, jj   ! dummy loop indices 
    891       REAL(wp), POINTER, DIMENSION(:,:) ::  zmik 
    892       !!---------------------------------------------------------------------- 
    893       ! 
    894    !   IF( nn_timing == 1 )  CALL timing_start('zgr_top_level') 
    895       ! 
    896       CALL wrk_alloc( jpi, jpj, zmik ) 
     873      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zmik 
     874      !!---------------------------------------------------------------------- 
     875      ! 
     876      ALLOCATE( zmik(jpi,jpj) ) 
    897877      ! 
    898878      IF(lwp) WRITE(numout,*) 
     
    911891 
    912892      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    913       zmik(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'U',1.)   ;   miku  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    914       zmik(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'V',1.)   ;   mikv  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    915       zmik(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'F',1.)   ;   mikf  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    916       ! 
    917       CALL wrk_dealloc( jpi, jpj, zmik ) 
    918       ! 
    919    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_top_level') 
     893      zmik(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'U',1.)   ;   miku  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     894      zmik(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'V',1.)   ;   mikv  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     895      zmik(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'F',1.)   ;   mikf  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     896      ! 
     897      DEALLOCATE( zmik ) 
    920898      ! 
    921899   END SUBROUTINE zgr_top_level 
     
    932910      INTEGER  ::   jk 
    933911      !!---------------------------------------------------------------------- 
    934       ! 
    935     !  IF( nn_timing == 1 )  CALL timing_start('zgr_zco') 
    936912      ! 
    937913      DO jk = 1, jpk 
     
    948924      END DO 
    949925      ! 
    950    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_zco') 
    951       ! 
    952926   END SUBROUTINE zgr_zco 
    953927 
     
    1004978      REAL(wp) ::   zdiff            ! temporary scalar 
    1005979      REAL(wp) ::   zmax             ! temporary scalar 
    1006       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zprt 
     980      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  zprt 
    1007981      !!--------------------------------------------------------------------- 
    1008982      ! 
    1009    !   IF( nn_timing == 1 )  CALL timing_start('zgr_zps') 
    1010       ! 
    1011       CALL wrk_alloc( jpi,jpj,jpk,   zprt ) 
     983      ALLOCATE( zprt(jpi,jpj,jpk) ) 
    1012984      ! 
    1013985      IF(lwp) WRITE(numout,*) 
     
    11401112      END IF 
    11411113 
    1142       CALL lbc_lnk('toto', e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk('toto', e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
    1143       CALL lbc_lnk( 'toto',e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk('toto', e3vw_0, 'V', 1._wp ) 
     1114      CALL lbc_lnk('domzgr', e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk('domzgr', e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
     1115      CALL lbc_lnk('domzgr', e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk('domzgr', e3vw_0, 'V', 1._wp ) 
    11441116      ! 
    11451117 
     
    11621134         END DO 
    11631135      END DO 
    1164       CALL lbc_lnk('toto', e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
     1136      CALL lbc_lnk('domzgr', e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
    11651137      ! 
    11661138      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
     
    12031175      END IF 
    12041176      ! 
    1205       CALL wrk_dealloc( jpi,jpj,jpk,   zprt ) 
    1206       ! 
    1207    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_zps') 
     1177      DEALLOCATE( zprt ) 
    12081178      ! 
    12091179   END SUBROUTINE zgr_zps 
     
    12351205      REAL(wp) ::   zdepwp           ! Ajusted ocean depth to avoid too small e3t 
    12361206      REAL(wp) ::   zdiff            ! temporary scalar 
    1237       REAL(wp), POINTER, DIMENSION(:,:)   ::   zrisfdep, zbathy, zmask   ! 2D workspace (ISH) 
    1238       INTEGER , POINTER, DIMENSION(:,:)   ::   zmbathy, zmisfdep         ! 2D workspace (ISH) 
     1207      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zrisfdep, zbathy, zmask   ! 2D workspace (ISH) 
     1208      INTEGER , ALLOCATABLE, DIMENSION(:,:)   ::   zmbathy, zmisfdep         ! 2D workspace (ISH) 
    12391209      !!--------------------------------------------------------------------- 
    12401210      ! 
    1241   !!    IF( nn_timing == 1 )   CALL timing_start('zgr_isf') 
    1242       ! 
    1243       CALL wrk_alloc( jpi,jpj,   zbathy, zmask, zrisfdep) 
    1244       CALL wrk_alloc( jpi,jpj,   zmisfdep, zmbathy ) 
    1245  
     1211      ALLOCATE( zbathy(jpi,jpj), zmask(jpi,jpj), zrisfdep(jpi,jpj) ) 
     1212      ALLOCATE( zmisfdep(jpi,jpj), zmbathy(jpi,jpj) ) 
     1213      ! 
    12461214      ! (ISF) compute misfdep 
    12471215      WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) /= 0 ) ;   misfdep(:,:) = 1   ! open water : set misfdep to 1   
     
    12861254         IF( lk_mpp ) THEN 
    12871255            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1288             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1256            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    12891257            misfdep(:,:) = INT( zbathy(:,:) ) 
    12901258 
    1291             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1292             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1259            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1260            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    12931261 
    12941262            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1295             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1263            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    12961264            mbathy(:,:)  = INT( zbathy(:,:) ) 
    12971265         ENDIF 
     
    14071375         IF( lk_mpp ) THEN 
    14081376            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1409             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1377            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14101378            misfdep(:,:) = INT( zbathy(:,:) ) 
    14111379 
    1412             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1413             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1380            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1381            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14141382 
    14151383            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1416             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1384            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14171385            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14181386         ENDIF 
     
    14441412         IF( lk_mpp ) THEN  
    14451413            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1446             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1414            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14471415            misfdep(:,:) = INT( zbathy(:,:) ) 
    14481416 
    1449             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1450             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1417            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1418            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14511419 
    14521420            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1453             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1421            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14541422            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14551423         ENDIF  
     
    14811449         IF( lk_mpp ) THEN  
    14821450            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1483             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1451            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14841452            misfdep(:,:) = INT( zbathy(:,:) ) 
    14851453 
    1486             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1487             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1454            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1455            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14881456 
    14891457            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1490             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1458            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14911459            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14921460         ENDIF  
     
    15181486         IF( lk_mpp ) THEN 
    15191487            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1520             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1488            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15211489            misfdep(:,:) = INT( zbathy(:,:) ) 
    15221490 
    1523             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1524             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1491            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1492            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    15251493 
    15261494            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1527             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1495            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15281496            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15291497         ENDIF 
     
    15551523         IF( lk_mpp ) THEN 
    15561524            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1557             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1525            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15581526            misfdep(:,:) = INT( zbathy(:,:) ) 
    15591527 
    1560             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1561             CALL lbc_lnk('toto', bathy,  'T', 1. ) 
     1528            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1529            CALL lbc_lnk('domzgr', bathy,  'T', 1. ) 
    15621530 
    15631531            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1564             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1532            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15651533            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15661534         ENDIF 
     
    15871555         IF( lk_mpp ) THEN 
    15881556            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1589             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1557            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15901558            misfdep(:,:) = INT( zbathy(:,:) ) 
    15911559 
    1592             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1593             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1560            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1561            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    15941562 
    15951563            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1596             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1564            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15971565            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15981566         ENDIF 
     
    16231591         IF( lk_mpp ) THEN  
    16241592            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1625             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1593            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16261594            misfdep(:,:) = INT( zbathy(:,:) )  
    16271595 
    1628             CALL lbc_lnk( 'toto',risfdep, 'T', 1. )  
    1629             CALL lbc_lnk( 'toto',bathy,   'T', 1. ) 
     1596            CALL lbc_lnk( 'domzgr',risfdep, 'T', 1. )  
     1597            CALL lbc_lnk( 'domzgr',bathy,   'T', 1. ) 
    16301598 
    16311599            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1632             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1600            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16331601            mbathy(:,:) = INT( zbathy(:,:) ) 
    16341602         ENDIF  
     
    16561624         IF( lk_mpp ) THEN  
    16571625            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1658             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1626            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16591627            misfdep(:,:) = INT( zbathy(:,:) )  
    16601628 
    1661             CALL lbc_lnk( 'toto',risfdep, 'T', 1. )  
    1662             CALL lbc_lnk( 'toto',bathy,   'T', 1. ) 
     1629            CALL lbc_lnk( 'domzgr',risfdep, 'T', 1. )  
     1630            CALL lbc_lnk( 'domzgr',bathy,   'T', 1. ) 
    16631631 
    16641632            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1665             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1633            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16661634            mbathy(:,:) = INT( zbathy(:,:) ) 
    16671635         ENDIF  
     
    16761644         IF( lk_mpp ) THEN  
    16771645            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1678             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1646            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16791647            misfdep(:,:) = INT( zbathy(:,:) )  
    16801648 
    1681             CALL lbc_lnk('toto', risfdep, 'T', 1. )  
    1682             CALL lbc_lnk('toto', bathy,   'T', 1. ) 
     1649            CALL lbc_lnk('domzgr', risfdep, 'T', 1. )  
     1650            CALL lbc_lnk('domzgr', bathy,   'T', 1. ) 
    16831651 
    16841652            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1685             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1653            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16861654            mbathy(:,:) = INT( zbathy(:,:) ) 
    16871655         ENDIF  
     
    16961664         IF( lk_mpp ) THEN  
    16971665            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1698             CALL lbc_lnk('toto', zbathy, 'T', 1. )  
     1666            CALL lbc_lnk('domzgr', zbathy, 'T', 1. )  
    16991667            misfdep(:,:) = INT( zbathy(:,:) )  
    17001668 
    1701             CALL lbc_lnk('toto', risfdep,'T', 1. )  
    1702             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1669            CALL lbc_lnk('domzgr', risfdep,'T', 1. )  
     1670            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    17031671 
    17041672            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1705             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1673            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17061674            mbathy(:,:) = INT( zbathy(:,:) ) 
    17071675         ENDIF  
     
    17161684         IF( lk_mpp ) THEN  
    17171685            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1718             CALL lbc_lnk( 'toto',zbathy, 'T', 1. )  
     1686            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. )  
    17191687            misfdep(:,:) = INT( zbathy(:,:) )  
    17201688 
    1721             CALL lbc_lnk( 'toto',risfdep,'T', 1. )  
    1722             CALL lbc_lnk('toto', bathy,  'T', 1. ) 
     1689            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. )  
     1690            CALL lbc_lnk('domzgr', bathy,  'T', 1. ) 
    17231691 
    17241692            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1725             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1693            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17261694            mbathy(:,:) = INT( zbathy(:,:) ) 
    17271695         ENDIF  
     
    17361704         IF( lk_mpp ) THEN  
    17371705            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1738             CALL lbc_lnk( 'toto',zbathy, 'T', 1. )  
     1706            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. )  
    17391707            misfdep(:,:) = INT( zbathy(:,:) )  
    17401708 
    1741             CALL lbc_lnk( 'toto',risfdep,'T', 1. )  
    1742             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1709            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. )  
     1710            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    17431711 
    17441712            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1745             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1713            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17461714            mbathy(:,:) = INT( zbathy(:,:) ) 
    17471715         ENDIF  
     
    18771845      END DO  
    18781846 
    1879       CALL wrk_dealloc( jpi, jpj, zmask, zbathy, zrisfdep ) 
    1880       CALL wrk_dealloc( jpi, jpj, zmisfdep, zmbathy ) 
    1881       ! 
    1882   !    IF( nn_timing == 1 )   CALL timing_stop('zgr_isf') 
    1883       !       
     1847      DEALLOCATE( zbathy, zmask, zrisfdep ) 
     1848      DEALLOCATE( zmisfdep, zmbathy ) 
     1849      ! 
    18841850   END SUBROUTINE zgr_isf 
    18851851 
     
    19351901      REAL(wp) ::   zrfact 
    19361902      ! 
    1937       REAL(wp), POINTER, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
    1938       REAL(wp), POINTER, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
     1903      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
     1904      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
    19391905      !! 
    19401906      NAMELIST/namzgr_sco/ln_s_sh94, ln_s_sf12, ln_sigcrit, rn_sbot_min, rn_sbot_max, rn_hc, rn_rmax,rn_theta, & 
     
    19421908     !!---------------------------------------------------------------------- 
    19431909      ! 
    1944    !!   IF( nn_timing == 1 )  CALL timing_start('zgr_sco') 
    1945       ! 
    1946       CALL wrk_alloc( jpi,jpj,   zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
     1910      ALLOCATE( zenv(jpi,jpj), ztmp(jpi,jpj), zmsk(jpi,jpj), zri(jpi,jpj), zrj(jpi,jpj), zhbat(jpi,jpj) , ztmpi1(jpi,jpj), ztmpi2(jpi,jpj), ztmpj1(jpi,jpj), ztmpj2(jpi,jpj) ) 
    19471911      ! 
    19481912      REWIND( numnam_ref )              ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters 
     
    20241988 
    20251989      ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
    2026       CALL lbc_lnk( 'toto',zenv, 'T', 1._wp, 'no0' ) 
     1990      CALL lbc_lnk( 'domzgr',zenv, 'T', 1._wp, 'no0' ) 
    20271991      !  
    20281992      ! smooth the bathymetry (if required) 
     
    20882052         END DO 
    20892053         ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
    2090          CALL lbc_lnk( 'toto',zenv, 'T', 1._wp, 'no0' ) 
     2054         CALL lbc_lnk( 'domzgr',zenv, 'T', 1._wp, 'no0' ) 
    20912055         !                                                  ! ================ ! 
    20922056      END DO                                                !     End loop     ! 
     
    21322096      ! Apply lateral boundary condition 
    21332097!!gm  ! CAUTION: retain non zero value in the initial file this should be OK for orca cfg, not for EEL 
    2134       zhbat(:,:) = hbatu(:,:)   ;   CALL lbc_lnk('toto', hbatu, 'U', 1._wp ) 
     2098      zhbat(:,:) = hbatu(:,:)   ;   CALL lbc_lnk('domzgr', hbatu, 'U', 1._wp ) 
    21352099      DO jj = 1, jpj 
    21362100         DO ji = 1, jpi 
     
    21422106         END DO 
    21432107      END DO 
    2144       zhbat(:,:) = hbatv(:,:)   ;   CALL lbc_lnk('toto', hbatv, 'V', 1._wp ) 
     2108      zhbat(:,:) = hbatv(:,:)   ;   CALL lbc_lnk('domzgr', hbatv, 'V', 1._wp ) 
    21452109      DO jj = 1, jpj 
    21462110         DO ji = 1, jpi 
     
    21512115         END DO 
    21522116      END DO 
    2153       zhbat(:,:) = hbatf(:,:)   ;   CALL lbc_lnk('toto', hbatf, 'F', 1._wp ) 
     2117      zhbat(:,:) = hbatf(:,:)   ;   CALL lbc_lnk('domzgr', hbatf, 'F', 1._wp ) 
    21542118      DO jj = 1, jpj 
    21552119         DO ji = 1, jpi 
     
    21992163      ENDIF  
    22002164 
    2201       CALL lbc_lnk( 'toto',e3t_0 , 'T', 1._wp ) 
    2202       CALL lbc_lnk( 'toto',e3u_0 , 'U', 1._wp ) 
    2203       CALL lbc_lnk( 'toto',e3v_0 , 'V', 1._wp ) 
    2204       CALL lbc_lnk( 'toto',e3f_0 , 'F', 1._wp ) 
    2205       CALL lbc_lnk( 'toto',e3w_0 , 'W', 1._wp ) 
    2206       CALL lbc_lnk( 'toto',e3uw_0, 'U', 1._wp ) 
    2207       CALL lbc_lnk('toto', e3vw_0, 'V', 1._wp ) 
     2165      CALL lbc_lnk( 'domzgr',e3t_0 , 'T', 1._wp ) 
     2166      CALL lbc_lnk( 'domzgr',e3u_0 , 'U', 1._wp ) 
     2167      CALL lbc_lnk( 'domzgr',e3v_0 , 'V', 1._wp ) 
     2168      CALL lbc_lnk( 'domzgr',e3f_0 , 'F', 1._wp ) 
     2169      CALL lbc_lnk( 'domzgr',e3w_0 , 'W', 1._wp ) 
     2170      CALL lbc_lnk( 'domzgr',e3uw_0, 'U', 1._wp ) 
     2171      CALL lbc_lnk('domzgr', e3vw_0, 'V', 1._wp ) 
    22082172      ! 
    22092173        WHERE( e3t_0 (:,:,:) == 0._wp )   e3t_0 (:,:,:) = 1._wp 
     
    22142178        WHERE( e3uw_0(:,:,:) == 0._wp )   e3uw_0(:,:,:) = 1._wp 
    22152179        WHERE( e3vw_0(:,:,:) == 0._wp )   e3vw_0(:,:,:) = 1._wp 
    2216  
    2217  
    2218 !!gm   I don't like that HERE we are supposed to set the reference coordinate (i.e. _0 arrays) 
    2219 !!gm   and only that !!!!! 
    2220 !!gm   THIS should be removed from here ! 
    2221       gdept_n(:,:,:) = gdept_0(:,:,:) 
    2222       gdepw_n(:,:,:) = gdepw_0(:,:,:) 
    2223       gde3w_n(:,:,:) = gde3w_0(:,:,:) 
    2224       e3t_n  (:,:,:) = e3t_0  (:,:,:) 
    2225       e3u_n  (:,:,:) = e3u_0  (:,:,:) 
    2226       e3v_n  (:,:,:) = e3v_0  (:,:,:) 
    2227       e3f_n  (:,:,:) = e3f_0  (:,:,:) 
    2228       e3w_n  (:,:,:) = e3w_0  (:,:,:) 
    2229       e3uw_n (:,:,:) = e3uw_0 (:,:,:) 
    2230       e3vw_n (:,:,:) = e3vw_0 (:,:,:) 
    2231 !!gm and obviously in the following, use the _0 arrays until the end of this subroutine 
    2232 !! gm end 
    22332180!! 
    22342181      ! HYBRID :  
     
    22362183         DO ji = 1, jpi 
    22372184            DO jk = 1, jpkm1 
    2238                IF( scobot(ji,jj) >= gdept_n(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
     2185               IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    22392186            END DO 
    22402187         END DO 
     
    22982245               DO jk = 1, mbathy(ji,jj) 
    22992246                 ! check coordinate is monotonically increasing 
    2300                  IF (e3w_n(ji,jj,jk) <= 0._wp .OR. e3t_n(ji,jj,jk) <= 0._wp ) THEN 
     2247                 IF (e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 
    23012248                    WRITE(ctmp1,*) 'ERROR zgr_sco :   e3w   or e3t   =< 0  at point (i,j,k)= ', ji, jj, jk 
    23022249                    WRITE(numout,*) 'ERROR zgr_sco :   e3w   or e3t   =< 0  at point (i,j,k)= ', ji, jj, jk 
    2303                     WRITE(numout,*) 'e3w',e3w_n(ji,jj,:) 
    2304                     WRITE(numout,*) 'e3t',e3t_n(ji,jj,:) 
     2250                    WRITE(numout,*) 'e3w',e3w_0(ji,jj,:) 
     2251                    WRITE(numout,*) 'e3t',e3t_0(ji,jj,:) 
    23052252                    CALL ctl_stop( ctmp1 ) 
    23062253                 ENDIF 
    23072254                 ! and check it has never gone negative 
    2308                  IF( gdepw_n(ji,jj,jk) < 0._wp .OR. gdept_n(ji,jj,jk) < 0._wp ) THEN 
     2255                 IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 
    23092256                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdepw or gdept =< 0  at point (i,j,k)= ', ji, jj, jk 
    23102257                    WRITE(numout,*) 'ERROR zgr_sco :   gdepw   or gdept   =< 0  at point (i,j,k)= ', ji, jj, jk 
    2311                     WRITE(numout,*) 'gdepw',gdepw_n(ji,jj,:) 
    2312                     WRITE(numout,*) 'gdept',gdept_n(ji,jj,:) 
     2258                    WRITE(numout,*) 'gdepw',gdepw_0(ji,jj,:) 
     2259                    WRITE(numout,*) 'gdept',gdept_0(ji,jj,:) 
    23132260                    CALL ctl_stop( ctmp1 ) 
    23142261                 ENDIF 
    23152262                 ! and check it never exceeds the total depth 
    2316                  IF( gdepw_n(ji,jj,jk) > hbatt(ji,jj) ) THEN 
     2263                 IF( gdepw_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 
    23172264                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdepw > hbatt  at point (i,j,k)= ', ji, jj, jk 
    23182265                    WRITE(numout,*) 'ERROR zgr_sco :   gdepw > hbatt  at point (i,j,k)= ', ji, jj, jk 
    2319                     WRITE(numout,*) 'gdepw',gdepw_n(ji,jj,:) 
     2266                    WRITE(numout,*) 'gdepw',gdepw_0(ji,jj,:) 
    23202267                    CALL ctl_stop( ctmp1 ) 
    23212268                 ENDIF 
     
    23242271               DO jk = 1, mbathy(ji,jj)-1 
    23252272                 ! and check it never exceeds the total depth 
    2326                 IF( gdept_n(ji,jj,jk) > hbatt(ji,jj) ) THEN 
     2273                IF( gdept_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 
    23272274                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdept > hbatt  at point (i,j,k)= ', ji, jj, jk 
    23282275                    WRITE(numout,*) 'ERROR zgr_sco :   gdept > hbatt  at point (i,j,k)= ', ji, jj, jk 
    2329                     WRITE(numout,*) 'gdept',gdept_n(ji,jj,:) 
     2276                    WRITE(numout,*) 'gdept',gdept_0(ji,jj,:) 
    23302277                    CALL ctl_stop( ctmp1 ) 
    23312278                 ENDIF 
     
    23352282      END DO 
    23362283      ! 
    2337       CALL wrk_dealloc( jpi, jpj, zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    2338       ! 
    2339    !!!   IF( nn_timing == 1 )  CALL timing_stop('zgr_sco') 
     2284      DEALLOCATE( zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    23402285      ! 
    23412286   END SUBROUTINE zgr_sco 
     
    23582303      REAL(wp) ::   ztmpu1, ztmpv1, ztmpf1 
    23592304      ! 
    2360       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    2361       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2362       !!---------------------------------------------------------------------- 
    2363  
    2364       CALL wrk_alloc( jpi,jpj,jpk,   z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2365       CALL wrk_alloc( jpi,jpj,jpk,   z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2305      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
     2306      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
     2307      !!---------------------------------------------------------------------- 
     2308 
     2309      ALLOCATE( z_gsigw3 (jpi,jpj,jpk), z_gsigt3 (jpi,jpj,jpk), z_gsi3w3 (jpi,jpj,jpk) ) 
     2310      ALLOCATE( z_esigt3 (jpi,jpj,jpk), z_esigw3 (jpi,jpj,jpk), z_esigtu3(jpi,jpj,jpk), z_esigtv3(jpi,jpj,jpk) ) 
     2311      ALLOCATE( z_esigtf3(jpi,jpj,jpk), z_esigwu3(jpi,jpj,jpk), z_esigwv3(jpi,jpj,jpk) ) 
    23662312 
    23672313      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
     
    24482394      END DO 
    24492395      ! 
    2450       CALL wrk_dealloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2451       CALL wrk_dealloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2396      DEALLOCATE( z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2397      DEALLOCATE( z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    24522398      ! 
    24532399   END SUBROUTINE s_sh94 
     
    24762422      REAL(wp) ::   ztmpu1, ztmpv1, ztmpf1 
    24772423      ! 
    2478       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    2479       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2480       !!---------------------------------------------------------------------- 
    2481       ! 
    2482       CALL wrk_alloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2483       CALL wrk_alloc( jpi, jpj, jpk, z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2424      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
     2425      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
     2426      !!---------------------------------------------------------------------- 
     2427      ! 
     2428      ALLOCATE( z_gsigw3 (jpi,jpj,jpk), z_gsigt3 (jpi,jpj,jpk), z_gsi3w3 (jpi,jpj,jpk) ) 
     2429      ALLOCATE( z_esigt3 (jpi,jpj,jpk), z_esigw3 (jpi,jpj,jpk), z_esigtu3(jpi,jpj,jpk), z_esigtv3(jpi,jpj,jpk)) 
     2430      ALLOCATE( z_esigtf3(jpi,jpj,jpk), z_esigwu3(jpi,jpj,jpk), z_esigwv3(jpi,jpj,jpk) ) 
    24842431 
    24852432      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
     
    26082555      ENDDO 
    26092556      ! 
    2610       CALL lbc_lnk('toto',e3t_0 ,'T',1.) ; CALL lbc_lnk('toto',e3u_0 ,'T',1.) 
    2611       CALL lbc_lnk('toto',e3v_0 ,'T',1.) ; CALL lbc_lnk('toto',e3f_0 ,'T',1.) 
    2612       CALL lbc_lnk('toto',e3w_0 ,'T',1.) 
    2613       CALL lbc_lnk('toto',e3uw_0,'T',1.) ; CALL lbc_lnk('toto',e3vw_0,'T',1.) 
    2614       ! 
    2615       CALL wrk_dealloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2616       CALL wrk_dealloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2557      CALL lbc_lnk('domzgr',e3t_0 ,'T',1.) ; CALL lbc_lnk('domzgr',e3u_0 ,'T',1.) 
     2558      CALL lbc_lnk('domzgr',e3v_0 ,'T',1.) ; CALL lbc_lnk('domzgr',e3f_0 ,'T',1.) 
     2559      CALL lbc_lnk('domzgr',e3w_0 ,'T',1.) 
     2560      CALL lbc_lnk('domzgr',e3uw_0,'T',1.) ; CALL lbc_lnk('domzgr',e3vw_0,'T',1.) 
     2561      ! 
     2562      DEALLOCATE( z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2563      DEALLOCATE( z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    26172564      ! 
    26182565   END SUBROUTINE s_sf12 
     
    26312578      INTEGER  ::   ji, jj, jk       ! dummy loop argument 
    26322579      REAL(wp) ::   zcoeft, zcoefw   ! temporary scalars 
    2633       REAL(wp), POINTER, DIMENSION(:) :: z_gsigw, z_gsigt, z_gsi3w 
    2634       REAL(wp), POINTER, DIMENSION(:) :: z_esigt, z_esigw 
    2635       !!---------------------------------------------------------------------- 
    2636  
    2637       CALL wrk_alloc( jpk,   z_gsigw, z_gsigt, z_gsi3w ) 
    2638       CALL wrk_alloc( jpk,   z_esigt, z_esigw ) 
     2580      REAL(wp), ALLOCATABLE, DIMENSION(:) :: z_gsigw, z_gsigt, z_gsi3w 
     2581      REAL(wp), ALLOCATABLE, DIMENSION(:) :: z_esigt, z_esigw 
     2582      !!---------------------------------------------------------------------- 
     2583 
     2584      ALLOCATE( z_gsigw(jpk), z_gsigt(jpk), z_gsi3w(jpk) ) 
     2585      ALLOCATE( z_esigt(jpk), z_esigw(jpk) ) 
    26392586 
    26402587      z_gsigw  = 0._wp   ;   z_gsigt  = 0._wp   ;   z_gsi3w  = 0._wp 
     
    26862633      END DO 
    26872634      ! 
    2688       CALL wrk_dealloc( jpk,  z_gsigw, z_gsigt, z_gsi3w ) 
    2689       CALL wrk_dealloc( jpk,  z_esigt, z_esigw          ) 
     2635      DEALLOCATE( z_gsigw, z_gsigt, z_gsi3w ) 
     2636      DEALLOCATE( z_esigt, z_esigw          ) 
    26902637      ! 
    26912638   END SUBROUTINE s_tanh 
Note: See TracChangeset for help on using the changeset viewer.