- Timestamp:
- 2019-09-18T10:53:22+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r10302 r11559 33 33 USE domwri 34 34 USE timing ! Timing 35 35 USE iom ! For shlat2d 36 USE fldread ! for sn_shlat2d 37 36 38 IMPLICIT NONE 37 39 PRIVATE … … 141 143 REAL(wp), POINTER, DIMENSION(:,:) :: zwf 142 144 REAL(wp) :: uvt(jpi,jpj) ! dummy array for masking purposes. 143 !! 144 NAMELIST/namlbc/ rn_shlat, ln_vorlat 145 INTEGER :: inum ! logical unit for shlat2d 146 REAL(wp) :: zshlat !: locally modified shlat for some strait 147 REAL(wp), POINTER, DIMENSION(:,:) :: zshlat2d 148 LOGICAL :: ln_shlat2d 149 TYPE(FLD_N) :: sn_shlat2d 150 !! 151 NAMELIST/namlbc/ rn_shlat, ln_vorlat, ln_shlat2d, sn_shlat2d 145 152 !!--------------------------------------------------------------------- 146 153 ! … … 177 184 ENDIF 178 185 186 IF ( ln_shlat2d ) THEN 187 IF(lwp) WRITE(numout,*) ' READ shlat as a 2D coefficient in a file ' 188 CALL wrk_alloc( jpi, jpj, zshlat2d ) 189 CALL iom_open(sn_shlat2d%clname, inum) 190 CALL iom_get (inum, jpdom_data, sn_shlat2d%clvar, zshlat2d, 1) ! 191 CALL iom_close(inum) 192 ENDIF 193 179 194 ! 1. Ocean/land mask at t-point (computed from mbathy) 180 195 ! ----------------------------- … … 391 406 DO jk = 1, jpk 392 407 zwf(:,:) = fmask(:,:,jk) 393 DO jj = 2, jpjm1 394 DO ji = fs_2, fs_jpim1 ! vector opt. 395 IF( fmask(ji,jj,jk) == 0._wp ) THEN 396 fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1), & 397 & zwf(ji-1,jj), zwf(ji,jj-1) ) ) 398 ENDIF 399 END DO 400 END DO 408 IF ( ln_shlat2d ) THEN 409 DO jj = 2, jpjm1 410 DO ji = fs_2, fs_jpim1 ! vector opt. 411 IF( fmask(ji,jj,jk) == 0. ) THEN 412 fmask(ji,jj,jk) = zshlat2d(ji,jj) * MIN( 1._wp, MAX( zwf(ji+1,jj), zwf(ji,jj+1), & 413 & zwf(ji-1,jj), zwf(ji,jj-1) ) ) 414 ENDIF 415 END DO 416 END DO 417 ELSE 418 DO jj = 2, jpjm1 419 DO ji = fs_2, fs_jpim1 ! vector opt. 420 IF( fmask(ji,jj,jk) == 0._wp ) THEN 421 fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1), & 422 & zwf(ji-1,jj), zwf(ji,jj-1) ) ) 423 ENDIF 424 END DO 425 END DO 426 ENDIF 401 427 DO jj = 2, jpjm1 402 428 IF( fmask(1,jj,jk) == 0._wp ) THEN … … 561 587 CALL wrk_dealloc( jpi, jpj, imsk ) 562 588 CALL wrk_dealloc( jpi, jpj, zwf ) 589 IF ( ln_shlat2d ) THEN 590 CALL wrk_dealloc( jpi, jpj, zshlat2d ) 591 ENDIF 563 592 ! 564 593 IF( nn_timing == 1 ) CALL timing_stop('dom_msk')
Note: See TracChangeset
for help on using the changeset viewer.