Changeset 1528 for trunk/NEMO/OPA_SRC/DOM/dommsk.F90
- Timestamp:
- 2009-07-23T16:38:47+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DOM/dommsk.F90
r1273 r1528 17 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 18 USE lib_mpp 19 USE solisl ! ???20 19 USE dynspg_oce ! choice/control of key cpp for surface pressure gradient 21 20 … … 48 47 !! tropic stream function points (b). 49 48 !! Set mbathy to the number of non-zero w-levels of a water column 50 !! (if island in the domain (lk_isl=T), this is done latter in51 !! routine solver_init)52 49 !! 53 50 !! ** Method : The ocean/land mask is computed from the basin bathy- 54 51 !! metry in level (mbathy) which is defined or read in dommba. 55 !! mbathy equals 0 over continental T-point , -n over the nth56 !! island T-point,and the number of ocean level over the ocean.52 !! mbathy equals 0 over continental T-point 53 !! and the number of ocean level over the ocean. 57 54 !! 58 55 !! At a given position (ji,jj,jk) the ocean/land mask is given by: … … 247 244 248 245 ! Computation 249 IF( lk_dynspg_rl ) THEN 250 bmask(:,:) = fmask(:,:,1) ! elliptic equation is written at f-point 251 ELSE 252 bmask(:,:) = tmask(:,:,1) ! elliptic equation is written at t-point 253 ENDIF 246 bmask(:,:) = tmask(:,:,1) ! elliptic equation is written at t-point 254 247 255 248 ! Boundary conditions … … 267 260 ! north fold : 268 261 IF( nperio == 3 .OR. nperio == 4 ) THEN 269 IF( lk_dynspg_rl ) THEN 270 ! T-pt pivot and F-pt elliptic eq. : bmask set to 0. on rows jpj-1 and jpj 271 bmask(:,jpj-1) = 0.e0 272 bmask(:,jpj ) = 0.e0 273 ELSE 274 ! T-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj and on half jpjglo-1 row 275 DO ji = 1, jpi 276 ii = ji + nimpp - 1 277 bmask(ji,jpj-1) = bmask(ji,jpj-1) * tpol(ii) 278 bmask(ji,jpj ) = 0.e0 279 END DO 280 ENDIF 262 ! T-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj and on half jpjglo-1 row 263 DO ji = 1, jpi 264 ii = ji + nimpp - 1 265 bmask(ji,jpj-1) = bmask(ji,jpj-1) * tpol(ii) 266 bmask(ji,jpj ) = 0.e0 267 END DO 281 268 ENDIF 282 269 IF( nperio == 5 .OR. nperio == 6 ) THEN 283 IF( lk_dynspg_rl ) THEN 284 ! F-pt pivot and F-pt elliptic eq. : bmask set to 0. on row jpj and on half jpjglo-1 row 285 DO ji = 1, jpi 286 ii = ji + nimpp - 1 287 bmask(ji,jpj-1) = bmask(ji,jpj-1) * fpol(ii) 288 bmask(ji,jpj ) = 0.e0 289 END DO 290 ELSE 291 ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj 292 bmask(:,jpj) = 0.e0 293 ENDIF 270 ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj 271 bmask(:,jpj) = 0.e0 294 272 ENDIF 295 273 … … 305 283 ! north fold : bmask must be set to 0. on rows jpj-1 and jpj 306 284 IF( npolj == 3 .OR. npolj == 4 ) THEN 307 IF( lk_dynspg_rl ) THEN 308 DO ji = 1, nlci 309 bmask(ji,nlcj-1) = 0.e0 310 bmask(ji,nlcj ) = 0.e0 311 END DO 312 ELSE 313 DO ji = 1, nlci 314 ii = ji + nimpp - 1 315 bmask(ji,nlcj-1) = bmask(ji,nlcj-1) * tpol(ii) 316 bmask(ji,nlcj ) = 0.e0 317 END DO 318 ENDIF 285 DO ji = 1, nlci 286 ii = ji + nimpp - 1 287 bmask(ji,nlcj-1) = bmask(ji,nlcj-1) * tpol(ii) 288 bmask(ji,nlcj ) = 0.e0 289 END DO 319 290 ENDIF 320 291 IF( npolj == 5 .OR. npolj == 6 ) THEN 321 IF( lk_dynspg_rl ) THEN 322 DO ji = 1, nlci 323 ii = ji + nimpp - 1 324 bmask(ji,nlcj-1) = bmask(ji,nlcj-1) * fpol(ii) 325 bmask(ji,nlcj ) = 0.e0 326 END DO 327 ELSE 328 DO ji = 1, nlci 329 bmask(ji,nlcj ) = 0.e0 330 END DO 331 ENDIF 292 DO ji = 1, nlci 293 bmask(ji,nlcj ) = 0.e0 294 END DO 332 295 ENDIF 333 296 ENDIF … … 408 371 ! Mbathy set to the number of w-level (minimum value 2) 409 372 ! ----------------------------------- 410 IF( lk_isl ) THEN 411 ! this is done at the end of solver_init routine 412 ELSE 413 DO jj = 1, jpj 414 DO ji = 1, jpi 415 mbathy(ji,jj) = MAX( 1, mbathy(ji,jj) ) + 1 416 END DO 417 END DO 418 ENDIF 373 DO jj = 1, jpj 374 DO ji = 1, jpi 375 mbathy(ji,jj) = MAX( 1, mbathy(ji,jj) ) + 1 376 END DO 377 END DO 419 378 420 379 ! Control print
Note: See TracChangeset
for help on using the changeset viewer.