- Timestamp:
- 2016-06-24T09:50:27+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r3851 r6736 11 11 !! 3.3 ! 2010-09 (D.Storkey) add ice boundary conditions 12 12 !! 3.4 ! 2011 (D. Storkey) rewrite in preparation for OBC-BDY merge 13 !! 3.4 ! 2013-04 (J. Harle) add in option to read bdy data with 14 !! different vertical coordinates 13 15 !!---------------------------------------------------------------------- 14 16 #if defined key_bdy … … 32 34 USE ice_2 33 35 #endif 34 USE sbcapr35 36 36 37 IMPLICIT NONE … … 109 110 110 111 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN 111 ilen1(:) = nblen(:) 112 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 113 ilen1(:) = nblen(:) 114 ELSE 115 ilen1(:) = nblenrim(:) 116 ENDIF 112 117 igrd = 1 113 118 DO ib = 1, ilen1(igrd) … … 131 136 132 137 IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 133 ilen1(:) = nblen(:) 138 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 139 ilen1(:) = nblen(:) 140 ELSE 141 ilen1(:) = nblenrim(:) 142 ENDIF 134 143 igrd = 2 135 144 DO ib = 1, ilen1(igrd) … … 151 160 152 161 IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN 153 ilen1(:) = nblen(:) 162 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 163 ilen1(:) = nblen(:) 164 ELSE 165 ilen1(:) = nblenrim(:) 166 ENDIF 154 167 igrd = 1 ! Everything is at T-points here 155 168 DO ib = 1, ilen1(igrd) … … 165 178 #if defined key_lim2 166 179 IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 167 ilen1(:) = nblen(:) 180 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 181 ilen1(:) = nblen(:) 182 ELSE 183 ilen1(:) = nblenrim(:) 184 ENDIF 168 185 igrd = 1 ! Everything is at T-points here 169 186 DO ib = 1, ilen1(igrd) … … 192 209 IF( PRESENT(jit) ) THEN 193 210 ! Update barotropic boundary conditions only 194 ! jit is optional argument for fld_read and bdytide_update211 ! jit is optional argument for fld_read and tide_update 195 212 IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 196 213 IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays … … 199 216 dta_bdy(ib_bdy)%v2d(:) = 0.0 200 217 ENDIF 201 IF (nn_tra(ib_bdy).ne.4) THEN 202 IF( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR. & 203 & (ln_full_vel_array(ib_bdy) .AND. nn_dyn3d_dta(ib_bdy).eq.1) )THEN 204 205 ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 206 jend = nb_bdy_fld(ib_bdy) 207 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 208 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 209 & kit=jit, kt_offset=time_offset ) 210 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 211 212 ! If full velocities in boundary data then split into barotropic and baroclinic data 213 IF( ln_full_vel_array(ib_bdy) .AND. & 214 & ( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR. & 215 & nn_dyn3d_dta(ib_bdy) .EQ. 1 ) )THEN 216 217 igrd = 2 ! zonal velocity 218 dta_bdy(ib_bdy)%u2d(:) = 0.0 219 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 220 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 221 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 222 DO ik = 1, jpkm1 223 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 224 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 225 END DO 226 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 227 DO ik = 1, jpkm1 228 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 229 END DO 230 END DO 231 igrd = 3 ! meridional velocity 232 dta_bdy(ib_bdy)%v2d(:) = 0.0 233 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 234 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 235 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 236 DO ik = 1, jpkm1 237 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 238 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 239 END DO 240 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 241 DO ik = 1, jpkm1 242 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 243 END DO 244 END DO 245 ENDIF 246 ENDIF 247 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 248 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 249 & jit=jit, time_offset=time_offset ) 250 ENDIF 218 IF( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN ! update external data 219 jend = jstart + 2 220 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 221 & jit=jit, time_offset=time_offset ) 251 222 ENDIF 223 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 224 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 225 & jit=jit, time_offset=time_offset ) 226 ENDIF 252 227 ENDIF 253 228 ELSE 254 IF (nn_tra(ib_bdy).eq.4) then ! runoff condition 255 jend = nb_bdy_fld(ib_bdy) 256 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), & 257 & map=nbmap_ptr(jstart:jend), kt_offset=time_offset ) 258 ! 259 igrd = 2 ! zonal velocity 260 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 261 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 262 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 263 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 229 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 230 dta_bdy(ib_bdy)%ssh(:) = 0.0 231 dta_bdy(ib_bdy)%u2d(:) = 0.0 232 dta_bdy(ib_bdy)%v2d(:) = 0.0 233 ENDIF 234 IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 235 jend = jstart + nb_bdy_fld(ib_bdy) - 1 236 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset,& 237 & jpk_1=nb_jpk ) 238 ENDIF 239 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 240 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 241 ENDIF 242 ENDIF 243 jstart = jend+1 244 245 ! If full velocities in boundary data then split into barotropic and baroclinic data 246 ! (Note that we have already made sure that you can't use ln_full_vel = .true. at the same 247 ! time as the dynspg_ts option). 248 249 IF( ln_full_vel_array(ib_bdy) .and. & 250 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 251 252 igrd = 2 ! zonal velocity 253 dta_bdy(ib_bdy)%u2d(:) = 0.0 254 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 255 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 256 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 257 DO ik = 1, jpkm1 258 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 259 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 264 260 END DO 265 ! 266 igrd = 3 ! meridional velocity 267 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 268 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 269 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 270 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 261 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 262 DO ik = 1, jpkm1 263 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 271 264 END DO 272 ELSE 273 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 274 dta_bdy(ib_bdy)%ssh(:) = 0.0 275 dta_bdy(ib_bdy)%u2d(:) = 0.0 276 dta_bdy(ib_bdy)%v2d(:) = 0.0 277 ENDIF 278 IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 279 jend = nb_bdy_fld(ib_bdy) 280 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), & 281 & map=nbmap_ptr(jstart:jend), kt_offset=time_offset ) 282 ENDIF 283 ! If full velocities in boundary data then split into barotropic and baroclinic data 284 IF( ln_full_vel_array(ib_bdy) .and. & 285 & ( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR. & 286 & nn_dyn3d_dta(ib_bdy) .EQ. 1 ) ) THEN 287 igrd = 2 ! zonal velocity 288 dta_bdy(ib_bdy)%u2d(:) = 0.0 289 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 290 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 291 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 292 DO ik = 1, jpkm1 293 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 294 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 295 END DO 296 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 297 DO ik = 1, jpkm1 298 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 299 END DO 300 END DO 301 igrd = 3 ! meridional velocity 302 dta_bdy(ib_bdy)%v2d(:) = 0.0 303 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 304 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 305 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 306 DO ik = 1, jpkm1 307 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 308 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 309 END DO 310 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 311 DO ik = 1, jpkm1 312 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 313 END DO 314 END DO 315 ENDIF 316 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 317 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), & 318 & td=tides(ib_bdy), time_offset=time_offset ) 319 ENDIF 320 ENDIF 321 ENDIF 322 jstart = jend+1 265 END DO 266 267 igrd = 3 ! meridional velocity 268 dta_bdy(ib_bdy)%v2d(:) = 0.0 269 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 270 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 271 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 272 DO ik = 1, jpkm1 273 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 274 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 275 END DO 276 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 277 DO ik = 1, jpkm1 278 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 279 END DO 280 END DO 281 282 ENDIF 283 323 284 END IF ! nn_dta(ib_bdy) = 1 324 285 END DO ! ib_bdy 325 326 IF ( ln_apr_obc ) THEN327 DO ib_bdy = 1, nb_bdy328 IF (nn_tra(ib_bdy).NE.4)THEN329 igrd = 1 ! meridional velocity330 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)331 ii = idx_bdy(ib_bdy)%nbi(ib,igrd)332 ij = idx_bdy(ib_bdy)%nbj(ib,igrd)333 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + ssh_ib(ii,ij)334 ENDDO335 ENDIF336 ENDDO337 ENDIF338 286 339 287 IF( nn_timing == 1 ) CALL timing_stop('bdy_dta') … … 381 329 IF( nn_timing == 1 ) CALL timing_start('bdy_dta_init') 382 330 383 IF(lwp) WRITE(numout,*)384 IF(lwp) WRITE(numout,*) 'bdy_dta_ini : initialization of data at the open boundaries'385 IF(lwp) WRITE(numout,*) '~~~~~~~~~~'386 IF(lwp) WRITE(numout,*) ''387 388 331 ! Set nn_dta 389 332 DO ib_bdy = 1, nb_bdy … … 417 360 ENDIF 418 361 #endif 419 IF(lwp) WRITE(numout,*) 'Maximum number of files to open =',nb_bdy_fld(ib_bdy)420 362 ENDDO 421 363 … … 469 411 ln_full_vel_array(ib_bdy) = ln_full_vel 470 412 413 IF( ln_full_vel_array(ib_bdy) .and. lk_dynspg_ts ) THEN 414 CALL ctl_stop( 'bdy_dta_init: ERROR, cannot specify full velocities in boundary data',& 415 & 'with dynspg_ts option' ) ; RETURN 416 ENDIF 417 471 418 nblen => idx_bdy(ib_bdy)%nblen 472 419 nblenrim => idx_bdy(ib_bdy)%nblenrim … … 476 423 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 477 424 478 IF( nn_ tra(ib_bdy) .ne. 4 ) THEN ! runoff condition : no ssh reading425 IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN 479 426 jfld = jfld + 1 480 427 blf_i(jfld) = bn_ssh 481 428 ibdy(jfld) = ib_bdy 482 429 igrid(jfld) = 1 483 ilen1(jfld) = nblen (igrid(jfld))430 ilen1(jfld) = nblenrim(igrid(jfld)) 484 431 ilen3(jfld) = 1 485 432 ENDIF 486 433 487 434 IF( .not. ln_full_vel_array(ib_bdy) ) THEN 435 488 436 jfld = jfld + 1 489 437 blf_i(jfld) = bn_u2d 490 438 ibdy(jfld) = ib_bdy 491 439 igrid(jfld) = 2 492 ilen1(jfld) = nblen(igrid(jfld)) 440 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 441 ilen1(jfld) = nblen(igrid(jfld)) 442 ELSE 443 ilen1(jfld) = nblenrim(igrid(jfld)) 444 ENDIF 493 445 ilen3(jfld) = 1 494 446 … … 497 449 ibdy(jfld) = ib_bdy 498 450 igrid(jfld) = 3 499 ilen1(jfld) = nblen(igrid(jfld)) 451 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 452 ilen1(jfld) = nblen(igrid(jfld)) 453 ELSE 454 ilen1(jfld) = nblenrim(igrid(jfld)) 455 ENDIF 500 456 ilen3(jfld) = 1 457 501 458 ENDIF 502 459 … … 512 469 ibdy(jfld) = ib_bdy 513 470 igrid(jfld) = 2 514 ilen1(jfld) = nblen(igrid(jfld)) 471 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 472 ilen1(jfld) = nblen(igrid(jfld)) 473 ELSE 474 ilen1(jfld) = nblenrim(igrid(jfld)) 475 ENDIF 515 476 ilen3(jfld) = jpk 516 477 … … 519 480 ibdy(jfld) = ib_bdy 520 481 igrid(jfld) = 3 521 ilen1(jfld) = nblen(igrid(jfld)) 482 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 483 ilen1(jfld) = nblen(igrid(jfld)) 484 ELSE 485 ilen1(jfld) = nblenrim(igrid(jfld)) 486 ENDIF 522 487 ilen3(jfld) = jpk 523 488 … … 531 496 ibdy(jfld) = ib_bdy 532 497 igrid(jfld) = 1 533 ilen1(jfld) = nblen(igrid(jfld)) 498 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 499 ilen1(jfld) = nblen(igrid(jfld)) 500 ELSE 501 ilen1(jfld) = nblenrim(igrid(jfld)) 502 ENDIF 534 503 ilen3(jfld) = jpk 535 504 … … 538 507 ibdy(jfld) = ib_bdy 539 508 igrid(jfld) = 1 540 ilen1(jfld) = nblen(igrid(jfld)) 509 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 510 ilen1(jfld) = nblen(igrid(jfld)) 511 ELSE 512 ilen1(jfld) = nblenrim(igrid(jfld)) 513 ENDIF 541 514 ilen3(jfld) = jpk 542 515 … … 551 524 ibdy(jfld) = ib_bdy 552 525 igrid(jfld) = 1 553 ilen1(jfld) = nblen(igrid(jfld)) 526 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 527 ilen1(jfld) = nblen(igrid(jfld)) 528 ELSE 529 ilen1(jfld) = nblenrim(igrid(jfld)) 530 ENDIF 554 531 ilen3(jfld) = 1 555 532 … … 558 535 ibdy(jfld) = ib_bdy 559 536 igrid(jfld) = 1 560 ilen1(jfld) = nblen(igrid(jfld)) 537 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 538 ilen1(jfld) = nblen(igrid(jfld)) 539 ELSE 540 ilen1(jfld) = nblenrim(igrid(jfld)) 541 ENDIF 561 542 ilen3(jfld) = 1 562 543 … … 565 546 ibdy(jfld) = ib_bdy 566 547 igrid(jfld) = 1 567 ilen1(jfld) = nblen(igrid(jfld)) 548 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 549 ilen1(jfld) = nblen(igrid(jfld)) 550 ELSE 551 ilen1(jfld) = nblenrim(igrid(jfld)) 552 ENDIF 568 553 ilen3(jfld) = 1 569 554 … … 584 569 ENDDO ! ib_bdy 585 570 571 586 572 DO jfld = 1, nb_bdy_fld_sum 587 573 ALLOCATE( bf(jfld)%fnow(ilen1(jfld),1,ilen3(jfld)) ) … … 594 580 jstart = 1 595 581 DO ib_bdy = 1, nb_bdy 596 jend = nb_bdy_fld(ib_bdy)582 jend = jstart + nb_bdy_fld(ib_bdy) - 1 597 583 CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta', & 598 584 & 'open boundary conditions', 'nambdy_dta' ) … … 613 599 IF (nn_dyn2d(ib_bdy) .gt. 0) THEN 614 600 IF( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 .or. ln_full_vel_array(ib_bdy) ) THEN 615 ilen0(1:3) = nblen(1:3) 601 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 602 ilen0(1:3) = nblen(1:3) 603 ELSE 604 ilen0(1:3) = nblenrim(1:3) 605 ENDIF 606 ALLOCATE( dta_bdy(ib_bdy)%ssh(ilen0(1)) ) 616 607 ALLOCATE( dta_bdy(ib_bdy)%u2d(ilen0(2)) ) 617 608 ALLOCATE( dta_bdy(ib_bdy)%v2d(ilen0(3)) ) 618 IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3) THEN619 jfld = jfld + 1620 dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1)621 ELSE622 ALLOCATE( dta_bdy(ib_bdy)%ssh(nblen(1)) )623 ENDIF624 609 ELSE 625 610 IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN … … 635 620 636 621 IF ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 637 ilen0(1:3) = nblen(1:3) 622 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 623 ilen0(1:3) = nblen(1:3) 624 ELSE 625 ilen0(1:3) = nblenrim(1:3) 626 ENDIF 638 627 ALLOCATE( dta_bdy(ib_bdy)%u3d(ilen0(2),jpk) ) 639 628 ALLOCATE( dta_bdy(ib_bdy)%v3d(ilen0(3),jpk) ) … … 650 639 IF (nn_tra(ib_bdy) .gt. 0) THEN 651 640 IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 652 ilen0(1:3) = nblen(1:3) 641 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 642 ilen0(1:3) = nblen(1:3) 643 ELSE 644 ilen0(1:3) = nblenrim(1:3) 645 ENDIF 653 646 ALLOCATE( dta_bdy(ib_bdy)%tem(ilen0(1),jpk) ) 654 647 ALLOCATE( dta_bdy(ib_bdy)%sal(ilen0(1),jpk) ) … … 664 657 IF (nn_ice_lim2(ib_bdy) .gt. 0) THEN 665 658 IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 666 ilen0(1:3) = nblen(1:3) 659 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 660 ilen0(1:3) = nblen(1:3) 661 ELSE 662 ilen0(1:3) = nblenrim(1:3) 663 ENDIF 667 664 ALLOCATE( dta_bdy(ib_bdy)%frld(ilen0(1)) ) 668 665 ALLOCATE( dta_bdy(ib_bdy)%hicif(ilen0(1)) )
Note: See TracChangeset
for help on using the changeset viewer.