Changeset 9830
- Timestamp:
- 2018-06-22T11:39:58+02:00 (5 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r9207 r9830 102 102 103 103 ! 104 z2d(:,:) = 0._wp 104 105 z3d(:,:,:) = 0._wp 105 106 IF( PRESENT( pvtr ) ) THEN … … 246 247 ! 247 248 IF( iom_use("zotemglo") ) THEN ! i-mean i-k-surface 249 zmask(:,:,:) = 0._wp 250 zts(:,:,:,:) = 0._wp 248 251 DO jk = 1, jpkm1 249 252 DO jj = 1, jpj -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r8400 r9830 246 246 z3d(:,:,jk) = wn(:,:,jk) * z2d(:,:) 247 247 END DO 248 CALL lbc_lnk( z3d(:,:,:), 'W', 1. ) 248 249 CALL iom_put( "w_masstr" , z3d ) 249 250 IF( iom_use('w_masstr2') ) CALL iom_put( "w_masstr2", z3d(:,:,:) * z3d(:,:,:) ) … … 334 335 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 335 336 END DO 337 CALL lbc_lnk( z3d(:,:,:), 'U', -1. ) 336 338 CALL iom_put( "u_masstr", z3d ) ! mass transport in i-direction 339 CALL lbc_lnk( z2d(:,:), 'U', -1. ) 337 340 CALL iom_put( "u_masstr_vint", z2d ) ! mass transport in i-direction vertical sum 338 341 ENDIF … … 370 373 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 371 374 END DO 375 CALL lbc_lnk( z3d(:,:,:), 'V', -1. ) 372 376 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction 373 377 ENDIF -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r8427 r9830 254 254 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: bathy !: ocean depth (meters) 255 255 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmask_i, umask_i, vmask_i, fmask_i !: interior domain T-point mask 256 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tmask_i_diag !: partial mask for use in T diagnostic mask calc. 257 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: umask_i_diag !: partial mask for use in U diagnostic mask calc. 258 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vmask_i_diag !: partial mask for use in V diagnostic mask calc. 256 259 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: bmask !: land/ocean mask of barotropic stream function 257 260 … … 406 409 407 410 ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk), & 408 & vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk), STAT=ierr(11) ) 411 & vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk), & 412 tmask_i_diag(jpi,jpj,jpk), & 413 umask_i_diag(jpi,jpj,jpk), & 414 vmask_i_diag(jpi,jpj,jpk), & 415 STAT=ierr(11) ) 409 416 410 417 ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) ) -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r8280 r9830 1 1 2 MODULE dommsk 2 3 !!====================================================================== … … 30 31 USE dynspg_oce ! choice/control of key cpp for surface pressure gradient 31 32 USE wrk_nemo ! Memory allocation 33 USE domwri 32 34 USE timing ! Timing 33 35 … … 138 140 REAL(wp) :: zphi_drake_passage, zshlat_antarc 139 141 REAL(wp), POINTER, DIMENSION(:,:) :: zwf 142 REAL(wp) :: uvt(jpi,jpj) ! dummy array for masking purposes. 140 143 !! 141 144 NAMELIST/namlbc/ rn_shlat, ln_vorlat … … 223 226 ! -------------------- 224 227 tmask_i(:,:) = ssmask(:,:) ! (ISH) tmask_i = 1 even on the ice shelf 228 225 229 iif = jpreci ! ??? 226 230 iil = nlci - jpreci + 1 … … 246 250 ENDIF 247 251 ENDIF 252 253 248 254 IF( jperio == 5 .OR. jperio == 6 ) THEN ! F-point pivot 249 255 tpol( 1 :jpiglo) = 0._wp … … 263 269 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 264 270 END DO 265 END DO 271 END DO 266 272 END DO 267 273 ! (ISF) MIN(1,SUM(umask)) is here to check if you have effectively at least 1 wet u point … … 282 288 CALL lbc_lnk( vmask_i, 'V', 1._wp ) 283 289 CALL lbc_lnk( fmask_i, 'F', 1._wp ) 290 291 292 ! Set up mask for diagnostics on T points, to exclude duplicate 293 ! data points in wrap and N-fold regions. 294 CALL dom_uniq( uvt, 'T' ) 295 DO jk = 1, jpk 296 tmask_i_diag(:,:,jk) = tmask(:,:,jk) * uvt(:,:) 297 END DO 298 299 ! Set up mask for diagnostics on U points, to exclude duplicate 300 ! data points in wrap and N-fold regions. 301 umask_i_diag(:,:,:) = 1.0 302 umask_i_diag(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:) 303 CALL lbc_lnk( umask_i_diag, 'U', 1. ) 304 305 ! Now mask out any duplicate points 306 CALL dom_uniq( uvt, 'U' ) 307 DO jk = 1, jpk 308 umask_i_diag(:,:,jk) = umask_i_diag(:,:,jk) * uvt(:,:) 309 END DO 310 311 312 ! Set up mask for diagnostics on V points, to exclude duplicate 313 ! data points in wrap and N-fold regions. 314 vmask_i_diag(:,:,:) = 1.0 315 vmask_i_diag(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:) 316 CALL lbc_lnk( vmask_i_diag, 'V', 1. ) 317 318 ! Now mask out any duplicate points 319 CALL dom_uniq( uvt, 'V' ) 320 DO jk = 1, jpk 321 vmask_i_diag(:,:,jk) = vmask_i_diag(:,:,jk) * uvt(:,:) 322 END DO 323 324 284 325 285 326 ! 3. Ocean/land mask at wu-, wv- and w points -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r9321 r9830 26 26 PRIVATE 27 27 28 PUBLIC dom_wri ! routine called by inidom.F9028 PUBLIC dom_wri, dom_uniq ! routines called by inidom.F90 and iom.F90 29 29 30 30 !! * Substitutions -
branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r9321 r9830 1400 1400 IF ( ln_mskland ) THEN 1401 1401 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1402 1403 1402 1404 SELECT CASE ( cdgrd ) 1403 CASE('T') ; zmask(:,:,:) = tmask(:,:,:) 1404 CASE('U') ; zmask(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:) ; CALL lbc_lnk( zmask, 'U', 1. ) 1405 CASE('V') ; zmask(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:) ; CALL lbc_lnk( zmask, 'V', 1. ) 1406 CASE('W') ; zmask(:,:,2:jpk ) = tmask(:,:,1:jpkm1) + tmask(:,:,2:jpk) ; zmask(:,:,1) = tmask(:,:,1) 1407 END SELECT 1405 ! The masks applied here are specifically used to mask out duplicate 1406 ! data points in wrap columns and N-fold rows in order to ensure bit 1407 ! reproducibility of diagnostics which have not undergone an explicit 1408 ! lbc_lnk prior to writing. Such fields are prone to junk values at 1409 ! duplicate points since those points are often excluded from the 1410 ! core field computation process. 1411 CASE('T') 1412 zmask(:,:,:) = tmask_i_diag(:,:,:) 1413 CASE('U') 1414 zmask(:,:,:) = umask_i_diag(:,:,:) 1415 CASE('V') 1416 zmask(:,:,:) = vmask_i_diag(:,:,:) 1417 CASE('W') 1418 zmask(:,:,2:jpk ) = tmask_i_diag(:,:,1:jpkm1) + tmask_i_diag(:,:,2:jpk) 1419 zmask(:,:,1) = tmask_i_diag(:,:,1) 1420 END SELECT 1408 1421 ! 1409 1422 #if ! defined key_xios2
Note: See TracChangeset
for help on using the changeset viewer.