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 15022 for NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2021-06-18T16:26:14+02:00 (3 years ago)
Author:
gsamson
Message:

last trunk phasing before branch merge (#2680)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/DIA/diawri.F90

    r14476 r15022  
    123123      REAL(wp)::   zztmp2, zztmpy   !   -      - 
    124124      REAL(wp)::   ze3 
    125       REAL(wp), DIMENSION(jpi,jpj)     ::   z2d   ! 2D workspace 
    126       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z3d   ! 3D workspace 
     125      REAL(wp), DIMENSION(A2D(     0))     ::   z2d   ! 2D workspace 
     126      REAL(wp), DIMENSION(A2D(nn_hls),jpk) ::   z3d   ! 3D workspace 
    127127      !!---------------------------------------------------------------------- 
    128128      !  
     
    145145            z3d(:,:,jk) = gdept(:,:,jk,Kmm) 
    146146         END DO 
    147          CALL iom_put( "tpt_dep",     z3d(:,:,:) ) 
     147         CALL iom_put( "tpt_dep", z3d ) 
    148148      ENDIF 
    149149 
     
    152152            z3d(:,:,jk) =  e3t(:,:,jk,Kmm) 
    153153         END DO 
    154          CALL iom_put( "e3t"     ,     z3d(:,:,:) ) 
    155          CALL iom_put( "e3tdef"  , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )  
     154         CALL iom_put( "e3t", z3d ) 
     155         IF ( iom_use("e3tdef") ) THEN 
     156            z3d(:,:,:) = ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100._wp * tmask(:,:,:) ) ** 2  
     157            CALL iom_put( "e3tdef", z3d )  
     158         ENDIF 
    156159      ENDIF  
    157160      IF ( iom_use("e3u") ) THEN                         ! time-varying e3u 
     
    159162            z3d(:,:,jk) =  e3u(:,:,jk,Kmm) 
    160163         END DO  
    161          CALL iom_put( "e3u" , z3d(:,:,:) ) 
     164         CALL iom_put( "e3u" , z3d ) 
    162165      ENDIF 
    163166      IF ( iom_use("e3v") ) THEN                         ! time-varying e3v 
     
    165168            z3d(:,:,jk) =  e3v(:,:,jk,Kmm) 
    166169         END DO  
    167          CALL iom_put( "e3v" , z3d(:,:,:) ) 
     170         CALL iom_put( "e3v" , z3d ) 
    168171      ENDIF 
    169172      IF ( iom_use("e3w") ) THEN                         ! time-varying e3w 
     
    171174            z3d(:,:,jk) =  e3w(:,:,jk,Kmm) 
    172175         END DO  
    173          CALL iom_put( "e3w" , z3d(:,:,:) ) 
     176         CALL iom_put( "e3w" , z3d ) 
    174177      ENDIF 
    175178      IF ( iom_use("e3f") ) THEN                         ! time-varying e3f caution here at Kaa 
     
    177180            z3d(:,:,jk) =  e3f(:,:,jk) 
    178181         END DO 
    179          CALL iom_put( "e3f" , z3d(:,:,:) ) 
    180       ENDIF 
    181  
    182       IF( ll_wd ) THEN                                   ! sea surface height (brought back to the reference used for wetting and drying) 
    183          CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*ssmask(:,:) ) 
    184       ELSE 
    185          CALL iom_put( "ssh" , ssh(:,:,Kmm) )              ! sea surface height 
     182         CALL iom_put( "e3f" , z3d ) 
     183      ENDIF 
     184 
     185      IF ( iom_use("ssh") ) THEN 
     186         IF( ll_wd ) THEN                                ! sea surface height (brought back to the reference used for wetting and drying) 
     187            CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*ssmask(:,:) ) 
     188         ELSE 
     189            CALL iom_put( "ssh" ,  ssh(:,:,Kmm) )        ! sea surface height 
     190         ENDIF 
    186191      ENDIF 
    187192 
     
    218223 
    219224      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    220          zztmp = rho0 * 0.25 
     225         zztmp = rho0 * 0.25_wp 
    221226         z2d(:,:) = 0._wp 
    222227         DO_2D( 0, 0, 0, 0 ) 
     
    252257 
    253258      !                                            ! vertical velocity 
    254       IF( ln_zad_Aimp ) THEN   ;   CALL iom_put( "woce", ww + wi )   ! explicit plus implicit parts 
    255       ELSE                     ;   CALL iom_put( "woce", ww ) 
     259      IF( ln_zad_Aimp ) THEN   ;   IF( iom_use('woce') )   CALL iom_put( "woce", ww + wi )   ! explicit plus implicit parts 
     260      ELSE                     ;                           CALL iom_put( "woce", ww ) 
    256261      ENDIF 
    257262 
     
    276281      IF( iom_use('logavs') )   CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 
    277282 
    278       IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 
    279          z3d(:,:,jpk) = 0. 
    280          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    281             zztmp  = ts(ji,jj,jk,jp_sal,Kmm) 
    282             zztmpx = (ts(ji+1,jj,jk,jp_sal,Kmm) - zztmp) * r1_e1u(ji,jj) + (zztmp - ts(ji-1,jj  ,jk,jp_sal,Kmm)) * r1_e1u(ji-1,jj) 
    283             zztmpy = (ts(ji,jj+1,jk,jp_sal,Kmm) - zztmp) * r1_e2v(ji,jj) + (zztmp - ts(ji  ,jj-1,jk,jp_sal,Kmm)) * r1_e2v(ji,jj-1) 
    284             z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
    285                &                 * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) 
    286          END_3D 
    287          CALL iom_put( "socegrad2",  z3d )          ! square of module of sal gradient 
    288          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    289             z3d(ji,jj,jk) = SQRT( z3d(ji,jj,jk) ) 
    290          END_3D 
    291          CALL iom_put( "socegrad" ,  z3d )          ! module of sal gradient 
     283      IF ( iom_use("sssgrad") .OR. iom_use("sssgrad2") ) THEN 
     284         DO_2D( 0, 0, 0, 0 )                       ! sss gradient 
     285            zztmp  = ts(ji,jj,1,jp_sal,Kmm) 
     286            zztmpx = (ts(ji+1,jj,1,jp_sal,Kmm) - zztmp) * r1_e1u(ji,jj) + (zztmp - ts(ji-1,jj  ,1,jp_sal,Kmm)) * r1_e1u(ji-1,jj) 
     287            zztmpy = (ts(ji,jj+1,1,jp_sal,Kmm) - zztmp) * r1_e2v(ji,jj) + (zztmp - ts(ji  ,jj-1,1,jp_sal,Kmm)) * r1_e2v(ji,jj-1) 
     288            z2d(ji,jj) = 0.25_wp * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
     289               &                 * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * vmask(ji,jj-1,1) 
     290         END_2D 
     291         CALL iom_put( "sssgrad2",  z2d )          ! square of module of sss gradient 
     292         IF ( iom_use("sssgrad") ) THEN 
     293            DO_2D( 0, 0, 0, 0 ) 
     294               z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
     295            END_2D 
     296            CALL iom_put( "sssgrad",  z2d )        ! module of sss gradient 
     297         ENDIF 
    292298      ENDIF 
    293299          
    294300      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    295          DO_2D( 0, 0, 0, 0 )                                 ! sst gradient 
     301         DO_2D( 0, 0, 0, 0 )                       ! sst gradient 
    296302            zztmp  = ts(ji,jj,1,jp_tem,Kmm) 
    297303            zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj  ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 
    298304            zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji  ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 
    299             z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
    300                &              * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 
     305            z2d(ji,jj) = 0.25_wp * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
     306               &                 * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * vmask(ji,jj-1,1) 
    301307         END_2D 
    302308         CALL iom_put( "sstgrad2",  z2d )          ! square of module of sst gradient 
    303          DO_2D( 0, 0, 0, 0 ) 
    304             z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
    305          END_2D 
    306          CALL iom_put( "sstgrad" ,  z2d )          ! module of sst gradient 
     309         IF ( iom_use("sstgrad") ) THEN 
     310            DO_2D( 0, 0, 0, 0 ) 
     311               z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
     312            END_2D 
     313            CALL iom_put( "sstgrad",  z2d )        ! module of sst gradient 
     314         ENDIF 
    307315      ENDIF 
    308316          
     
    321329            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    322330         END_3D 
    323          CALL iom_put( "saltc", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     331         CALL iom_put( "saltc", rho0 * z2d )       ! vertically integrated salt content (PSU*kg/m2) 
    324332      ENDIF 
    325333      ! 
     
    329337            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    330338         END_3D 
    331          CALL iom_put( "salt2c", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     339         CALL iom_put( "salt2c", rho0 * z2d )      ! vertically integrated salt content (PSU*kg/m2) 
    332340      ENDIF 
    333341      ! 
     
    335343         z3d(:,:,jpk) = 0._wp  
    336344         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    337             zztmpx = 0.5 * ( uu(ji-1,jj  ,jk,Kmm) + uu(ji,jj,jk,Kmm) ) 
    338             zztmpy = 0.5 * ( vv(ji  ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) ) 
    339             z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 
     345            zztmpx = uu(ji-1,jj  ,jk,Kmm) + uu(ji,jj,jk,Kmm) 
     346            zztmpy = vv(ji  ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) 
     347            z3d(ji,jj,jk) = 0.25_wp * ( zztmpx*zztmpx + zztmpy*zztmpy ) 
    340348         END_3D 
    341349         CALL iom_put( "ke", z3d )                 ! kinetic energy 
     
    345353            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 
    346354         END_3D 
    347          CALL iom_put( "ke_int", z2d )   ! vertically integrated kinetic energy 
    348       ENDIF 
    349       ! 
    350       IF ( iom_use("sKE") ) THEN                        ! surface kinetic energy at T point 
     355         CALL iom_put( "ke_int", z2d )             ! vertically integrated kinetic energy 
     356      ENDIF 
     357      ! 
     358      IF ( iom_use("sKE") ) THEN                   ! surface kinetic energy at T point 
    351359         z2d(:,:) = 0._wp 
    352360         DO_2D( 0, 0, 0, 0 ) 
     
    357365               &                 * r1_e1e2t(ji,jj) / e3t(ji,jj,1,Kmm) * ssmask(ji,jj) 
    358366         END_2D 
    359          CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 
    360367         IF ( iom_use("sKE" ) )  CALL iom_put( "sKE" , z2d )    
    361368      ENDIF 
    362369      !     
    363       IF ( iom_use("ssKEf") ) THEN                        ! surface kinetic energy at F point 
    364          z2d(:,:) = 0._wp                                ! CAUTION : only valid in SWE, not with bathymetry 
     370      IF ( iom_use("ssKEf") ) THEN                 ! surface kinetic energy at F point 
     371         z2d(:,:) = 0._wp                          ! CAUTION : only valid in SWE, not with bathymetry 
    365372         DO_2D( 0, 0, 0, 0 ) 
    366373            z2d(ji,jj) = 0.25_wp * ( uu(ji,jj  ,1,Kmm) * uu(ji,jj  ,1,Kmm) * e1e2u(ji,jj  ) * e3u(ji,jj  ,1,Kmm)  & 
     
    370377               &                 * r1_e1e2f(ji,jj) / e3f(ji,jj,1) * ssfmask(ji,jj) 
    371378         END_2D 
    372          CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
    373379         CALL iom_put( "ssKEf", z2d )                      
    374380      ENDIF 
    375381      ! 
    376       CALL iom_put( "hdiv", hdiv )                  ! Horizontal divergence 
    377  
    378       IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN 
     382      CALL iom_put( "hdiv", hdiv )                 ! Horizontal divergence 
     383      ! 
     384      IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
    379385          
    380          z3d(:,:,jpk) = 0._wp  
    381          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    382             z3d(ji,jj,jk) = (   e2v(ji+1,jj  ) * vv(ji+1,jj  ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm)    & 
    383                &              - e1u(ji  ,jj+1) * uu(ji  ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm)  ) * r1_e1e2f(ji,jj) 
    384          END_3D 
    385          CALL iom_put( "relvor", z3d )                  ! relative vorticity 
    386  
    387          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    388             z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk)  
    389          END_3D 
    390          CALL iom_put( "absvor", z3d )                  ! absolute vorticity 
    391  
    392          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    393             ze3  = (  e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk)   & 
    394                &    + e3t(ji,jj  ,jk,Kmm)*tmask(ji,jj  ,jk) + e3t(ji+1,jj  ,jk,Kmm)*tmask(ji+1,jj  ,jk)  ) 
    395             IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
    396             ELSE                      ;   ze3 = 0._wp 
    397             ENDIF 
    398             z3d(ji,jj,jk) = ze3 * z3d(ji,jj,jk)  
    399          END_3D 
    400          CALL iom_put( "potvor", z3d )                  ! potential vorticity 
    401  
    402       ENDIF 
    403       ! 
    404       IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
    405          z3d(:,:,jpk) = 0.e0 
    406          z2d(:,:) = 0.e0 
     386         z3d(:,:,jpk) = 0._wp 
    407387         DO jk = 1, jpkm1 
    408388            z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 
    409             z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
    410389         END DO 
    411          CALL iom_put( "u_masstr"     , z3d )         ! mass transport in i-direction 
    412          CALL iom_put( "u_masstr_vint", z2d )         ! mass transport in i-direction vertical sum 
    413       ENDIF 
    414        
    415       IF( iom_use("u_heattr") ) THEN 
    416          z2d(:,:) = 0._wp  
    417          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    418             z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 
    419          END_3D 
    420          CALL iom_put( "u_heattr", 0.5*rcp * z2d )    ! heat transport in i-direction 
    421       ENDIF 
    422  
    423       IF( iom_use("u_salttr") ) THEN 
    424          z2d(:,:) = 0.e0  
    425          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    426             z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 
    427          END_3D 
    428          CALL iom_put( "u_salttr", 0.5 * z2d )        ! heat transport in i-direction 
    429       ENDIF 
    430  
     390         CALL iom_put( "u_masstr"     , z3d )      ! mass transport in i-direction 
     391          
     392         IF( iom_use("u_masstr_vint") ) THEN 
     393            z2d(:,:) = 0._wp  
     394            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     395               z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
     396            END_3D 
     397            CALL iom_put( "u_masstr_vint", z2d )   ! mass transport in i-direction vertical sum 
     398         ENDIF 
     399         IF( iom_use("u_heattr") ) THEN 
     400            z2d(:,:) = 0._wp  
     401            zztmp = 0.5_wp * rcp 
     402            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     403               z2d(ji,jj) = z2d(ji,jj) + zztmp * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 
     404            END_3D 
     405            CALL iom_put( "u_heattr", z2d )        ! heat transport in i-direction 
     406         ENDIF 
     407         IF( iom_use("u_salttr") ) THEN 
     408            z2d(:,:) = 0._wp  
     409            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     410               z2d(ji,jj) = z2d(ji,jj) +   0.5 * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 
     411            END_3D 
     412            CALL iom_put( "u_salttr", z2d )        ! heat transport in i-direction 
     413         ENDIF 
     414          
     415      ENDIF 
    431416       
    432417      IF( iom_use("v_masstr") .OR. iom_use("v_heattr") .OR. iom_use("v_salttr") ) THEN 
    433          z3d(:,:,jpk) = 0.e0 
     418          
     419         z3d(:,:,jpk) = 0._wp 
    434420         DO jk = 1, jpkm1 
    435421            z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 
    436422         END DO 
    437          CALL iom_put( "v_masstr", z3d )              ! mass transport in j-direction 
    438       ENDIF 
    439        
    440       IF( iom_use("v_heattr") ) THEN 
    441          z2d(:,:) = 0.e0  
    442          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    443             z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 
    444          END_3D 
    445          CALL iom_put( "v_heattr", 0.5*rcp * z2d )    !  heat transport in j-direction 
    446       ENDIF 
    447  
    448       IF( iom_use("v_salttr") ) THEN 
    449          z2d(:,:) = 0._wp  
    450          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    451             z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 
    452          END_3D 
    453          CALL iom_put( "v_salttr", 0.5 * z2d )        !  heat transport in j-direction 
     423         CALL iom_put( "v_masstr", z3d )           ! mass transport in j-direction 
     424          
     425         IF( iom_use("v_heattr") ) THEN 
     426            z2d(:,:) = 0._wp 
     427            zztmp = 0.5_wp * rcp 
     428            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     429               z2d(ji,jj) = z2d(ji,jj) + zztmp * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 
     430            END_3D 
     431            CALL iom_put( "v_heattr", z2d )        !  heat transport in j-direction 
     432         ENDIF 
     433         IF( iom_use("v_salttr") ) THEN 
     434            z2d(:,:) = 0._wp  
     435            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     436               z2d(ji,jj) = z2d(ji,jj) +   0.5 * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 
     437            END_3D 
     438            CALL iom_put( "v_salttr", z2d )        !  heat transport in j-direction 
     439         ENDIF 
     440 
    454441      ENDIF 
    455442 
     
    457444         z2d(:,:) = 0._wp 
    458445         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    459             z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 
     446            z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 
    460447         END_3D 
    461          CALL iom_put( "tosmint", rho0 * z2d )        ! Vertical integral of temperature 
     448         CALL iom_put( "tosmint", z2d )            ! Vertical integral of temperature 
    462449      ENDIF 
    463450      IF( iom_use("somint") ) THEN 
    464          z2d(:,:)=0._wp 
     451         z2d(:,:) = 0._wp 
    465452         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    466             z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 
     453            z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 
    467454         END_3D 
    468          CALL iom_put( "somint", rho0 * z2d )         ! Vertical integral of salinity 
    469       ENDIF 
    470  
    471       CALL iom_put( "bn2", rn2 )                      ! Brunt-Vaisala buoyancy frequency (N^2) 
    472       ! 
     455         CALL iom_put( "somint", z2d )             ! Vertical integral of salinity 
     456      ENDIF 
     457 
     458      CALL iom_put( "bn2", rn2 )                   ! Brunt-Vaisala buoyancy frequency (N^2) 
    473459       
    474       IF (ln_dia25h)   CALL dia_25h( kt, Kmm )        ! 25h averaging 
     460      IF (ln_dia25h)   CALL dia_25h( kt, Kmm )     ! 25h averaging 
    475461       
    476462      ! Output of surface vorticity terms 
    477       IF ( iom_use("ssrelvor")    .OR. iom_use("ssplavor")    .OR.   & 
    478          & iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") .OR.   & 
    479          & iom_use("ssEns")                                        ) THEN 
     463      ! 
     464      CALL iom_put( "ssplavor", ff_f )             ! planetary vorticity ( f ) 
     465      ! 
     466      IF ( iom_use("ssrelvor")    .OR. iom_use("ssEns")    .OR.   & 
     467         & iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") ) THEN 
    480468         ! 
    481469         z2d(:,:) = 0._wp  
    482          ze3 = 0._wp  
    483          DO_2D( 1, 0, 1, 0 ) 
     470         DO_2D( 0, 0, 0, 0 ) 
    484471            z2d(ji,jj) = (   e2v(ji+1,jj  ) * vv(ji+1,jj  ,1,Kmm) - e2v(ji,jj) * vv(ji,jj,1,Kmm)    & 
    485472            &              - e1u(ji  ,jj+1) * uu(ji  ,jj+1,1,Kmm) + e1u(ji,jj) * uu(ji,jj,1,Kmm)  ) * r1_e1e2f(ji,jj) 
    486473         END_2D 
    487          CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
    488          CALL iom_put( "ssrelvor", z2d )                  ! relative vorticity ( zeta )  
     474         CALL iom_put( "ssrelvor", z2d )           ! relative vorticity ( zeta )  
    489475         ! 
    490          CALL iom_put( "ssplavor", ff_f )                 ! planetary vorticity ( f ) 
    491          ! 
    492          DO_2D( 1, 0, 1, 0 )   
    493             ze3 = (  e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1)    & 
    494               &    + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  ) + e3t(ji+1,jj  ,1,Kmm) * e1e2t(ji+1,jj  )  ) * r1_e1e2f(ji,jj) 
    495             IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
    496             ELSE                      ;   ze3 = 0._wp 
     476         IF ( iom_use("ssEns") .OR. iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") ) THEN 
     477            DO_2D( 0, 0, 0, 0 )   
     478               ze3 = (  e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1)    & 
     479                  &    + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  ) + e3t(ji+1,jj  ,1,Kmm) * e1e2t(ji+1,jj  )  ) * r1_e1e2f(ji,jj) 
     480               IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
     481               ELSE                      ;   ze3 = 0._wp 
     482               ENDIF 
     483               z2d(ji,jj) = ze3 * z2d(ji,jj)  
     484            END_2D 
     485            CALL iom_put( "ssrelpotvor", z2d )     ! relative potential vorticity (zeta/h) 
     486            ! 
     487            IF ( iom_use("ssEns") .OR. iom_use("ssabspotvor") ) THEN 
     488               DO_2D( 0, 0, 0, 0 ) 
     489                  ze3 = (  e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1)    & 
     490                     &    + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  ) + e3t(ji+1,jj  ,1,Kmm) * e1e2t(ji+1,jj  )  ) * r1_e1e2f(ji,jj) 
     491                  IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
     492                  ELSE                      ;   ze3 = 0._wp 
     493                  ENDIF 
     494                  z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj)  
     495               END_2D 
     496               CALL iom_put( "ssabspotvor", z2d )  ! absolute potential vorticity ( q ) 
     497               ! 
     498               IF ( iom_use("ssEns") ) THEN 
     499                  DO_2D( 0, 0, 0, 0 )   
     500                     z2d(ji,jj) = 0.5_wp * z2d(ji,jj) * z2d(ji,jj)  
     501                  END_2D 
     502                  CALL iom_put( "ssEns", z2d )     ! potential enstrophy ( 1/2*q2 ) 
     503               ENDIF 
    497504            ENDIF 
    498             z2d(ji,jj) = ze3 * z2d(ji,jj)  
    499          END_2D 
    500          CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
    501          CALL iom_put( "ssrelpotvor", z2d )                  ! relative potential vorticity (zeta/h) 
    502          ! 
    503          DO_2D( 1, 0, 1, 0 ) 
    504             ze3 = (  e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1)    & 
    505               &    + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  ) + e3t(ji+1,jj  ,1,Kmm) * e1e2t(ji+1,jj  )  ) * r1_e1e2f(ji,jj) 
    506             IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
    507             ELSE                      ;   ze3 = 0._wp 
    508             ENDIF 
    509             z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj)  
    510          END_2D 
    511          CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
    512          CALL iom_put( "ssabspotvor", z2d )                  ! absolute potential vorticity ( q ) 
    513          ! 
    514          DO_2D( 1, 0, 1, 0 )   
    515             z2d(ji,jj) = 0.5_wp * z2d(ji,jj)  * z2d(ji,jj)  
    516          END_2D 
    517          CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
    518          CALL iom_put( "ssEns", z2d )                        ! potential enstrophy ( 1/2*q2 ) 
    519          ! 
     505         ENDIF 
    520506      ENDIF 
    521507 
Note: See TracChangeset for help on using the changeset viewer.