Changeset 14286 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/stpmlf.F90
- Timestamp:
- 2021-01-11T18:30:11+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/stpmlf.F90
r14200 r14286 68 68 !! * Substitutions 69 69 # include "domzgr_substitute.h90" 70 # include "single_precision_substitute.h90" 70 71 !!---------------------------------------------------------------------- 71 72 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 161 162 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 162 163 ! THERMODYNAMICS 163 CALL eos_rab( ts(:,:,:,:,Nbb), rab_b, Nnn ) ! before local thermal/haline expension ratio at T-points164 CALL eos_rab( ts(:,:,:,:,Nnn), rab_n, Nnn ) ! now local thermal/haline expension ratio at T-points165 CALL bn2 ( ts(:,:,:,:,Nbb), rab_b, rn2b, Nnn ) ! before Brunt-Vaisala frequency166 CALL bn2 ( ts(:,:,:,:,Nnn), rab_n, rn2, Nnn ) ! now Brunt-Vaisala frequency164 CALL eos_rab( CASTWP(ts(:,:,:,:,Nbb)), rab_b, Nnn ) ! before local thermal/haline expension ratio at T-points 165 CALL eos_rab( CASTWP(ts(:,:,:,:,Nnn)), rab_n, Nnn ) ! now local thermal/haline expension ratio at T-points 166 CALL bn2 ( CASTWP(ts(:,:,:,:,Nbb)), rab_b, rn2b, Nnn ) ! before Brunt-Vaisala frequency 167 CALL bn2 ( CASTWP(ts(:,:,:,:,Nnn)), rab_n, rn2, Nnn ) ! now Brunt-Vaisala frequency 167 168 168 169 ! VERTICAL PHYSICS … … 172 173 ! 173 174 IF( l_ldfslp ) THEN ! slope of lateral mixing 174 CALL eos( ts(:,:,:,:,Nbb), rhd, gdept_0(:,:,:) ) ! before in situ density175 CALL eos( CASTWP(ts(:,:,:,:,Nbb)), rhd, gdept_0(:,:,:) ) ! before in situ density 175 176 176 177 IF( ln_zps .AND. .NOT. ln_isfcav) & … … 199 200 CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 200 201 IF( .NOT.lk_linssh ) THEN 201 CALL dom_qco_r3c( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) ) ! "after" ssh/h_0 ratio at t,u,v pts202 IF( ln_dynspg_exp ) CALL dom_qco_r3c( ssh(:,:,Nnn), r3t(:,:,Nnn), r3u(:,:,Nnn), r3v(:,:,Nnn), r3f(:,:) ) ! spg_exp : needed only for "now" ssh/h_0 ratio at f point202 CALL dom_qco_r3c( CASTWP(ssh(:,:,Naa)), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) ) ! "after" ssh/h_0 ratio at t,u,v pts 203 IF( ln_dynspg_exp ) CALL dom_qco_r3c( CASTWP(ssh(:,:,Nnn)), r3t(:,:,Nnn), r3u(:,:,Nnn), r3v(:,:,Nnn), r3f(:,:) ) ! spg_exp : needed only for "now" ssh/h_0 ratio at f point 203 204 ENDIF 204 205 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! Nnn cross-level velocity 205 206 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning 206 CALL eos ( ts(:,:,:,:,Nnn), rhd, rhop, zgdept ) ! now in situ density for hpg computation207 CALL eos ( CASTWP(ts(:,:,:,:,Nnn)), rhd, rhop, zgdept ) ! now in situ density for hpg computation 207 208 208 209 … … 227 228 IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated 228 229 CALL div_hor ( kstp, Nbb, Nnn ) ! Horizontal divergence (2nd call in time-split case) 229 IF(.NOT.lk_linssh) CALL dom_qco_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) ) ! update ssh/h_0 ratio at t,u,v,f pts230 IF(.NOT.lk_linssh) CALL dom_qco_r3c ( CASTWP(ssh(:,:,Naa)), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) ) ! update ssh/h_0 ratio at t,u,v,f pts 230 231 ENDIF 231 232 CALL dyn_zdf ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa ) ! vertical diffusion … … 259 260 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 260 261 CALL ssh_atf ( kstp, Nbb, Nnn, Naa, ssh ) ! time filtering of "now" sea surface height 261 IF(.NOT.lk_linssh) CALL dom_qco_r3c( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f ) ! "now" ssh/h_0 ratio from filtrered ssh262 IF(.NOT.lk_linssh) CALL dom_qco_r3c( CASTWP(ssh(:,:,Nnn)), r3t_f, r3u_f, r3v_f ) ! "now" ssh/h_0 ratio from filtrered ssh 262 263 #if defined key_top 263 264 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 401 402 !! 402 403 INTEGER , INTENT(in ) :: Kmm, Kaa ! before and after time level indices 403 REAL( wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities404 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! velocities 404 405 ! 405 406 INTEGER :: jk ! dummy loop indices … … 449 450 INTEGER , INTENT(in ) :: kt ! ocean time-step index 450 451 INTEGER , INTENT(in ) :: Kbb, Kaa ! before and after time level indices 451 REAL( wp), DIMENSION(jpi,jpj,jpk,jpt) , INTENT(inout) :: puu, pvv ! velocities to be time filtered452 REAL( wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers452 REAL(dp), DIMENSION(jpi,jpj,jpk,jpt) , INTENT(inout) :: puu, pvv ! velocities to be time filtered 453 REAL(dp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers 453 454 !!---------------------------------------------------------------------- 454 455 ! … … 460 461 # endif 461 462 ! ! local domain boundaries (T-point, unchanged sign) 462 CALL lbc_lnk_multi( 'finalize_lbc', puu(:,:,:, Kaa), 'U', -1. , pvv(:,:,: ,Kaa), 'V', -1.&463 & , pts(:,:,:,jp_tem,Kaa), 'T', 1. , pts(:,:,:,jp_sal,Kaa), 'T', 1.)463 CALL lbc_lnk_multi( 'finalize_lbc', puu(:,:,:, Kaa), 'U', -1._wp, pvv(:,:,: ,Kaa), 'V', -1._wp & 464 & , pts(:,:,:,jp_tem,Kaa), 'T', 1._wp, pts(:,:,:,jp_sal,Kaa), 'T', 1._wp ) 464 465 ! 465 466 ! !* BDY open boundaries
Note: See TracChangeset
for help on using the changeset viewer.