Changeset 4575
- Timestamp:
- 2014-03-26T09:35:49+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPATAM_SRC/DYN/dynldf_bilap_tam.F90
r3611 r4575 266 266 !! 9.0 ! 04-08 (C. Talandier) New trends organization 267 267 !! History of the adjoint routine 268 !! 9.0 ! 09-12 (F. Vigilant) adjoint of 9.0 268 269 !! 3.4 ! 12-07 (P.-A. Bouttier) 3.4 version 269 270 !!---------------------------------------------------------------------- … … 293 294 zuaad = 0.0_wp 294 295 zvaad = 0.0_wp 296 295 297 zufad(:,:,:) = 0.0_wp 296 298 zutad(:,:,:) = 0.0_wp 297 299 zluad(:,:,:) = 0.0_wp 298 300 zlvad(:,:,:) = 0.0_wp 301 299 302 zcvad(:,:) = 0.0_wp 300 303 zcuad(:,:) = 0.0_wp 301 304 302 305 DO jk = 1, jpkm1 306 303 307 ! Bilaplacian 304 308 ! ----------- 309 305 310 DO jj = jpjm1, 2, -1 306 311 DO ji = fs_jpim1, fs_2, -1 ! vector opt. … … 315 320 zutad(ji ,jj ,jk) = zutad(ji ,jj ,jk) - zvaad / e2v(ji,jj) 316 321 zutad(ji ,jj+1,jk) = zutad(ji ,jj+1,jk) + zvaad / e2v(ji,jj) 317 ! 322 318 323 zufad(ji ,jj ,jk) = zufad(ji ,jj ,jk) - zuaad / ze2u 319 324 zufad(ji ,jj-1,jk) = zufad(ji ,jj-1,jk) + zuaad / ze2u 320 325 zutad(ji ,jj ,jk) = zutad(ji ,jj ,jk) - zuaad / e1u(ji,jj) 321 326 zutad(ji+1,jj ,jk) = zutad(ji+1,jj ,jk) + zuaad / e1u(ji,jj) 322 !327 323 328 zuaad = 0.0_wp 324 329 zvaad = 0.0_wp 325 330 END DO 326 331 END DO 332 327 333 ! ! =============== 328 334 END DO ! End of slab 329 335 ! ! =============== 336 330 337 ! boundary conditions on the laplacian curl and div (zuf,zut) 331 338 !!bug gm no need to do this 2 following lbc... 332 339 CALL lbc_lnk_adj( zutad, 'T', 1.0_wp ) 333 340 CALL lbc_lnk_adj( zufad, 'F', 1.0_wp ) 341 334 342 DO jk = 1, jpkm1 343 335 344 ! Third derivative 336 345 ! ---------------- 346 337 347 ! Laplacian divergence 338 348 DO jj = jpj, 2, -1 … … 343 353 zlvad(ji ,jj ,jk) = zlvad(ji ,jj ,jk) + zutad(ji,jj,jk) / zbt 344 354 zlvad(ji ,jj-1,jk) = zlvad(ji ,jj-1,jk) - zutad(ji,jj,jk) / zbt 355 345 356 zutad(ji,jj,jk) = 0.0_wp 346 357 END DO 347 358 END DO 359 348 360 ! Laplacian Horizontal fluxes 349 361 DO jj = jpjm1, 1, -1 … … 353 365 END DO 354 366 END DO 367 355 368 ! Laplacian curl ( * e3f if s-coordinates or z-coordinate with partial steps) 356 369 DO jj = jpjm1, 1, -1 … … 361 374 zcuad(ji ,jj ) = zcuad(ji ,jj ) + zufad(ji,jj,jk) 362 375 zcuad(ji ,jj+1) = zcuad(ji ,jj+1) - zufad(ji,jj,jk) 376 363 377 zufad(ji,jj,jk) = 0.0_wp 364 378 END DO 365 379 END DO 380 366 381 ! Contravariant "laplacian" 367 382 DO jj = 1, jpj … … 373 388 END DO 374 389 END DO 390 375 391 ! Multiply by the eddy viscosity coef. (at u- and v-points) 376 392 zluad(:,:,jk) = zluad(:,:,jk) * fsahmu(:,:,jk) 377 393 zlvad(:,:,jk) = zlvad(:,:,jk) * fsahmv(:,:,jk) 394 378 395 END DO 396 379 397 ! Boundary conditions on the laplacian (zlu,zlv) 380 398 CALL lbc_lnk_adj( zlvad, 'V', -1.0_wp ) 381 399 CALL lbc_lnk_adj( zluad, 'U', -1.0_wp ) 400 382 401 ! ! =============== 383 402 DO jk = 1, jpkm1 ! Horizontal slab … … 385 404 ! Laplacian 386 405 ! --------- 406 387 407 IF( ln_sco .OR. ln_zps ) THEN ! s-coordinate or z-coordinate with partial steps 388 408 DO jj = jpjm1, 2, -1 … … 393 413 hdivb_ad(ji ,jj+1,jk) = hdivb_ad(ji ,jj+1,jk) + zlvad(ji,jj,jk) / e2v(ji,jj) 394 414 zlvad(ji,jj,jk) = 0.0_wp 415 395 416 zufad (ji ,jj ,jk) = zufad (ji ,jj ,jk) - zluad(ji ,jj ,jk) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) 396 417 zufad (ji ,jj-1,jk) = zufad (ji ,jj-1,jk) + zluad(ji ,jj ,jk) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) … … 409 430 hdivb_ad(ji ,jj+1,jk) = hdivb_ad(ji ,jj+1,jk) + zlvad(ji,jj,jk) / e2v(ji,jj) 410 431 zlvad(ji,jj,jk) = 0.0_wp 432 411 433 rotb_ad (ji ,jj ,jk) = rotb_ad (ji ,jj ,jk) - zluad(ji,jj,jk) / e2u(ji,jj) 412 434 rotb_ad (ji ,jj-1,jk) = rotb_ad (ji ,jj-1,jk) + zluad(ji,jj,jk) / e2u(ji,jj)
Note: See TracChangeset
for help on using the changeset viewer.