- Timestamp:
- 2012-11-16T17:18:17+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r3294 r3583 32 32 USE ice_2 33 33 #endif 34 USE sbcapr 34 35 35 36 IMPLICIT NONE … … 108 109 109 110 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN 110 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 111 ilen1(:) = nblen(:) 112 ELSE 113 ilen1(:) = nblenrim(:) 114 ENDIF 111 ilen1(:) = nblen(:) 115 112 igrd = 1 116 113 DO ib = 1, ilen1(igrd) … … 134 131 135 132 IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 136 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 137 ilen1(:) = nblen(:) 138 ELSE 139 ilen1(:) = nblenrim(:) 140 ENDIF 133 ilen1(:) = nblen(:) 141 134 igrd = 2 142 135 DO ib = 1, ilen1(igrd) … … 158 151 159 152 IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN 160 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 161 ilen1(:) = nblen(:) 162 ELSE 163 ilen1(:) = nblenrim(:) 164 ENDIF 153 ilen1(:) = nblen(:) 165 154 igrd = 1 ! Everything is at T-points here 166 155 DO ib = 1, ilen1(igrd) … … 176 165 #if defined key_lim2 177 166 IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 178 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 179 ilen1(:) = nblen(:) 180 ELSE 181 ilen1(:) = nblenrim(:) 182 ENDIF 167 ilen1(:) = nblen(:) 183 168 igrd = 1 ! Everything is at T-points here 184 169 DO ib = 1, ilen1(igrd) … … 207 192 IF( PRESENT(jit) ) THEN 208 193 ! Update barotropic boundary conditions only 209 ! jit is optional argument for fld_read and tide_update194 ! jit is optional argument for fld_read and bdytide_update 210 195 IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 211 196 IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays … … 214 199 dta_bdy(ib_bdy)%v2d(:) = 0.0 215 200 ENDIF 216 IF( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN ! update external data 217 jend = jstart + 2 218 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 219 & jit=jit, time_offset=time_offset ) 220 ENDIF 221 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 222 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 223 & jit=jit, time_offset=time_offset ) 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.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 203 ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 204 jend = nb_bdy_fld(ib_bdy) 205 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 206 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 207 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 208 ! If full velocities in boundary data then split into barotropic and baroclinic data 209 IF( ln_full_vel_array(ib_bdy) .and. & 210 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 211 igrd = 2 ! zonal velocity 212 dta_bdy(ib_bdy)%u2d(:) = 0.0 213 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 214 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 215 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 216 DO ik = 1, jpkm1 217 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 218 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 219 END DO 220 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 221 DO ik = 1, jpkm1 222 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 223 END DO 224 END DO 225 igrd = 3 ! meridional velocity 226 dta_bdy(ib_bdy)%v2d(:) = 0.0 227 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 228 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 229 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 230 DO ik = 1, jpkm1 231 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 232 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 233 END DO 234 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 235 DO ik = 1, jpkm1 236 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 237 END DO 238 END DO 239 ENDIF 240 ENDIF 241 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 242 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 243 & jit=jit, time_offset=time_offset ) 244 ENDIF 224 245 ENDIF 225 246 ENDIF 226 247 ELSE 227 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 228 dta_bdy(ib_bdy)%ssh(:) = 0.0 229 dta_bdy(ib_bdy)%u2d(:) = 0.0 230 dta_bdy(ib_bdy)%v2d(:) = 0.0 248 IF (nn_tra(ib_bdy).eq.4) then ! runoff condition 249 jend = nb_bdy_fld(ib_bdy) 250 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 251 ! 252 igrd = 2 ! zonal velocity 253 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 254 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 255 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 256 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 257 END DO 258 ! 259 igrd = 3 ! meridional 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)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 264 END DO 265 ELSE 266 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 267 dta_bdy(ib_bdy)%ssh(:) = 0.0 268 dta_bdy(ib_bdy)%u2d(:) = 0.0 269 dta_bdy(ib_bdy)%v2d(:) = 0.0 270 ENDIF 271 IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 272 jend = nb_bdy_fld(ib_bdy) 273 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 274 ENDIF 275 ! If full velocities in boundary data then split into barotropic and baroclinic data 276 IF( ln_full_vel_array(ib_bdy) .and. & 277 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 278 igrd = 2 ! zonal velocity 279 dta_bdy(ib_bdy)%u2d(:) = 0.0 280 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 281 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 282 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 283 DO ik = 1, jpkm1 284 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 285 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 286 END DO 287 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 288 DO ik = 1, jpkm1 289 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 290 END DO 291 END DO 292 igrd = 3 ! meridional velocity 293 dta_bdy(ib_bdy)%v2d(:) = 0.0 294 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 295 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 296 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 297 DO ik = 1, jpkm1 298 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 299 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 300 END DO 301 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 302 DO ik = 1, jpkm1 303 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 304 END DO 305 END DO 306 ENDIF 307 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 308 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 309 ENDIF 231 310 ENDIF 232 IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data233 jend = jstart + nb_bdy_fld(ib_bdy) - 1234 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset )235 ENDIF236 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing237 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset )238 ENDIF239 311 ENDIF 240 312 jstart = jend+1 241 242 ! If full velocities in boundary data then split into barotropic and baroclinic data 243 ! (Note that we have already made sure that you can't use ln_full_vel = .true. at the same 244 ! time as the dynspg_ts option). 245 246 IF( ln_full_vel_array(ib_bdy) .and. & 247 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 248 249 igrd = 2 ! zonal velocity 250 dta_bdy(ib_bdy)%u2d(:) = 0.0 251 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 313 END IF ! nn_dta(ib_bdy) = 1 314 END DO ! ib_bdy 315 316 IF ( ln_apr_obc ) THEN 317 DO ib_bdy = 1, nb_bdy 318 IF (nn_tra(ib_bdy).NE.4)THEN 319 igrd = 1 ! meridional velocity 320 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 252 321 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 253 322 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 254 DO ik = 1, jpkm1 255 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 256 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 257 END DO 258 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 259 DO ik = 1, jpkm1 260 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 261 END DO 262 END DO 263 264 igrd = 3 ! meridional velocity 265 dta_bdy(ib_bdy)%v2d(:) = 0.0 266 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 267 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 268 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 269 DO ik = 1, jpkm1 270 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 271 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 272 END DO 273 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 274 DO ik = 1, jpkm1 275 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 276 END DO 277 END DO 278 279 ENDIF 280 281 END IF ! nn_dta(ib_bdy) = 1 282 END DO ! ib_bdy 323 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + ssh_ib(ii,ij) 324 ENDDO 325 ENDIF 326 ENDDO 327 ENDIF 283 328 284 329 IF( nn_timing == 1 ) CALL timing_stop('bdy_dta') … … 326 371 IF( nn_timing == 1 ) CALL timing_start('bdy_dta_init') 327 372 373 IF(lwp) WRITE(numout,*) 374 IF(lwp) WRITE(numout,*) 'bdy_dta_ini : initialization of data at the open boundaries' 375 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 376 IF(lwp) WRITE(numout,*) '' 377 328 378 ! Set nn_dta 329 379 DO ib_bdy = 1, nb_bdy … … 357 407 ENDIF 358 408 #endif 409 IF(lwp) WRITE(numout,*) 'Maximum number of files to open =',nb_bdy_fld(ib_bdy) 359 410 ENDDO 360 411 … … 408 459 ln_full_vel_array(ib_bdy) = ln_full_vel 409 460 410 IF( ln_full_vel_array(ib_bdy) .and. lk_dynspg_ts ) THEN411 CALL ctl_stop( 'bdy_dta_init: ERROR, cannot specify full velocities in boundary data',&412 & 'with dynspg_ts option' ) ; RETURN413 ENDIF414 415 461 nblen => idx_bdy(ib_bdy)%nblen 416 462 nblenrim => idx_bdy(ib_bdy)%nblenrim … … 420 466 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 421 467 422 IF( nn_ dyn2d(ib_bdy) .ne. jp_frs ) THEN468 IF( nn_tra(ib_bdy) .ne. 4 ) THEN ! runoff condition : no ssh reading 423 469 jfld = jfld + 1 424 470 blf_i(jfld) = bn_ssh 425 471 ibdy(jfld) = ib_bdy 426 472 igrid(jfld) = 1 427 ilen1(jfld) = nblen rim(igrid(jfld))473 ilen1(jfld) = nblen(igrid(jfld)) 428 474 ilen3(jfld) = 1 429 475 ENDIF 430 476 431 477 IF( .not. ln_full_vel_array(ib_bdy) ) THEN 432 433 478 jfld = jfld + 1 434 479 blf_i(jfld) = bn_u2d 435 480 ibdy(jfld) = ib_bdy 436 481 igrid(jfld) = 2 437 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 438 ilen1(jfld) = nblen(igrid(jfld)) 439 ELSE 440 ilen1(jfld) = nblenrim(igrid(jfld)) 441 ENDIF 482 ilen1(jfld) = nblen(igrid(jfld)) 442 483 ilen3(jfld) = 1 443 484 … … 446 487 ibdy(jfld) = ib_bdy 447 488 igrid(jfld) = 3 448 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 449 ilen1(jfld) = nblen(igrid(jfld)) 450 ELSE 451 ilen1(jfld) = nblenrim(igrid(jfld)) 452 ENDIF 489 ilen1(jfld) = nblen(igrid(jfld)) 453 490 ilen3(jfld) = 1 454 455 491 ENDIF 456 492 … … 466 502 ibdy(jfld) = ib_bdy 467 503 igrid(jfld) = 2 468 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 469 ilen1(jfld) = nblen(igrid(jfld)) 470 ELSE 471 ilen1(jfld) = nblenrim(igrid(jfld)) 472 ENDIF 504 ilen1(jfld) = nblen(igrid(jfld)) 473 505 ilen3(jfld) = jpk 474 506 … … 477 509 ibdy(jfld) = ib_bdy 478 510 igrid(jfld) = 3 479 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 480 ilen1(jfld) = nblen(igrid(jfld)) 481 ELSE 482 ilen1(jfld) = nblenrim(igrid(jfld)) 483 ENDIF 511 ilen1(jfld) = nblen(igrid(jfld)) 484 512 ilen3(jfld) = jpk 485 513 … … 493 521 ibdy(jfld) = ib_bdy 494 522 igrid(jfld) = 1 495 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 496 ilen1(jfld) = nblen(igrid(jfld)) 497 ELSE 498 ilen1(jfld) = nblenrim(igrid(jfld)) 499 ENDIF 523 ilen1(jfld) = nblen(igrid(jfld)) 500 524 ilen3(jfld) = jpk 501 525 … … 504 528 ibdy(jfld) = ib_bdy 505 529 igrid(jfld) = 1 506 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 507 ilen1(jfld) = nblen(igrid(jfld)) 508 ELSE 509 ilen1(jfld) = nblenrim(igrid(jfld)) 510 ENDIF 530 ilen1(jfld) = nblen(igrid(jfld)) 511 531 ilen3(jfld) = jpk 512 532 … … 521 541 ibdy(jfld) = ib_bdy 522 542 igrid(jfld) = 1 523 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 524 ilen1(jfld) = nblen(igrid(jfld)) 525 ELSE 526 ilen1(jfld) = nblenrim(igrid(jfld)) 527 ENDIF 543 ilen1(jfld) = nblen(igrid(jfld)) 528 544 ilen3(jfld) = 1 529 545 … … 532 548 ibdy(jfld) = ib_bdy 533 549 igrid(jfld) = 1 534 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 535 ilen1(jfld) = nblen(igrid(jfld)) 536 ELSE 537 ilen1(jfld) = nblenrim(igrid(jfld)) 538 ENDIF 550 ilen1(jfld) = nblen(igrid(jfld)) 539 551 ilen3(jfld) = 1 540 552 … … 543 555 ibdy(jfld) = ib_bdy 544 556 igrid(jfld) = 1 545 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 546 ilen1(jfld) = nblen(igrid(jfld)) 547 ELSE 548 ilen1(jfld) = nblenrim(igrid(jfld)) 549 ENDIF 557 ilen1(jfld) = nblen(igrid(jfld)) 550 558 ilen3(jfld) = 1 551 559 … … 566 574 ENDDO ! ib_bdy 567 575 568 569 576 DO jfld = 1, nb_bdy_fld_sum 570 577 ALLOCATE( bf(jfld)%fnow(ilen1(jfld),1,ilen3(jfld)) ) … … 577 584 jstart = 1 578 585 DO ib_bdy = 1, nb_bdy 579 jend = jstart + nb_bdy_fld(ib_bdy) - 1586 jend = nb_bdy_fld(ib_bdy) 580 587 CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta', & 581 588 & 'open boundary conditions', 'nambdy_dta' ) … … 596 603 IF (nn_dyn2d(ib_bdy) .gt. 0) THEN 597 604 IF( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 .or. ln_full_vel_array(ib_bdy) ) THEN 598 IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 599 ilen0(1:3) = nblen(1:3) 600 ELSE 601 ilen0(1:3) = nblenrim(1:3) 602 ENDIF 603 ALLOCATE( dta_bdy(ib_bdy)%ssh(ilen0(1)) ) 605 ilen0(1:3) = nblen(1:3) 604 606 ALLOCATE( dta_bdy(ib_bdy)%u2d(ilen0(2)) ) 605 607 ALLOCATE( dta_bdy(ib_bdy)%v2d(ilen0(3)) ) 608 IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3) THEN 609 jfld = jfld + 1 610 dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1) 611 ELSE 612 ALLOCATE( dta_bdy(ib_bdy)%ssh(nblen(1)) ) 613 ENDIF 606 614 ELSE 607 615 IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN … … 617 625 618 626 IF ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 619 IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 620 ilen0(1:3) = nblen(1:3) 621 ELSE 622 ilen0(1:3) = nblenrim(1:3) 623 ENDIF 627 ilen0(1:3) = nblen(1:3) 624 628 ALLOCATE( dta_bdy(ib_bdy)%u3d(ilen0(2),jpk) ) 625 629 ALLOCATE( dta_bdy(ib_bdy)%v3d(ilen0(3),jpk) ) … … 636 640 IF (nn_tra(ib_bdy) .gt. 0) THEN 637 641 IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 638 IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 639 ilen0(1:3) = nblen(1:3) 640 ELSE 641 ilen0(1:3) = nblenrim(1:3) 642 ENDIF 642 ilen0(1:3) = nblen(1:3) 643 643 ALLOCATE( dta_bdy(ib_bdy)%tem(ilen0(1),jpk) ) 644 644 ALLOCATE( dta_bdy(ib_bdy)%sal(ilen0(1),jpk) ) … … 654 654 IF (nn_ice_lim2(ib_bdy) .gt. 0) THEN 655 655 IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 656 IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 657 ilen0(1:3) = nblen(1:3) 658 ELSE 659 ilen0(1:3) = nblenrim(1:3) 660 ENDIF 656 ilen0(1:3) = nblen(1:3) 661 657 ALLOCATE( dta_bdy(ib_bdy)%frld(ilen0(1)) ) 662 658 ALLOCATE( dta_bdy(ib_bdy)%hicif(ilen0(1)) )
Note: See TracChangeset
for help on using the changeset viewer.