Ignore:
Timestamp:
2016-11-16T12:48:46+01:00 (4 years ago)
Author:
timgraham
Message:

All changes related to diaptr (basin heat transports and transport components)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7233_CMIP6_diags_trunk_version/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90

    r6771 r7236  
    8080      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v   !   -      - 
    8181      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw 
    82       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdx, ztrdy, ztrdz 
     82      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdx, ztrdy, ztrd, zptry 
    8383      !!---------------------------------------------------------------------- 
    8484      ! 
     
    101101      ENDIF 
    102102      ! 
     103      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
     104         CALL wrk_alloc( jpi, jpj, jpk, zptry ) 
     105         zptry(:,:,:) = 0._wp 
     106      ENDIF 
    103107      !                          ! surface & bottom value : flux set to zero one for all 
    104108      zwz(:,:, 1 ) = 0._wp             
     
    165169         END IF 
    166170         !                             ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    167          IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    168            IF( jn == jp_tem )  htr_adv(:) = ptr_sj( zwy(:,:,:) ) 
    169            IF( jn == jp_sal )  str_adv(:) = ptr_sj( zwy(:,:,:) ) 
    170          ENDIF 
     171         IF( cdtype == 'TRA' .AND. ln_diaptr )    zptry(:,:,:) = zwy(:,:,:)  
    171172         ! 
    172173         !        !==  anti-diffusive flux : high order minus low order  ==! 
     
    305306         !                    ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    306307         IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    307            IF( jn == jp_tem )   htr_adv(:) = htr_adv(:) + ptr_sj( zwy(:,:,:) ) 
    308            IF( jn == jp_sal )   str_adv(:) = str_adv(:) + ptr_sj( zwy(:,:,:) ) 
     308            zptry(:,:,:) = zptry(:,:,:) + zwy(:,:,:)  ! <<< Add to previously computed 
     309            CALL dia_ptr_ohst_components( jn, 'adv', zptry(:,:,:) ) 
    309310         ENDIF 
    310311         ! 
     
    312313      ! 
    313314      CALL wrk_dealloc( jpi,jpj,jpk,    zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw ) 
     315      IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 
    314316      ! 
    315317      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_fct') 
     
    357359      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zwi, zwx, zwy, zwz, zhdiv, zwzts, zwz_sav 
    358360      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   ztrdx, ztrdy, ztrdz 
     361      REAL(wp), POINTER, DIMENSION(:,:,:) :: zptry 
    359362      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrs 
    360363      !!---------------------------------------------------------------------- 
     
    380383      ENDIF 
    381384      ! 
     385      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
     386         CALL wrk_alloc( jpi, jpj,jpk, zptry ) 
     387         zptry(:,:,:) = 0._wp 
     388      ENDIF 
    382389      zwi(:,:,:) = 0._wp 
    383390      z_rzts = 1._wp / REAL( kn_fct_zts, wp ) 
     
    449456         END IF 
    450457         !                                ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    451          IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    452            IF( jn == jp_tem )  htr_adv(:) = ptr_sj( zwy(:,:,:) ) 
    453            IF( jn == jp_sal )  str_adv(:) = ptr_sj( zwy(:,:,:) ) 
    454          ENDIF 
     458         IF( cdtype == 'TRA' .AND. ln_diaptr )  zptry(:,:,:) = zwy(:,:,:) 
    455459 
    456460         ! 3. anti-diffusive flux : high order minus low order 
     
    582586         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    583587         IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    584            IF( jn == jp_tem )  htr_adv(:) = ptr_sj( zwy(:,:,:) ) + htr_adv(:) 
    585            IF( jn == jp_sal )  str_adv(:) = ptr_sj( zwy(:,:,:) ) + str_adv(:) 
     588            zptry(:,:,:) = zptry(:,:,:) + zwy(:,:,:)  
     589            CALL dia_ptr_ohst_components( jn, 'adv', zptry(:,:,:) ) 
    586590         ENDIF 
    587591         ! 
     
    591595      CALL wrk_alloc( jpi,jpj, jpk,        zwx, zwy, zwz, zwi, zhdiv, zwzts, zwz_sav ) 
    592596      CALL wrk_alloc( jpi,jpj,jpk,kjpt+1,  ztrs ) 
     597      IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 
    593598      ! 
    594599      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_fct_zts') 
Note: See TracChangeset for help on using the changeset viewer.