Changeset 13286 for NEMO/trunk/src/OCE/DOM/dommsk.F90
- Timestamp:
- 2020-07-09T17:48:29+02:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 2 2 ^/utils/build/makenemo@HEAD makenemo 3 3 ^/utils/build/mk@HEAD mk 4 ^/utils/tools /@HEADtools4 ^/utils/tools@HEAD tools 5 5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM … … 8 8 9 9 # SETTE 10 ^/utils/CI/ sette@12931sette10 ^/utils/CI/r12931_sette_ticket2366@HEAD sette
-
- Property svn:externals
-
NEMO/trunk/src/OCE/DOM/dommsk.F90
r13237 r13286 26 26 USE oce ! ocean dynamics and tracers 27 27 USE dom_oce ! ocean space and time domain 28 USE domutl ! 28 29 USE usrdef_fmask ! user defined fmask 29 30 USE bdy_oce ! open boundary … … 89 90 ! 90 91 INTEGER :: ji, jj, jk ! dummy loop indices 91 INTEGER :: iif, iil ! local integers92 INTEGER :: ijf, ijl ! - -93 92 INTEGER :: iktop, ikbot ! - - 94 93 INTEGER :: ios, inum … … 136 135 ikbot = k_bot(ji,jj) 137 136 IF( iktop /= 0 ) THEN ! water in the column 138 tmask(ji,jj,iktop:ikbot 137 tmask(ji,jj,iktop:ikbot) = 1._wp 139 138 ENDIF 140 139 END_2D 141 140 ! 142 ! the following call is mandatory 143 ! it masks boundaries (bathy=0) where needed depending on the configuration (closed, periodic...) 144 CALL lbc_lnk( 'dommsk', tmask , 'T', 1._wp ) ! Lateral boundary conditions 145 146 ! Mask corrections for bdy (read in mppini2) 141 ! Mask corrections for bdy (read in mppini2) 147 142 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 903) 148 143 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist' ) … … 152 147 IF ( ln_bdy .AND. ln_mask_file ) THEN 153 148 CALL iom_open( cn_mask_file, inum ) 154 CALL iom_get ( inum, jpdom_ data, 'bdy_msk', bdytmask(:,:) )149 CALL iom_get ( inum, jpdom_global, 'bdy_msk', bdytmask(:,:) ) 155 150 CALL iom_close( inum ) 156 151 DO_3D_11_11( 1, jpkm1 ) … … 162 157 ! ---------------------------------------- 163 158 ! NB: at this point, fmask is designed for free slip lateral boundary condition 164 DO jk = 1, jpk 165 DO jj = 1, jpjm1 166 DO ji = 1, jpim1 ! vector loop 167 umask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) 168 vmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji ,jj+1,jk) 169 END DO 170 DO ji = 1, jpim1 ! NO vector opt. 171 fmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) & 172 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 173 END DO 174 END DO 175 END DO 159 DO_3D_00_00( 1, jpk ) 160 umask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) 161 vmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji ,jj+1,jk) 162 fmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) & 163 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 164 END_3D 176 165 CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1.0_wp, vmask, 'V', 1.0_wp, fmask, 'F', 1.0_wp ) ! Lateral boundary conditions 177 166 … … 187 176 END DO 188 177 189 190 178 ! Ocean/land column mask at t-, u-, and v-points (i.e. at least 1 wet cell in the vertical) 191 179 ! ---------------------------------------------- … … 195 183 ssfmask(:,:) = MAXVAL( fmask(:,:,:), DIM=3 ) 196 184 197 198 185 ! Interior domain mask (used for global sum) 199 186 ! -------------------- 200 187 ! 201 iif = nn_hls ; iil = nlci - nn_hls + 1 202 ijf = nn_hls ; ijl = nlcj - nn_hls + 1 203 ! 204 ! ! halo mask : 0 on the halo and 1 elsewhere 205 tmask_h(:,:) = 1._wp 206 tmask_h( 1 :iif, : ) = 0._wp ! first columns 207 tmask_h(iil:jpi, : ) = 0._wp ! last columns (including mpp extra columns) 208 tmask_h( : , 1 :ijf) = 0._wp ! first rows 209 tmask_h( : ,ijl:jpj) = 0._wp ! last rows (including mpp extra rows) 210 ! 211 ! ! north fold mask 212 tpol(1:jpiglo) = 1._wp 213 fpol(1:jpiglo) = 1._wp 214 IF( jperio == 3 .OR. jperio == 4 ) THEN ! T-point pivot 215 tpol(jpiglo/2+1:jpiglo) = 0._wp 216 fpol( 1 :jpiglo) = 0._wp 217 IF( mjg(nlej) == jpjglo ) THEN ! only half of the nlcj-1 row for tmask_h 218 DO ji = iif+1, iil-1 219 tmask_h(ji,nlej-1) = tmask_h(ji,nlej-1) * tpol(mig(ji)) 220 END DO 221 ENDIF 222 ENDIF 223 ! 224 IF( jperio == 5 .OR. jperio == 6 ) THEN ! F-point pivot 225 tpol( 1 :jpiglo) = 0._wp 226 fpol(jpiglo/2+1:jpiglo) = 0._wp 227 ENDIF 188 CALL dom_uniq( tmask_h, 'T' ) 228 189 ! 229 190 ! ! interior mask : 2D ocean mask x halo mask 230 191 tmask_i(:,:) = ssmask(:,:) * tmask_h(:,:) 231 232 192 233 193 ! Lateral boundary conditions on velocity (modify fmask)
Note: See TracChangeset
for help on using the changeset viewer.