- Timestamp:
- 2015-12-16T10:25:22+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r5930 r6060 7 7 !! 6.0 ! 1993-03 (M. Guyon) symetrical conditions (M. Guyon) 8 8 !! 7.0 ! 1996-01 (G. Madec) suppression of common work arrays 9 !! - ! 1996-05 (G. Madec) mask computed from tmask and sup- 10 !! ! pression of the double computation of bmask 9 !! - ! 1996-05 (G. Madec) mask computed from tmask 11 10 !! 8.0 ! 1997-02 (G. Madec) mesh information put in domhgr.F 12 11 !! 8.1 ! 1997-07 (G. Madec) modification of mbathy and fmask … … 25 24 USE oce ! ocean dynamics and tracers 26 25 USE dom_oce ! ocean space and time domain 26 ! 27 27 USE in_out_manager ! I/O manager 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 29 USE lib_mpp 29 USE lib_mpp ! 30 30 USE wrk_nemo ! Memory allocation 31 31 USE timing ! Timing … … 34 34 PRIVATE 35 35 36 PUBLIC dom_msk 36 PUBLIC dom_msk ! routine called by inidom.F90 37 37 38 38 ! !!* Namelist namlbc : lateral boundary condition * … … 89 89 !! 90 90 !! N.B. If nperio not equal to 0, the land/ocean mask arrays 91 !! are defined with the proper value at lateral domain boundaries, 92 !! but bmask. indeed, bmask defined the domain over which the 93 !! barotropic stream function is computed. this domain cannot 94 !! contain identical columns because the matrix associated with 95 !! the barotropic stream function equation is then no more inverti- 96 !! ble. therefore bmask is set to 0 along lateral domain boundaries 97 !! even IF nperio is not zero. 91 !! are defined with the proper value at lateral domain boundaries. 98 92 !! 99 93 !! In case of open boundaries (lk_bdy=T): 100 94 !! - tmask is set to 1 on the points to be computed bay the open 101 95 !! boundaries routines. 102 !! - bmask is set to 0 on the open boundaries.103 96 !! 104 97 !! ** Action : tmask : land/ocean mask at t-point (=0. or 1.) … … 107 100 !! fmask : land/ocean mask at f-point (=0. or 1.) 108 101 !! =rn_shlat along lateral boundaries 109 !! bmask : land/ocean mask at barotropic stream110 !! function point (=0. or 1.) and set to 0 along lateral boundaries111 102 !! tmask_i : interior ocean mask 112 103 !!---------------------------------------------------------------------- … … 254 245 END DO 255 246 256 ! 4. ocean/land mask for the elliptic equation257 ! --------------------------------------------258 bmask(:,:) = ssmask(:,:) ! elliptic equation is written at t-point259 !260 ! ! Boundary conditions261 ! ! cyclic east-west : bmask must be set to 0. on rows 1 and jpi262 IF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6 ) THEN263 bmask( 1 ,:) = 0._wp264 bmask(jpi,:) = 0._wp265 ENDIF266 IF( nperio == 2 ) THEN ! south symmetric : bmask must be set to 0. on row 1267 bmask(:, 1 ) = 0._wp268 ENDIF269 ! ! north fold :270 IF( nperio == 3 .OR. nperio == 4 ) THEN ! T-pt pivot : bmask set to 0. on row jpj and on half jpjglo-1 row271 DO ji = 1, jpi272 ii = ji + nimpp - 1273 bmask(ji,jpj-1) = bmask(ji,jpj-1) * tpol(ii)274 bmask(ji,jpj ) = 0._wp275 END DO276 ENDIF277 IF( nperio == 5 .OR. nperio == 6 ) THEN ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj278 bmask(:,jpj) = 0._wp279 ENDIF280 !281 IF( lk_mpp ) THEN ! mpp specificities282 ! ! bmask is set to zero on the overlap region283 IF( nbondi /= -1 .AND. nbondi /= 2 ) bmask( 1 :jpreci,:) = 0._wp284 IF( nbondi /= 1 .AND. nbondi /= 2 ) bmask(nlci:jpi ,:) = 0._wp285 IF( nbondj /= -1 .AND. nbondj /= 2 ) bmask(:, 1 :jprecj) = 0._wp286 IF( nbondj /= 1 .AND. nbondj /= 2 ) bmask(:,nlcj:jpj ) = 0._wp287 !288 IF( npolj == 3 .OR. npolj == 4 ) THEN ! north fold : bmask must be set to 0. on rows jpj-1 and jpj289 DO ji = 1, nlci290 ii = ji + nimpp - 1291 bmask(ji,nlcj-1) = bmask(ji,nlcj-1) * tpol(ii)292 bmask(ji,nlcj ) = 0._wp293 END DO294 ENDIF295 IF( npolj == 5 .OR. npolj == 6 ) THEN ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj296 DO ji = 1, nlci297 bmask(ji,nlcj ) = 0._wp298 END DO299 ENDIF300 ENDIF301 302 247 ! Lateral boundary conditions on velocity (modify fmask) 303 248 ! --------------------------------------- … … 399 344 ! 400 345 CALL lbc_lnk( fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 401 346 ! 402 347 ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) 403 404 IF( nprint == 1 .AND. lwp ) THEN ! Control print405 imsk(:,:) = INT( tmask_i(:,:) )406 WRITE(numout,*) ' tmask_i : '407 CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1, &408 & 1, jpj, 1, 1, numout)409 WRITE (numout,*)410 WRITE (numout,*) ' dommsk: tmask for each level'411 WRITE (numout,*) ' ----------------------------'412 DO jk = 1, jpk413 imsk(:,:) = INT( tmask(:,:,jk) )414 415 WRITE(numout,*)416 WRITE(numout,*) ' level = ',jk417 CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1, &418 & 1, jpj, 1, 1, numout)419 END DO420 WRITE(numout,*)421 WRITE(numout,*) ' dom_msk: vmask for each level'422 WRITE(numout,*) ' -----------------------------'423 DO jk = 1, jpk424 imsk(:,:) = INT( vmask(:,:,jk) )425 WRITE(numout,*)426 WRITE(numout,*) ' level = ',jk427 CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1, &428 & 1, jpj, 1, 1, numout)429 END DO430 WRITE(numout,*)431 WRITE(numout,*) ' dom_msk: fmask for each level'432 WRITE(numout,*) ' -----------------------------'433 DO jk = 1, jpk434 imsk(:,:) = INT( fmask(:,:,jk) )435 WRITE(numout,*)436 WRITE(numout,*) ' level = ',jk437 CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1, &438 & 1, jpj, 1, 1, numout )439 END DO440 WRITE(numout,*)441 WRITE(numout,*) ' dom_msk: bmask '442 WRITE(numout,*) ' ---------------'443 WRITE(numout,*)444 imsk(:,:) = INT( bmask(:,:) )445 CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1, &446 & 1, jpj, 1, 1, numout )447 ENDIF448 348 ! 449 349 CALL wrk_dealloc( jpi, jpj, imsk )
Note: See TracChangeset
for help on using the changeset viewer.