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 13998 for NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2020-12-02T14:55:21+01:00 (4 years ago)
Author:
techene
Message:

branch updated with trunk 13787

Location:
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@13292        sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DIA/diawri.F90

    r13734 r13998  
    190190      CALL iom_put(  "sst", ts(:,:,1,jp_tem,Kmm) )    ! surface temperature 
    191191      IF ( iom_use("sbt") ) THEN 
    192          DO_2D( 1, 1, 1, 1 ) 
     192         DO_2D( 0, 0, 0, 0 ) 
    193193            ikbot = mbkt(ji,jj) 
    194194            z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 
     
    200200      CALL iom_put(  "sss", ts(:,:,1,jp_sal,Kmm) )    ! surface salinity 
    201201      IF ( iom_use("sbs") ) THEN 
    202          DO_2D( 1, 1, 1, 1 ) 
     202         DO_2D( 0, 0, 0, 0 ) 
    203203            ikbot = mbkt(ji,jj) 
    204204            z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 
     
    222222            ! 
    223223         END_2D 
    224          CALL lbc_lnk( 'diawri', z2d, 'T', 1.0_wp ) 
    225224         CALL iom_put( "taubot", z2d )            
    226225      ENDIF 
     
    229228      CALL iom_put(  "ssu", uu(:,:,1,Kmm) )            ! surface i-current 
    230229      IF ( iom_use("sbu") ) THEN 
    231          DO_2D( 1, 1, 1, 1 ) 
     230         DO_2D( 0, 0, 0, 0 ) 
    232231            ikbot = mbku(ji,jj) 
    233232            z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 
     
    239238      CALL iom_put(  "ssv", vv(:,:,1,Kmm) )            ! surface j-current 
    240239      IF ( iom_use("sbv") ) THEN 
    241          DO_2D( 1, 1, 1, 1 ) 
     240         DO_2D( 0, 0, 0, 0 ) 
    242241            ikbot = mbkv(ji,jj) 
    243242            z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 
     
    268267      IF( iom_use('logavs') )   CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 
    269268 
     269      IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 
     270         z3d(:,:,jpk) = 0. 
     271         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     272            zztmp  = ts(ji,jj,jk,jp_sal,Kmm) 
     273            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) 
     274            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) 
     275            z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
     276               &                 * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) 
     277         END_3D 
     278         CALL iom_put( "socegrad2",  z3d )          ! square of module of sal gradient 
     279         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     280            z3d(ji,jj,jk) = SQRT( z3d(ji,jj,jk) ) 
     281         END_3D 
     282         CALL iom_put( "socegrad" ,  z3d )          ! module of sal gradient 
     283      ENDIF 
     284          
    270285      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    271          DO_2D( 0, 0, 0, 0 ) 
     286         DO_2D( 0, 0, 0, 0 )                                 ! sst gradient 
    272287            zztmp  = ts(ji,jj,1,jp_tem,Kmm) 
    273288            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) 
     
    276291               &              * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 
    277292         END_2D 
    278          CALL lbc_lnk( 'diawri', z2d, 'T', 1.0_wp ) 
    279293         CALL iom_put( "sstgrad2",  z2d )          ! square of module of sst gradient 
    280          z2d(:,:) = SQRT( z2d(:,:) ) 
     294         DO_2D( 0, 0, 0, 0 ) 
     295            z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
     296         END_2D 
    281297         CALL iom_put( "sstgrad" ,  z2d )          ! module of sst gradient 
    282298      ENDIF 
     
    285301      IF( iom_use("heatc") ) THEN 
    286302         z2d(:,:)  = 0._wp  
    287          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     303         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    288304            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 
    289305         END_3D 
     
    293309      IF( iom_use("saltc") ) THEN 
    294310         z2d(:,:)  = 0._wp  
    295          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     311         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    296312            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    297313         END_3D 
     
    299315      ENDIF 
    300316      ! 
    301       IF ( iom_use("eken") ) THEN 
     317      IF( iom_use("salt2c") ) THEN 
     318         z2d(:,:)  = 0._wp  
     319         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     320            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) 
     321         END_3D 
     322         CALL iom_put( "salt2c", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     323      ENDIF 
     324      ! 
     325      IF ( iom_use("ke") .OR. iom_use("ke_int") ) THEN 
    302326         z3d(:,:,jpk) = 0._wp  
    303327         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    304             zztmp  = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    305             z3d(ji,jj,jk) = zztmp * (  uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm)   & 
    306                &                     + uu(ji  ,jj,jk,Kmm)**2 * e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm)   & 
    307                &                     + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm)   & 
    308                &                     + vv(ji,jj  ,jk,Kmm)**2 * e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm)   ) 
    309          END_3D 
    310          CALL lbc_lnk( 'diawri', z3d, 'T', 1.0_wp ) 
    311          CALL iom_put( "eken", z3d )                 ! kinetic energy 
     328            zztmpx = 0.5 * ( uu(ji-1,jj  ,jk,Kmm) + uu(ji,jj,jk,Kmm) ) 
     329            zztmpy = 0.5 * ( vv(ji  ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) ) 
     330            z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 
     331         END_3D 
     332         CALL iom_put( "ke", z3d )                 ! kinetic energy 
     333 
     334         z2d(:,:)  = 0._wp  
     335         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     336            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 
     337         END_3D 
     338         CALL iom_put( "ke_int", z2d )   ! vertically integrated kinetic energy 
    312339      ENDIF 
    313340      ! 
     
    339366      ! 
    340367      CALL iom_put( "hdiv", hdiv )                  ! Horizontal divergence 
     368 
     369      IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN 
     370          
     371         z3d(:,:,jpk) = 0._wp  
     372         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     373            z3d(ji,jj,jk) = (   e2v(ji+1,jj  ) * vv(ji+1,jj  ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm)    & 
     374               &              - e1u(ji  ,jj+1) * uu(ji  ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm)  ) * r1_e1e2f(ji,jj) 
     375         END_3D 
     376         CALL iom_put( "relvor", z3d )                  ! relative vorticity 
     377 
     378         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     379            z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk)  
     380         END_3D 
     381         CALL iom_put( "absvor", z3d )                  ! absolute vorticity 
     382 
     383         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     384            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)   & 
     385               &    + e3t(ji,jj  ,jk,Kmm)*tmask(ji,jj  ,jk) + e3t(ji+1,jj  ,jk,Kmm)*tmask(ji+1,jj  ,jk)  ) 
     386            IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
     387            ELSE                      ;   ze3 = 0._wp 
     388            ENDIF 
     389            z3d(ji,jj,jk) = ze3 * z3d(ji,jj,jk)  
     390         END_3D 
     391         CALL iom_put( "potvor", z3d )                  ! potential vorticity 
     392 
     393      ENDIF 
    341394      ! 
    342395      IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
     
    356409            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) ) 
    357410         END_3D 
    358          CALL lbc_lnk( 'diawri', z2d, 'U', -1.0_wp ) 
    359411         CALL iom_put( "u_heattr", 0.5*rcp * z2d )    ! heat transport in i-direction 
    360412      ENDIF 
     
    365417            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) ) 
    366418         END_3D 
    367          CALL lbc_lnk( 'diawri', z2d, 'U', -1.0_wp ) 
    368419         CALL iom_put( "u_salttr", 0.5 * z2d )        ! heat transport in i-direction 
    369420      ENDIF 
     
    383434            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) ) 
    384435         END_3D 
    385          CALL lbc_lnk( 'diawri', z2d, 'V', -1.0_wp ) 
    386436         CALL iom_put( "v_heattr", 0.5*rcp * z2d )    !  heat transport in j-direction 
    387437      ENDIF 
     
    392442            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) ) 
    393443         END_3D 
    394          CALL lbc_lnk( 'diawri', z2d, 'V', -1.0_wp ) 
    395444         CALL iom_put( "v_salttr", 0.5 * z2d )        !  heat transport in j-direction 
    396445      ENDIF 
     
    401450            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) *  ts(ji,jj,jk,jp_tem,Kmm) 
    402451         END_3D 
    403          CALL lbc_lnk( 'diawri', z2d, 'T', -1.0_wp ) 
    404452         CALL iom_put( "tosmint", rho0 * z2d )        ! Vertical integral of temperature 
    405453      ENDIF 
     
    409457            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 
    410458         END_3D 
    411          CALL lbc_lnk( 'diawri', z2d, 'T', -1.0_wp ) 
    412459         CALL iom_put( "somint", rho0 * z2d )         ! Vertical integral of salinity 
    413460      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.