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 8642 for branches/NERC/dev_r5518_GO6_Carb_Debug/NEMOGCM/NEMO/TOP_SRC/trcrst.F90 – NEMO

Ignore:
Timestamp:
2017-10-19T18:10:44+02:00 (7 years ago)
Author:
jpalmier
Message:

jpalm --19-10-17-- Carb failure due to 1-cell exceptionnal and ephemeral T increase - update T passed to MEDUSA and add kill switch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_GO6_Carb_Debug/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r8427 r8642  
    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 
     
    697696 
    698697 
    699    SUBROUTINE trc_rst_tra_stat 
    700       !!---------------------------------------------------------------------- 
    701       !!                    ***  trc_rst_tra_stat  *** 
    702       !! 
    703       !! ** purpose  :   Compute tracers statistics - check where crazy values appears 
    704       !!---------------------------------------------------------------------- 
    705       INTEGER  :: jk, jn 
    706       REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf 
    707       REAL(wp), DIMENSION(jpi,jpj) :: zvol 
    708       !!---------------------------------------------------------------------- 
    709  
    710       IF( lwp ) THEN 
    711          WRITE(numout,*) 
    712          WRITE(numout,*) '           ----SURFACE TRA STAT----             ' 
    713          WRITE(numout,*) 
    714       ENDIF 
    715       ! 
    716       zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
    717       areasf = glob_sum(zvol(:,:)) 
    718       DO jn = 1, jptra 
    719          ztraf = glob_sum( tra(:,:,1,jn) * zvol(:,:) ) 
    720          zmin  = MINVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) ) 
    721          zmax  = MAXVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) ) 
    722          IF( lk_mpp ) THEN 
    723             CALL mpp_min( zmin )      ! min over the global domain 
    724             CALL mpp_max( zmax )      ! max over the global domain 
    725          END IF 
    726          zmean  = ztraf / areasf 
    727          IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax 
    728       END DO 
    729       IF(lwp) WRITE(numout,*) 
    730 9001  FORMAT(' tracer nb :',i2,'    name :',a10,'    mean :',e18.10,'    min :',e18.10, & 
    731       &      '    max :',e18.10) 
    732       ! 
    733    END SUBROUTINE trc_rst_tra_stat 
    734  
    735  
    736  
    737    SUBROUTINE trc_rst_dia_stat( dgtr, names) 
    738       !!---------------------------------------------------------------------- 
    739       !!                    ***  trc_rst_dia_stat  *** 
    740       !! 
    741       !! ** purpose  :   Compute tracers statistics 
    742       !!---------------------------------------------------------------------- 
    743       REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) ::   dgtr      ! 2D diag var 
    744       CHARACTER(len=*)             , INTENT(in) ::   names     ! 2D diag name 
    745       !!--------------------------------------------------------------------- 
    746       INTEGER  :: jk, jn 
    747       CHARACTER (LEN=18) :: text_zmean 
    748       REAL(wp) :: ztraf, zmin, zmax, zmean, areasf 
    749       REAL(wp), DIMENSION(jpi,jpj) :: zvol 
    750       !!---------------------------------------------------------------------- 
    751  
    752       IF( lwp )  WRITE(numout,*) 'STAT- ', names 
    753        
    754       ! fse3t_a will be undefined at the start of a run, but this routine 
    755       ! may be called at any stage! Hence we MUST make sure it is  
    756       ! initialised to zero when allocated to enable us to test for  
    757       ! zero content here and avoid potentially dangerous and non-portable  
    758       ! operations (e.g. divide by zero, global sums of junk values etc.)    
    759       zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
    760       ztraf = glob_sum( dgtr(:,:) * zvol(:,:) ) 
    761       !! areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) ) 
    762       areasf = glob_sum(zvol(:,:)) 
    763       zmin  = MINVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
    764       zmax  = MAXVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
    765       IF( lk_mpp ) THEN 
    766          CALL mpp_min( zmin )      ! min over the global domain 
    767          CALL mpp_max( zmax )      ! max over the global domain 
    768       END IF 
    769  
    770       text_zmean = "N/A" 
    771       ! Avoid divide by zero. areasf must be positive. 
    772       IF  (areasf > 0.0) THEN  
    773          zmean = ztraf / areasf 
    774          WRITE(text_zmean,'(e18.10)') zmean 
    775       ENDIF 
    776  
    777       IF(lwp) WRITE(numout,9002) TRIM( names ), text_zmean, zmin, zmax 
    778  
    779   9002  FORMAT(' tracer name :',A,'    mean :',A,'    min :',e18.10, & 
    780       &      '    max :',e18.10 ) 
    781       ! 
    782    END SUBROUTINE trc_rst_dia_stat 
    783  
    784  
    785698#else 
    786699   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.