Changeset 14219 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/DYN/dynatf.F90
- Timestamp:
- 2020-12-18T18:52:57+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/DYN/dynatf.F90
r14200 r14219 60 60 PUBLIC dyn_atf ! routine called by step.F90 61 61 62 # include "single_precision_substitute.h90" 62 63 #if defined key_qco || defined key_linssh 63 64 !!---------------------------------------------------------------------- … … 71 72 INTEGER , INTENT(in ) :: kt ! ocean time-step index 72 73 INTEGER , INTENT(in ) :: Kbb, Kmm, Kaa ! before and after time level indices 73 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities to be time filtered 74 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3t, pe3u, pe3v ! scale factors to be time filtered 74 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities to be time filtered 75 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3t 76 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3u, pe3v ! scale factors to be time filtered 75 77 76 78 WRITE(*,*) 'dyn_atf: You should not have seen this print! error?', kt … … 116 118 INTEGER , INTENT(in ) :: kt ! ocean time-step index 117 119 INTEGER , INTENT(in ) :: Kbb, Kmm, Kaa ! before and after time level indices 118 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities to be time filtered 119 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3t, pe3u, pe3v ! scale factors to be time filtered 120 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities to be time filtered 121 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3t 122 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: pe3u, pe3v ! scale factors to be time filtered 120 123 ! 121 124 INTEGER :: ji, jj, jk ! dummy loop indices 122 REAL(wp) :: zue3a, zue3n, zue3b, zcoef ! local scalars 125 REAL(dp) :: zcoef 126 REAL(wp) :: zue3a, zue3n, zue3b ! local scalars 123 127 REAL(wp) :: zve3a, zve3n, zve3b, z1_2dt ! - - 124 128 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zue, zve, zwfld 125 129 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zutau, zvtau 126 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3t_f, ze3u_f, ze3v_f, zua, zva 130 REAL(dp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3t_f 131 REAL(dp), ALLOCATABLE, DIMENSION(:,:,:) :: zua, zva 132 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3u_f, ze3v_f 127 133 !!---------------------------------------------------------------------- 128 134 ! … … 229 235 ! to manage rnf, isf and possibly in the futur icb, tide water glacier (...) 230 236 ! ...(kt, coef, ktop, kbot, hz, fwf_b, fwf) 231 IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, rn_atfp * rn_Dt)237 IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, CASTWP(rn_atfp * rn_Dt) ) 232 238 ! 233 239 pe3t(:,:,1:jpkm1,Kmm) = ze3t_f(:,:,1:jpkm1) ! filtered scale factor at T-points … … 235 241 IF( ln_dynadv_vec ) THEN ! Asselin filter applied on velocity 236 242 ! Before filtered scale factor at (u/v)-points 237 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3u(:,:,:,Kmm), 'U' )238 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3v(:,:,:,Kmm), 'V' )243 CALL dom_vvl_interpol( CASTWP(pe3t(:,:,:,Kmm)), pe3u(:,:,:,Kmm), 'U' ) 244 CALL dom_vvl_interpol( CASTWP(pe3t(:,:,:,Kmm)), pe3v(:,:,:,Kmm), 'V' ) 239 245 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 240 246 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) … … 246 252 ALLOCATE( ze3u_f(jpi,jpj,jpk) , ze3v_f(jpi,jpj,jpk) ) 247 253 ! Now filtered scale factor at (u/v)-points stored in ze3u_f, ze3v_f 248 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), ze3u_f, 'U' )249 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), ze3v_f, 'V' )254 CALL dom_vvl_interpol( CASTWP(pe3t(:,:,:,Kmm)), ze3u_f, 'U' ) 255 CALL dom_vvl_interpol( CASTWP(pe3t(:,:,:,Kmm)), ze3v_f, 'V' ) 250 256 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 251 257 zue3a = pe3u(ji,jj,jk,Kaa) * puu(ji,jj,jk,Kaa) … … 328 334 IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 329 335 ALLOCATE(zutau(jpi,jpj)) 336 zutau(:,:) = 0._wp 330 337 DO_2D( 0, 0, 0, 0 ) 331 338 jk = miku(ji,jj) … … 342 349 IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 343 350 ALLOCATE(zvtau(jpi,jpj)) 351 zvtau(:,:) = 0._wp 344 352 DO_2D( 0, 0, 0, 0 ) 345 353 jk = mikv(ji,jj) … … 353 361 ENDIF 354 362 ! 355 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1= puu(:,:,:,Kaa), clinfo1=' nxt - puu(:,:,:,Kaa): ', mask1=umask, &356 & tab3d_2= pvv(:,:,:,Kaa), clinfo2=' pvv(:,:,:,Kaa): ' , mask2=vmask )357 ! 363 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1=CASTWP(puu(:,:,:,Kaa)), clinfo1=' nxt - puu(:,:,:,Kaa): ', mask1=umask, & 364 & tab3d_2=CASTWP(pvv(:,:,:,Kaa)), clinfo2=' pvv(:,:,:,Kaa): ' , mask2=vmask ) 365 ! 358 366 IF( ln_dynspg_ts ) DEALLOCATE( zue, zve ) 359 367 IF( l_trddyn ) DEALLOCATE( zua, zva )
Note: See TracChangeset
for help on using the changeset viewer.