- Timestamp:
- 2021-04-07T19:16:18+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/DOM/domqco.F90
r14574 r14680 154 154 #if ! defined key_qcoTest_FluxForm 155 155 ! ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 156 DO_2D( 0, 0, 0, 0 ) 156 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 157 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 157 158 pr3u(ji,jj) = 0.5_wp * ( e1e2t(ji ,jj) * pssh(ji ,jj) & 158 159 & + e1e2t(ji+1,jj) * pssh(ji+1,jj) ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) … … 162 163 !!st ELSE !- Flux Form (simple averaging) 163 164 #else 164 DO_2D( 0, 0, 0, 0 ) 165 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 166 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 165 167 pr3u(ji,jj) = 0.5_wp * ( pssh(ji,jj) + pssh(ji+1,jj ) ) * r1_hu_0(ji,jj) 166 168 pr3v(ji,jj) = 0.5_wp * ( pssh(ji,jj) + pssh(ji ,jj+1) ) * r1_hv_0(ji,jj) … … 170 172 ! 171 173 IF( .NOT.PRESENT( pr3f ) ) THEN !- lbc on ratio at u-, v-points only 172 CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp )174 IF (nn_hls.eq.1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 173 175 ! 174 176 ! … … 179 181 ! ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 180 182 181 DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 182 pr3f(ji,jj) = 0.25_wp * ( e1e2t(ji ,jj ) * pssh(ji ,jj ) & 183 & + e1e2t(ji+1,jj ) * pssh(ji+1,jj ) & 184 & + e1e2t(ji ,jj+1) * pssh(ji ,jj+1) & 185 & + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1) ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 183 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 184 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 185 ! round brackets added to fix the order of floating point operations 186 ! needed to ensure halo 1 - halo 2 compatibility 187 pr3f(ji,jj) = 0.25_wp * ( ( e1e2t(ji ,jj ) * pssh(ji ,jj ) & 188 & + e1e2t(ji+1,jj ) * pssh(ji+1,jj ) & 189 & ) & ! bracket for halo 1 - halo 2 compatibility 190 & + ( e1e2t(ji ,jj+1) * pssh(ji ,jj+1) & 191 & + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1) & 192 & ) & ! bracket for halo 1 - halo 2 compatibility 193 & ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 186 194 END_2D 187 195 !!st ELSE !- Flux Form (simple averaging) 188 196 #else 189 DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 190 pr3f(ji,jj) = 0.25_wp * ( pssh(ji,jj ) + pssh(ji+1,jj ) & 191 & + pssh(ji,jj+1) + pssh(ji+1,jj+1) ) * r1_hf_0(ji,jj) 197 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 198 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 199 ! round brackets added to fix the order of floating point operations 200 ! needed to ensure halo 1 - halo 2 compatibility 201 pr3f(ji,jj) = 0.25_wp * ( ( pssh(ji,jj ) + pssh(ji+1,jj ) ) & 202 & + ( pssh(ji,jj+1) + pssh(ji+1,jj+1) & 203 & ) & ! bracket for halo 1 - halo 2 compatibility 204 & ) * r1_hf_0(ji,jj) 192 205 END_2D 193 206 !!st ENDIF 194 207 #endif 195 208 ! ! lbc on ratio at u-,v-,f-points 196 CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp )209 IF (nn_hls.eq.1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 197 210 ! 198 211 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.