Changeset 14986 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/DOM/domqco.F90
- Timestamp:
- 2021-06-14T13:34:08+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/DOM/domqco.F90
r14644 r14986 124 124 CALL dom_qco_r3c( CASTWP(ssh(:,:,Kmm)), r3t(:,:,Kmm), r3u(:,:,Kmm), r3v(:,:,Kmm), r3f(:,:) ) 125 125 #endif 126 ! dom_qco_r3c defines over [nn_hls, nn_hls-1, nn_hls, nn_hls-1] 127 IF( nn_hls == 2 ) CALL lbc_lnk( 'dom_qco_zgr', r3u(:,:,Kbb), 'U', 1._wp, r3v(:,:,Kbb), 'V', 1._wp, & 128 & r3u(:,:,Kmm), 'U', 1._wp, r3v(:,:,Kmm), 'V', 1._wp ) 126 129 ! 127 130 END SUBROUTINE dom_qco_zgr … … 147 150 ! 148 151 ! 149 pr3t(:,:) = pssh(:,:) * r1_ht_0(:,:) !== ratio at t-point ==! 152 DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) 153 pr3t(ji,jj) = pssh(ji,jj) * r1_ht_0(ji,jj) !== ratio at t-point ==! 154 END_2D 150 155 ! 151 156 ! … … 155 160 #if ! defined key_qcoTest_FluxForm 156 161 ! ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 157 DO_2D( 0, 0, 0, 0)158 159 160 161 162 162 DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 163 pr3u(ji,jj) = 0.5_wp * ( e1e2t(ji ,jj) * pssh(ji ,jj) & 164 & + e1e2t(ji+1,jj) * pssh(ji+1,jj) ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 165 pr3v(ji,jj) = 0.5_wp * ( e1e2t(ji,jj ) * pssh(ji,jj ) & 166 & + e1e2t(ji,jj+1) * pssh(ji,jj+1) ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 167 END_2D 163 168 !!st ELSE !- Flux Form (simple averaging) 164 169 #else 165 DO_2D( 0, 0, 0, 0)166 167 168 170 DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 171 pr3u(ji,jj) = 0.5_wp * ( pssh(ji,jj) + pssh(ji+1,jj ) ) * r1_hu_0(ji,jj) 172 pr3v(ji,jj) = 0.5_wp * ( pssh(ji,jj) + pssh(ji ,jj+1) ) * r1_hv_0(ji,jj) 173 END_2D 169 174 !!st ENDIF 170 175 #endif 171 176 ! 172 177 IF( .NOT.PRESENT( pr3f ) ) THEN !- lbc on ratio at u-, v-points only 173 CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp )178 IF (nn_hls==1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 174 179 ! 175 180 ! … … 180 185 ! ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 181 186 182 DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 183 pr3f(ji,jj) = 0.25_wp * ( e1e2t(ji ,jj ) * pssh(ji ,jj ) & 184 & + e1e2t(ji+1,jj ) * pssh(ji+1,jj ) & 185 & + e1e2t(ji ,jj+1) * pssh(ji ,jj+1) & 186 & + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1) ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 187 END_2D 187 DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 188 ! round brackets added to fix the order of floating point operations 189 ! needed to ensure halo 1 - halo 2 compatibility 190 pr3f(ji,jj) = 0.25_wp * ( ( e1e2t(ji ,jj ) * pssh(ji ,jj ) & 191 & + e1e2t(ji+1,jj ) * pssh(ji+1,jj ) & 192 & ) & ! bracket for halo 1 - halo 2 compatibility 193 & + ( e1e2t(ji ,jj+1) * pssh(ji ,jj+1) & 194 & + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1) & 195 & ) & ! bracket for halo 1 - halo 2 compatibility 196 & ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 197 END_2D 188 198 !!st ELSE !- Flux Form (simple averaging) 189 199 #else 190 DO_2D( 0, 0, 0, 0 ) ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 191 pr3f(ji,jj) = 0.25_wp * ( pssh(ji,jj ) + pssh(ji+1,jj ) & 192 & + pssh(ji,jj+1) + pssh(ji+1,jj+1) ) * r1_hf_0(ji,jj) 193 END_2D 200 DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 201 ! round brackets added to fix the order of floating point operations 202 ! needed to ensure halo 1 - halo 2 compatibility 203 pr3f(ji,jj) = 0.25_wp * ( ( pssh(ji,jj ) + pssh(ji+1,jj ) ) & 204 & + ( pssh(ji,jj+1) + pssh(ji+1,jj+1) & 205 & ) & ! bracket for halo 1 - halo 2 compatibility 206 & ) * r1_hf_0(ji,jj) 207 END_2D 194 208 !!st ENDIF 195 209 #endif 196 210 ! ! lbc on ratio at u-,v-,f-points 197 CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp )211 IF (nn_hls==1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 198 212 ! 199 213 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.