436 | | |
437 | | |
| 436 | - finally we wrote additionnal comments and did some cleaning ! |
| 437 | |
| 438 | |
| 439 | {{{#!diff |
| 440 | Index: DEC_dbg_RK3/src/OCE/stprk3.F90 |
| 441 | =================================================================== |
| 442 | --- DEC_dbg_RK3/src/OCE/stprk3.F90 (revision 15591) |
| 443 | +++ DEC_dbg_RK3/src/OCE/stprk3.F90 (working copy) |
| 444 | @@ -156,11 +156,13 @@ |
| 445 | !!st CALL zdf_phy( kstp, Nbb, Nnn, Nrhs ) ! vertical physics update (top/bot drag, avt, avs, avm + MLD) |
| 446 | CALL zdf_phy( kstp, Nbb, Nbb, Nrhs ) ! vertical physics update (top/bot drag, avt, avs, avm + MLD) |
| 447 | !!gm |
| 448 | +!!st check with gm !!!!! |
| 449 | + CALL eos( ts(:,:,:,:,Nbb), rhd, rhop, gdept_0(:,:,:) ) ! now in situ density for tramle slope computation |
| 450 | ! LATERAL PHYSICS |
| 451 | ! |
| 452 | IF( l_ldfslp ) THEN ! slope of lateral mixing |
| 453 | !!gm gdep |
| 454 | - CALL eos( ts(:,:,:,:,Nbb), rhd, gdept_0(:,:,:) ) ! before in situ density |
| 455 | +!!st CALL eos( ts(:,:,:,:,Nbb), rhd, gdept_0(:,:,:) ) ! before in situ density |
| 456 | |
| 457 | IF( ln_zps .AND. .NOT. ln_isfcav) & |
| 458 | & CALL zps_hde ( kstp, Nbb, jpts, ts(:,:,:,:,Nbb), gtsu, gtsv, & ! Partial steps: before horizontal gradient |
| 459 | Index: DEC_dbg_RK3/src/OCE/IOM/restart.F90 |
| 460 | =================================================================== |
| 461 | --- DEC_dbg_RK3/src/OCE/IOM/restart.F90 (revision 15591) |
| 462 | +++ DEC_dbg_RK3/src/OCE/IOM/restart.F90 (working copy) |
| 463 | @@ -176,7 +176,7 @@ |
| 464 | CALL iom_rstput( kt, nitrst, numrow, 'vn' , vv(:,:,: ,Kmm) ) |
| 465 | CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts(:,:,:,jp_tem,Kmm) ) |
| 466 | CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts(:,:,:,jp_sal,Kmm) ) |
| 467 | - IF( .NOT.lk_SWE ) CALL iom_rstput( kt, nitrst, numrow, 'rhop', rhop ) |
| 468 | +!!$ IF( .NOT.lk_SWE ) CALL iom_rstput( kt, nitrst, numrow, 'rhop', rhop ) |
| 469 | #endif |
| 470 | ENDIF |
| 471 | |
| 472 | @@ -290,6 +290,9 @@ |
| 473 | CALL iom_get( numror, jpdom_auto, 'sb' , ts(:,:,:,jp_sal,Kbb) ) |
| 474 | CALL iom_get( numror, jpdom_auto, 'uu_b' , uu_b(:,: ,Kbb), cd_type = 'U', psgn = -1._wp ) |
| 475 | CALL iom_get( numror, jpdom_auto, 'vv_b' , vv_b(:,: ,Kbb), cd_type = 'V', psgn = -1._wp ) |
| 476 | + uu(:,:,: ,Kmm) = uu(:,:,: ,Kbb) ! all now value set to before for initialisation (sbc_ssm_init) |
| 477 | + vv(:,:,: ,Kmm) = vv(:,:,: ,Kbb) |
| 478 | + ts(:,:,:,:,Kmm) = ts(:,:,:,:,Kbb) |
| 479 | #else |
| 480 | ! !* Read Kmm fields (MLF only) |
| 481 | IF(lwp) WRITE(numout,*) ' Kmm u, v and T-S fields read in the restart file' |
| 482 | @@ -313,27 +316,17 @@ |
| 483 | ENDIF |
| 484 | #endif |
| 485 | ! |
| 486 | - IF( .NOT.lk_SWE ) THEN |
| 487 | - IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN |
| 488 | - CALL iom_get( numror, jpdom_auto, 'rhop' , rhop ) ! now potential density |
| 489 | - ELSE |
| 490 | -#if defined key_RK3 |
| 491 | - CALL eos( ts, Kbb, rhop ) |
| 492 | -#else |
| 493 | - CALL eos( ts, Kmm, rhop ) |
| 494 | -#endif |
| 495 | -!!#if defined key_qco |
| 496 | -!! ALLOCATE( zgdept(jpi,jpj,jpk) ) |
| 497 | -!! DO jk = 1, jpk |
| 498 | -!! zgdept(:,:,jk) = gdept(:,:,jk,Kmm) |
| 499 | -!! END DO |
| 500 | -!! CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, zgdept ) |
| 501 | -!! DEALLOCATE( zgdept ) |
| 502 | -!!#else |
| 503 | -!! CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) ) |
| 504 | -!!#endif |
| 505 | - ENDIF |
| 506 | - ENDIF |
| 507 | +!!$ IF( .NOT.lk_SWE ) THEN |
| 508 | +!!$ IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN |
| 509 | +!!$ CALL iom_get( numror, jpdom_auto, 'rhop' , rhop ) ! now potential density |
| 510 | +!!$ ELSE |
| 511 | +!!$#if defined key_RK3 |
| 512 | +!!$ CALL eos( ts, Kbb, rhop ) ! not rhop but rhd |
| 513 | +!!$#else |
| 514 | +!!$ CALL eos( ts, Kmm, rhop ) |
| 515 | +!!$#endif |
| 516 | +!!$ ENDIF |
| 517 | +!!$ ENDIF |
| 518 | ! |
| 519 | END SUBROUTINE rst_read |
| 520 | |
| 521 | @@ -377,7 +370,7 @@ |
| 522 | CALL iom_get( numror, jpdom_auto, 'sshb' , ssh(:,:,Kbb) ) |
| 523 | ! |
| 524 | ! !* RK3: Set ssh at Kmm for AGRIF |
| 525 | - ssh(:,:,Kmm) = 0._wp |
| 526 | + ssh(:,:,Kmm) = ssh(:,:,Kbb) |
| 527 | #else |
| 528 | ! !* MLF: Read ssh at Kmm |
| 529 | IF(lwp) WRITE(numout,*) |
| 530 | Index: DEC_dbg_RK3/src/OCE/DYN/divhor.F90 |
| 531 | =================================================================== |
| 532 | --- DEC_dbg_RK3/src/OCE/DYN/divhor.F90 (revision 15591) |
| 533 | +++ DEC_dbg_RK3/src/OCE/DYN/divhor.F90 (working copy) |
| 534 | @@ -83,7 +83,7 @@ |
| 535 | ! |
| 536 | pe3divUh(:,:,:) = 0._wp !!gm to be applied to the halos only |
| 537 | ! |
| 538 | - DO_3D( 0, 0, 0, 0, 1, jpkm1 ) |
| 539 | + DO_3D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls, 1, jpkm1 ) |
| 540 | hdiv(ji,jj,jk) = ( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) * puu(ji ,jj,jk) & |
| 541 | & - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * puu(ji-1,jj,jk) & |
| 542 | & + e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) * pvv(ji,jj ,jk) & |
| 543 | @@ -100,7 +100,7 @@ |
| 544 | ! |
| 545 | IF( ln_isf ) CALL isf_hdiv( kt, Kmm, hdiv ) !== + ice-shelf mass exchange ==! |
| 546 | ! |
| 547 | - CALL lbc_lnk( 'divhor', hdiv, 'T', 1._wp ) ! (no sign change) |
| 548 | + IF( nn_hls==1 ) CALL lbc_lnk( 'divhor', hdiv, 'T', 1._wp ) ! (no sign change) |
| 549 | ! |
| 550 | !!gm Patch before suppression of hdiv from all modules that use it |
| 551 | ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== e3t * Horizontal divergence ==! |
| 552 | @@ -107,9 +107,9 @@ |
| 553 | ! pe3divUh(ji,jj,jk) = hdiv(ji,jj,jk) * e3t(ji,jj,jk,Kmm) |
| 554 | ! END_3D |
| 555 | !JC: over whole domain, and after lbclnk on hdiv to prevent from reproducibility issues |
| 556 | - DO jk=1, jpkm1 |
| 557 | - pe3divUh(:,:,jk) = hdiv(:,:,jk) * e3t(:,:,jk,Kmm) |
| 558 | - END DO |
| 559 | + DO_3D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls, 1, jpkm1 ) |
| 560 | + pe3divUh(ji,jj,jk) = hdiv(ji,jj,jk) * e3t(ji,jj,jk,Kmm) |
| 561 | + END_3D |
| 562 | !!gm end |
| 563 | ! |
| 564 | ! |
| 565 | Index: DEC_dbg_RK3/src/OCE/DYN/sshwzv.F90 |
| 566 | =================================================================== |
| 567 | --- DEC_dbg_RK3/src/OCE/DYN/sshwzv.F90 (revision 15591) |
| 568 | +++ DEC_dbg_RK3/src/OCE/DYN/sshwzv.F90 (working copy) |
| 569 | @@ -328,40 +328,41 @@ |
| 570 | DO jk = 1, jpkm1 |
| 571 | ! horizontal divergence of thickness diffusion transport ( velocity multiplied by e3t) |
| 572 | ! - ML - note: computation already done in dom_vvl_sf_nxt. Could be optimized (not critical and clearer this way) |
| 573 | - DO_2D( 0, 0, 0, 0 ) |
| 574 | + DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls ) |
| 575 | zhdiv(ji,jj,jk) = r1_e1e2t(ji,jj) * ( un_td(ji,jj,jk) - un_td(ji-1,jj,jk) + vn_td(ji,jj,jk) - vn_td(ji,jj-1,jk) ) |
| 576 | END_2D |
| 577 | END DO |
| 578 | - CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions" |
| 579 | + IF( nn_hls == 1) CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions" |
| 580 | ! ! Is it problematic to have a wrong vertical velocity in boundary cells? |
| 581 | ! ! Same question holds for hdiv. Perhaps just for security |
| 582 | - DO jk = jpkm1, 1, -1 ! integrate from the bottom the hor. divergence |
| 583 | - ! computation of w |
| 584 | - pww(:,:,jk) = pww(:,:,jk+1) - ( ze3div(:,:,jk) + zhdiv(:,:,jk) & |
| 585 | - & + r1_Dt * ( e3t(:,:,jk,Kaa) & |
| 586 | - & - e3t(:,:,jk,Kbb) ) ) * tmask(:,:,jk) |
| 587 | - END DO |
| 588 | - ! IF( ln_vvl_layer ) pww(:,:,:) = 0.e0 |
| 589 | + DO_3DS( nn_hls-1, nn_hls, nn_hls-1, nn_hls, jpkm1, 1, -1 ) ! integrate from the bottom the hor. divergence |
| 590 | + pww(ji,jj,jk) = pww(ji,jj,jk+1) - ( ze3div(ji,jj,jk) + zhdiv(ji,jj,jk) & |
| 591 | + & + r1_Dt * ( e3t(ji,jj,jk,Kaa) & |
| 592 | + & - e3t(ji,jj,jk,Kbb) ) ) * tmask(ji,jj,jk) |
| 593 | + END_3D |
| 594 | + ! |
| 595 | DEALLOCATE( zhdiv ) |
| 596 | ! !=================================! |
| 597 | ELSEIF( ln_linssh ) THEN !== linear free surface cases ==! |
| 598 | ! !=================================! |
| 599 | - DO jk = jpkm1, 1, -1 ! integrate from the bottom the hor. divergence |
| 600 | - pww(:,:,jk) = pww(:,:,jk+1) - ze3div(:,:,jk) |
| 601 | - END DO |
| 602 | + DO_3DS( nn_hls-1, nn_hls, nn_hls-1, nn_hls, jpkm1, 1, -1 ) ! integrate from the bottom the hor. divergence |
| 603 | + pww(ji,jj,jk) = pww(ji,jj,jk+1) - ze3div(ji,jj,jk) |
| 604 | + END_3D |
| 605 | ! !==========================================! |
| 606 | ELSE !== Quasi-Eulerian vertical coordinate ==! ('key_qco') |
| 607 | ! !==========================================! |
| 608 | - DO jk = jpkm1, 1, -1 ! integrate from the bottom the hor. divergence |
| 609 | - ! ! NB: [e3t[a] -e3t[b] ]=e3t_0*[r3t[a]-r3t[b]] |
| 610 | - pww(:,:,jk) = pww(:,:,jk+1) - ( ze3div(:,:,jk) & |
| 611 | - & + r1_Dt * e3t_0(:,:,jk) * ( r3t(:,:,Kaa) - r3t(:,:,Kbb) ) ) * tmask(:,:,jk) |
| 612 | - END DO |
| 613 | + DO_3DS( nn_hls-1, nn_hls, nn_hls-1, nn_hls, jpkm1, 1, -1 ) ! integrate from the bottom the hor. divergence |
| 614 | + ! ! NB: [e3t[a] -e3t[b] ]=e3t_0*[r3t[a]-r3t[b]] |
| 615 | + pww(ji,jj,jk) = pww(ji,jj,jk+1) - ( ze3div(ji,jj,jk) & |
| 616 | + & + r1_Dt * e3t_0(ji,jj,jk) * ( r3t(ji,jj,Kaa) - r3t(ji,jj,Kbb) ) ) * tmask(ji,jj,jk) |
| 617 | + END_3D |
| 618 | ENDIF |
| 619 | |
| 620 | IF( ln_bdy ) THEN |
| 621 | DO jk = 1, jpkm1 |
| 622 | - pww(:,:,jk) = pww(:,:,jk) * bdytmask(:,:) |
| 623 | + DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls ) |
| 624 | + pww(ji,jj,jk) = pww(ji,jj,jk) * bdytmask(ji,jj) |
| 625 | + END_2D |
| 626 | END DO |
| 627 | ENDIF |
| 628 | ! |
| 629 | Index: DEC_dbg_RK3/src/OCE/DYN/dynspg_ts.F90 |
| 630 | =================================================================== |
| 631 | --- DEC_dbg_RK3/src/OCE/DYN/dynspg_ts.F90 (revision 15591) |
| 632 | +++ DEC_dbg_RK3/src/OCE/DYN/dynspg_ts.F90 (working copy) |
| 633 | @@ -802,7 +802,7 @@ |
| 634 | END_2D |
| 635 | # endif |
| 636 | ! |
| 637 | - CALL lbc_lnk_multi( 'dynspg_ts', puu_b, 'U', -1._wp, pvv_b, 'V', -1._wp ) ! Boundary conditions |
| 638 | + CALL lbc_lnk( 'dynspg_ts', puu_b, 'U', -1._wp, pvv_b, 'V', -1._wp ) ! Boundary conditions |
| 639 | ! |
| 640 | ENDIF |
| 641 | ! |
| 642 | Index: DEC_dbg_RK3/src/OCE/stprk3_stg.F90 |
| 643 | =================================================================== |
| 644 | --- DEC_dbg_RK3/src/OCE/stprk3_stg.F90 (revision 15591) |
| 645 | +++ DEC_dbg_RK3/src/OCE/stprk3_stg.F90 (working copy) |
| 646 | @@ -33,6 +33,8 @@ |
| 647 | # if defined key_agrif |
| 648 | USE agrif_oce_interp |
| 649 | # endif |
| 650 | +!!st -dbg stp2d (r3u) |
| 651 | + USE lbclnk ! ocean lateral boundary conditions (or mpp link) |
| 652 | |
| 653 | ! |
| 654 | USE prtctl ! print control |
| 655 | @@ -147,17 +149,27 @@ |
| 656 | ! !== ssh/h0 ratio at Kaa ==! |
| 657 | ! |
| 658 | IF( .NOT.lk_linssh ) CALL dom_qco_r3c( ssh(:,:,Kaa), r3t(:,:,Kaa), r3u(:,:,Kaa), r3v(:,:,Kaa), r3f(:,:) ) ! "after" ssh/h_0 ratio at t,u,v-column |
| 659 | +!! SELECT CASE( kstg ) |
| 660 | + ! |
| 661 | +!! CASE ( 3 ) |
| 662 | + !!st required at each stage for div hor loops |
| 663 | + CALL lbc_lnk( 'stprk3_stg', r3u(:,:,Kaa), 'U', 1._wp, r3v(:,:,Kaa), 'V', 1._wp, r3f(:,:), 'F', 1._wp ) |
| 664 | + ! |
| 665 | +!! END SELECT |
| 666 | ! |
| 667 | ! |
| 668 | ! !== advective velocity at Kmm ==! |
| 669 | ! |
| 670 | ! !- horizontal components -! (zaU,zaV) |
| 671 | - zub(:,:) = un_adv(:,:)*r1_hu(:,:,Kmm) - uu_b(:,:,Kmm) ! barotropic velocity correction |
| 672 | - zvb(:,:) = vn_adv(:,:)*r1_hv(:,:,Kmm) - vv_b(:,:,Kmm) |
| 673 | - DO jk = 1, jpkm1 ! horizontal advective velocity |
| 674 | - zaU(:,:,jk) = uu(:,:,jk,Kmm) + zub(:,:)*umask(:,:,jk) |
| 675 | - zaV(:,:,jk) = vv(:,:,jk,Kmm) + zvb(:,:)*vmask(:,:,jk) |
| 676 | - END DO |
| 677 | + DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) |
| 678 | + zub(ji,jj) = un_adv(ji,jj)*r1_hu(ji,jj,Kmm) - uu_b(ji,jj,Kmm) ! barotropic velocity correction |
| 679 | + zvb(ji,jj) = vn_adv(ji,jj)*r1_hv(ji,jj,Kmm) - vv_b(ji,jj,Kmm) |
| 680 | + END_2D |
| 681 | + DO_3D_OVR( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) ! horizontal advective velocity |
| 682 | + zaU(ji,jj,jk) = uu(ji,jj,jk,Kmm) + zub(ji,jj)*umask(ji,jj,jk) |
| 683 | + zaV(ji,jj,jk) = vv(ji,jj,jk,Kmm) + zvb(ji,jj)*vmask(ji,jj,jk) |
| 684 | + END_3D |
| 685 | + |
| 686 | ! !- vertical components -! ww |
| 687 | CALL wzv ( kstp, Kbb, Kmm, Kaa, zaU, zaV, ww ) ! ww cross-level velocity |
| 688 | |
| 689 | @@ -223,9 +235,7 @@ |
| 690 | IF(.NOT. ln_trcadv_mus ) THEN |
| 691 | ! |
| 692 | DO jn = 1, jptra |
| 693 | - DO_3D( 0, 0, 0, 0, 1, jpkm1 ) |
| 694 | - tr(ji,jj,jk,jn,Krhs) = 0._wp ! set tracer trends to zero |
| 695 | - END_3D |
| 696 | + tr(:,:,:,jn,Krhs) = 0._wp ! set tracer trends to zero !!st ::: required because of tra_adv new loops |
| 697 | END DO |
| 698 | ! !== advection of passive tracers ==! |
| 699 | rDt_trc = rDt |
| 700 | @@ -253,9 +263,7 @@ |
| 701 | ! !---------------! |
| 702 | ! |
| 703 | DO jn = 1, jptra |
| 704 | - DO_3D( 0, 0, 0, 0, 1, jpkm1 ) |
| 705 | - tr(ji,jj,jk,jn,Krhs) = 0._wp ! set tracer trends to zero |
| 706 | - END_3D |
| 707 | + tr(:,:,:,jn,Krhs) = 0._wp ! set tracer trends to zero !!st ::: required because of tra_adv new loops |
| 708 | END DO |
| 709 | ! !== advection of passive tracers ==! |
| 710 | rDt_trc = rDt |
| 711 | @@ -393,12 +401,11 @@ |
| 712 | zvb(A2D(0)) = vv_b(A2D(0),Kaa) - SUM( e3v_0(A2D(0),:)*vv(A2D(0),:,Kaa), 3 ) * r1_hv_0(A2D(0)) |
| 713 | ! |
| 714 | DO jk = 1, jpkm1 ! corrected horizontal velocity |
| 715 | - uu(:,:,jk,Kaa) = uu(:,:,jk,Kaa) + zub(:,:)*umask(:,:,jk) |
| 716 | - vv(:,:,jk,Kaa) = vv(:,:,jk,Kaa) + zvb(:,:)*vmask(:,:,jk) |
| 717 | + uu(A2D(0),jk,Kaa) = uu(A2D(0),jk,Kaa) + zub(A2D(0))*umask(A2D(0),jk) |
| 718 | + vv(A2D(0),jk,Kaa) = vv(A2D(0),jk,Kaa) + zvb(A2D(0))*vmask(A2D(0),jk) |
| 719 | END DO |
| 720 | -!!st pourquoi ne pas mettre A2D(0) ici ? |
| 721 | - |
| 722 | |
| 723 | + |
| 724 | !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
| 725 | ! Set boundary conditions |
| 726 | !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
| 727 | @@ -408,9 +415,12 @@ |
| 728 | CALL Agrif_dyn( kstp, kstg ) |
| 729 | # endif |
| 730 | ! !* local domain boundaries (T-point, unchanged sign) |
| 731 | - CALL lbc_lnk_multi( 'stp_RK3_stg', uu(:,:,:, Kaa), 'U', -1., vv(:,:,: ,Kaa), 'V', -1. & |
| 732 | - & , ts(:,:,:,jp_tem,Kaa), 'T', 1., ts(:,:,:,jp_sal,Kaa), 'T', 1. ) |
| 733 | + CALL lbc_lnk( 'stp_RK3_stg', uu(:,:,:, Kaa), 'U', -1., vv(:,:,: ,Kaa), 'V', -1. & |
| 734 | + & , ts(:,:,:,jp_tem,Kaa), 'T', 1., ts(:,:,:,jp_sal,Kaa), 'T', 1. ) |
| 735 | + ! lbc_lnk needed for zdf_sh2 when using nn_hls = 2, moved here to allow tiling in zdf_phy |
| 736 | + IF( nn_hls == 2 .AND. l_zdfsh2 ) CALL lbc_lnk( 'stp_RK3_stg', avm_k, 'W', 1.0_wp ) |
| 737 | ! |
| 738 | + ! |
| 739 | ! !* BDY open boundaries |
| 740 | IF( ln_bdy ) THEN |
| 741 | CALL bdy_tra( kstp, Kbb, ts, Kaa ) |
| 742 | Index: DEC_dbg_RK3/src/OCE/ZDF/zdfphy.F90 |
| 743 | =================================================================== |
| 744 | --- DEC_dbg_RK3/src/OCE/ZDF/zdfphy.F90 (revision 15591) |
| 745 | +++ DEC_dbg_RK3/src/OCE/ZDF/zdfphy.F90 (working copy) |
| 746 | @@ -209,7 +209,7 @@ |
| 747 | ioptio = 0 |
| 748 | IF( ln_zdfcst ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_CST ; ENDIF |
| 749 | IF( ln_zdfric ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_RIC ; CALL zdf_ric_init ; ENDIF |
| 750 | - IF( ln_zdftke ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_TKE ; CALL zdf_tke_init( Kmm ) ; ENDIF |
| 751 | + IF( ln_zdftke ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_TKE ; CALL zdf_tke_init ; ENDIF |
| 752 | IF( ln_zdfgls ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_GLS ; CALL zdf_gls_init ; ENDIF |
| 753 | IF( ln_zdfosm ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_OSM ; CALL zdf_osm_init( Kmm ) ; ENDIF |
| 754 | ! |
| 755 | @@ -350,7 +350,7 @@ |
| 756 | IF( ln_zdfiwm ) CALL zdf_iwm( kt, Kmm, avm, avt, avs ) ! internal wave (de Lavergne et al 2017) |
| 757 | |
| 758 | ! !* Lateral boundary conditions (sign unchanged) |
| 759 | - IF(nn_hls==1) THEN |
| 760 | + IF(nn_hls==1) THEN ! if nn_hls==2 lbc_lnk done in stpxxx routines |
| 761 | IF( l_zdfsh2 ) THEN |
| 762 | CALL lbc_lnk( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp, & |
| 763 | & avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) |
| 764 | Index: DEC_dbg_RK3/src/OCE/ZDF/zdftke.F90 |
| 765 | =================================================================== |
| 766 | --- DEC_dbg_RK3/src/OCE/ZDF/zdftke.F90 (revision 15591) |
| 767 | +++ DEC_dbg_RK3/src/OCE/ZDF/zdftke.F90 (working copy) |
| 768 | @@ -698,7 +698,7 @@ |
| 769 | END SUBROUTINE tke_avn |
| 770 | |
| 771 | |
| 772 | - SUBROUTINE zdf_tke_init( Kmm ) |
| 773 | + SUBROUTINE zdf_tke_init |
| 774 | !!---------------------------------------------------------------------- |
| 775 | !! *** ROUTINE zdf_tke_init *** |
| 776 | !! |
| 777 | @@ -714,7 +714,6 @@ |
| 778 | !!---------------------------------------------------------------------- |
| 779 | USE zdf_oce , ONLY : ln_zdfiwm ! Internal Wave Mixing flag |
| 780 | !! |
| 781 | - INTEGER, INTENT(in) :: Kmm ! time level index |
| 782 | INTEGER :: ji, jj, jk ! dummy loop indices |
| 783 | INTEGER :: ios |
| 784 | !! |
| 785 | Index: DEC_dbg_RK3/src/OCE/TRA/traqsr.F90 |
| 786 | =================================================================== |
| 787 | --- DEC_dbg_RK3/src/OCE/TRA/traqsr.F90 (revision 15591) |
| 788 | +++ DEC_dbg_RK3/src/OCE/TRA/traqsr.F90 (working copy) |
| 789 | @@ -179,8 +179,8 @@ |
| 790 | #endif |
| 791 | END_3D |
| 792 | ! !- sea-ice : store the 1st level attenuation coefficient |
| 793 | - WHERE( etot3(A2D(0),1) /= 0._wp ) ; fraqsr_1lev(A2D(0)) = 1._wp - etot3(A2D(0),2) / etot3(A2D(0),1) |
| 794 | - ELSEWHERE ; fraqsr_1lev(A2D(0)) = 1._wp |
| 795 | + WHERE( etot3(A2D(nn_hls),1) /= 0._wp ) ; fraqsr_1lev(A2D(nn_hls)) = 1._wp - etot3(A2D(nn_hls),2) / etot3(A2D(nn_hls),1) |
| 796 | + ELSEWHERE ; fraqsr_1lev(A2D(nn_hls)) = 1._wp |
| 797 | END WHERE |
| 798 | ! |
| 799 | END SELECT |
| 800 | @@ -207,9 +207,8 @@ |
| 801 | & / e3t(ji,jj,jk,Kmm) |
| 802 | END_3D |
| 803 | ! |
| 804 | -!!st7-2 |
| 805 | ! sea-ice: store the 1st ocean level attenuation coefficient |
| 806 | - DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) |
| 807 | + DO_2D( 0, 0, 0, 0 ) |
| 808 | IF( qsr(ji,jj) /= 0._wp ) THEN ; fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rho0_rcp * qsr(ji,jj) ) |
| 809 | ELSE ; fraqsr_1lev(ji,jj) = 1._wp |
| 810 | ENDIF |
| 811 | @@ -217,7 +216,6 @@ |
| 812 | ! !===>>> CAUTION: lbc_lnk is required on fraqsr_lev since sea ice computes on the full domain |
| 813 | ! ! otherwise restartability and reproducibility are broken |
| 814 | CALL lbc_lnk( 'tra_qsr', fraqsr_1lev(:,:), 'T', 1._wp ) |
| 815 | -!!st CALL lbc_lnk( 'tra_qsr', qsr_hc(:,:,:), 'T', 1._wp ) |
| 816 | ! |
| 817 | IF( iom_use('qsr3d') ) THEN ! output the shortwave Radiation distribution |
| 818 | ALLOCATE( zetot(A2D(nn_hls),jpk) ) |
| 819 | Index: DEC_dbg_RK3/src/OCE/TRA/traadv_fct.F90 |
| 820 | =================================================================== |
| 821 | --- DEC_dbg_RK3/src/OCE/TRA/traadv_fct.F90 (revision 15591) |
| 822 | +++ DEC_dbg_RK3/src/OCE/TRA/traadv_fct.F90 (working copy) |
| 823 | @@ -186,6 +186,7 @@ |
| 824 | & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) & |
| 825 | & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) |
| 826 | ! ! update and guess with monotonic sheme |
| 827 | +!!st pt should be updated with a DO_3D( 0,0,0,0, 1, jpkm1 ) values outside the interior are wrong but unused. |
| 828 | pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) + ztra & |
| 829 | & / e3t(ji,jj,jk,Kmm ) * tmask(ji,jj,jk) |
| 830 | zwi(ji,jj,jk) = ( e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * ztra ) & |
| 831 | Index: DEC_dbg_RK3/src/OCE/TRA/trasbc.F90 |
| 832 | =================================================================== |
| 833 | --- DEC_dbg_RK3/src/OCE/TRA/trasbc.F90 (revision 15591) |
| 834 | +++ DEC_dbg_RK3/src/OCE/TRA/trasbc.F90 (working copy) |
| 835 | @@ -275,7 +275,7 @@ |
| 836 | |
| 837 | !!gm This should be moved into sbcmod.F90 module ? (especially now that ln_traqsr is read in namsbc namelist) |
| 838 | IF( .NOT.ln_traqsr .AND. kstg == 1) THEN ! no solar radiation penetration |
| 839 | - DO_2D( 0, 0, 0, 0 ) |
| 840 | + DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) |
| 841 | qns(ji,jj) = qns(ji,jj) + qsr(ji,jj) ! total heat flux in qns |
| 842 | qsr(ji,jj) = 0._wp ! qsr set to zero |
| 843 | END_2D |
| 844 | Index: DEC_dbg_RK3/src/OCE/TRD/trdglo.F90 |
| 845 | =================================================================== |
| 846 | --- DEC_dbg_RK3/src/OCE/TRD/trdglo.F90 (revision 15591) |
| 847 | +++ DEC_dbg_RK3/src/OCE/TRD/trdglo.F90 (working copy) |
| 848 | @@ -201,7 +201,7 @@ |
| 849 | zkz (:,:,:) = 0._wp |
| 850 | zkepe(:,:,:) = 0._wp |
| 851 | |
| 852 | - CALL eos( ts(:,:,:,:,Kmm), rhd, rhop ) ! now potential density |
| 853 | +!!clem st dbg CALL eos( ts(:,:,:,:,Kmm), rhd, rhop ) ! now potential density |
| 854 | |
| 855 | zcof = 0.5_wp / rho0 ! Density flux at w-point |
| 856 | zkz(:,:,1) = 0._wp |
| 857 | Index: DEC_dbg_RK3/src/TOP/trcini.F90 |
| 858 | =================================================================== |
| 859 | --- DEC_dbg_RK3/src/TOP/trcini.F90 (revision 15591) |
| 860 | +++ DEC_dbg_RK3/src/TOP/trcini.F90 (working copy) |
| 861 | @@ -246,13 +246,6 @@ |
| 862 | ! |
| 863 | tr(:,:,:,:,Kaa) = 0._wp |
| 864 | ! |
| 865 | - IF( ln_trcbc .AND. lltrcbc ) THEN |
| 866 | - CALL trc_bc_ini ( jptra, Kmm ) ! set tracers Boundary Conditions |
| 867 | - CALL trc_bc ( nit000, Kmm, tr, Kaa ) ! tracers: surface and lateral Boundary Conditions |
| 868 | - ENDIF |
| 869 | - ! |
| 870 | - IF( ln_trcais ) CALL trc_ais_ini ! set tracers from Antarctic Ice Sheet |
| 871 | - ! |
| 872 | IF( ln_rsttr ) THEN ! restart from a file |
| 873 | ! |
| 874 | CALL trc_rst_read( Kbb, Kmm ) |
| 875 | Index: DEC_dbg_RK3/src/TOP/trcrst.F90 |
| 876 | =================================================================== |
| 877 | --- DEC_dbg_RK3/src/TOP/trcrst.F90 (revision 15591) |
| 878 | +++ DEC_dbg_RK3/src/TOP/trcrst.F90 (working copy) |
| 879 | @@ -159,9 +159,6 @@ |
| 880 | ! prognostic variables |
| 881 | ! -------------------- |
| 882 | #if defined key_RK3 |
| 883 | - DO jn = 1, jptra ! MLF : After time step (before the swap) put in TRN |
| 884 | - CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kaa) ) |
| 885 | - END DO |
| 886 | DO jn = 1, jptra ! RK3 : After time step (before the swap) put in TRB |
| 887 | CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kaa) ) |
| 888 | END DO |