Changeset 12270
- Timestamp:
- 2019-12-18T13:41:43+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/ISF/isfutils.F90
r12169 r12270 12 12 !!---------------------------------------------------------------------- 13 13 14 USE iom , ONLY: iom_open, iom_get, iom_close, jpdom_data ! read input file15 USE lib_fortran , ONLY: glob_sum, glob_min, glob_max ! compute global value16 USE par_oce , ONLY: jpi,jpj,jpk ! domain size17 USE dom_oce , ONLY: nldi, nlei, nldj, nlej 18 USE in_out_manager, ONLY: i8, wp, lwp, numout ! miscelenious14 USE iom , ONLY: iom_open, iom_get, iom_close, jpdom_data ! read input file 15 USE lib_fortran , ONLY: glob_sum, glob_min, glob_max ! compute global value 16 USE par_oce , ONLY: jpi,jpj,jpk, jpnij ! domain size 17 USE dom_oce , ONLY: nldi, nlei, nldj, nlej, narea, tmask_h, tmask_i ! local domain 18 USE in_out_manager, ONLY: i8, wp, lwp, numout ! miscelenious 19 19 USE lib_mpp 20 20 … … 38 38 !! 39 39 !!-------------------------- OUT ------------------------------------- 40 REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar 40 REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pvar ! output variable 41 41 !!-------------------------- IN ------------------------------------- 42 CHARACTER(len=*) , INTENT(in ) :: cdfile ! input file name43 CHARACTER(len=*) , INTENT(in ) :: cdvar ! variable name42 CHARACTER(len=*) , INTENT(in ) :: cdfile ! input file name 43 CHARACTER(len=*) , INTENT(in ) :: cdvar ! variable name 44 44 !!-------------------------------------------------------------------- 45 45 INTEGER :: inum … … 59 59 !! 60 60 !!-------------------------- IN ------------------------------------- 61 CHARACTER(LEN=*) , INTENT(in ) :: cdtxt61 CHARACTER(LEN=*) , INTENT(in ) :: cdtxt 62 62 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pvar 63 63 !!-------------------------------------------------------------------- 64 64 REAL(wp) :: zmin, zmax, zsum 65 65 INTEGER(i8) :: imodd, ip 66 INTEGER :: itmps,imods, ji, jj, jk 66 INTEGER :: imods 67 INTEGER :: isums, idums 68 INTEGER :: ji,jj,jk 69 INTEGER, DIMENSION(jpnij) :: itmps 67 70 !!-------------------------------------------------------------------- 68 71 ! … … 78 81 imodd=65521 ! highest prime number < 2**16 with i8 type 79 82 imods=65521 ! highest prime number < 2**16 with default integer for mpp_sum subroutine 80 itmps=0 83 isums=0 ; itmps(:)=0 ; 84 ! 85 ! local MOD sum 81 86 DO jj=nldj,nlej 82 87 DO ji=nldi,nlei 83 itmps = MOD(itmps + MOD(TRANSFER(pvar(ji,jj), ip),imodd), imods) 88 idums = ABS(MOD(TRANSFER(pvar(ji,jj), ip),imodd)) 89 itmps(narea) = MOD(itmps(narea) + idums, imods) 84 90 END DO 85 91 END DO 86 CALL mpp_sum('debug',itmps) 92 ! 93 ! global MOD sum 94 CALL mpp_max('debug',itmps(:)) 95 DO jk = 1,jpnij 96 isums = MOD(isums + itmps(jk),imods) 97 END DO 87 98 ! 88 99 ! print out 89 100 IF (lwp) THEN 90 WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, i tmps101 WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, isums 91 102 CALL FLUSH(numout) 92 103 END IF … … 101 112 !! 102 113 !!-------------------------- IN ------------------------------------- 103 CHARACTER(LEN=*) , INTENT(in ) :: cdtxt114 CHARACTER(LEN=*) , INTENT(in ) :: cdtxt 104 115 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pvar 105 116 !!-------------------------------------------------------------------- 106 REAL(wp) :: zmin, zmax, zsum117 REAL(wp) :: zmin, zmax, zsum 107 118 INTEGER(i8) :: imodd, ip 108 INTEGER :: itmps,imods, ji, jj, jk 119 INTEGER :: imods 120 INTEGER :: isums, idums 121 INTEGER :: ji,jj,jk 122 INTEGER, DIMENSION(jpnij) :: itmps 109 123 !!-------------------------------------------------------------------- 110 124 ! … … 120 134 imodd=65521 ! highest prime number < 2**16 with i8 type 121 135 imods=65521 ! highest prime number < 2**16 with default integer for mpp_sum subroutine 122 itmps=0 136 itmps=0; isums=0 137 ! 138 ! local MOD sum 123 139 DO jk=1,jpk 124 140 DO jj=nldj,nlej 125 141 DO ji=nldi,nlei 126 itmps = MOD(itmps + MOD(TRANSFER(pvar(ji,jj,jk), ip),imodd), imods) 142 idums = ABS(MOD(TRANSFER(pvar(ji,jj,jk), ip),imodd)) 143 itmps(narea) = MOD(itmps(narea) + idums, imods) 127 144 END DO 128 145 END DO 129 146 END DO 130 CALL mpp_sum('debug',itmps) 147 ! 148 ! global MOD sum 149 CALL mpp_max('debug',itmps) 150 DO jk = 1,jpnij 151 isums = MOD(isums+itmps(jk),imods) 152 END DO 131 153 ! 132 154 ! print out 133 155 IF (lwp) THEN 134 WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, i tmps156 WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, isums 135 157 CALL FLUSH(numout) 136 158 END IF
Note: See TracChangeset
for help on using the changeset viewer.