- Timestamp:
- 2017-12-22T13:26:37+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r9114 r9163 43 43 USE sbc_oce, ONLY: lk_oasis 44 44 USE oce, ONLY: CO2Flux_out_cpl, DMS_out_cpl, chloro_out_cpl !! Coupling variable 45 USE trcstat 45 46 46 47 IMPLICIT NONE … … 52 53 PUBLIC trc_rst_cal 53 54 PUBLIC trc_rst_stat 54 PUBLIC trc_rst_dia_stat55 PUBLIC trc_rst_tra_stat56 55 57 56 !! * Substitutions … … 706 705 707 706 708 SUBROUTINE trc_rst_tra_stat709 !!----------------------------------------------------------------------710 !! *** trc_rst_tra_stat ***711 !!712 !! ** purpose : Compute tracers statistics - check where crazy values appears713 !!----------------------------------------------------------------------714 INTEGER :: jk, jn715 REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf716 REAL(wp), DIMENSION(jpi,jpj) :: zvol717 !!----------------------------------------------------------------------718 719 IF( lwp ) THEN720 WRITE(numout,*)721 WRITE(numout,*) ' ----SURFACE TRA STAT---- '722 WRITE(numout,*)723 ENDIF724 !725 zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1)726 areasf = glob_sum(zvol(:,:))727 DO jn = 1, jptra728 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 ) THEN732 CALL mpp_min( zmin ) ! min over the global domain733 CALL mpp_max( zmax ) ! max over the global domain734 END IF735 zmean = ztraf / areasf736 IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax737 END DO738 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_stat743 744 745 746 SUBROUTINE trc_rst_dia_stat( dgtr, names)747 !!----------------------------------------------------------------------748 !! *** trc_rst_dia_stat ***749 !!750 !! ** purpose : Compute tracers statistics751 !!----------------------------------------------------------------------752 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: dgtr ! 2D diag var753 CHARACTER(len=*) , INTENT(in) :: names ! 2D diag name754 !!---------------------------------------------------------------------755 INTEGER :: jk, jn756 CHARACTER (LEN=18) :: text_zmean757 REAL(wp) :: ztraf, zmin, zmax, zmean, areasf758 REAL(wp), DIMENSION(jpi,jpj) :: zvol759 !!----------------------------------------------------------------------760 761 IF( lwp ) WRITE(numout,*) 'STAT- ', names762 763 ! fse3t_a will be undefined at the start of a run, but this routine764 ! may be called at any stage! Hence we MUST make sure it is765 ! initialised to zero when allocated to enable us to test for766 ! zero content here and avoid potentially dangerous and non-portable767 ! 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 ) THEN775 CALL mpp_min( zmin ) ! min over the global domain776 CALL mpp_max( zmax ) ! max over the global domain777 END IF778 779 text_zmean = "N/A"780 ! Avoid divide by zero. areasf must be positive.781 IF (areasf > 0.0) THEN782 zmean = ztraf / areasf783 WRITE(text_zmean,'(e18.10)') zmean784 ENDIF785 786 IF(lwp) WRITE(numout,9002) TRIM( names ), text_zmean, zmin, zmax787 788 9002 FORMAT(' tracer name :',A,' mean :',A,' min :',e18.10, &789 & ' max :',e18.10 )790 !791 END SUBROUTINE trc_rst_dia_stat792 793 794 707 #else 795 708 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.