- Timestamp:
- 2018-06-20T15:41:08+02:00 (7 years ago)
- Location:
- NEMO/branches/2018/dev_r9759_HPC09_ESIWACE
- Files:
-
- 1 deleted
- 78 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ASM/asminc.F90
r9656 r9814 421 421 END DO 422 422 END DO 423 CALL lbc_lnk( 423 CALL lbc_lnk("asminc",zhdiv, 'T', 1. ) ! lateral boundary cond. (no sign change) 424 424 ! 425 425 DO jj = 2, jpjm1 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdydyn3d.F90
r9598 r9814 319 319 END DO 320 320 ! 321 CALL lbc_lnk_multi( 321 CALL lbc_lnk_multi("bdydyn3d",ua, 'U', -1., va, 'V', -1. ) ! Boundary points should be updated 322 322 ! 323 323 IF( ln_timing ) CALL timing_stop('bdy_dyn3d_dmp') -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdyini.F90
r9657 r9814 1133 1133 END DO 1134 1134 END DO 1135 CALL lbc_lnk_multi( 1135 CALL lbc_lnk_multi("bdyini",bdyumask, 'U', 1. , bdyvmask, 'V', 1. ) ! Lateral boundary cond. 1136 1136 1137 1137 ! bdy masks are now set to zero on boundary points: … … 1168 1168 1169 1169 ! Lateral boundary conditions 1170 CALL lbc_lnk( 1171 CALL lbc_lnk_multi( 1170 CALL lbc_lnk("bdyini",zfmask, 'F', 1. ) 1171 CALL lbc_lnk_multi("bdyini",bdyumask, 'U', 1. , bdyvmask, 'V', 1., bdytmask, 'T', 1. ) 1172 1172 DO ib_bdy = 1, nb_bdy ! Indices and directions of rim velocity components 1173 1173 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crsfld.F90
r9598 r9814 164 164 END DO 165 165 END DO 166 CALL lbc_lnk( 166 CALL lbc_lnk("crsfld",z3d, 'T', 1. ) 167 167 ! 168 168 CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crslbclnk.F90
r9598 r9814 55 55 IF( .NOT.ll_grid_crs ) CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 56 56 ! 57 IF( PRESENT( cd_mpp ) ) THEN ; CALL lbc_lnk( 58 ELSE ; CALL lbc_lnk( 57 IF( PRESENT( cd_mpp ) ) THEN ; CALL lbc_lnk("crslbclnk",pt3d1, cd_type1, psgn, cd_mpp, pval=zval ) 58 ELSE ; CALL lbc_lnk("crslbclnk",pt3d1, cd_type1, psgn , pval=zval ) 59 59 ENDIF 60 60 ! … … 92 92 IF( .NOT.ll_grid_crs ) CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 93 93 ! 94 IF( PRESENT( cd_mpp ) ) THEN ; CALL lbc_lnk( 95 ELSE ; CALL lbc_lnk( 94 IF( PRESENT( cd_mpp ) ) THEN ; CALL lbc_lnk("crslbclnk",pt2d, cd_type, psgn, cd_mpp, pval=zval ) 95 ELSE ; CALL lbc_lnk("crslbclnk",pt2d, cd_type, psgn , pval=zval ) 96 96 ENDIF 97 97 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diaar5.F90
r9598 r9814 245 245 ENDIF 246 246 !!gm useless lbc_lnk since the computation above is performed over 1:jpi & 1:jpj 247 !!gm CALL lbc_lnk( 247 !!gm CALL lbc_lnk("diaar5",zpe, 'T', 1._wp) 248 248 CALL iom_put( 'tnpeo', zpe ) 249 249 DEALLOCATE( zpe ) … … 285 285 END DO 286 286 END DO 287 CALL lbc_lnk( 287 CALL lbc_lnk("diaar5",z2d, 'U', -1. ) 288 288 IF( cptr == 'adv' ) THEN 289 289 IF( ktra == jp_tem ) CALL iom_put( "uadv_heattr" , rau0_rcp * z2d ) ! advective heat transport in i-direction … … 303 303 END DO 304 304 END DO 305 CALL lbc_lnk( 305 CALL lbc_lnk("diaar5",z2d, 'V', -1. ) 306 306 IF( cptr == 'adv' ) THEN 307 307 IF( ktra == jp_tem ) CALL iom_put( "vadv_heattr" , rau0_rcp * z2d ) ! advective heat transport in j-direction -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diawri.F90
r9652 r9814 181 181 END DO 182 182 END DO 183 CALL lbc_lnk( z2d, 'T', 1. )183 CALL lbc_lnk( "diawri",z2d, 'T', 1. ) 184 184 CALL iom_put( "taubot", z2d ) 185 185 ENDIF … … 237 237 END DO 238 238 END DO 239 CALL lbc_lnk( z2d, 'T', 1. )239 CALL lbc_lnk( "diawri",z2d, 'T', 1. ) 240 240 CALL iom_put( "sstgrad2", z2d ) ! square of module of sst gradient 241 241 z2d(:,:) = SQRT( z2d(:,:) ) … … 281 281 END DO 282 282 END DO 283 CALL lbc_lnk( z3d, 'T', 1. )283 CALL lbc_lnk( "diawri",z3d, 'T', 1. ) 284 284 CALL iom_put( "eken", z3d ) ! kinetic energy 285 285 ENDIF … … 307 307 END DO 308 308 END DO 309 CALL lbc_lnk( z2d, 'U', -1. )309 CALL lbc_lnk( "diawri",z2d, 'U', -1. ) 310 310 CALL iom_put( "u_heattr", 0.5*rcp * z2d ) ! heat transport in i-direction 311 311 ENDIF … … 320 320 END DO 321 321 END DO 322 CALL lbc_lnk( z2d, 'U', -1. )322 CALL lbc_lnk( "diawri",z2d, 'U', -1. ) 323 323 CALL iom_put( "u_salttr", 0.5 * z2d ) ! heat transport in i-direction 324 324 ENDIF … … 342 342 END DO 343 343 END DO 344 CALL lbc_lnk( z2d, 'V', -1. )344 CALL lbc_lnk( "diawri",z2d, 'V', -1. ) 345 345 CALL iom_put( "v_heattr", 0.5*rcp * z2d ) ! heat transport in j-direction 346 346 ENDIF … … 355 355 END DO 356 356 END DO 357 CALL lbc_lnk( z2d, 'V', -1. )357 CALL lbc_lnk( "diawri",z2d, 'V', -1. ) 358 358 CALL iom_put( "v_salttr", 0.5 * z2d ) ! heat transport in j-direction 359 359 ENDIF … … 368 368 END DO 369 369 END DO 370 CALL lbc_lnk( z2d, 'T', -1. )370 CALL lbc_lnk( "diawri",z2d, 'T', -1. ) 371 371 CALL iom_put( "tosmint", rau0 * z2d ) ! Vertical integral of temperature 372 372 ENDIF … … 380 380 END DO 381 381 END DO 382 CALL lbc_lnk( z2d, 'T', -1. )382 CALL lbc_lnk( "diawri",z2d, 'T', -1. ) 383 383 CALL iom_put( "somint", rau0 * z2d ) ! Vertical integral of salinity 384 384 ENDIF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/closea.F90
r9598 r9814 396 396 emp (:,:) = emp (:,:) * tmask(:,:,1) 397 397 ! 398 CALL lbc_lnk( 398 CALL lbc_lnk("closea",emp , 'T', 1._wp ) 399 399 ! 400 400 END SUBROUTINE sbc_clo -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/dommsk.F90
r9657 r9814 145 145 !SF add here lbc_lnk: bug not still understood : cause now domain configuration is read ! 146 146 !!gm I don't understand why... 147 CALL lbc_lnk( 147 CALL lbc_lnk("dommsk",tmask , 'T', 1._wp ) ! Lateral boundary conditions 148 148 149 149 ! Mask corrections for bdy (read in mppini2) … … 183 183 END DO 184 184 END DO 185 CALL lbc_lnk_multi( 185 CALL lbc_lnk_multi("dommsk",umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. ) ! Lateral boundary conditions 186 186 187 187 ! Ocean/land mask at wu-, wv- and w points (computed from tmask) … … 283 283 DEALLOCATE( zwf ) 284 284 ! 285 CALL lbc_lnk( 285 CALL lbc_lnk("dommsk",fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 286 286 ! 287 287 ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domvvl.F90
r9598 r9814 408 408 ! ! d - thickness diffusion transport: boundary conditions 409 409 ! (stored for tracer advction and continuity equation) 410 CALL lbc_lnk_multi( 410 CALL lbc_lnk_multi("domvvl",un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 411 411 412 412 ! 4 - Time stepping of baroclinic scale factors … … 419 419 z2dt = 2.0_wp * rdt 420 420 ENDIF 421 CALL lbc_lnk( 421 CALL lbc_lnk("domvvl",tilde_e3t_a(:,:,:), 'T', 1._wp ) 422 422 tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 423 423 … … 711 711 END DO 712 712 END DO 713 CALL lbc_lnk( 713 CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'U', 1._wp ) 714 714 pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 715 715 ! … … 724 724 END DO 725 725 END DO 726 CALL lbc_lnk( 726 CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'V', 1._wp ) 727 727 pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 728 728 ! … … 738 738 END DO 739 739 END DO 740 CALL lbc_lnk( 740 CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'F', 1._wp ) 741 741 pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 742 742 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domwri.F90
r9598 r9814 210 210 ! 211 211 puniq(:,:) = ztstref(:,:) ! default definition 212 CALL lbc_lnk( 212 CALL lbc_lnk("domwri",puniq, cdgrd, 1. ) ! apply boundary conditions 213 213 lldbl(:,:,1) = puniq(:,:) == ztstref(:,:) ! check which values have been changed 214 214 ! … … 271 271 END DO 272 272 END DO 273 CALL lbc_lnk( 273 CALL lbc_lnk("domwri",zx1, 'T', 1. ) 274 274 ! 275 275 IF( PRESENT( px1 ) ) px1 = zx1 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domzgr.F90
r9598 r9814 307 307 END DO 308 308 ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 309 zk(:,:) = REAL( miku(:,:), wp ) ; CALL lbc_lnk( 310 zk(:,:) = REAL( mikv(:,:), wp ) ; CALL lbc_lnk( 311 zk(:,:) = REAL( mikf(:,:), wp ) ; CALL lbc_lnk( 312 ! 313 zk(:,:) = REAL( mbku(:,:), wp ) ; CALL lbc_lnk( 314 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk( 309 zk(:,:) = REAL( miku(:,:), wp ) ; CALL lbc_lnk("domzgr",zk, 'U', 1. ) ; miku(:,:) = MAX( INT( zk(:,:) ), 1 ) 310 zk(:,:) = REAL( mikv(:,:), wp ) ; CALL lbc_lnk("domzgr",zk, 'V', 1. ) ; mikv(:,:) = MAX( INT( zk(:,:) ), 1 ) 311 zk(:,:) = REAL( mikf(:,:), wp ) ; CALL lbc_lnk("domzgr",zk, 'F', 1. ) ; mikf(:,:) = MAX( INT( zk(:,:) ), 1 ) 312 ! 313 zk(:,:) = REAL( mbku(:,:), wp ) ; CALL lbc_lnk("domzgr",zk, 'U', 1. ) ; mbku(:,:) = MAX( INT( zk(:,:) ), 1 ) 314 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk("domzgr",zk, 'V', 1. ) ; mbkv(:,:) = MAX( INT( zk(:,:) ), 1 ) 315 315 ! 316 316 END SUBROUTINE zgr_top_bot -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/iscplrst.F90
r9598 r9814 175 175 END DO 176 176 END DO 177 CALL lbc_lnk_multi( 177 CALL lbc_lnk_multi("iscplrst",sshn, 'T', 1., zsmask1, 'T', 1. ) 178 178 zssh0 = sshn 179 179 zsmask0 = zsmask1 … … 344 344 END DO 345 345 346 CALL lbc_lnk_multi( 346 CALL lbc_lnk_multi("iscplrst",tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., ztmask1, 'T', 1.) 347 347 348 348 ! update -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/divhor.F90
r9598 r9814 104 104 IF( ln_iscpl .AND. ln_hsb ) CALL iscpl_div( hdivn ) !== ice sheet ==! (update hdivn field) 105 105 ! 106 CALL lbc_lnk( 106 CALL lbc_lnk("divhor",hdivn, 'T', 1. ) ! (no sign change) 107 107 ! 108 108 IF( ln_timing ) CALL timing_stop('div_hor') -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynadv_ubs.F90
r9598 r9814 123 123 END DO 124 124 END DO 125 CALL lbc_lnk_multi( 125 CALL lbc_lnk_multi("dynadv_ubs",zlu_uu(:,:,:,1), 'U', 1. , zlu_uv(:,:,:,1), 'U', 1., & 126 126 & zlu_uu(:,:,:,2), 'U', 1. , zlu_uv(:,:,:,2), 'U', 1., & 127 127 & zlv_vv(:,:,:,1), 'V', 1. , zlv_vu(:,:,:,1), 'V', 1., & -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynhpg.F90
r9598 r9814 490 490 END DO 491 491 END DO 492 CALL lbc_lnk_multi( 492 CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. ) 493 493 END IF 494 494 … … 723 723 END DO 724 724 END DO 725 CALL lbc_lnk_multi( 725 CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. ) 726 726 END IF 727 727 … … 883 883 END DO 884 884 END DO 885 CALL lbc_lnk_multi( 885 CALL lbc_lnk_multi("dynhpg",rho_k, 'W', 1., rho_i, 'U', 1., rho_j, 'V', 1. ) 886 886 887 887 ! --------------- … … 1016 1016 END DO 1017 1017 END DO 1018 CALL lbc_lnk_multi( 1018 CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. ) 1019 1019 ENDIF 1020 1020 … … 1102 1102 END DO 1103 1103 1104 CALL lbc_lnk_multi (zsshu_n, 'U', 1., zsshv_n, 'V', 1. )1104 CALL lbc_lnk_multi("dynhpg",zsshu_n, 'U', 1., zsshv_n, 'V', 1. ) 1105 1105 1106 1106 DO jj = 2, jpjm1 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynkeg.F90
r9598 r9814 158 158 END DO 159 159 END DO 160 CALL lbc_lnk( 160 CALL lbc_lnk("dynkeg",zhke, 'T', 1. ) 161 161 ! 162 162 END SELECT -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_iso.F90
r9598 r9814 136 136 END DO 137 137 ! Lateral boundary conditions on the slopes 138 CALL lbc_lnk_multi( 138 CALL lbc_lnk_multi("dynldf_iso",uslp , 'U', -1., vslp , 'V', -1., wslpi, 'W', -1., wslpj, 'W', -1. ) 139 139 ! 140 140 ENDIF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_lap_blp.F90
r9598 r9814 136 136 CALL dyn_ldf_lap( kt, pub, pvb, zulap, zvlap, 1 ) ! rotated laplacian applied to ptb (output in zlap) 137 137 ! 138 CALL lbc_lnk_multi( 138 CALL lbc_lnk_multi("dynldf_lap_blp",zulap, 'U', -1., zvlap, 'V', -1. ) ! Lateral boundary conditions 139 139 ! 140 140 CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 ) ! rotated laplacian applied to zlap (output in pta) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynnxt.F90
r9598 r9814 144 144 # endif 145 145 ! 146 CALL lbc_lnk_multi( 146 CALL lbc_lnk_multi("dynnxt",ua, 'U', -1., va, 'V', -1. ) !* local domain boundaries 147 147 ! 148 148 ! !* BDY open boundaries -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynspg_ts.F90
r9598 r9814 262 262 END DO 263 263 END SELECT 264 CALL lbc_lnk( 264 CALL lbc_lnk("dynspg_ts",zwz, 'F', 1._wp ) 265 265 ! 266 266 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp … … 330 330 END DO 331 331 END DO 332 CALL lbc_lnk( 332 CALL lbc_lnk("dynspg_ts",zhf, 'F', 1._wp ) 333 333 ! JC: TBC. hf should be greater than 0 334 334 DO jj = 1, jpj … … 777 777 END DO 778 778 END DO 779 CALL lbc_lnk_multi( 779 CALL lbc_lnk_multi("dynspg_ts",zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 780 780 ! 781 781 zhup2_e(:,:) = hu_0(:,:) + zwx(:,:) ! Ocean depth at U- and V-points … … 868 868 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 869 869 870 CALL lbc_lnk( 870 CALL lbc_lnk("dynspg_ts",ssha_e, 'T', 1._wp ) 871 871 872 872 ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) … … 888 888 END DO 889 889 END DO 890 CALL lbc_lnk_multi( 890 CALL lbc_lnk_multi("dynspg_ts",zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) 891 891 ENDIF 892 892 ! … … 1153 1153 ENDIF 1154 1154 ! !* domain lateral boundary 1155 CALL lbc_lnk_multi( 1155 CALL lbc_lnk_multi("dynspg_ts",ua_e, 'U', -1._wp, va_e , 'V', -1._wp ) 1156 1156 ! 1157 1157 ! ! open boundaries … … 1239 1239 END DO 1240 1240 END DO 1241 CALL lbc_lnk_multi( 1241 CALL lbc_lnk_multi("dynspg_ts",zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 1242 1242 ! 1243 1243 DO jk=1,jpkm1 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynvor.F90
r9598 r9814 242 242 END DO 243 243 ENDIF 244 CALL lbc_lnk( 244 CALL lbc_lnk("dynvor",zwz, 'F', 1. ) 245 245 DO jj = 2, jpj 246 246 DO ji = 2, jpi ! vector opt. … … 270 270 END DO 271 271 ENDIF 272 CALL lbc_lnk( 272 CALL lbc_lnk("dynvor",zwz, 'F', 1. ) 273 273 DO jj = 2, jpj 274 274 DO ji = 2, jpi ! vector opt. … … 635 635 ENDIF 636 636 ! 637 CALL lbc_lnk( 637 CALL lbc_lnk("dynvor",zwz, 'F', 1. ) 638 638 ! 639 639 ! !== horizontal fluxes ==! … … 765 765 ENDIF 766 766 ! 767 CALL lbc_lnk( 767 CALL lbc_lnk("dynvor",zwz, 'F', 1. ) 768 768 ! 769 769 ! !== horizontal fluxes ==! … … 863 863 END DO 864 864 ! 865 CALL lbc_lnk( 865 CALL lbc_lnk("dynvor",fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 866 866 ! 867 867 ENDIF … … 903 903 END DO 904 904 END DO 905 CALL lbc_lnk_multi( 905 CALL lbc_lnk_multi("dynvor",di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. ) ! Lateral boundary conditions 906 906 ! 907 907 CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) … … 913 913 END DO 914 914 END DO 915 CALL lbc_lnk_multi( 915 CALL lbc_lnk_multi("dynvor",di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. ) ! Lateral boundary conditions 916 916 END SELECT 917 917 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/sshwzv.F90
r9598 r9814 110 110 IF ( .NOT.ln_dynspg_ts ) THEN 111 111 IF( ln_bdy ) THEN 112 CALL lbc_lnk( 112 CALL lbc_lnk("sshwzv",ssha, 'T', 1. ) ! Not sure that's necessary 113 113 CALL bdy_ssh( ssha ) ! Duplicate sea level across open boundaries 114 114 ENDIF … … 174 174 END DO 175 175 END DO 176 CALL lbc_lnk( zhdiv, 'T', 1.) ! - ML - Perhaps not necessary: not used for horizontal "connexions"176 CALL lbc_lnk("sshwzv",zhdiv, 'T', 1.) ! - ML - Perhaps not necessary: not used for horizontal "connexions" 177 177 ! ! Is it problematic to have a wrong vertical velocity in boundary cells? 178 178 ! ! Same question holds for hdivn. Perhaps just for security -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/wet_dry.F90
r9168 r9814 241 241 END DO 242 242 END DO 243 CALL lbc_lnk_multi( 243 CALL lbc_lnk_multi("wet_dry",zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. ) 244 244 ! 245 245 IF( lk_mpp ) CALL mpp_max(jflag) !max over the global domain … … 257 257 ! 258 258 !!gm TO BE SUPPRESSED ? these lbc_lnk are useless since zwdlmtu and zwdlmtv are defined everywhere ! 259 CALL lbc_lnk_multi( 260 CALL lbc_lnk_multi( 259 CALL lbc_lnk_multi("wet_dry",un , 'U', -1., vn , 'V', -1. ) 260 CALL lbc_lnk_multi("wet_dry",un_b, 'U', -1., vn_b, 'V', -1. ) 261 261 !!gm 262 262 ! … … 370 370 END DO ! jj loop 371 371 ! 372 CALL lbc_lnk_multi( 372 CALL lbc_lnk_multi("wet_dry",zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. ) 373 373 ! 374 374 IF(lk_mpp) CALL mpp_max(jflag) !max over the global domain … … 382 382 ! 383 383 !!gm THIS lbc_lnk is useless since it is already done at the end of the jk1-loop 384 CALL lbc_lnk_multi( 384 CALL lbc_lnk_multi("wet_dry",zflxu, 'U', -1., zflxv, 'V', -1. ) 385 385 !!gm end 386 386 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbclv.F90
r9598 r9814 173 173 ! 174 174 DO jn = 1, nclasses 175 CALL lbc_lnk( 175 CALL lbc_lnk("icbclv",berg_grid%stored_ice(:,:,jn), 'T', 1._wp ) 176 176 END DO 177 CALL lbc_lnk( 177 CALL lbc_lnk("icbclv",berg_grid%stored_heat, 'T', 1._wp ) 178 178 ! 179 179 IF( nn_verbose_level > 0 .AND. icntmax > 1 ) WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbini.F90
r9598 r9814 114 114 END DO 115 115 END DO 116 CALL lbc_lnk( 117 CALL lbc_lnk( 116 CALL lbc_lnk("icbini",src_calving_hflx, 'T', 1._wp ) 117 CALL lbc_lnk("icbini",src_calving , 'T', 1._wp ) 118 118 119 119 ! work out interior of processor from exchange array -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/IOM/iom.F90
r9598 r9814 1285 1285 !--- overlap areas and extra hallows (mpp) 1286 1286 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 1287 CALL lbc_lnk( 1287 CALL lbc_lnk("iom",pv_r2d,'Z',-999.,'no0' ) 1288 1288 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 1289 1289 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 1290 1290 IF( icnt(3) == inlev ) THEN 1291 CALL lbc_lnk( 1291 CALL lbc_lnk("iom",pv_r3d,'Z',-999.,'no0' ) 1292 1292 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 1293 1293 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO … … 1314 1314 CALL xios_recv_field( trim(cdvar), pv_r3d) 1315 1315 IF(idom /= jpdom_unknown ) then 1316 CALL lbc_lnk( 1316 CALL lbc_lnk("iom",pv_r3d,'Z',-999.,'no0' ) 1317 1317 ENDIF 1318 1318 ELSEIF( PRESENT(pv_r2d) ) THEN … … 1321 1321 CALL xios_recv_field( trim(cdvar), pv_r2d) 1322 1322 IF(idom /= jpdom_unknown ) THEN 1323 CALL lbc_lnk( pv_r2d,'Z',-999.,'no0')1323 CALL lbc_lnk("iom",pv_r2d,'Z',-999.,'no0') 1324 1324 ENDIF 1325 1325 ELSEIF( PRESENT(pv_r1d) ) THEN … … 1336 1336 !some final adjustments 1337 1337 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 1338 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( 1339 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( 1338 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk("iom",pv_r2d,'Z',1. ) 1339 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk("iom",pv_r3d,'Z',1. ) 1340 1340 1341 1341 !--- Apply scale_factor and offset … … 1918 1918 SELECT CASE ( cdgrd ) 1919 1919 CASE('T') ; zmask(:,:,:) = tmask(:,:,:) 1920 CASE('U') ; zmask(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:) ; CALL lbc_lnk( 1921 CASE('V') ; zmask(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:) ; CALL lbc_lnk( 1920 CASE('U') ; zmask(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:) ; CALL lbc_lnk("iom",zmask, 'U', 1. ) 1921 CASE('V') ; zmask(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:) ; CALL lbc_lnk("iom",zmask, 'V', 1. ) 1922 1922 CASE('W') ; zmask(:,:,2:jpk ) = tmask(:,:,1:jpkm1) + tmask(:,:,2:jpk) ; zmask(:,:,1) = tmask(:,:,1) 1923 1923 END SELECT … … 1962 1962 ! 1963 1963 z_fld(:,:) = 1._wp 1964 CALL lbc_lnk( 1964 CALL lbc_lnk("iom",z_fld, cdgrd, -1. ) ! Working array for location of northfold 1965 1965 ! 1966 1966 ! Cell vertices that can be defined … … 1980 1980 ! Cell vertices on boundries 1981 1981 DO jn = 1, 4 1982 CALL lbc_lnk( 1983 CALL lbc_lnk( 1982 CALL lbc_lnk("iom",z_bnds(jn,:,:,1), cdgrd, 1., pval=999._wp ) 1983 CALL lbc_lnk("iom",z_bnds(jn,:,:,2), cdgrd, 1., pval=999._wp ) 1984 1984 END DO 1985 1985 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbc_lnk_multi_generic.h90
r9690 r9814 14 14 # define PTR_ptab pt4d 15 15 #endif 16 SUBROUTINE ROUTINE_MULTI( pt1, cdna1, psgn1, pt2, cdna2, psgn2, pt3, cdna3, psgn3 &16 SUBROUTINE ROUTINE_MULTI( rname, pt1, cdna1, psgn1, pt2, cdna2, psgn2, pt3, cdna3, psgn3 & 17 17 & , pt4, cdna4, psgn4, pt5, cdna5, psgn5, pt6, cdna6, psgn6 & 18 18 & , pt7, cdna7, psgn7, pt8, cdna8, psgn8, pt9, cdna9, psgn9, cd_mpp, pval) … … 31 31 CHARACTER(len=1) , DIMENSION(9) :: cdna_ptr ! nature of ptab_ptr grid-points 32 32 REAL(wp) , DIMENSION(9) :: psgn_ptr ! sign used across the north fold boundary 33 CHARACTER(len=*), INTENT(in ) :: rname ! name of the calling subroutine 33 34 !!--------------------------------------------------------------------- 34 35 ! … … 48 49 IF( PRESENT(psgn9) ) CALL ROUTINE_LOAD( pt9, cdna9, psgn9, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 49 50 ! 50 CALL lbc_lnk_ptr( ptab_ptr, cdna_ptr, psgn_ptr, kfld, cd_mpp, pval )51 CALL lbc_lnk_ptr( rname, ptab_ptr, cdna_ptr, psgn_ptr, kfld, cd_mpp, pval ) 51 52 ! 52 53 END SUBROUTINE ROUTINE_MULTI -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbclnk.F90
r9598 r9814 50 50 PUBLIC lbc_lnk_icb ! iceberg lateral boundary conditions 51 51 52 PUBLIC simulated_lbc_lnk 53 54 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, SAVE :: zdummy_halo 52 55 !!---------------------------------------------------------------------- 53 56 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 325 328 # undef DIM_4d 326 329 330 SUBROUTINE simulated_lbc_lnk () 331 332 INTEGER :: i 333 334 IF (.NOT. ALLOCATED(zdummy_halo) ) THEN 335 i = MAXVAL(icomm_sequence(:,2)) 336 ALLOCATE( zdummy_halo(jpi,jpj,jpk,i)) 337 zdummy_halo(:,:,:,:) = 0._wp 338 ENDIF 339 340 DO i = 1, n_sequence 341 ! unbufferize data 342 ! zdummy_halo(:,:,:,:) = zdummy_halo(:,:,:,:) + 1. 343 IF ( icomm_sequence(i,1) == 1 ) THEN 344 SELECT CASE ( icomm_sequence(i,2) ) 345 CASE (1) 346 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. ) 347 CASE (2) 348 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2) , 'U', -1. ) 349 CASE (3) 350 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2) , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.) 351 CASE (4) 352 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2) , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.) 353 CASE (5) 354 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2) , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.,zdummy_halo(:,:,1,5) , 'U', -1.) 355 CASE (6) 356 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2) , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.,zdummy_halo(:,:,1,5) , 'U', -1.,zdummy_halo(:,:,1,6) , 'U', -1.) 357 CASE (7) 358 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 359 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., & 360 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., & 361 zdummy_halo(:,:,1,7), 'U', -1.) 362 CASE (8) 363 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 364 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., & 365 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., & 366 zdummy_halo(:,:,1,7), 'U', -1., zdummy_halo(:,:,1,8), 'U', -1.) 367 CASE (9) 368 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 369 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., & 370 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., & 371 zdummy_halo(:,:,1,7), 'U', -1., zdummy_halo(:,:,1,8), 'U', -1., & 372 zdummy_halo(:,:,1,9), 'U', -1.) 373 CASE DEFAULT 374 WRITE(6,*) ' Warning (simulated_lbc_lnk): multi array dimension > 9, not transmitted ' 375 END SELECT 376 ELSE 377 SELECT CASE ( icomm_sequence(i,2) ) 378 CASE (1) 379 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1.) 380 CASE (2) 381 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2) , 'U', -1.) 382 CASE (3) 383 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2) , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.) 384 CASE (4) 385 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2) , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.) 386 CASE (5) 387 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2) , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.,zdummy_halo(:,:,:,5) , 'U', -1.) 388 CASE (6) 389 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2) , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.,zdummy_halo(:,:,:,5) , 'U', -1.,zdummy_halo(:,:,:,6) , 'U', -1.) 390 CASE (7) 391 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 392 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., & 393 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., & 394 zdummy_halo(:,:,:,7), 'U', -1.) 395 CASE (8) 396 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 397 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., & 398 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., & 399 zdummy_halo(:,:,:,7), 'U', -1., zdummy_halo(:,:,:,8), 'U', -1.) 400 CASE (9) 401 CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 402 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., & 403 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., & 404 zdummy_halo(:,:,:,7), 'U', -1., zdummy_halo(:,:,:,8), 'U', -1., & 405 zdummy_halo(:,:,:,9), 'U', -1.) 406 CASE DEFAULT 407 WRITE(6,*) ' Warning (simulated_lbc_lnk): multi 3D array dimension > 9, not transmitted ' 408 END SELECT 409 ENDIF 410 ENDDO 411 412 END SUBROUTINE simulated_lbc_lnk 327 413 !!====================================================================== 328 414 END MODULE lbclnk -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lib_mpp.F90
r9772 r9814 1625 1625 ELSE 1626 1626 IF ( ncom_stp > nit000 ) tac_wt = tac_wt + MPI_Wtime() - tic_wt 1627 IF ( ( ncom_stp == ( nitend - 1) ) .AND. l_write_wt ) then1627 IF ( ( ncom_stp == ( nitend - nn_comm_mod ) ) .AND. l_write_wt ) then 1628 1628 WRITE(6,'(A20,F11.6,A15,I8)') 'Computing time : ',tac_ct,' on MPI rank : ', narea 1629 1629 WRITE(6,'(A20,F11.6,A15,I8)') 'Waiting time : ',tac_wt,' on MPI rank : ', narea … … 1838 1838 END SUBROUTINE mppmax_real_multiple 1839 1839 1840 SUBROUTINE simulated_lbc_lnk () 1841 WRITE(*,*) 'simulated_lbc_lnk: You should not have seen this print! error?' 1842 END SUBROUTINE simulated_lbc_lnk () 1840 1843 #endif 1841 1844 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_lnk_generic.h90
r9772 r9814 46 46 47 47 #if defined MULTI 48 SUBROUTINE ROUTINE_LNK( ptab, cd_nat, psgn, kfld, cd_mpp, pval )48 SUBROUTINE ROUTINE_LNK( rname, ptab, cd_nat, psgn, kfld, cd_mpp, pval ) 49 49 INTEGER , INTENT(in ) :: kfld ! number of pt3d arrays 50 50 #else 51 SUBROUTINE ROUTINE_LNK( ptab, cd_nat, psgn , cd_mpp, pval )51 SUBROUTINE ROUTINE_LNK( rname, ptab, cd_nat, psgn , cd_mpp, pval ) 52 52 #endif 53 53 ARRAY_TYPE(:,:,:,:,:) ! array or pointer of arrays on which the boundary condition is applied … … 56 56 CHARACTER(len=3), OPTIONAL , INTENT(in ) :: cd_mpp ! fill the overlap area only 57 57 REAL(wp) , OPTIONAL , INTENT(in ) :: pval ! background value (used at closed boundaries) 58 CHARACTER(len=*), INTENT(in ) :: rname ! name of the calling subroutine 58 59 ! 59 60 INTEGER :: ji, jj, jk, jl, jh, jf ! dummy loop indices … … 155 156 icomm_sequence(n_sequence,2) = ipf 156 157 ! write(6,'(A,6I4)') 'size comm ', nn_hls, jpi, jpj, ipk, ipl, ipf 157 ELSE IF ( mpprank == 0 .AND. ncom_stp == (nit000+1) .AND. l_print_comm_report ) THEN 158 write(6,*) 'Communication pattern report : ' 159 write(6,*) ' ' 160 write(6,'(A,I3)') ' Exchanged halos : ', n_sequence 161 jj = 0; jk = 0; jf = 0; jh = 0 162 DO ji = 1, n_sequence 163 IF ( icomm_sequence(ji,1) .gt. 1 ) jk = jk + 1 164 IF ( icomm_sequence(ji,2) .gt. 1 ) jf = jf + 1 165 IF ( icomm_sequence(ji,1) .gt. 1 .AND. icomm_sequence(ji,2) .gt. 1 ) jj = jj + 1 166 jh = MAX (jh, icomm_sequence(ji,1)*icomm_sequence(ji,2)) 167 END DO 168 write(6,'(A,I3)') ' 3D Exchanged halos : ', jk 169 write(6,'(A,I3)') ' Multi arrays exchanged halos : ', jf 170 write(6,'(A,I3)') ' from which 3D : ', jj 171 write(6,'(A,I10)') ' array max size : ', jh*jpi*jpj 172 l_print_comm_report = .FALSE. 158 ELSE IF ( mpprank == 0 .AND. ncom_stp == (nit000+1) ) THEN 159 IF ( l_print_comm_report ) THEN 160 write(6,*) 'Communication pattern report : ' 161 write(6,*) ' ' 162 write(6,'(A,I3)') ' Exchanged halos : ', n_sequence 163 jj = 0; jk = 0; jf = 0; jh = 0 164 DO ji = 1, n_sequence 165 IF ( icomm_sequence(ji,1) .gt. 1 ) jk = jk + 1 166 IF ( icomm_sequence(ji,2) .gt. 1 ) jf = jf + 1 167 IF ( icomm_sequence(ji,1) .gt. 1 .AND. icomm_sequence(ji,2) .gt. 1 ) jj = jj + 1 168 jh = MAX (jh, icomm_sequence(ji,1)*icomm_sequence(ji,2)) 169 END DO 170 write(6,'(A,I3)') ' 3D Exchanged halos : ', jk 171 write(6,'(A,I3)') ' Multi arrays exchanged halos : ', jf 172 write(6,'(A,I3)') ' from which 3D : ', jj 173 write(6,'(A,I10)') ' array max size : ', jh*jpi*jpj 174 write(6,*) ' ' 175 l_print_comm_report = .FALSE. 176 END IF 177 write(6,'(A19,A)') 'calling subroutine ', TRIM(rname) 173 178 END IF 174 179 ! … … 177 182 CALL tic_tac(.TRUE.) 178 183 ! 184 IF ( TRIM(rname) == "simulated_lbc_lnk" ) THEN 185 zt3we = zt3we + 1. ; zt3ew = zt3ew + 1. 186 ENDIF 179 187 SELECT CASE ( nbondi ) 180 188 CASE ( -1 ) … … 255 263 ! 256 264 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 265 IF ( TRIM(rname) == "simulated_lbc_lnk" ) THEN 266 zt3sn = zt3sn + 1. ; zt3ns = zt3ns + 1. 267 ENDIF 257 268 258 269 SELECT CASE ( nbondj ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_nfd_generic.h90
r9690 r9814 110 110 END DO 111 111 END DO 112 ! 113 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 114 ! start waiting time measurement 115 CALL tic_tac(.TRUE.) 112 116 ! 113 117 DO jr = 1, nsndto … … 157 161 END DO 158 162 ENDIF 163 ! stop waiting time measurement 164 CALL tic_tac(.FALSE.) 165 ENDIF 166 ! 159 167 DO jf = 1, ipf 160 168 CALL lbc_nfd_nogather( ztabl(:,:,:,:,jf), ztabr(:,:,:,:,jf), cd_nat LBC_ARG, psgn LBC_ARG ) ! North fold boundary condition … … 179 187 ALLOCATE( znorthgloio(jpimax,4,ipk,ipl,ipf,jpni) ) 180 188 ! 181 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & 182 & znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr ) 189 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 190 ! start waiting time measurement 191 CALL tic_tac(.TRUE.) 192 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 193 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & 194 & znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr ) 195 ENDIF 196 ! 197 ! stop waiting time measurement 198 CALL tic_tac(.FALSE.) 199 ENDIF 183 200 ! 184 201 ztab(:,:,:,:,:) = 0._wp -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mppini.F90
r9772 r9814 62 62 jpi = jpiglo 63 63 jpj = jpjglo 64 jpk = jp jglo64 jpk = jpkglo 65 65 jpim1 = jpi-1 ! inner domain indices 66 66 jpjm1 = jpj-1 ! " " -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfc1d_c2d.F90
r9598 r9814 87 87 END DO 88 88 END DO 89 CALL lbc_lnk( 89 CALL lbc_lnk("ldfc1d_c2d",pah2, 'F', 1. ) ! Lateral boundary conditions 90 90 ! 91 91 CASE( 'TRA' ) ! U- and V-points (zdep1 & 2 are an approximation in zps-coord.) … … 101 101 END DO 102 102 ! Lateral boundary conditions 103 CALL lbc_lnk_multi( 103 CALL lbc_lnk_multi("ldfc1d_c2d",pah1, 'U', 1. , pah2, 'V', 1. ) 104 104 ! 105 105 CASE DEFAULT ! error -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfdyn.F90
r9598 r9814 399 399 ENDIF 400 400 ! 401 CALL lbc_lnk_multi( 401 CALL lbc_lnk_multi("ldfdyn",ahmt, 'T', 1., ahmf, 'F', 1. ) 402 402 ! 403 403 ! … … 477 477 ENDIF 478 478 ! 479 CALL lbc_lnk_multi( 479 CALL lbc_lnk_multi("ldfdyn",ahmt, 'T', 1. , ahmf, 'F', 1. ) 480 480 ! 481 481 END SELECT -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfslp.F90
r9736 r9814 232 232 END DO 233 233 END DO 234 CALL lbc_lnk_multi( 234 CALL lbc_lnk_multi("ldfslp",zwz, 'U', -1., zww, 'V', -1. ) ! lateral boundary conditions 235 235 ! 236 236 ! !* horizontal Shapiro filter … … 314 314 END DO 315 315 END DO 316 CALL lbc_lnk_multi( 316 CALL lbc_lnk_multi("ldfslp",zwz, 'T', -1., zww, 'T', -1. ) ! lateral boundary conditions 317 317 ! 318 318 ! !* horizontal Shapiro filter … … 363 363 ! IV. Lateral boundary conditions 364 364 ! =============================== 365 CALL lbc_lnk_multi( 365 CALL lbc_lnk_multi("ldfslp",uslp , 'U', -1. , vslp , 'V', -1. , wslpi, 'W', -1., wslpj, 'W', -1. ) 366 366 367 367 IF(ln_ctl) THEN … … 611 611 wslp2(:,:,1) = 0._wp ! force the surface wslp to zero 612 612 613 CALL lbc_lnk( 613 CALL lbc_lnk("ldfslp",wslp2, 'W', 1. ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked 614 614 ! 615 615 IF( ln_timing ) CALL timing_stop('ldf_slp_triad') … … 725 725 END DO 726 726 !!gm this lbc_lnk should be useless.... 727 CALL lbc_lnk_multi( 727 CALL lbc_lnk_multi("ldfslp",uslpml , 'U', -1. , vslpml , 'V', -1. , wslpiml, 'W', -1. , wslpjml, 'W', -1. ) 728 728 ! 729 729 END SUBROUTINE ldf_slp_mxl … … 793 793 ! END DO 794 794 ! END DO 795 ! CALL lbc_lnk_multi( uslp , 'U', -1. ; CALL lbc_lnk(vslp , 'V', -1., wslpi, 'W', -1., wslpj, 'W', -1. )795 ! CALL lbc_lnk_multi("ldfslp",uslp , 'U', -1. ; CALL lbc_lnk("ldfslp",vslp , 'V', -1., wslpi, 'W', -1., wslpj, 'W', -1. ) 796 796 !!gm ENDIF 797 797 ENDIF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldftra.F90
r9737 r9814 707 707 END DO 708 708 END DO 709 CALL lbc_lnk( 709 CALL lbc_lnk("ldftra",zaeiw(:,:), 'W', 1. ) ! lateral boundary condition 710 710 ! 711 711 DO jj = 2, jpjm1 !== aei at u- and v-points ==! … … 715 715 END DO 716 716 END DO 717 CALL lbc_lnk_multi( 717 CALL lbc_lnk_multi("ldftra",paeiu(:,:,1), 'U', 1. , paeiv(:,:,1), 'V', 1. ) ! lateral boundary condition 718 718 719 719 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! … … 821 821 !!gm to be redesigned.... 822 822 ! !== eiv stream function: output ==! 823 CALL lbc_lnk_multi( 823 CALL lbc_lnk_multi("ldftra",psi_uw, 'U', -1. , psi_vw, 'V', -1. ) 824 824 ! 825 825 !!gm CALL iom_put( "psi_eiv_uw", psi_uw ) ! output … … 848 848 END DO 849 849 END DO 850 CALL lbc_lnk( 850 CALL lbc_lnk("ldftra",zw3d, 'T', 1. ) ! lateral boundary condition 851 851 CALL iom_put( "woce_eiv", zw3d ) 852 852 ! … … 865 865 END DO 866 866 END DO 867 CALL lbc_lnk( 868 CALL lbc_lnk( 867 CALL lbc_lnk("ldftra",zw2d, 'U', -1. ) 868 CALL lbc_lnk("ldftra",zw3d, 'U', -1. ) 869 869 CALL iom_put( "ueiv_heattr" , zztmp * zw2d ) ! heat transport in i-direction 870 870 CALL iom_put( "ueiv_heattr3d", zztmp * zw3d ) ! heat transport in i-direction … … 881 881 END DO 882 882 END DO 883 CALL lbc_lnk( 883 CALL lbc_lnk("ldftra",zw2d, 'V', -1. ) 884 884 CALL iom_put( "veiv_heattr", zztmp * zw2d ) ! heat transport in j-direction 885 885 CALL iom_put( "veiv_heattr", zztmp * zw3d ) ! heat transport in j-direction … … 900 900 END DO 901 901 END DO 902 CALL lbc_lnk( 903 CALL lbc_lnk( 902 CALL lbc_lnk("ldftra",zw2d, 'U', -1. ) 903 CALL lbc_lnk("ldftra",zw3d, 'U', -1. ) 904 904 CALL iom_put( "ueiv_salttr", zztmp * zw2d ) ! salt transport in i-direction 905 905 CALL iom_put( "ueiv_salttr3d", zztmp * zw3d ) ! salt transport in i-direction … … 916 916 END DO 917 917 END DO 918 CALL lbc_lnk( 918 CALL lbc_lnk("ldftra",zw2d, 'V', -1. ) 919 919 CALL iom_put( "veiv_salttr", zztmp * zw2d ) ! salt transport in j-direction 920 920 CALL iom_put( "veiv_salttr", zztmp * zw3d ) ! salt transport in j-direction -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/cpl_oasis3.F90
r9598 r9814 410 410 !--- Fill the overlap areas and extra hallows (mpp) 411 411 !--- check periodicity conditions (all cases) 412 IF( .not. llfisrt ) CALL lbc_lnk( 412 IF( .not. llfisrt ) CALL lbc_lnk("cpl_oasis3",pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn ) 413 413 414 414 ENDDO -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/fldread.F90
r9598 r9814 669 669 IF( sdjf%ln_tint ) THEN 670 670 CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1) ) 671 CALL lbc_lnk( 671 CALL lbc_lnk("fldread",sdjf%fdta(:,:,1,2),'Z',1. ) 672 672 ELSE 673 673 CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1 ), sdjf%nrec_a(1) ) 674 CALL lbc_lnk( 674 CALL lbc_lnk("fldread",sdjf%fnow(:,:,1 ),'Z',1. ) 675 675 ENDIF 676 676 ELSE … … 683 683 IF( sdjf%ln_tint ) THEN 684 684 CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1) ) 685 CALL lbc_lnk( 685 CALL lbc_lnk("fldread",sdjf%fdta(:,:,:,2),'Z',1. ) 686 686 ELSE 687 687 CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,: ), sdjf%nrec_a(1) ) 688 CALL lbc_lnk( 688 CALL lbc_lnk("fldread",sdjf%fnow(:,:,: ),'Z',1. ) 689 689 ENDIF 690 690 ELSE -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/geo2ocean.F90
r9598 r9814 280 280 ! =========================== ! 281 281 ! ! lateral boundary cond.: T-, U-, V-, F-pts, sgn 282 CALL lbc_lnk_multi( 282 CALL lbc_lnk_multi("geo2ocean",gcost, 'T', -1., gsint, 'T', -1., gcosu, 'U', -1., gsinu, 'U', -1., & 283 283 & gcosv, 'V', -1., gsinv, 'V', -1., gcosf, 'F', -1., gsinf, 'F', -1. ) 284 284 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbc_oce.F90
r9598 r9814 216 216 END DO 217 217 END DO 218 CALL lbc_lnk( 218 CALL lbc_lnk("sbc_oce",wndm(:,:) , 'T', 1. ) 219 219 ! 220 220 END SUBROUTINE sbc_tau2wnd -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcblk.F90
r9752 r9814 407 407 END DO 408 408 END DO 409 CALL lbc_lnk_multi( 409 CALL lbc_lnk_multi("sbcblk",zwnd_i, 'T', -1., zwnd_j, 'T', -1. ) 410 410 ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) 411 411 wndm(:,:) = SQRT( zwnd_i(:,:) * zwnd_i(:,:) & … … 485 485 END DO 486 486 END DO 487 CALL lbc_lnk_multi( 487 CALL lbc_lnk_multi("sbcblk",utau, 'U', -1., vtau, 'V', -1. ) 488 488 489 489 ! Turbulent fluxes over ocean … … 732 732 END DO 733 733 END DO 734 CALL lbc_lnk( 734 CALL lbc_lnk("sbcblk",wndm_ice, 'T', 1. ) 735 735 ! 736 736 CASE( 'C' ) ! C-grid ice dynamics : U & V-points (same as ocean) … … 742 742 END DO 743 743 END DO 744 CALL lbc_lnk( 744 CALL lbc_lnk("sbcblk",wndm_ice, 'T', 1. ) 745 745 ! 746 746 END SELECT … … 784 784 END DO 785 785 END DO 786 CALL lbc_lnk_multi( 786 CALL lbc_lnk_multi("sbcblk",utau_ice, 'I', -1., vtau_ice, 'I', -1. ) 787 787 ! 788 788 CASE( 'C' ) ! C-grid ice dynamics : U & V-points (same as ocean) … … 795 795 END DO 796 796 END DO 797 CALL lbc_lnk_multi( 797 CALL lbc_lnk_multi("sbcblk",utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 798 798 ! 799 799 END SELECT … … 1218 1218 END DO 1219 1219 END DO 1220 CALL lbc_lnk_multi( 1220 CALL lbc_lnk_multi("sbcblk",Cd, 'T', 1., Ch, 'T', 1. ) 1221 1221 ! 1222 1222 END SUBROUTINE Cdn10_Lupkes2015 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbccpl.F90
r9598 r9814 1162 1162 END DO 1163 1163 END DO 1164 CALL lbc_lnk_multi( 1164 CALL lbc_lnk_multi("sbccpl",frcv(jpr_otx1)%z3(:,:,1), 'U', -1., frcv(jpr_oty1)%z3(:,:,1), 'V', -1. ) 1165 1165 ENDIF 1166 1166 llnewtx = .TRUE. … … 1189 1189 END DO 1190 1190 END DO 1191 CALL lbc_lnk( 1191 CALL lbc_lnk("sbccpl",frcv(jpr_taum)%z3(:,:,1), 'T', 1. ) 1192 1192 llnewtau = .TRUE. 1193 1193 ELSE … … 1577 1577 END SELECT 1578 1578 IF( srcv(jpr_itx1)%clgrid /= 'I' ) THEN 1579 CALL lbc_lnk_multi( 1579 CALL lbc_lnk_multi("sbccpl",p_taui, 'I', -1., p_tauj, 'I', -1. ) 1580 1580 ENDIF 1581 1581 ! … … 1610 1610 END SELECT 1611 1611 IF( srcv(jpr_itx1)%clgrid /= 'F' ) THEN 1612 CALL lbc_lnk_multi( 1612 CALL lbc_lnk_multi("sbccpl",p_taui, 'F', -1., p_tauj, 'F', -1. ) 1613 1613 ENDIF 1614 1614 ! … … 1641 1641 END SELECT 1642 1642 IF( srcv(jpr_itx1)%clgrid /= 'U' ) THEN 1643 CALL lbc_lnk_multi( 1643 CALL lbc_lnk_multi("sbccpl",p_taui, 'U', -1., p_tauj, 'V', -1. ) 1644 1644 ENDIF 1645 1645 END SELECT … … 2426 2426 END DO 2427 2427 END SELECT 2428 CALL lbc_lnk_multi( 2428 CALL lbc_lnk_multi("sbccpl",zitx1, 'T', -1., zity1, 'T', -1. ) 2429 2429 CASE( 'mixed oce-ice' ) 2430 2430 SELECT CASE ( cp_ice_msh ) … … 2462 2462 END SELECT 2463 2463 END SELECT 2464 CALL lbc_lnk_multi( 2464 CALL lbc_lnk_multi("sbccpl",zotx1, ssnd(jps_ocx1)%clgrid, -1., zoty1, ssnd(jps_ocy1)%clgrid, -1. ) 2465 2465 ! 2466 2466 ENDIF … … 2559 2559 END DO 2560 2560 END SELECT 2561 CALL lbc_lnk_multi( 2561 CALL lbc_lnk_multi("sbccpl",zitx1, 'T', -1., zity1, 'T', -1. ) 2562 2562 CASE( 'mixed oce-ice' ) 2563 2563 SELECT CASE ( cp_ice_msh ) … … 2595 2595 END SELECT 2596 2596 END SELECT 2597 CALL lbc_lnk_multi( 2597 CALL lbc_lnk_multi("sbccpl",zotx1, ssnd(jps_ocxw)%clgrid, -1., zoty1, ssnd(jps_ocyw)%clgrid, -1. ) 2598 2598 ! 2599 2599 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcflx.F90
r9727 r9814 157 157 END DO 158 158 taum(:,:) = taum(:,:) * tmask(:,:,1) ; wndm(:,:) = wndm(:,:) * tmask(:,:,1) 159 CALL lbc_lnk( taum(:,:), 'T', 1. ) ; CALL lbc_lnk(wndm(:,:), 'T', 1. )159 CALL lbc_lnk("sbcflx",taum(:,:), 'T', 1. ) ; CALL lbc_lnk("sbcflx",wndm(:,:), 'T', 1. ) 160 160 161 161 IF( nitend-nit000 <= 100 .AND. lwp ) THEN ! control print (if less than 100 time-step asked) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcfwb.F90
r9598 r9814 178 178 ! 179 179 !!gm ===>>>> lbc_lnk should be useless as all the computation is done over the whole domain ! 180 CALL lbc_lnk( 180 CALL lbc_lnk("sbcfwb",zerp_cor, 'T', 1. ) 181 181 ! 182 182 emp(:,:) = emp(:,:) + zerp_cor(:,:) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcice_cice.F90
r9598 r9814 217 217 ENDDO 218 218 219 CALL lbc_lnk_multi( 219 CALL lbc_lnk_multi("sbcice_cice",fr_iu , 'U', 1., fr_iv , 'V', 1. ) 220 220 221 221 ! set the snow+ice mass … … 513 513 ENDDO 514 514 ENDDO 515 CALL lbc_lnk( 515 CALL lbc_lnk("sbcice_cice",ss_iou , 'U', -1. ) 516 516 517 517 ! y comp of ocean-ice stress … … 525 525 ENDDO 526 526 ENDDO 527 CALL lbc_lnk( 527 CALL lbc_lnk("sbcice_cice",ss_iov , 'V', -1. ) 528 528 529 529 ! x and y comps of surface stress … … 578 578 fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 579 579 580 CALL lbc_lnk_multi( 580 CALL lbc_lnk_multi("sbcice_cice",emp , 'T', 1., sfx , 'T', 1. ) 581 581 582 582 ! Solar penetrative radiation and non solar surface heat flux … … 604 604 #endif 605 605 qsr(:,:)=qsr(:,:)+ztmp1(:,:) 606 CALL lbc_lnk( 606 CALL lbc_lnk("sbcice_cice",qsr , 'T', 1. ) 607 607 608 608 DO jj=1,jpj … … 619 619 qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 620 620 621 CALL lbc_lnk( 621 CALL lbc_lnk("sbcice_cice",qns , 'T', 1. ) 622 622 623 623 ! Prepare for the following CICE time-step … … 639 639 ENDDO 640 640 641 CALL lbc_lnk_multi( 641 CALL lbc_lnk_multi("sbcice_cice",fr_iu , 'U', 1., fr_iv , 'V', 1. ) 642 642 643 643 ! set the snow+ice mass … … 863 863 ! A. Ensure all haloes are filled in NEMO field (pn) 864 864 865 CALL lbc_lnk( 865 CALL lbc_lnk("sbcice_cice",pn , cd_type, psgn ) 866 866 867 867 #if defined key_nemocice_decomp … … 1040 1040 ! D. Ensure all haloes are filled in pn 1041 1041 1042 CALL lbc_lnk( 1042 CALL lbc_lnk("sbcice_cice",pn , cd_type, psgn ) 1043 1043 1044 1044 END SUBROUTINE cice2nemo -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcisf.F90
r9728 r9814 157 157 158 158 ! lbclnk 159 CALL lbc_lnk_multi( 159 CALL lbc_lnk_multi("sbcisf",risf_tsc(:,:,jp_tem), 'T', 1., risf_tsc(:,:,jp_sal), 'T', 1., fwfisf,'T', 1., qisf, 'T', 1.) 160 160 ! output 161 161 IF( iom_use('iceshelf_cea') ) CALL iom_put( 'iceshelf_cea', -fwfisf(:,:) ) ! isf mass flux … … 722 722 END DO 723 723 END DO 724 CALL lbc_lnk_multi( 724 CALL lbc_lnk_multi("sbcisf",pgt, 'T', 1., pgs, 'T', 1.) 725 725 END SELECT 726 726 ! … … 779 779 END DO 780 780 END DO 781 CALL lbc_lnk( pvarout,'T',-1.)781 CALL lbc_lnk("sbcisf",pvarout,'T',-1.) 782 782 783 783 CASE ( 'V' ) ! compute V in the top boundary layer at T- point … … 811 811 END DO 812 812 END DO 813 CALL lbc_lnk( pvarout,'T',-1.)813 CALL lbc_lnk("sbcisf",pvarout,'T',-1.) 814 814 815 815 CASE ( 'T' ) ! compute T in the top boundary layer at T- point -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcmod.F90
r9656 r9814 448 448 !!$!RBbug do not understand why see ticket 667 449 449 !!$!clem: it looks like it is necessary for the north fold (in certain circumstances). Don't know why. 450 !!$ CALL lbc_lnk( 450 !!$ CALL lbc_lnk("sbcmod",emp, 'T', 1. ) 451 451 ! 452 452 IF( kt == nit000 ) THEN ! set the forcing field at nit000 - 1 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcwave.F90
r9598 r9814 210 210 ENDIF 211 211 212 CALL lbc_lnk_multi( 212 CALL lbc_lnk_multi("sbcwave",usd, 'U', -1., vsd, 'V', -1. ) 213 213 214 214 ! … … 235 235 #endif 236 236 ! 237 CALL lbc_lnk( 237 CALL lbc_lnk("sbcwave",ze3divh, 'T', 1. ) 238 238 ! 239 239 IF( ln_linssh ) THEN ; ik = 1 ! none zero velocity through the sea surface … … 296 296 END DO 297 297 END DO 298 CALL lbc_lnk_multi( 298 CALL lbc_lnk_multi("sbcwave",utau(:,:), 'U', -1. , vtau(:,:), 'V', -1. , taum(:,:) , 'T', -1. ) 299 299 ENDIF 300 300 ! -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopar.F90
r9598 r9814 172 172 ! Apply horizontal Laplacian filter to w 173 173 DO jflt = 1, sto2d_flt(jsto) 174 CALL lbc_lnk( 174 CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 175 175 CALL sto_par_flt( sto2d(:,:,jsto) ) 176 176 END DO … … 195 195 196 196 ! Lateral boundary conditions on sto2d 197 CALL lbc_lnk( 197 CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 198 198 END DO 199 199 ! … … 210 210 ! Apply horizontal Laplacian filter to w 211 211 DO jflt = 1, sto3d_flt(jsto) 212 CALL lbc_lnk( 212 CALL lbc_lnk("stopar",sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 213 213 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 214 214 END DO … … 233 233 END DO 234 234 ! Lateral boundary conditions on sto3d 235 CALL lbc_lnk( 235 CALL lbc_lnk("stopar",sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 236 236 END DO 237 237 ! … … 642 642 ! Apply horizontal Laplacian filter to w 643 643 DO jflt = 1, sto2d_flt(jsto) 644 CALL lbc_lnk( 644 CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 645 645 CALL sto_par_flt( sto2d(:,:,jsto) ) 646 646 END DO … … 659 659 ! Apply horizontal Laplacian filter to w 660 660 DO jflt = 1, sto3d_flt(jsto) 661 CALL lbc_lnk( 661 CALL lbc_lnk("stopar",sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 662 662 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 663 663 END DO -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopts.F90
r9598 r9814 54 54 55 55 DO jts = 1, jpts 56 CALL lbc_lnk( 56 CALL lbc_lnk("stopts",pts(:,:,:,jts), 'T' , 1._wp ) 57 57 ENDDO 58 58 … … 123 123 DO jdof = 1, nn_sto_eos 124 124 DO jts = 1, jpts 125 CALL lbc_lnk( 125 CALL lbc_lnk("stopts",pts_ran(:,:,:,jts,jdof), 'T' , 1._wp ) 126 126 END DO 127 127 END DO -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/eosbn2.F90
r9757 r9814 533 533 END DO 534 534 ! 535 CALL lbc_lnk( 535 CALL lbc_lnk("eosbn2",prd, 'T', 1. ) ! Lateral boundary conditions 536 536 ! 537 537 CASE( np_seos ) !== simplified EOS ==! … … 553 553 END DO 554 554 ! 555 CALL lbc_lnk( 555 CALL lbc_lnk("eosbn2",prd, 'T', 1. ) ! Lateral boundary conditions 556 556 ! 557 557 END SELECT … … 756 756 END DO 757 757 ! ! Lateral boundary conditions 758 CALL lbc_lnk_multi( 758 CALL lbc_lnk_multi("eosbn2",pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. ) 759 759 ! 760 760 CASE( np_seos ) !== simplified EOS ==! … … 776 776 END DO 777 777 ! ! Lateral boundary conditions 778 CALL lbc_lnk_multi( 778 CALL lbc_lnk_multi("eosbn2",pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. ) 779 779 ! 780 780 CASE DEFAULT -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_cen.F90
r9598 r9814 123 123 END DO 124 124 END DO 125 CALL lbc_lnk_multi( 125 CALL lbc_lnk_multi("traadv_cen",ztu, 'U', -1. , ztv, 'V', -1. ) ! Lateral boundary cond. 126 126 ! 127 127 DO jk = 1, jpkm1 ! Horizontal advective fluxes -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_fct.F90
r9598 r9814 169 169 END DO 170 170 END DO 171 CALL lbc_lnk( 171 CALL lbc_lnk("traadv_fct",zwi, 'T', 1. ) ! Lateral boundary conditions on zwi (unchanged sign) 172 172 ! 173 173 IF( l_trd .OR. l_hst ) THEN ! trend diagnostics (contribution of upstream fluxes) … … 208 208 END DO 209 209 END DO 210 CALL lbc_lnk_multi( 210 CALL lbc_lnk_multi("traadv_fct",zltu, 'T', 1. , zltv, 'T', 1. ) ! Lateral boundary cond. (unchanged sgn) 211 211 ! 212 212 DO jk = 1, jpkm1 ! Horizontal advective fluxes … … 233 233 END DO 234 234 END DO 235 CALL lbc_lnk_multi( 235 CALL lbc_lnk_multi("traadv_fct",ztu, 'U', -1. , ztv, 'V', -1. ) ! Lateral boundary cond. (unchanged sgn) 236 236 ! 237 237 DO jk = 1, jpkm1 ! Horizontal advective fluxes … … 279 279 ENDIF 280 280 ! 281 CALL lbc_lnk_multi( 281 CALL lbc_lnk_multi("traadv_fct",zwx, 'U', -1. , zwy, 'V', -1., zwz, 'W', 1. ) 282 282 ! 283 283 ! !== monotonicity algorithm ==! … … 394 394 END DO 395 395 END DO 396 CALL lbc_lnk_multi( 396 CALL lbc_lnk_multi("traadv_fct",zbetup, 'T', 1. , zbetdo, 'T', 1. ) ! lateral boundary cond. (unchanged sign) 397 397 398 398 ! 3. monotonic flux in the i & j direction (paa & pbb) … … 420 420 END DO 421 421 END DO 422 CALL lbc_lnk_multi( 422 CALL lbc_lnk_multi("traadv_fct",paa, 'U', -1. , pbb, 'V', -1. ) ! lateral boundary condition (changed sign) 423 423 ! 424 424 END SUBROUTINE nonosc -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_mus.F90
r9598 r9814 140 140 END DO 141 141 ! lateral boundary conditions (changed sign) 142 CALL lbc_lnk_multi( 142 CALL lbc_lnk_multi("traadv_mus",zwx, 'U', -1. , zwy, 'V', -1. ) 143 143 ! !-- Slopes of tracer 144 144 zslpx(:,:,jpk) = 0._wp ! bottom values … … 188 188 END DO 189 189 END DO 190 CALL lbc_lnk_multi( 190 CALL lbc_lnk_multi("traadv_mus",zwx, 'U', -1. , zwy, 'V', -1. ) ! lateral boundary conditions (changed sign) 191 191 ! 192 192 DO jk = 1, jpkm1 !-- Tracer advective trend -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_qck.F90
r9598 r9814 150 150 END DO 151 151 END DO 152 CALL lbc_lnk_multi( 152 CALL lbc_lnk_multi("traadv_qck",zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. ) ! Lateral boundary conditions 153 153 154 154 ! … … 176 176 END DO 177 177 !--- Lateral boundary conditions 178 CALL lbc_lnk_multi( 178 CALL lbc_lnk_multi("traadv_qck",zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwx(:,:,:), 'T', 1. ) 179 179 180 180 !--- QUICKEST scheme … … 189 189 END DO 190 190 END DO 191 CALL lbc_lnk( 191 CALL lbc_lnk("traadv_qck",zfu(:,:,:), 'T', 1. ) ! Lateral boundary conditions 192 192 193 193 ! … … 207 207 END DO 208 208 ! 209 CALL lbc_lnk( 209 CALL lbc_lnk("traadv_qck",zwx(:,:,:), 'T', 1. ) ! Lateral boundary conditions 210 210 ! 211 211 ! Computation of the trend … … 265 265 END DO 266 266 END DO 267 CALL lbc_lnk_multi( 267 CALL lbc_lnk_multi("traadv_qck",zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. ) ! Lateral boundary conditions 268 268 269 269 … … 294 294 295 295 !--- Lateral boundary conditions 296 CALL lbc_lnk_multi( 296 CALL lbc_lnk_multi("traadv_qck",zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwy(:,:,:), 'T', 1. ) 297 297 298 298 !--- QUICKEST scheme … … 307 307 END DO 308 308 END DO 309 CALL lbc_lnk( 309 CALL lbc_lnk("traadv_qck",zfu(:,:,:), 'T', 1. ) !--- Lateral boundary conditions 310 310 ! 311 311 ! Tracer flux on the x-direction … … 324 324 END DO 325 325 ! 326 CALL lbc_lnk( 326 CALL lbc_lnk("traadv_qck",zwy(:,:,:), 'T', 1. ) ! Lateral boundary conditions 327 327 ! 328 328 ! Computation of the trend -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_ubs.F90
r9598 r9814 141 141 ! 142 142 END DO 143 CALL lbc_lnk( zltu, 'T', 1. ) ; CALL lbc_lnk(zltv, 'T', 1. ) ! Lateral boundary cond. (unchanged sgn)143 CALL lbc_lnk("traadv_ubs",zltu, 'T', 1. ) ; CALL lbc_lnk("traadv_ubs",zltv, 'T', 1. ) ! Lateral boundary cond. (unchanged sgn) 144 144 ! 145 145 DO jk = 1, jpkm1 !== Horizontal advective fluxes ==! (UBS) … … 226 226 END DO 227 227 END DO 228 CALL lbc_lnk( 228 CALL lbc_lnk("traadv_ubs",zti, 'T', 1. ) ! Lateral boundary conditions on zti, zsi (unchanged sign) 229 229 ! 230 230 ! !* anti-diffusive flux : high order minus low order -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbc.F90
r9598 r9814 92 92 END DO 93 93 ! 94 CALL lbc_lnk( 94 CALL lbc_lnk("trabbc",tsa(:,:,:,jp_tem) , 'T', 1. ) 95 95 ! 96 96 IF( l_trdtra ) THEN ! Send the trend for diagnostics -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbl.F90
r9598 r9814 123 123 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 124 124 ! lateral boundary conditions ; just need for outputs 125 CALL lbc_lnk_multi( 125 CALL lbc_lnk_multi("trabbl",ahu_bbl, 'U', 1. , ahv_bbl, 'V', 1. ) 126 126 CALL iom_put( "ahu_bbl", ahu_bbl ) ! bbl diffusive flux i-coef 127 127 CALL iom_put( "ahv_bbl", ahv_bbl ) ! bbl diffusive flux j-coef … … 136 136 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 137 137 ! lateral boundary conditions ; just need for outputs 138 CALL lbc_lnk_multi( 138 CALL lbc_lnk_multi("trabbl",utr_bbl, 'U', 1. , vtr_bbl, 'V', 1. ) 139 139 CALL iom_put( "uoce_bbl", utr_bbl ) ! bbl i-transport 140 140 CALL iom_put( "voce_bbl", vtr_bbl ) ! bbl j-transport … … 525 525 ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 526 526 zmbku(:,:) = REAL( mbku_d(:,:), wp ) ; zmbkv(:,:) = REAL( mbkv_d(:,:), wp ) 527 CALL lbc_lnk_multi( 527 CALL lbc_lnk_multi("trabbl",zmbku,'U',1., zmbkv,'V',1.) 528 528 mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ; mbkv_d(:,:) = MAX( INT( zmbkv(:,:) ), 1 ) 529 529 ! … … 548 548 END DO 549 549 END DO 550 CALL lbc_lnk_multi( 550 CALL lbc_lnk_multi("trabbl",e3u_bbl_0, 'U', 1. , e3v_bbl_0, 'V', 1. ) ! lateral boundary conditions 551 551 ! 552 552 ! !* masked diffusive flux coefficients -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traldf_lap_blp.F90
r9598 r9814 213 213 END SELECT 214 214 ! 215 CALL lbc_lnk( 215 CALL lbc_lnk("traldf_lap_blp",zlap(:,:,:,:) , 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 216 216 ! ! Partial top/bottom cell: GRADh( zlap ) 217 217 IF( ln_isfcav .AND. ln_zps ) THEN ; CALL zps_hde_isf( kt, kjpt, zlap, zglu, zglv, zgui, zgvi ) ! both top & bottom -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tramle.F90
r9598 r9814 319 319 END DO 320 320 END DO 321 CALL lbc_lnk_multi( 321 CALL lbc_lnk_multi("tramle",rfu, 'U', 1. , rfv, 'V', 1. ) 322 322 ! 323 323 ELSEIF( nn_mle == 1 ) THEN ! MLE array allocation & initialisation -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranpc.F90
r9598 r9814 309 309 ENDIF 310 310 ! 311 CALL lbc_lnk_multi( 311 CALL lbc_lnk_multi("tranpc",tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. ) 312 312 ! 313 313 IF( lwp .AND. l_LB_debug ) THEN -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranxt.F90
r9598 r9814 107 107 #endif 108 108 ! ! local domain boundaries (T-point, unchanged sign) 109 CALL lbc_lnk_multi( 109 CALL lbc_lnk_multi("tranxt",tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. ) 110 110 ! 111 111 IF( ln_bdy ) CALL bdy_tra( kt ) ! BDY open boundaries … … 163 163 ENDIF 164 164 ! 165 CALL lbc_lnk_multi( 165 CALL lbc_lnk_multi("tranxt",tsb(:,:,:,jp_tem), 'T', 1., tsb(:,:,:,jp_sal), 'T', 1., & 166 166 & tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., & 167 167 & tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traqsr.F90
r9598 r9814 275 275 END DO 276 276 END DO 277 CALL lbc_lnk( 277 CALL lbc_lnk("traqsr",fraqsr_1lev(:,:), 'T', 1._wp ) 278 278 ! 279 279 IF( iom_use('qsr3d') ) THEN ! output the shortwave Radiation distribution -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trazdf.F90
r9598 r9814 92 92 END DO 93 93 !!gm this should be moved in trdtra.F90 and done on all trends 94 CALL lbc_lnk_multi( 94 CALL lbc_lnk_multi("trazdf",ztrdt, 'T', 1. , ztrds, 'T', 1. ) 95 95 !!gm 96 96 CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/zpshde.F90
r9598 r9814 144 144 END DO 145 145 END DO 146 CALL lbc_lnk_multi( 146 CALL lbc_lnk_multi("zpshde",pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. ) ! Lateral boundary cond. 147 147 ! 148 148 END DO … … 183 183 END DO 184 184 END DO 185 CALL lbc_lnk_multi( 185 CALL lbc_lnk_multi("zpshde",pgru , 'U', -1. , pgrv , 'V', -1. ) ! Lateral boundary conditions 186 186 ! 187 187 END IF … … 305 305 END DO 306 306 END DO 307 CALL lbc_lnk_multi( 307 CALL lbc_lnk_multi("zpshde",pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. ) ! Lateral boundary cond. 308 308 ! 309 309 END DO … … 353 353 END DO 354 354 355 CALL lbc_lnk_multi( 355 CALL lbc_lnk_multi("zpshde",pgru , 'U', -1. , pgrv , 'V', -1. ) ! Lateral boundary conditions 356 356 ! 357 357 END IF … … 406 406 ! 407 407 END DO 408 CALL lbc_lnk_multi( 408 CALL lbc_lnk_multi("zpshde",pgtui(:,:,:), 'U', -1. , pgtvi(:,:,:), 'V', -1. ) ! Lateral boundary cond. 409 409 410 410 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 449 449 END DO 450 450 END DO 451 CALL lbc_lnk_multi( 451 CALL lbc_lnk_multi("zpshde",pgrui, 'U', -1. , pgrvi, 'V', -1. ) ! Lateral boundary conditions 452 452 ! 453 453 END IF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trddyn.F90
r9598 r9814 129 129 END DO 130 130 END DO 131 CALL lbc_lnk_multi( 131 CALL lbc_lnk_multi("trddyn",z3dx, 'U', -1., z3dy, 'V', -1. ) 132 132 CALL iom_put( "utrd_udx", z3dx ) 133 133 CALL iom_put( "vtrd_vdy", z3dy ) … … 165 165 ! END DO 166 166 ! END DO 167 ! CALL lbc_lnk_multi( 167 ! CALL lbc_lnk_multi("trddyn",z3dx, 'U', -1., z3dy, 'V', -1. ) 168 168 ! CALL iom_put( "utrd_bfr", z3dx ) 169 169 ! CALL iom_put( "vtrd_bfr", z3dy ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdken.F90
r9598 r9814 88 88 !!---------------------------------------------------------------------- 89 89 ! 90 CALL lbc_lnk_multi( 90 CALL lbc_lnk_multi("trdken",putrd, 'U', -1. , pvtrd, 'V', -1. ) ! lateral boundary conditions 91 91 ! 92 92 nkstp = kt -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdmxl.F90
r9598 r9814 152 152 !!gm to be put juste before the output ! 153 153 ! ! Lateral boundary conditions 154 ! CALL lbc_lnk_multi( 154 ! CALL lbc_lnk_multi("trdmxl",tmltrd(:,:,jl), 'T', 1. , smltrd(:,:,jl), 'T', 1. ) 155 155 !!gm end 156 156 … … 470 470 !-- Lateral boundary conditions 471 471 ! ... temperature ... ... salinity ... 472 CALL lbc_lnk_multi( 472 CALL lbc_lnk_multi("trdmxl",ztmltot , 'T', 1., zsmltot , 'T', 1., & 473 473 & ztmlres , 'T', 1., zsmlres , 'T', 1., & 474 474 & ztmlatf , 'T', 1., zsmlatf , 'T', 1. ) … … 521 521 !-- Lateral boundary conditions 522 522 ! ... temperature ... ... salinity ... 523 CALL lbc_lnk_multi( 523 CALL lbc_lnk_multi("trdmxl",ztmltot2, 'T', 1., zsmltot2, 'T', 1., & 524 524 & ztmlres2, 'T', 1., zsmlres2, 'T', 1. ) 525 525 ! 526 CALL lbc_lnk_multi( 526 CALL lbc_lnk_multi("trdmxl",ztmltrd2(:,:,:), 'T', 1., zsmltrd2(:,:,:), 'T', 1. ) ! / in the NetCDF trends file 527 527 528 528 ! III.3 Time evolution array swap -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdvor.F90
r9598 r9814 161 161 162 162 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp ! Initialisation 163 CALL lbc_lnk_multi( 163 CALL lbc_lnk_multi("trdvor",putrdvor, 'U', -1. , pvtrdvor, 'V', -1. ) ! lateral boundary condition 164 164 165 165 … … 250 250 zvdpvor(:,:) = 0._wp 251 251 ! ! lateral boundary condition on input momentum trends 252 CALL lbc_lnk_multi( 252 CALL lbc_lnk_multi("trdvor",putrdvor, 'U', -1. , pvtrdvor, 'V', -1. ) 253 253 254 254 ! ===================================== … … 395 395 396 396 ! Boundary conditions 397 CALL lbc_lnk_multi( 397 CALL lbc_lnk_multi("trdvor",vor_avrtot, 'F', 1. , vor_avrres, 'F', 1. ) 398 398 399 399 -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_fmask.F90
r9598 r9814 143 143 ENDIF 144 144 ! 145 CALL lbc_lnk( 145 CALL lbc_lnk("usrdef_fmask",pfmsk, 'F', 1._wp ) ! Lateral boundary conditions on fmask 146 146 ! 147 147 END SUBROUTINE usr_def_fmask -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_zgr.F90
r9598 r9814 3 3 !! *** MODULE usrdef_zgr *** 4 4 !! 5 !! === GYREconfiguration ===5 !! === BENCH configuration === 6 6 !! 7 7 !! User defined : vertical coordinate system of a user configuration 8 8 !!====================================================================== 9 !! History : 4.0 ! 2016-06 (G. Madec) Original code9 !! History : 4.0 ! 10 10 !!---------------------------------------------------------------------- 11 11 … … 18 18 USE oce ! ocean variables 19 19 USE dom_oce ! ocean domain 20 USE phycst ! physical constants 20 21 USE depth_e3 ! depth <=> e3 21 22 ! … … 29 30 PUBLIC usr_def_zgr ! called by domzgr.F90 30 31 31 32 !! * Substitutions 32 33 # include "vectopt_loop_substitute.h90" 33 34 !!---------------------------------------------------------------------- 34 !! NEMO/O CE 4.0 , NEMO Consortium (2018)35 !! $Id :$36 !! Software governed by the CeCILL licence ( ./LICENSE)35 !! NEMO/OPA 4.0 , NEMO Consortium (2016) 36 !! $Id$ 37 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 37 38 !!---------------------------------------------------------------------- 38 39 CONTAINS … … 65 66 ! 66 67 IF(lwp) WRITE(numout,*) 67 IF(lwp) WRITE(numout,*) 'usr_def_zgr : GYRE configuration (z-coordinate closed flat box ocean without cavities)'68 IF(lwp) WRITE(numout,*) 'usr_def_zgr : BENCH configuration (z-coordinate closed flat box ocean)' 68 69 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 69 70 ! … … 71 72 ! type of vertical coordinate 72 73 ! --------------------------- 73 ld_zco = .TRUE. ! GYREcase: z-coordinate without ocean cavities74 ld_zco = .TRUE. ! BENCH case: z-coordinate without ocean cavities 74 75 ld_zps = .FALSE. 75 76 ld_sco = .FALSE. … … 126 127 ! 127 128 INTEGER :: jk ! dummy loop indices 128 REAL(wp) :: zt, zw ! local scalars 129 REAL(wp) :: zsur, za0, za1, zkth, zacr ! Values for the Madec & Imbard (1996) function 130 !!---------------------------------------------------------------------- 131 ! 132 ! Set parameters of z(k) function 133 ! ------------------------------- 134 zsur = -2033.194295283385_wp 135 za0 = 155.8325369664153_wp 136 za1 = 146.3615918601890_wp 137 zkth = 17.28520372419791_wp 138 zacr = 5.0_wp 129 REAL(wp) :: zd ! local scalar 130 !!---------------------------------------------------------------------- 131 ! 132 zd = 5000./FLOAT(jpkm1) 139 133 ! 140 134 IF(lwp) THEN ! Parameter print … … 142 136 WRITE(numout,*) ' zgr_z : Reference vertical z-coordinates ' 143 137 WRITE(numout,*) ' ~~~~~~~' 144 WRITE(numout,*) ' GYRE case : MI96 function with the following coefficients :' 145 WRITE(numout,*) ' zsur = ', zsur 146 WRITE(numout,*) ' za0 = ', za0 147 WRITE(numout,*) ' za1 = ', za1 148 WRITE(numout,*) ' zkth = ', zkth 149 WRITE(numout,*) ' zacr = ', zacr 138 WRITE(numout,*) ' BENCH case : uniform vertical grid :' 139 WRITE(numout,*) ' with thickness = ', zd 150 140 ENDIF 151 141 … … 154 144 ! ------------------------- 155 145 ! 156 DO jk = 1, jpk ! depth at T and W-points 157 zw = REAL( jk , wp ) 158 zt = REAL( jk , wp ) + 0.5_wp 159 pdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG( COSH( (zw-zkth) / zacr ) ) ) 160 pdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG( COSH( (zt-zkth) / zacr ) ) ) 146 pdepw_1d(1) = 0._wp 147 pdept_1d(1) = 0.5_wp * zd 148 ! 149 DO jk = 2, jpk ! depth at T and W-points 150 pdepw_1d(jk) = pdepw_1d(jk-1) + zd 151 pdept_1d(jk) = pdept_1d(jk-1) + zd 161 152 END DO 162 153 ! … … 183 174 !! ** Purpose : set the masked top and bottom ocean t-levels 184 175 !! 185 !! ** Method : GYREcase = closed flat box ocean without ocean cavities176 !! ** Method : BENCH case = closed flat box ocean without ocean cavities 186 177 !! k_top = 1 except along north, south, east and west boundaries 187 178 !! k_bot = jpk-1 except along north, south, east and west boundaries … … 193 184 ! 194 185 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D local workspace 186 REAL(wp) :: zmaxlam, zscl 195 187 !!---------------------------------------------------------------------- 196 188 ! … … 198 190 IF(lwp) WRITE(numout,*) ' zgr_top_bot : defines the top and bottom wet ocean levels.' 199 191 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 200 IF(lwp) WRITE(numout,*) ' GYREcase : closed flat box ocean without ocean cavities'192 IF(lwp) WRITE(numout,*) ' BENCH case : closed flat box ocean without ocean cavities' 201 193 ! 202 194 z2d(:,:) = REAL( jpkm1 , wp ) ! flat bottom 203 195 ! 204 CALL lbc_lnk( 196 CALL lbc_lnk("usrdef_zgr",z2d, 'T', 1. ) ! set surrounding land to zero (here jperio=0 ==>> closed) 205 197 ! 206 198 k_bot(:,:) = INT( z2d(:,:) ) ! =jpkm1 over the ocean point, =0 elsewhere -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfosm.F90
r9598 r9814 1287 1287 1288 1288 ! Lateral boundary conditions on zvicos (sign unchanged), needed to caclulate viscosities on u and v grids 1289 CALL lbc_lnk( 1289 CALL lbc_lnk("zdfosm",zviscos(:,:,:), 'W', 1. ) 1290 1290 1291 1291 ! GN 25/8: need to change tmask --> wmask … … 1300 1300 END DO 1301 1301 ! Lateral boundary conditions on ghamu and ghamv, currently on W-grid (sign unchanged), needed to caclulate gham[uv] on u and v grids 1302 CALL lbc_lnk_multi( 1302 CALL lbc_lnk_multi("zdfosm",p_avt, 'W', 1. , p_avm, 'W', 1., & 1303 1303 & ghamu, 'W', 1. , ghamv, 'W', 1. ) 1304 1304 DO jk = 2, jpkm1 … … 1318 1318 ! Lateral boundary conditions on final outputs for gham[ts], on W-grid (sign unchanged) 1319 1319 ! Lateral boundary conditions on final outputs for gham[uv], on [UV]-grid (sign unchanged) 1320 CALL lbc_lnk_multi( 1320 CALL lbc_lnk_multi("zdfosm",ghamt, 'W', 1. , ghams, 'W', 1., & 1321 1321 & ghamu, 'U', 1. , ghamv, 'V', 1. ) 1322 1322 … … 1359 1359 END IF 1360 1360 ! Lateral boundary conditions on p_avt (sign unchanged) 1361 CALL lbc_lnk( 1361 CALL lbc_lnk("zdfosm",p_avt(:,:,:), 'W', 1. ) 1362 1362 ! 1363 1363 END SUBROUTINE zdf_osm -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfphy.F90
r9598 r9814 292 292 ! !* Lateral boundary conditions (sign unchanged) 293 293 IF( l_zdfsh2 ) THEN 294 CALL lbc_lnk_multi( 294 CALL lbc_lnk_multi("zdfphy",avm_k, 'W', 1. , avt_k, 'W', 1., & 295 295 & avm , 'W', 1. , avt , 'W', 1. , avs , 'W', 1. ) 296 296 ELSE 297 CALL lbc_lnk_multi( 297 CALL lbc_lnk_multi("zdfphy",avm , 'W', 1. , avt , 'W', 1. , avs , 'W', 1. ) 298 298 ENDIF 299 299 ! 300 300 IF( l_zdfdrg ) THEN ! drag have been updated (non-linear cases) 301 IF( ln_isfcav ) THEN ; CALL lbc_lnk_multi( 302 ELSE ; CALL lbc_lnk (rCdU_bot, 'T', 1. ) ! bottom drag only301 IF( ln_isfcav ) THEN ; CALL lbc_lnk_multi("zdfphy",rCdU_top, 'T', 1. , rCdU_bot, 'T', 1. ) ! top & bot drag 302 ELSE ; CALL lbc_lnk("zdfphy",rCdU_bot, 'T', 1. ) ! bottom drag only 303 303 ENDIF 304 304 ENDIF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/nemogcm.F90
r9772 r9814 84 84 USE lib_mpp ! distributed memory computing 85 85 USE mppini ! shared/distributed memory setting (mpp_init routine) 86 USE lbclnk 86 87 USE lbcnfd , ONLY : isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 87 88 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) … … 190 191 IF ( istp == ( nit000 + 1 ) ) tic = MPI_Wtime() 191 192 IF ( ln_comm_only .AND. istp >= ( nit000 + 1 )) THEN 192 DO i = 1, n_sequence 193 IF ( icomm_sequence(i,1) == 1 ) THEN 194 SELECT CASE ( icomm_sequence(i,2) ) 195 CASE (1) 196 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1. ) 197 CASE (2) 198 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1., vn(:,:,1) , 'V', -1.) 199 CASE (3) 200 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1., vn(:,:,1) , 'V', -1., ua(:,:,1), 'U', -1.) 201 CASE (4) 202 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1., vn(:,:,1) , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1) , 'V', -1.) 203 CASE (5) 204 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1., vn(:,:,1) , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1) , 'V', -1., ub(:,:,1) , 'U', -1.) 205 CASE (6) 206 CALL lbc_lnk_multi( un(:,:,1) , 'U', -1., vn(:,:,1) , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1) , 'V', -1., ub(:,:,1) , 'U', -1., vb(:,:,1) , 'V', -1. ) 207 END SELECT 208 ELSE 209 SELECT CASE ( icomm_sequence(i,2) ) 210 CASE (1) 211 CALL lbc_lnk_multi( un , 'U', -1. ) 212 CASE (2) 213 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1.) 214 CASE (3) 215 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1., ua, 'U', -1.) 216 CASE (4) 217 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1., ua, 'U', -1., va , 'V', -1.) 218 CASE (5) 219 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1., ua, 'U', -1., va , 'V', -1., ub , 'U', -1.) 220 CASE (6) 221 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1., ua, 'U', -1., va , 'V', -1., ub , 'U', -1., vb , 'V', -1. ) 222 END SELECT 223 ENDIF 224 ENDDO 193 CALL simulated_lbc_lnk 225 194 ELSE 226 195 CALL stp ( istp ) -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/step.F90
r9610 r9814 313 313 ! Control 314 314 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 315 CALL stp_ctl ( kstp, indic ) 315 !EM remove time stepping writing imbalance 316 ! CALL stp_ctl ( kstp, indic ) 316 317 317 318 IF( kstp == nit000 ) THEN ! 1st time step only -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/diawri.F90
r9762 r9814 181 181 END DO 182 182 END DO 183 CALL lbc_lnk( z2d, 'T', 1. )183 CALL lbc_lnk( "diawri",z2d, 'T', 1. ) 184 184 CALL iom_put( "taubot", z2d ) 185 185 ENDIF … … 237 237 END DO 238 238 END DO 239 CALL lbc_lnk( z2d, 'T', 1. )239 CALL lbc_lnk( "diawri",z2d, 'T', 1. ) 240 240 CALL iom_put( "sstgrad2", z2d ) ! square of module of sst gradient 241 241 z2d(:,:) = SQRT( z2d(:,:) ) … … 281 281 END DO 282 282 END DO 283 CALL lbc_lnk( z3d, 'T', 1. )283 CALL lbc_lnk( "diawri",z3d, 'T', 1. ) 284 284 CALL iom_put( "eken", z3d ) ! kinetic energy 285 285 ENDIF … … 307 307 END DO 308 308 END DO 309 CALL lbc_lnk( z2d, 'U', -1. )309 CALL lbc_lnk( "diawri",z2d, 'U', -1. ) 310 310 CALL iom_put( "u_heattr", 0.5*rcp * z2d ) ! heat transport in i-direction 311 311 ENDIF … … 320 320 END DO 321 321 END DO 322 CALL lbc_lnk( z2d, 'U', -1. )322 CALL lbc_lnk( "diawri",z2d, 'U', -1. ) 323 323 CALL iom_put( "u_salttr", 0.5 * z2d ) ! heat transport in i-direction 324 324 ENDIF … … 342 342 END DO 343 343 END DO 344 CALL lbc_lnk( z2d, 'V', -1. )344 CALL lbc_lnk( "diawri",z2d, 'V', -1. ) 345 345 CALL iom_put( "v_heattr", 0.5*rcp * z2d ) ! heat transport in j-direction 346 346 ENDIF … … 355 355 END DO 356 356 END DO 357 CALL lbc_lnk( z2d, 'V', -1. )357 CALL lbc_lnk( "diawri",z2d, 'V', -1. ) 358 358 CALL iom_put( "v_salttr", 0.5 * z2d ) ! heat transport in j-direction 359 359 ENDIF … … 368 368 END DO 369 369 END DO 370 CALL lbc_lnk( z2d, 'T', -1. )370 CALL lbc_lnk( "diawri",z2d, 'T', -1. ) 371 371 CALL iom_put( "tosmint", rau0 * z2d ) ! Vertical integral of temperature 372 372 ENDIF … … 380 380 END DO 381 381 END DO 382 CALL lbc_lnk( z2d, 'T', -1. )382 CALL lbc_lnk( "diawri",z2d, 'T', -1. ) 383 383 CALL iom_put( "somint", rau0 * z2d ) ! Vertical integral of salinity 384 384 ENDIF -
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/usrdef_zgr.F90
r9762 r9814 194 194 z2d(:,:) = REAL( jpkm1 , wp ) ! flat bottom 195 195 ! 196 CALL lbc_lnk( z2d, 'T', 1. ) ! set surrounding land to zero (here jperio=0 ==>> closed)196 CALL lbc_lnk( "usrdef_zgr", z2d, 'T', 1. ) ! set surrounding land to zero (here jperio=0 ==>> closed) 197 197 ! 198 198 k_bot(:,:) = INT( z2d(:,:) ) ! =jpkm1 over the ocean point, =0 elsewhere
Note: See TracChangeset
for help on using the changeset viewer.