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 9163 for branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90 – NEMO

Ignore:
Timestamp:
2017-12-22T13:26:37+01:00 (6 years ago)
Author:
frrh
Message:

Add code from Julien Palmieri's Met Office GMED ticket 338.
This incorporates code from branches/NERC/dev_r5518_GO6_package_trdtrc
revisions 8454:9020 inclusive.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r9114 r9163  
    4343   USE sbc_oce, ONLY: lk_oasis  
    4444   USE oce,     ONLY: CO2Flux_out_cpl, DMS_out_cpl, chloro_out_cpl  !! Coupling variable 
     45   USE trcstat 
    4546 
    4647   IMPLICIT NONE 
     
    5253   PUBLIC   trc_rst_cal 
    5354   PUBLIC   trc_rst_stat 
    54    PUBLIC   trc_rst_dia_stat 
    55    PUBLIC   trc_rst_tra_stat 
    5655 
    5756   !! * Substitutions 
     
    706705 
    707706 
    708    SUBROUTINE trc_rst_tra_stat 
    709       !!---------------------------------------------------------------------- 
    710       !!                    ***  trc_rst_tra_stat  *** 
    711       !! 
    712       !! ** purpose  :   Compute tracers statistics - check where crazy values appears 
    713       !!---------------------------------------------------------------------- 
    714       INTEGER  :: jk, jn 
    715       REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf 
    716       REAL(wp), DIMENSION(jpi,jpj) :: zvol 
    717       !!---------------------------------------------------------------------- 
    718  
    719       IF( lwp ) THEN 
    720          WRITE(numout,*) 
    721          WRITE(numout,*) '           ----SURFACE TRA STAT----             ' 
    722          WRITE(numout,*) 
    723       ENDIF 
    724       ! 
    725       zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
    726       areasf = glob_sum(zvol(:,:)) 
    727       DO jn = 1, jptra 
    728          ztraf = glob_sum( tra(:,:,1,jn) * zvol(:,:) ) 
    729          zmin  = MINVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) ) 
    730          zmax  = MAXVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) ) 
    731          IF( lk_mpp ) THEN 
    732             CALL mpp_min( zmin )      ! min over the global domain 
    733             CALL mpp_max( zmax )      ! max over the global domain 
    734          END IF 
    735          zmean  = ztraf / areasf 
    736          IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax 
    737       END DO 
    738       IF(lwp) WRITE(numout,*) 
    739 9001  FORMAT(' tracer nb :',i2,'    name :',a10,'    mean :',e18.10,'    min :',e18.10, & 
    740       &      '    max :',e18.10) 
    741       ! 
    742    END SUBROUTINE trc_rst_tra_stat 
    743  
    744  
    745  
    746    SUBROUTINE trc_rst_dia_stat( dgtr, names) 
    747       !!---------------------------------------------------------------------- 
    748       !!                    ***  trc_rst_dia_stat  *** 
    749       !! 
    750       !! ** purpose  :   Compute tracers statistics 
    751       !!---------------------------------------------------------------------- 
    752       REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) ::   dgtr      ! 2D diag var 
    753       CHARACTER(len=*)             , INTENT(in) ::   names     ! 2D diag name 
    754       !!--------------------------------------------------------------------- 
    755       INTEGER  :: jk, jn 
    756       CHARACTER (LEN=18) :: text_zmean 
    757       REAL(wp) :: ztraf, zmin, zmax, zmean, areasf 
    758       REAL(wp), DIMENSION(jpi,jpj) :: zvol 
    759       !!---------------------------------------------------------------------- 
    760  
    761       IF( lwp )  WRITE(numout,*) 'STAT- ', names 
    762        
    763       ! fse3t_a will be undefined at the start of a run, but this routine 
    764       ! may be called at any stage! Hence we MUST make sure it is  
    765       ! initialised to zero when allocated to enable us to test for  
    766       ! zero content here and avoid potentially dangerous and non-portable  
    767       ! operations (e.g. divide by zero, global sums of junk values etc.)    
    768       zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
    769       ztraf = glob_sum( dgtr(:,:) * zvol(:,:) ) 
    770       !! areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) ) 
    771       areasf = glob_sum(zvol(:,:)) 
    772       zmin  = MINVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
    773       zmax  = MAXVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
    774       IF( lk_mpp ) THEN 
    775          CALL mpp_min( zmin )      ! min over the global domain 
    776          CALL mpp_max( zmax )      ! max over the global domain 
    777       END IF 
    778  
    779       text_zmean = "N/A" 
    780       ! Avoid divide by zero. areasf must be positive. 
    781       IF  (areasf > 0.0) THEN  
    782          zmean = ztraf / areasf 
    783          WRITE(text_zmean,'(e18.10)') zmean 
    784       ENDIF 
    785  
    786       IF(lwp) WRITE(numout,9002) TRIM( names ), text_zmean, zmin, zmax 
    787  
    788   9002  FORMAT(' tracer name :',A,'    mean :',A,'    min :',e18.10, & 
    789       &      '    max :',e18.10 ) 
    790       ! 
    791    END SUBROUTINE trc_rst_dia_stat 
    792  
    793  
    794707#else 
    795708   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.