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 7083 for branches/UKMO/dev_r5518_GO6_package_MEDUSA_extra_CMIP6_diags/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90 – NEMO

Ignore:
Timestamp:
2016-10-25T12:12:41+02:00 (8 years ago)
Author:
malcolmroberts
Message:

Merged in dev_r5518_GO6_package up to revision 7076

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_MEDUSA_extra_CMIP6_diags/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r6731 r7083  
    2626   USE ldfslp          ! iso-neutral slopes 
    2727   USE diaptr          ! poleward transport diagnostics 
     28   USE trd_oce         ! trends: ocean variables 
     29   USE trdtra          ! trends manager: tracers  
    2830   USE in_out_manager  ! I/O manager 
    2931   USE iom             ! I/O library 
     
    105107      INTEGER  ::  ji, jj, jk, jn   ! dummy loop indices 
    106108      INTEGER  ::  ikt 
    107       REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3   ! local scalars 
    108       REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4   !   -      - 
    109       REAL(wp) ::  zcoef0, zbtr, ztra            !   -      - 
     109      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3       ! local scalars 
     110      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4       !   -      - 
     111      REAL(wp) ::  zcoef0, zbtr                      !   -      - 
    110112      REAL(wp), POINTER, DIMENSION(:,:  ) ::  z2d 
    111113      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdkt, zdk1t, zdit, zdjt, ztfw  
     114      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax, ztray, ztraz  
     115      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax_T, ztray_T, ztraz_T 
    112116      !!---------------------------------------------------------------------- 
    113117      ! 
     
    115119      ! 
    116120      CALL wrk_alloc( jpi, jpj,      z2d )  
    117       CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t )  
     121      CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t)  
     122      ALLOCATE( ztrax(jpi,jpj,jpk), ztray(jpi,jpj,jpk), ztraz(jpi,jpj,jpk) )  
     123      IF( l_trdtra .and. cdtype == 'TRA' ) ALLOCATE( ztrax_T(jpi,jpj,jpk), ztray_T(jpi,jpj,jpk), ztraz_T(jpi,jpj,jpk) )  
    118124      ! 
    119125 
     
    127133      DO jn = 1, kjpt                                            ! tracer loop 
    128134         !                                                       ! =========== 
     135         ztrax(:,:,:) = 0._wp ; ztray(:,:,:) = 0._wp ; ztraz(:,:,:) = 0._wp ;  
    129136         !                                                
    130137         !!---------------------------------------------------------------------- 
     
    226233               DO ji = fs_2, fs_jpim1   ! vector opt. 
    227234                  zbtr = 1.0 / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 
    228                   ztra = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) 
    229                   pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
     235                  ztrax(ji,jj,jk) = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) ) 
     236                  ztray(ji,jj,jk) = zbtr * ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) 
    230237               END DO 
    231238            END DO 
     
    233240         END DO                                        !   End of slab   
    234241         !                                             ! =============== 
     242         ! 
     243         pta(:,:,:,jn) = pta(:,:,:,jn) + ztrax(:,:,:) + ztray(:,:,:) 
    235244         ! 
    236245         ! "Poleward" diffusive heat or salt transports (T-S case only) 
     
    311320               DO ji = fs_2, fs_jpim1   ! vector opt. 
    312321                  zbtr = 1.0 / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 
    313                   ztra = (  ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1)  ) * zbtr 
    314                   pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
     322                  ztraz(ji,jj,jk) = (  ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1)  ) * zbtr 
    315323               END DO 
    316324            END DO 
    317325         END DO 
     326         pta(:,:,:,jn) = pta(:,:,:,jn) + ztraz(:,:,:) 
    318327         ! 
     328         IF( l_trdtra .AND. cdtype == "TRA" .AND. jn .eq. 1 )  THEN      ! save the temperature trends 
     329            ztrax_T(:,:,:) = ztrax(:,:,:) 
     330            ztray_T(:,:,:) = ztray(:,:,:) 
     331            ztraz_T(:,:,:) = ztraz(:,:,:) 
     332         ENDIF 
     333         IF( l_trdtra .AND. cdtype == "TRC" )   THEN      ! save the horizontal component of diffusive trends for further diagnostics 
     334            CALL trd_tra( kt, cdtype, jn, jptra_iso_x, ztrax ) 
     335            CALL trd_tra( kt, cdtype, jn, jptra_iso_y, ztray )  
     336            CALL trd_tra( kt, cdtype, jn, jptra_iso_z1, ztraz )  ! This is the first part of the vertical component. 
     337         ENDIF 
    319338      END DO 
     339      ! 
     340      IF( l_trdtra .AND. cdtype == "TRA" )   THEN      ! save the horizontal component of diffusive trends for further diagnostics 
     341         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) 
     342         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_x, ztrax ) 
     343         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_y, ztray_T ) 
     344         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_y, ztray ) 
     345         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_z1, ztraz_T )  ! This is the first part of the vertical component 
     346         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz )    ! 
     347      ENDIF 
    320348      ! 
    321349      CALL wrk_dealloc( jpi, jpj, z2d )  
    322350      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t )  
     351      DEALLOCATE( ztrax, ztray, ztraz )  
     352      IF( l_trdtra ) DEALLOCATE( ztrax_T, ztray_T, ztraz_T )  
    323353      ! 
    324354      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_iso') 
Note: See TracChangeset for help on using the changeset viewer.