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 6433 for branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90 – NEMO

Ignore:
Timestamp:
2016-04-06T14:54:25+02:00 (8 years ago)
Author:
timgraham
Message:

Modified method as suggested by Christian. adv and ldf transports by basin now work correctly.

File:
1 edited

Legend:

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

    r6432 r6433  
    297297   END SUBROUTINE dia_ptr_init 
    298298 
    299    SUBROUTINE dia_ptr_ohst_components( pva, ptr )  
    300       !!---------------------------------------------------------------------- 
    301       !!                    ***  ROUTINE dia_ptr_oht_components  *** 
    302       !!---------------------------------------------------------------------- 
    303       !! Wrapper for heat and salt transport calculations to calculate them 
    304       !! for each basin 
     299   SUBROUTINE dia_ptr_ohst_components( ktra, cptr, pva )  
     300      !!---------------------------------------------------------------------- 
     301      !!                    ***  ROUTINE dia_ptr_ohst_components  *** 
     302      !!---------------------------------------------------------------------- 
     303      !! Wrapper for heat and salt transport calculations to calculate them for each basin 
    305304      !! Called from all advection and/or diffusion routines 
    306       INTEGER                          :: jn 
    307       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(IN) :: pva   ! 3D input array of advection/diffusion 
    308       REAL(wp), DIMENSION(jpi,nptr), INTENT(OUT)   :: ptr   ! zonal & vertical sum 
     305      !!---------------------------------------------------------------------- 
     306      INTEGER                         , INTENT(in )  :: ktra  ! tracer index 
     307      CHARACTER(len=3)                , INTENT(in)   :: cptr  ! transport type  'adv'/'ldf' 
     308      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)   :: pva   ! 3D input array of advection/diffusion 
     309      INTEGER                                        :: jn    ! 
     310 
    309311       
    310       ptr(:, 1) = ptr_sj( pva(:,:,:) ) 
     312      IF( cptr == 'adv' ) THEN 
     313         IF( ktra == jp_tem )  htr_adv(:,1) = ptr_sj( pva(:,:,:) ) 
     314         IF( ktra == jp_sal )  str_adv(:,1) = ptr_sj( pva(:,:,:) ) 
     315      ENDIF 
     316      IF( cptr == 'ldf' ) THEN 
     317         IF( ktra == jp_tem )  htr_ldf(:,1) = ptr_sj( pva(:,:,:) ) 
     318         IF( ktra == jp_sal )  str_ldf(:,1) = ptr_sj( pva(:,:,:) ) 
     319      ENDIF 
     320      ! 
    311321      IF( ln_subbas ) THEN 
    312          DO jn=2,nptr 
    313             ptr(:,jn) = ptr_sj( pva(:,:,:), btmsk(:,:,jn) ) 
    314          END DO 
     322         ! 
     323         IF( cptr == 'adv' ) THEN 
     324             IF( ktra == jp_tem ) THEN  
     325                DO jn = 2, nptr 
     326                   htr_adv(:,jn) = ptr_sj( pva(:,:,:), btmsk(:,:,jn) ) 
     327                END DO 
     328             ENDIF 
     329             IF( ktra == jp_sal ) THEN  
     330                DO jn = 2, nptr 
     331                   str_adv(:,jn) = ptr_sj( pva(:,:,:), btmsk(:,:,jn) ) 
     332                END DO 
     333             ENDIF 
     334         ENDIF 
     335         IF( cptr == 'ldf' ) THEN 
     336             IF( ktra == jp_tem ) THEN  
     337                DO jn = 2, nptr 
     338                    htr_ldf(:,jn) = ptr_sj( pva(:,:,:), btmsk(:,:,jn) ) 
     339                 END DO 
     340             ENDIF 
     341             IF( ktra == jp_sal ) THEN  
     342                DO jn = 2, nptr 
     343                   str_ldf(:,jn) = ptr_sj( pva(:,:,:), btmsk(:,:,jn) ) 
     344                END DO 
     345             ENDIF 
     346         ENDIF 
     347         ! 
    315348      ENDIF 
    316349 
Note: See TracChangeset for help on using the changeset viewer.