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 6910 – NEMO

Changeset 6910


Ignore:
Timestamp:
2016-09-05T17:56:42+02:00 (8 years ago)
Author:
timgraham
Message:

Bug fixes ofr diagnostics in traadv_tvd and traadv_eiv
Modified method for barotropic heat transport calculation as values weren't being output correctly on Cray computer (although I still don't understand why).

Location:
branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r6903 r6910  
    8686      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zmask   ! 3D workspace 
    8787      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) ::  zts   ! 3D workspace 
     88      REAL(wp), DIMENSION(jpj)     ::  vsum   ! 1D workspace 
     89      REAL(wp), DIMENSION(jpj,jpts)     ::  tssum   ! 1D workspace 
     90  
    8891      ! 
    8992      !overturning calculation 
     
    198201             WHERE( sjk(:,1,1) /= 0._wp )   r1_sjk(:,1,1) = 1._wp / sjk(:,1,1) 
    199202             
    200             htr_btr(:,1) = ptr_sj( zvn(:,:,:), btmsk(:,:,1)) * ptr_sj( zts(:,:,:,jp_tem), btmsk(:,:,1) ) * r1_sjk(:,1,1) 
    201             str_btr(:,1) = ptr_sj( zvn(:,:,:), btmsk(:,:,1)) * ptr_sj( zts(:,:,:,jp_sal), btmsk(:,:,1) ) * r1_sjk(:,1,1) 
     203            vsum = ptr_sj( zvn(:,:,:), btmsk(:,:,1)) 
     204            tssum(:,jp_tem) = ptr_sj( zts(:,:,:,jp_tem), btmsk(:,:,1) ) 
     205            tssum(:,jp_sal) = ptr_sj( zts(:,:,:,jp_sal), btmsk(:,:,1) ) 
     206            htr_btr(:,1) = vsum * tssum(:,jp_tem) * r1_sjk(:,1,1) 
     207            str_btr(:,1) = vsum * tssum(:,jp_sal) * r1_sjk(:,1,1) 
    202208            z2d(1,:) = htr_btr(:,1) * rc_pwatt        !  (conversion in PW) 
    203             DO ji = 1, jpi 
     209            DO ji = 2, jpi 
    204210               z2d(ji,:) = z2d(1,:) 
    205211            ENDDO 
     
    207213            CALL iom_put( TRIM(cl1), z2d ) 
    208214            z2d(1,:) = str_btr(:,1) * rc_ggram        !  (conversion in Gg) 
    209             DO ji = 1, jpi 
     215            DO ji = 2, jpi 
    210216              z2d(ji,:) = z2d(1,:) 
    211217            ENDDO 
     
    217223                    r1_sjk(:,1,jn) = 0._wp 
    218224                    WHERE( sjk(:,1,jn) /= 0._wp )   r1_sjk(:,1,jn) = 1._wp / sjk(:,1,jn) 
    219                     htr_btr(:,jn) = ptr_sj( zvn(:,:,:), btmsk(:,:,jn) ) * ptr_sj( zts(:,:,:,jp_tem), btmsk(:,:,jn) )*r1_sjk(:,1,jn) 
    220                     str_btr(:,jn) = ptr_sj( zvn(:,:,:), btmsk(:,:,jn) ) * ptr_sj( zts(:,:,:,jp_sal), btmsk(:,:,jn) )*r1_sjk(:,1,jn) 
     225                    vsum = ptr_sj( zvn(:,:,:), btmsk(:,:,jn)) 
     226                    tssum(:,jp_tem) = ptr_sj( zts(:,:,:,jp_tem), btmsk(:,:,jn) ) 
     227                    tssum(:,jp_sal) = ptr_sj( zts(:,:,:,jp_sal), btmsk(:,:,jn) ) 
     228                    htr_btr(:,jn) = vsum * tssum(:,jp_tem) * r1_sjk(:,1,jn) 
     229                    str_btr(:,jn) = vsum * tssum(:,jp_sal) * r1_sjk(:,1,jn) 
    221230                    z2d(1,:) = htr_btr(:,jn) * rc_pwatt !  (conversion in PW) 
    222231                    DO ji = 1, jpi 
     
    586595         &      htr_vt(jpj,nptr)  , str_vs(jpj,nptr)  ,   & 
    587596         &      htr_ove(jpj,nptr) , str_ove(jpj,nptr) ,   & 
     597         &      htr_btr(jpj,nptr) , str_btr(jpj,nptr) ,   & 
    588598         &      htr_ldf(jpj,nptr) , str_ldf(jpj,nptr) , STAT=ierr(1)  ) 
    589599         ! 
  • branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r6663 r6910  
    174174            z2d(:,:) = 0.e0 
    175175            DO jk = 1, jpkm1 
    176                z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 
     176               z3d(:,:,jk) = rau0 * u_eiv(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 
    177177               z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
    178178            END DO 
     
    181181 
    182182         IF( iom_use('ueiv_heattr') ) THEN 
    183             zztmp = 0.5 * rau0 * rcp  
     183            zztmp = 0.5 * rcp  
    184184            z2d(:,:) = 0.e0  
    185185            DO jk = 1, jpkm1 
     
    198198            z2d(:,:) = 0.e0 
    199199            DO jk = 1, jpkm1 
    200                z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 
     200               z3d(:,:,jk) = rau0 * v_eiv(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 
    201201            END DO 
    202202            CALL iom_put( "veiv_masstr", z3d )                  ! mass transport in j-direction 
     
    204204             
    205205         IF( iom_use('veiv_heattr') ) THEN 
     206            zztmp = 0.5 * rcp  
    206207            z2d(:,:) = 0.e0  
    207208            DO jk = 1, jpkm1 
     
    213214            END DO 
    214215            CALL lbc_lnk( z2d, 'V', -1. ) 
    215             CALL iom_put( "veiv_heattr", zztmp * z2d )                  !  heat transport in i-direction 
     216            CALL iom_put( "veiv_heattr", zztmp * z2d )                  !  heat transport in j-direction 
    216217         ENDIF 
    217218    END IF 
  • branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r6671 r6910  
    8787      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
    8888      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz 
    89       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, z2d, zptry 
     89      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 
    9090      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d 
    9191      !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.