Changeset 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/ABL/ablmod.F90
- Timestamp:
- 2021-05-05T13:18:04+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r12970_AGRIF_CMEMSext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 ^/vendors/PPR@HEAD ext/PPR 8 9 9 10 # SETTE 10 ^/utils/CI/sette@1 3559sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/ABL/ablmod.F90
r13295 r14789 18 18 USE dom_oce, ONLY : tmask 19 19 USE sbc_oce, ONLY : ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka, jpkam1, rhoa 20 USE sbcblk ! use rn_efac , cdn_oce21 USE sbc blk_phy ! use some physical constants for flux computation20 USE sbcblk ! use rn_efac 21 USE sbc_phy ! Catalog of functions for physical/meteorological parameters in the marine boundary layer 22 22 ! 23 23 USE prtctl ! Print control (prt_ctl routine) … … 41 41 & pu_dta, pv_dta, pt_dta, pq_dta, & 42 42 & pslp_dta, pgu_dta, pgv_dta, & 43 & pcd_du, psen, pevp, 43 & pcd_du, psen, pevp, plat, & ! in/out 44 44 & pwndm, ptaui, ptauj, ptaum & 45 45 #if defined key_si3 … … 84 84 REAL(wp) , INTENT(inout), DIMENSION(:,: ) :: pevp ! Ce x Du 85 85 REAL(wp) , INTENT(inout), DIMENSION(:,: ) :: pwndm ! ||uwnd|| 86 REAL(wp) , INTENT( out), DIMENSION(:,: ) :: plat ! latent heat flux 86 87 REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptaui ! taux 87 88 REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptauj ! tauy … … 135 136 ustar2(ji,jj) = zzoce 136 137 #endif 137 zrough(ji,jj) = ght_abl(2) * EXP( - vkarmn / SQRT( MAX( Cdn_oce(ji,jj), 1.e-4 ) ) ) !<-- recover the value of z0 from Cdn_oce 138 !#LB: sorry Cdn_oce is gone: 139 !zrough(ji,jj) = ght_abl(2) * EXP( - vkarmn / SQRT( MAX( Cdn_oce(ji,jj), 1.e-4 ) ) ) !<-- recover the value of z0 from Cdn_oce 138 140 END_2D 141 142 zrough(:,:) = z0_from_Cd( ght_abl(2), pCd_du(:,:) / MAX( pwndm(:,:), 0.5_wp ) ) ! #LB: z0_from_Cd is define in sbc_phy.F90... 143 139 144 ! 140 145 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 252 257 & + rDt_abl * fft_abl(ji, jj) * v_abl( ji, jj, jk, nt_n ) ) & 253 258 & / (1._wp + gamma_Cor*gamma_Cor*zcff) 254 259 255 260 v_abl( ji, jj, jk, nt_a ) = e3t_abl(jk) *( & 256 261 & (1._wp-gamma_Cor*(1._wp-gamma_Cor)*zcff) * v_abl( ji, jj, jk, nt_n ) & … … 526 531 !------------- 527 532 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 528 ! ! 6 *** MPI exchanges 529 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 530 ! 531 CALL lbc_lnk _multi( 'ablmod', u_abl(:,:,:,nt_a ), 'T', -1._wp, v_abl(:,:,:,nt_a) , 'T', -1._wp )532 CALL lbc_lnk _multi( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T', 1._wp , kfillmode = jpfillnothing ) ! ++++ this should not be needed...533 ! 534 #if defined key_ iomput533 ! ! 6 *** MPI exchanges & IOM outputs 534 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 535 ! 536 CALL lbc_lnk( 'ablmod', u_abl(:,:,:,nt_a ), 'T', -1._wp, v_abl(:,:,:,nt_a) , 'T', -1._wp ) 537 CALL lbc_lnk( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T', 1._wp , kfillmode = jpfillnothing ) ! ++++ this should not be needed... 538 ! 539 #if defined key_xios 535 540 ! 2D & first ABL level 536 541 IF ( iom_use("pblh" ) ) CALL iom_put ( "pblh", pblh(:,: ) ) … … 586 591 psen( ji, jj ) = - cp_air(zhumi) * zcff * psen(ji,jj) * ( psst(ji,jj) + rt0 - ztemp ) !GS: negative sign to respect aerobulk convention 587 592 pevp( ji, jj ) = rn_efac*MAX( 0._wp, zcff * pevp(ji,jj) * ( pssq(ji,jj) - zhumi ) ) 593 plat( ji, jj ) = - L_vap( psst(ji,jj) ) * pevp( ji, jj ) 588 594 rhoa( ji, jj ) = zcff 589 595 END_2D 590 596 591 597 DO_2D( 0, 1, 0, 1 ) 592 zwnd_i(ji,jj) = u_abl(ji ,jj,2,nt_a) - 0.5_wp * ( pssu(ji ,jj) + pssu(ji-1,jj) ) 593 zwnd_j(ji,jj) = v_abl(ji,jj ,2,nt_a) - 0.5_wp * ( pssv(ji,jj ) + pssv(ji,jj-1) ) 598 zwnd_i(ji,jj) = u_abl(ji ,jj,2,nt_a) - 0.5_wp * ( pssu(ji ,jj) + pssu(ji-1,jj) ) 599 zwnd_j(ji,jj) = v_abl(ji,jj ,2,nt_a) - 0.5_wp * ( pssv(ji,jj ) + pssv(ji,jj-1) ) 594 600 END_2D 595 601 ! 596 CALL lbc_lnk _multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp )602 CALL lbc_lnk( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 597 603 ! 598 604 ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) … … 619 625 END_2D 620 626 ! 621 CALL lbc_lnk _multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp )627 CALL lbc_lnk( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 622 628 623 629 CALL iom_put( "taum_oce", ptaum ) … … 633 639 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 634 640 ! ------------------------------------------------------------ ! 635 DO_2D( 0, 0, 0, 0 ) 641 DO_2D( 0, 0, 0, 0 ) 636 642 ptaui_ice(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * pCd_du_ice(ji+1,jj) + rhoa(ji,jj) * pCd_du_ice(ji,jj) ) & 637 643 & * ( 0.5_wp * ( u_abl(ji+1,jj,2,nt_a) + u_abl(ji,jj,2,nt_a) ) - pssu_ice(ji,jj) ) … … 639 645 & * ( 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) - pssv_ice(ji,jj) ) 640 646 END_2D 641 CALL lbc_lnk _multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp )647 CALL lbc_lnk( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 642 648 ! 643 649 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: putaui : ' & … … 658 664 & * ( zztmp2 - pssv_ice(ji,jj) ) 659 665 END_2D 660 CALL lbc_lnk _multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp )666 CALL lbc_lnk( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 661 667 ! 662 668 IF(sn_cfctl%l_prtctl) THEN … … 1259 1265 smth_b = 1._wp / 4._wp 1260 1266 ! 1261 DO_2D( 1, 1, 1, 0)1267 DO_2D( 1, 0, 1, 1 ) 1262 1268 zumsk = msk(ji,jj) * msk(ji+1,jj) 1263 1269 zdX ( ji, jj ) = ( pvar2d( ji+1,jj ) - pvar2d( ji ,jj ) ) * zumsk 1264 1270 END_2D 1265 1271 1266 DO_2D( 1, 0, 1, 1)1272 DO_2D( 1, 1, 1, 0 ) 1267 1273 zvmsk = msk(ji,jj) * msk(ji,jj+1) 1268 1274 zdY ( ji, jj ) = ( pvar2d( ji, jj+1 ) - pvar2d( ji ,jj ) ) * zvmsk 1269 1275 END_2D 1270 1276 1271 DO_2D( 1, 0, 0, 0 )1277 DO_2D( 0, 0, 1, 0 ) 1272 1278 zFY ( ji, jj ) = zdY ( ji, jj ) & 1273 1279 & + smth_a* ( (zdX ( ji, jj+1 ) - zdX( ji-1, jj+1 )) & … … 1275 1281 END_2D 1276 1282 1277 DO_2D( 0, 0, 1, 0 )1283 DO_2D( 1, 0, 0, 0 ) 1278 1284 zFX( ji, jj ) = zdX( ji, jj ) & 1279 1285 & + smth_a*( (zdY( ji+1, jj ) - zdY( ji+1, jj-1)) &
Note: See TracChangeset
for help on using the changeset viewer.