- Timestamp:
- 2011-11-28T17:44:46+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/lib_fortran.F90
r2528 r3187 28 28 29 29 INTERFACE glob_sum 30 MODULE PROCEDURE glob_sum_2d, glob_sum_3d, glob_sum_2d_a, glob_sum_3d_a30 MODULE PROCEDURE glob_sum_2d, glob_sum_3d, glob_sum_2d_a, glob_sum_3d_a 31 31 END INTERFACE 32 32 … … 39 39 #endif 40 40 41 !! * Control permutation of array indices 42 # include "dom_oce_ftrans.h90" 43 41 44 !!---------------------------------------------------------------------- 42 45 !! NEMO/OPA 3.3 , NEMO Consortium (2010) … … 69 72 !! ** Purpose : perform a masked sum on the inner global domain of a 3D array 70 73 !!----------------------------------------------------------------------- 74 !FTRANS ptab :I :I :z 71 75 REAL(wp), INTENT(in), DIMENSION(:,:,:) :: ptab ! input 3D array 72 76 REAL(wp) :: glob_sum ! global masked sum 73 77 !! 74 78 INTEGER :: jk 79 #if defined key_z_first 80 INTEGER :: ji, jj 81 REAL(wp) :: ztmask 82 #endif 75 83 !!----------------------------------------------------------------------- 76 84 ! 77 85 glob_sum = 0.e0 86 #if defined key_z_first 87 DO jj = 1, jpj 88 DO ji = 1, jpi 89 ztmask = tmask_i(ji,jj) 90 DO jk = 1, jpk 91 glob_sum = glob_sum + ptab(ji,jj,jk)*ztmask 92 END DO 93 END DO 94 END DO 95 #else 78 96 DO jk = 1, jpk 79 97 glob_sum = glob_sum + SUM( ptab(:,:,jk)*tmask_i(:,:) ) 80 98 END DO 99 #endif 81 100 IF( lk_mpp ) CALL mpp_sum( glob_sum ) 82 101 ! … … 107 126 !! ** Purpose : perform a masked sum on the inner global domain of two 3D array 108 127 !!----------------------------------------------------------------------- 128 !FTRANS ptab1 :I :I :z 129 !FTRANS ptab2 :I :I :z 109 130 REAL(wp), INTENT(in), DIMENSION(:,:,:) :: ptab1, ptab2 ! input 3D array 110 131 REAL(wp) , DIMENSION(2) :: glob_sum ! global masked sum 111 132 !! 112 133 INTEGER :: jk 134 #if defined key_z_first 135 INTEGER :: ji, jj 136 REAL(wp) :: ztmask 137 #endif 113 138 !!----------------------------------------------------------------------- 114 139 ! 115 140 glob_sum(:) = 0.e0 141 #if defined key_z_first 142 DO jj = 1, jpj 143 DO ji = 1, jpi 144 ztmask = tmask_i(ji,jj) 145 DO jk = 1, jpk 146 glob_sum(1) = glob_sum(1) + ptab1(ji,jj,jk)*ztmask 147 glob_sum(2) = glob_sum(2) + ptab2(ji,jj,jk)*ztmask 148 END DO 149 END DO 150 END DO 151 #else 116 152 DO jk = 1, jpk 117 153 glob_sum(1) = glob_sum(1) + SUM( ptab1(:,:,jk)*tmask_i(:,:) ) 118 154 glob_sum(2) = glob_sum(2) + SUM( ptab2(:,:,jk)*tmask_i(:,:) ) 119 155 END DO 156 #endif 120 157 IF( lk_mpp ) CALL mpp_sum( glob_sum, 2 ) 121 158 ! … … 161 198 !! ** Purpose : perform a sum on a 3D array in calling DDPDD routine 162 199 !!---------------------------------------------------------------------- 163 REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) :: ptab 164 REAL(wp) :: glob_sum ! global masked sum 200 !FTRANS ptab :I :I :z 201 REAL(wp), INTENT(in), DIMENSION(:,:,:) :: ptab 202 REAL(wp) :: glob_sum ! global masked sum 165 203 !! 166 204 COMPLEX(wp):: ctmp … … 171 209 ztmp = 0.e0 172 210 ctmp = CMPLX( 0.e0, 0.e0, wp ) 211 #if defined key_z_first 212 DO jj = 1, jpj 213 DO ji =1, jpi 214 DO jk = 1, jpk 215 #else 173 216 DO jk = 1, jpk 174 217 DO jj = 1, jpj 175 218 DO ji =1, jpi 219 #endif 176 220 ztmp = ptab(ji,jj,jk) * tmask_i(ji,jj) 177 221 CALL DDPDD( CMPLX( ztmp, 0.e0, wp ), ctmp ) … … 221 265 !! ** Purpose : perform a sum on two 3D array in calling DDPDD routine 222 266 !!---------------------------------------------------------------------- 223 REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) :: ptab1, ptab2 224 REAL(wp) :: glob_sum ! global masked sum 267 REAL(wp), INTENT(in), DIMENSION(:,:,:) :: ptab1, ptab2 268 !FTRANS ptab1 :I :I :z 269 !FTRANS ptab2 :I :I :z 270 REAL(wp) :: glob_sum ! global masked sum 225 271 !! 226 272 COMPLEX(wp):: ctmp … … 231 277 ztmp = 0.e0 232 278 ctmp = CMPLX( 0.e0, 0.e0, wp ) 279 #if defined key_z_first 280 DO jj = 1, jpj 281 DO ji =1, jpi 282 DO jk = 1, jpk 283 #else 233 284 DO jk = 1, jpk 234 285 DO jj = 1, jpj 235 286 DO ji =1, jpi 287 #endif 236 288 ztmp = ptab1(ji,jj,jk) * tmask_i(ji,jj) 237 289 CALL DDPDD( CMPLX( ztmp, 0.e0, wp ), ctmp )
Note: See TracChangeset
for help on using the changeset viewer.