Changeset 8762


Ignore:
Timestamp:
2017-11-21T11:15:35+01:00 (3 years ago)
Author:
jchanut
Message:

AGRIF + vvl: Final changes, update SETTE tests (these are ok except SAS) - #1965

Location:
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/ARCH/arch-openmpi_NAVITI_MERCATOR.fcm

    r6140 r8762  
    2323%CPP               cpp 
    2424%FC                  mpif90 
    25 %FCFLAGS             -O2 -fp-model precise  -traceback -r8  -convert big_endian -assume byterecl 
     25%FCFLAGS             -O1 -fp-model precise  -traceback -r8  -convert big_endian -assume byterecl 
    2626%FFLAGS              %FCFLAGS 
    2727%LD                   mpif90 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/1_namelist_cfg

    r8284 r8762  
    2222&namdom        !   space and time domain (bathymetry, mesh, timestep) 
    2323!-----------------------------------------------------------------------   
    24    ln_linssh   = .true.   !  =T  linear free surface  ==>>  model level are fixed in time 
     24   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    2525   nn_closea   =    0      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    2626   ! 
     
    171171&namdyn_hpg    !   Hydrostatic pressure gradient option 
    172172!----------------------------------------------------------------------- 
     173   ln_hpg_sco  = .true.   !  s-coordinate (standard jacobian formulation) 
    173174/ 
    174175!----------------------------------------------------------------------- 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/CONFIG/TEST_CASES/VORTEX/EXP00/1_namelist_cfg

    r8741 r8762  
    3030&namdom        !   space and time domain (bathymetry, mesh, timestep) 
    3131!----------------------------------------------------------------------- 
    32    ln_linssh   =  .true.   !  =T  linear free surface  ==>>  model level are fixed in time 
     32   ln_linssh   =  .false.  !  =T  linear free surface  ==>>  model level are fixed in time 
    3333   rn_rdt      =    480.   !  time step for the dynamics (and tracer if nn_acc=0) 
    3434   rn_atfp     =   0.05    !  asselin time filter parameter 
     
    3939   nn_cln_update =    1    !  baroclinic update frequency 
    4040   ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    41    rn_sponge_tra = 2850.   !  coefficient for tracer   sponge layer [m2/s] 
    42    rn_sponge_dyn = 2850.   !  coefficient for dynamics sponge layer [m2/s] 
     41   rn_sponge_tra =  800.   !  coefficient for tracer   sponge layer [m2/s] 
     42   rn_sponge_dyn =  800.   !  coefficient for dynamics sponge layer [m2/s] 
    4343   ln_chk_bathy  = .FALSE. ! 
    4444/ 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/CONFIG/TEST_CASES/VORTEX/EXP00/namelist_cfg

    r8741 r8762  
    3030&namdom        !   space and time domain (bathymetry, mesh, timestep) 
    3131!----------------------------------------------------------------------- 
    32    ln_linssh   =  .true.   !  =T  linear free surface  ==>>  model level are fixed in time 
     32   ln_linssh   =  .false.  !  =T  linear free surface  ==>>  model level are fixed in time 
    3333   rn_rdt      =   1440.   !  time step for the dynamics (and tracer if nn_acc=0) 
    3434   rn_atfp     =   0.05    !  asselin time filter parameter 
     
    3939   nn_cln_update =    1    !  baroclinic update frequency 
    4040   ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    41    rn_sponge_tra = 2850.   !  coefficient for tracer   sponge layer [m2/s] 
    42    rn_sponge_dyn = 2850.   !  coefficient for dynamics sponge layer [m2/s] 
     41   rn_sponge_tra =  800.   !  coefficient for tracer   sponge layer [m2/s] 
     42   rn_sponge_dyn =  800.   !  coefficient for dynamics sponge layer [m2/s] 
    4343   ln_chk_bathy  = .FALSE. ! 
    4444/ 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90

    r7646 r8762  
    3838      ! 
    3939#if defined SPONGE 
    40       timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     40!!      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     41!! Assume persistence: 
     42      timecoeff = REAL(Agrif_rhot()-1,wp)/REAL(Agrif_rhot()) 
    4143 
    4244      CALL Agrif_Sponge 
     
    6163 
    6264#if defined SPONGE 
    63       timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     65!!      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     66!! Assume persistence: 
     67      timecoeff = REAL(Agrif_rhot()-1,wp)/REAL(Agrif_rhot()) 
    6468 
    6569      Agrif_SpecialValue=0. 
     
    207211      ! 
    208212      IF( before ) THEN 
    209          tabres(i1:i2,j1:j2,k1:k2,n1:n2) = tsn(i1:i2,j1:j2,k1:k2,n1:n2) 
     213         tabres(i1:i2,j1:j2,k1:k2,n1:n2) = tsb(i1:i2,j1:j2,k1:k2,n1:n2) 
    210214      ELSE    
    211215         ! 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r8741 r8762  
    139139# if defined key_zdftke 
    140140 
    141    SUBROUTINE Agrif_Update_Tke( ) 
     141   SUBROUTINE Agrif_Update_Tke( kt ) 
    142142      !!--------------------------------------------- 
    143143      !!   *** ROUTINE Agrif_Update_Tke *** 
    144144      !!--------------------------------------------- 
    145145      !! 
     146      INTEGER, INTENT(in) :: kt  
    146147      !  
    147148      IF (Agrif_Root()) RETURN 
     
    272273   END SUBROUTINE dom_vvl_update_UVF 
    273274 
    274    SUBROUTINE updateTS( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before, nb, ndir ) 
     275   SUBROUTINE updateTS( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before ) 
    275276      !!--------------------------------------------- 
    276277      !!           *** ROUTINE updateT *** 
     
    279280      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 
    280281      LOGICAL, INTENT(in) :: before 
    281       INTEGER, INTENT(in) :: nb, ndir 
    282282      !! 
    283       LOGICAL :: western_side, eastern_side, southern_side, northern_side  
    284283      INTEGER :: ji,jj,jk,jn 
    285284      REAL(wp) :: ztb, ztnu, ztno 
     
    340339         ENDIF 
    341340         ! 
    342          ! 
    343 # if defined DECAL_FEEDBACK 
    344          IF (.NOT.ln_linssh) THEN  
    345             western_side  = (nb == 1).AND.(ndir == 1) 
    346             eastern_side  = (nb == 1).AND.(ndir == 2) 
    347             southern_side = (nb == 2).AND.(ndir == 1) 
    348             northern_side = (nb == 2).AND.(ndir == 2) 
    349             ! 
    350             ! Asselin correction  
    351             IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    352                IF (southern_side) THEN 
    353                   DO jn = n1,n2 
    354                      DO jk=k1,k2 
    355                         DO ji=i1,i2 
    356                            ztb  = tsb(ji,j1-1,jk,jn) * e3t_b(ji,j1-1,jk) ! fse3t_b prior update should be used 
    357                            ztnu = tsn(ji,j1-1,jk,jn) * e3t_n(ji,j1-1,jk) 
    358                            ztno = tsn(ji,j1-1,jk,jn) * e3t_a(ji,j1-1,jk) 
    359                            tsb(ji,j1-1,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    360                                      &        * tmask(ji,j1-1,jk) / e3t_b(ji,j1-1,jk) 
    361                         END DO 
    362                      ENDDO 
    363                   ENDDO 
    364                ENDIF 
    365                IF (northern_side) THEN 
    366                   DO jn = n1,n2 
    367                      DO jk=k1,k2 
    368                         DO ji=i1,i2 
    369                            ztb  = tsb(ji,j2+1,jk,jn) * e3t_b(ji,j2+1,jk) ! fse3t_b prior update should be used 
    370                            ztnu = tsn(ji,j2+1,jk,jn) * e3t_n(ji,j2+1,jk) 
    371                            ztno = tsn(ji,j2+1,jk,jn) * e3t_a(ji,j2+1,jk) 
    372                            tsb(ji,j2+1,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    373                                      &        * tmask(ji,j2+1,jk) / e3t_b(ji,j2+1,jk) 
    374                         END DO 
    375                      ENDDO 
    376                   ENDDO 
    377                ENDIF 
    378                IF (western_side) THEN 
    379                   DO jn = n1,n2 
    380                      DO jk=k1,k2 
    381                         DO jj=j1,j2 
    382                            ztb  = tsb(i1-1,jj,jk,jn) * e3t_b(i1-1,jj,jk) ! fse3t_b prior update should be used 
    383                            ztnu = tsn(i1-1,jj,jk,jn) * e3t_n(i1-1,jj,jk) 
    384                            ztno = tsn(i1-1,jj,jk,jn) * e3t_a(i1-1,jj,jk) 
    385                            tsb(i1-1,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    386                                      &        * tmask(i1-1,jj,jk) / e3t_b(i1-1,jj,jk) 
    387                         END DO 
    388                      ENDDO 
    389                   ENDDO 
    390                ENDIF 
    391                IF (eastern_side) THEN 
    392                   DO jn = n1,n2 
    393                      DO jk=k1,k2 
    394                         DO jj=j1,j2 
    395                            ztb  = tsb(i2+1,jj,jk,jn) * e3t_b(i2+1,jj,jk) ! fse3t_b prior update should be used 
    396                            ztnu = tsn(i2+1,jj,jk,jn) * e3t_n(i2+1,jj,jk) 
    397                            ztno = tsn(i2+1,jj,jk,jn) * e3t_a(i2+1,jj,jk) 
    398                            tsb(i2+1,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    399                                      &        * tmask(i2+1,jj,jk) / e3t_b(i2+1,jj,jk) 
    400                         END DO 
    401                      ENDDO 
    402                   ENDDO 
    403                ENDIF 
    404             ENDIF ! Asselin correction 
    405  
    406             IF (southern_side) THEN 
    407                DO jn = n1,n2 
    408                   DO jk=k1,k2 
    409                      DO ji=i1,i2 
    410                         tsn(ji,j1-1,jk,jn) = tsn(ji,j1-1,jk,jn) * e3t_a(ji,j1-1,jk) / e3t_n(ji,j1-1,jk) 
    411                      END DO 
    412                   ENDDO 
    413                ENDDO 
    414             ENDIF 
    415             IF (northern_side) THEN 
    416                DO jn = n1,n2 
    417                   DO jk=k1,k2 
    418                      DO ji=i1,i2 
    419                         tsn(ji,j2+1,jk,jn) = tsn(ji,j2+1,jk,jn) * e3t_a(ji,j2+1,jk) / e3t_n(ji,j2+1,jk) 
    420                      END DO 
    421                   ENDDO 
    422                ENDDO 
    423             ENDIF 
    424             IF (western_side) THEN 
    425                DO jn = n1,n2 
    426                   DO jk=k1,k2 
    427                      DO jj=j1,j2 
    428                         tsn(i1-1,jj,jk,jn) = tsn(i1-1,jj,jk,jn) * e3t_a(i1-1,jj,jk) / e3t_n(i1-1,jj,jk) 
    429                      END DO 
    430                   ENDDO 
    431                ENDDO 
    432             ENDIF 
    433             IF (eastern_side) THEN 
    434                DO jn = n1,n2 
    435                   DO jk=k1,k2 
    436                      DO jj=j1,j2 
    437                         tsn(i2+1,jj,jk,jn) = tsn(i2+1,jj,jk,jn) * e3t_a(i2+1,jj,jk) / e3t_n(i2+1,jj,jk) 
    438                      END DO 
    439                   ENDDO 
    440                ENDDO 
    441             ENDIF 
    442          ENDIF 
    443 #endif 
    444341      ENDIF 
    445342      !  
     
    676573 
    677574 
    678    SUBROUTINE updateSSH( tabres, i1, i2, j1, j2, before, nb, ndir ) 
     575   SUBROUTINE updateSSH( tabres, i1, i2, j1, j2, before ) 
    679576      !!--------------------------------------------- 
    680577      !!          *** ROUTINE updateSSH *** 
     
    683580      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
    684581      LOGICAL, INTENT(in) :: before 
    685       INTEGER, INTENT(in) :: nb, ndir 
    686582      !! 
    687       LOGICAL :: western_side, eastern_side, southern_side, northern_side  
    688583      INTEGER :: ji, jj 
    689584      !!--------------------------------------------- 
     
    717612         ENDIF 
    718613         ! 
    719 # if defined DECAL_FEEDBACK 
    720 !         western_side  = (nb == 1).AND.(ndir == 1) 
    721 !         eastern_side  = (nb == 1).AND.(ndir == 2) 
    722 !         southern_side = (nb == 2).AND.(ndir == 1) 
    723 !         northern_side = (nb == 2).AND.(ndir == 2) 
    724 !         ! 
    725 !         ! Asselin correction  
    726 !         IF ( ln_dynspg_ts.AND.ln_bt_fw ) THEN 
    727 !            IF (southern_side) THEN 
    728 !               DO ji=i1,i2 
    729 !                  sshn(ji,j1-1) = sshn(ji,j1-1) - rdt * r1_e2t(ji,j1-1) * (vb2_b_s(ji,j1-1)-vb2_b(ji,j1-1)) 
    730 !               END DO 
    731 !            ENDIF 
    732 !            IF (northern_side) THEN 
    733 !               DO ji=i1,i2 
    734 !                  sshn(ji,j1+1) = sshn(ji,j1+1) + rdt * r1_e2t(ji,j1+1) * (vb2_b_s(ji,j1)-vb2_b(ji,j1)) 
    735 !               END DO 
    736 !            ENDIF 
    737 !            IF (western_side) THEN 
    738 !               DO jj=j1,j2 
    739 !                  sshn(i1-1,jj) = sshn(i1-1,jj) - rdt * r1_e2t(i1-1,jj) * (ub2_b_s(i1-1,jj)-ub2_b(i1-1,jj)) 
    740 !               END DO 
    741 !            ENDIF 
    742 !            IF (eastern_side) THEN 
    743 !               DO jj=j1,j2 
    744 !                  sshn(i1+1,jj) = sshn(i1+1,jj) + rdt * r1_e2t(i1+1,jj) * (ub2_b_s(i1,jj)-ub2_b(i1,jj)) 
    745 !               END DO 
    746 !            ENDIF 
    747 !            !  
    748 !         ENDIF 
    749 #endif 
     614 
    750615      ENDIF 
    751616      ! 
     
    753618 
    754619 
    755    SUBROUTINE updateub2b( tabres, i1, i2, j1, j2, before ) 
     620   SUBROUTINE updateub2b( tabres, i1, i2, j1, j2, before, nb, ndir ) 
    756621      !!--------------------------------------------- 
    757622      !!          *** ROUTINE updateub2b *** 
     
    760625      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
    761626      LOGICAL, INTENT(in) :: before 
     627      INTEGER, INTENT(in) :: nb, ndir 
    762628      !! 
     629      LOGICAL :: western_side, eastern_side  
    763630      INTEGER :: ji, jj 
    764631      REAL(wp) :: zrhoy, za1 
     
    774641         tabres = zrhoy * tabres 
    775642      ELSE 
     643         !  
     644         tabres(i1:i2,j1:j2) = tabres(i1:i2,j1:j2) * r1_e2u(i1:i2,j1:j2) 
     645         ! 
     646         ! Refluxing here: 
     647#if defined DECAL_FEEDBACK 
     648         western_side  = (nb == 1).AND.(ndir == 1) 
     649         eastern_side  = (nb == 1).AND.(ndir == 2) 
     650         ! 
     651         IF (western_side) THEN 
     652            DO jj=j1,j2 
     653               sshn(i1  ,jj) = sshn(i1  ,jj) + rdt * r1_e1e2t(i1  ,jj) & 
     654                     &         * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj)) 
     655            END DO 
     656         ENDIF 
     657         IF (eastern_side) THEN 
     658            DO jj=j1,j2 
     659               sshn(i2+1,jj) = sshn(i2+1,jj) - rdt * r1_e1e2t(i2+1,jj) & 
     660                     &         * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
     661            END DO 
     662         ENDIF 
     663         !  
     664#endif 
    776665         za1 = 1._wp / REAL(Agrif_rhot(), wp) 
    777          tabres(i1:i2,j1:j2) = tabres(i1:i2,j1:j2) * r1_e2u(i1:i2,j1:j2) 
     666         ! 
    778667         DO jj=j1,j2 
    779668            DO ji=i1,i2 
     669               ! Update time integrated fluxes also in case of multiply nested grids: 
    780670               ub2_i_b(ji,jj) = ub2_i_b(ji,jj) &  
    781671                & + za1 * (tabres(ji,jj) - ub2_b(ji,jj)) 
    782 !               ub2_b_s(ji,jj) = ub2_b(ji,jj) 
     672               ! Update half step back fluxes: 
    783673               ub2_b(ji,jj) = tabres(ji,jj) 
    784674            END DO 
     
    789679 
    790680 
    791    SUBROUTINE updatevb2b( tabres, i1, i2, j1, j2, before ) 
     681   SUBROUTINE updatevb2b( tabres, i1, i2, j1, j2, before, nb, ndir ) 
    792682      !!--------------------------------------------- 
    793683      !!          *** ROUTINE updatevb2b *** 
     
    796686      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
    797687      LOGICAL, INTENT(in) :: before 
     688      INTEGER, INTENT(in) :: nb, ndir 
    798689      !! 
     690      LOGICAL :: southern_side, northern_side  
    799691      INTEGER :: ji, jj 
    800692      REAL(wp) :: zrhox, za1 
     
    810702         tabres = zrhox * tabres 
    811703      ELSE 
     704         !  
     705         tabres(i1:i2,j1:j2) = tabres(i1:i2,j1:j2) * r1_e1v(i1:i2,j1:j2) 
     706         ! 
     707         ! Refluxing here: 
     708#if defined DECAL_FEEDBACK 
     709         southern_side = (nb == 2).AND.(ndir == 1) 
     710         northern_side = (nb == 2).AND.(ndir == 2) 
     711         ! 
     712         IF (southern_side) THEN 
     713            DO ji=i1,i2 
     714               sshn(ji,j1  ) = sshn(ji,j1  ) + rdt * r1_e1e2t(ji,j1  ) & 
     715                     &         * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
     716            END DO 
     717         ENDIF 
     718         IF (northern_side) THEN                
     719            DO ji=i1,i2 
     720               sshn(ji,j2+1) = sshn(ji,j2+1) - rdt * r1_e1e2t(ji,j2+1) & 
     721                     &         * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
     722            END DO 
     723         ENDIF 
     724         !  
     725#endif 
    812726         za1 = 1._wp / REAL(Agrif_rhot(), wp) 
    813          tabres(i1:i2,j1:j2) = tabres(i1:i2,j1:j2) * r1_e1v(i1:i2,j1:j2) 
    814727         DO jj=j1,j2 
    815728            DO ji=i1,i2 
     729               ! Update time integrated fluxes also in case of multiply nested grids: 
    816730               vb2_i_b(ji,jj) = vb2_i_b(ji,jj) &  
    817731                & + za1 * (tabres(ji,jj) - vb2_b(ji,jj)) 
    818 !               vb2_b_s(ji,jj) = vb2_b(ji,jj) 
     732               ! Update half step back fluxes: 
    819733               vb2_b(ji,jj) = tabres(ji,jj) 
    820734            END DO 
     
    952866         ! 
    953867!> jc tmp: 
    954 !         DO jk = 1, jpkm1 
    955 !            DO jj=j1,j2 
    956 !               DO ji=i1,i2 
    957 !                  IF (tmask(ji,jj,jk)==1) THEN 
    958 !                     ptab(ji,jj,jk) = ptab(ji,jj,jk) * e3t_0(ji,jj,jk) 
    959 !                  ELSE 
    960 !                     ptab(ji,jj,jk) = e3t_0(ji,jj,jk) 
    961 !                  ENDIF 
    962 !               END DO 
    963 !            END DO 
    964 !         END DO 
    965          ptab(i1:i2,j1:j2,k1:k2) = ptab(i1:i2,j1:j2,k1:k2) * e3t_0(i1:i2,j1:j2,k1:k2) 
     868         DO jk = 1, jpkm1 
     869            DO jj=j1,j2 
     870               DO ji=i1,i2 
     871                  IF (tmask(ji,jj,jk)==1) THEN 
     872                     ptab(ji,jj,jk) = ptab(ji,jj,jk) * e3t_0(ji,jj,jk) 
     873                  ELSE 
     874                     ptab(ji,jj,jk) = e3t_0(ji,jj,jk) 
     875                  ENDIF 
     876               END DO 
     877            END DO 
     878         END DO 
     879!         ptab(i1:i2,j1:j2,k1:k2) = ptab(i1:i2,j1:j2,k1:k2) * e3t_0(i1:i2,j1:j2,k1:k2) 
    966880!< jc tmp: 
    967881 
     
    969883         ! of prognostic variables (needed to update initial state only) 
    970884         e3t_a(i1:i2,j1:j2,k1:k2) = e3t_n(i1:i2,j1:j2,k1:k2) 
    971 !         hdivb(i1:i2,j1:j2,k1:k2)   = e3t_b(i1:i2,j1:j2,k1:k2) 
     885!         hdivn(i1:i2,j1:j2,k1:k2)   = e3t_b(i1:i2,j1:j2,k1:k2) 
    972886 
    973887         IF (     (.NOT.(lk_agrif_fstep.AND.(neuler==0)).AND.(ln_dynspg_exp)) & 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90

    r6140 r8762  
    4646      ! 
    4747#if defined SPONGE_TOP 
    48       timecoeff = REAL( Agrif_NbStepint(), wp ) / Agrif_rhot() 
     48!!      timecoeff = REAL( Agrif_NbStepint(), wp ) / Agrif_rhot() 
     49!! Assume persistence  
     50      timecoeff = REAL(Agrif_rhot()-1,wp)/REAL(Agrif_rhot()) 
    4951      CALL Agrif_sponge 
    5052      Agrif_SpecialValue    = 0._wp 
     
    7375      ! 
    7476      IF( before ) THEN 
    75          tabres(i1:i2,j1:j2,k1:k2,n1:n2) = trn(i1:i2,j1:j2,k1:k2,n1:n2) 
     77         tabres(i1:i2,j1:j2,k1:k2,n1:n2) = trb(i1:i2,j1:j2,k1:k2,n1:n2) 
    7678      ELSE       
    7779!!gm line below use of :,:  versus i1:i2,j1:j2  ....   strange, not wrong.    ===>> to be corrected 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90

    r8741 r8762  
    6565 
    6666 
    67    SUBROUTINE updateTRC( ptab, i1, i2, j1, j2, k1, k2, n1, n2, before, nb, ndir ) 
     67   SUBROUTINE updateTRC( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before ) 
    6868      !!---------------------------------------------------------------------- 
    69       !!                      *** ROUTINE updateT *** 
     69      !!                      *** ROUTINE updateTRC *** 
    7070      !!---------------------------------------------------------------------- 
    7171      INTEGER                                    , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2, n1, n2 
    72       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) ::   ptab 
     72      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) ::   tabres 
    7373      LOGICAL                                    , INTENT(in   ) ::   before 
    74       INTEGER, INTENT(in) :: nb, ndir 
    7574      !! 
    76       LOGICAL :: western_side, eastern_side, southern_side, northern_side  
    7775      INTEGER :: ji,jj,jk,jn 
    7876      REAL(wp) :: ztb, ztnu, ztno 
     
    134132         ENDIF 
    135133         ! 
    136          ! 
    137 # if defined DECAL_FEEDBACK 
    138          IF (.NOT.ln_linssh) THEN  
    139             western_side  = (nb == 1).AND.(ndir == 1) 
    140             eastern_side  = (nb == 1).AND.(ndir == 2) 
    141             southern_side = (nb == 2).AND.(ndir == 1) 
    142             northern_side = (nb == 2).AND.(ndir == 2) 
    143             ! 
    144             ! Asselin correction  
    145             IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    146                IF (southern_side) THEN 
    147                   DO jn = n1,n2 
    148                      DO jk=k1,k2 
    149                         DO ji=i1,i2 
    150                            ztb  = trb(ji,j1-1,jk,jn) * e3t_b(ji,j1-1,jk) ! fse3t_b prior update should be used 
    151                            ztnu = trn(ji,j1-1,jk,jn) * e3t_n(ji,j1-1,jk) 
    152                            ztno = trn(ji,j1-1,jk,jn) * e3t_a(ji,j1-1,jk) 
    153                            trb(ji,j1-1,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    154                                      &        * tmask(ji,j1-1,jk) / e3t_b(ji,j1-1,jk) 
    155                         END DO 
    156                      ENDDO 
    157                   ENDDO 
    158                ENDIF 
    159                IF (northern_side) THEN 
    160                   DO jn = n1,n2 
    161                      DO jk=k1,k2 
    162                         DO ji=i1,i2 
    163                            ztb  = trb(ji,j2+1,jk,jn) * e3t_b(ji,j2+1,jk) ! fse3t_b prior update should be used 
    164                            ztnu = trn(ji,j2+1,jk,jn) * e3t_n(ji,j2+1,jk) 
    165                            ztno = trn(ji,j2+1,jk,jn) * e3t_a(ji,j2+1,jk) 
    166                            trb(ji,j2+1,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    167                                      &        * tmask(ji,j2+1,jk) / e3t_b(ji,j2+1,jk) 
    168                         END DO 
    169                      ENDDO 
    170                   ENDDO 
    171                ENDIF 
    172                IF (western_side) THEN 
    173                   DO jn = n1,n2 
    174                      DO jk=k1,k2 
    175                         DO jj=j1,j2 
    176                            ztb  = trb(i1-1,jj,jk,jn) * e3t_b(i1-1,jj,jk) ! fse3t_b prior update should be used 
    177                            ztnu = trn(i1-1,jj,jk,jn) * e3t_n(i1-1,jj,jk) 
    178                            ztno = trn(i1-1,jj,jk,jn) * e3t_a(i1-1,jj,jk) 
    179                            trb(i1-1,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    180                                      &        * tmask(i1-1,jj,jk) / e3t_b(i1-1,jj,jk) 
    181                         END DO 
    182                      ENDDO 
    183                   ENDDO 
    184                ENDIF 
    185                IF (eastern_side) THEN 
    186                   DO jn = n1,n2 
    187                      DO jk=k1,k2 
    188                         DO jj=j1,j2 
    189                            ztb  = trb(i2+1,jj,jk,jn) * e3t_b(i2+1,jj,jk) ! fse3t_b prior update should be used 
    190                            ztnu = trn(i2+1,jj,jk,jn) * e3t_n(i2+1,jj,jk) 
    191                            ztno = trn(i2+1,jj,jk,jn) * e3t_a(i2+1,jj,jk) 
    192                            trb(i2+1,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    193                                      &        * tmask(i2+1,jj,jk) / e3t_b(i2+1,jj,jk) 
    194                         END DO 
    195                      ENDDO 
    196                   ENDDO 
    197                ENDIF 
    198             ENDIF ! Asselin correction 
    199  
    200             IF (southern_side) THEN 
    201                DO jn = n1,n2 
    202                   DO jk=k1,k2 
    203                      DO ji=i1,i2 
    204                         trn(ji,j1-1,jk,jn) = trn(ji,j1-1,jk,jn) * e3t_a(ji,j1-1,jk) / e3t_n(ji,j1-1,jk) 
    205                      END DO 
    206                   ENDDO 
    207                ENDDO 
    208             ENDIF 
    209             IF (northern_side) THEN 
    210                DO jn = n1,n2 
    211                   DO jk=k1,k2 
    212                      DO ji=i1,i2 
    213                         trn(ji,j2+1,jk,jn) = trn(ji,j2+1,jk,jn) * e3t_a(ji,j2+1,jk) / e3t_n(ji,j2+1,jk) 
    214                      END DO 
    215                   ENDDO 
    216                ENDDO 
    217             ENDIF 
    218             IF (western_side) THEN 
    219                DO jn = n1,n2 
    220                   DO jk=k1,k2 
    221                      DO jj=j1,j2 
    222                         trn(i1-1,jj,jk,jn) = trn(i1-1,jj,jk,jn) * e3t_a(i1-1,jj,jk) / e3t_n(i1-1,jj,jk) 
    223                      END DO 
    224                   ENDDO 
    225                ENDDO 
    226             ENDIF 
    227             IF (eastern_side) THEN 
    228                DO jn = n1,n2 
    229                   DO jk=k1,k2 
    230                      DO jj=j1,j2 
    231                         trn(i2+1,jj,jk,jn) = trn(i2+1,jj,jk,jn) * e3t_a(i2+1,jj,jk) / e3t_n(i2+1,jj,jk) 
    232                      END DO 
    233                   ENDDO 
    234                ENDDO 
    235             ENDIF 
    236          ENDIF 
    237 #endif 
    238134      ENDIF 
    239135      !  
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_user.F90

    r8741 r8762  
    343343# if defined key_zdftke 
    344344! JC remove update because this precludes from perfect restartability 
    345 !!   CALL Agrif_Update_tke() 
     345!!   CALL Agrif_Update_tke(0) 
    346346# endif 
    347347 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r8741 r8762  
    12951295#if defined key_agrif 
    12961296      ! Restrict the use of Agrif to the forward case only 
    1297 !!!      IF( .NOT.ln_bt_fw .AND. .NOT.Agrif_Root() )   CALL ctl_stop( 'AGRIF not implemented if ln_bt_fw=.FALSE.' ) 
     1297      IF( .NOT.ln_bt_fw .AND. .NOT.Agrif_Root() )   CALL ctl_stop( 'AGRIF not implemented if ln_bt_fw=.FALSE.' ) 
    12981298#endif 
    12991299      ! 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r8741 r8762  
    207207         DO jj = 2, jpjm1 
    208208            DO ji = fs_2, fs_jpim1   ! vector opt. 
    209                avmu(ji,jj,jk) = 0.5_wp * ( avm(ji,jj,jk) + avm(ji+1,jj,jk) )   & 
     209!               avmu(ji,jj,jk) =   avmu(ji,jj,jk) & 
     210               avmu(ji,jj,jk) = 0.5_wp * ( avm(ji,jj,jk) + avm(ji+1,jj,jk) ) * umask(ji,jj,jk)  & 
    210211                  &                    * ( un(ji,jj,jk-1) - un(ji,jj,jk)   )   & 
    211212                  &                    * ( ub(ji,jj,jk-1) - ub(ji,jj,jk)   )   & 
    212213                  &                    / (  e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) 
    213                avmv(ji,jj,jk) = 0.5_wp * ( avm(ji,jj,jk) + avm(ji,jj+1,jk) )   &  
     214!               avmv(ji,jj,jk) =   avmv(ji,jj,jk) & 
     215               avmv(ji,jj,jk) = 0.5_wp * ( avm(ji,jj,jk) + avm(ji,jj+1,jk) ) * vmask(ji,jj,jk)  &  
    214216                  &                    * ( vn(ji,jj,jk-1) - vn(ji,jj,jk)   )   & 
    215217                  &                    * ( vb(ji,jj,jk-1) - vb(ji,jj,jk) )     & 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r8741 r8762  
    192192      ! Update child grid f => parent grid  
    193193!!! JC: suppress update since restartability is not possible in that case 
    194 !!!      IF( .NOT.Agrif_Root() )   CALL Agrif_Update_Tke( )      ! children only 
     194!!!      IF( .NOT.Agrif_Root() )   CALL Agrif_Update_Tke(kt)      ! children only 
    195195#endif       
    196196     !  
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/SETTE/sette.sh

    r8583 r8762  
    11141114    set_namelist namelist_cfg ln_clobber .true. 
    11151115    set_namelist namelist_cfg ln_read_cfg .true. 
    1116     set_namelist namelist_cfg ln_linssh .true. 
    1117     set_namelist namelist_cfg ln_hpg_sco .false. 
    1118     set_namelist namelist_cfg ln_hpg_zps .true.  
     1116    set_namelist namelist_cfg ln_linssh .false. 
    11191117    set_namelist namelist_cfg nn_fwb 0 
    11201118    set_namelist namelist_cfg jpni 1 
     
    11261124    set_namelist 1_namelist_cfg ln_clobber .true. 
    11271125    set_namelist 1_namelist_cfg ln_read_cfg .true. 
    1128     set_namelist 1_namelist_cfg ln_linssh .true. 
    1129     set_namelist 1_namelist_cfg ln_hpg_sco .false. 
    1130     set_namelist 1_namelist_cfg ln_hpg_zps .true.  
     1126    set_namelist 1_namelist_cfg ln_linssh .false. 
    11311127    if [ ${USING_MPMD} == "yes" ] ; then 
    11321128       set_xio_using_server iodef.xml true 
     
    11601156    set_namelist namelist_cfg ln_clobber .true. 
    11611157    set_namelist namelist_cfg ln_read_cfg .true. 
    1162     set_namelist namelist_cfg ln_linssh .true. 
    1163     set_namelist namelist_cfg ln_hpg_sco .false. 
    1164     set_namelist namelist_cfg ln_hpg_zps .true.  
     1158    set_namelist namelist_cfg ln_linssh .false. 
    11651159    set_namelist namelist_cfg nn_fwb 0 
    11661160    set_namelist namelist_cfg jpni 2 
     
    11971191    set_namelist namelist_cfg ln_clobber .true. 
    11981192    set_namelist namelist_cfg ln_read_cfg .true. 
    1199     set_namelist namelist_cfg ln_linssh .true. 
    1200     set_namelist namelist_cfg ln_hpg_sco .false. 
    1201     set_namelist namelist_cfg ln_hpg_zps .true.  
     1193    set_namelist namelist_cfg ln_linssh .false. 
    12021194    set_namelist namelist_cfg nn_fwb 0 
    12031195    set_namelist namelist_cfg jpni 2 
     
    12361228    set_namelist namelist_cfg ln_clobber .true. 
    12371229    set_namelist namelist_cfg ln_read_cfg .true. 
    1238     set_namelist namelist_cfg ln_linssh .true. 
    1239     set_namelist namelist_cfg ln_hpg_sco .false. 
    1240     set_namelist namelist_cfg ln_hpg_zps .true.  
     1230    set_namelist namelist_cfg ln_linssh .false. 
    12411231    set_namelist namelist_cfg nn_fwb 0 
    12421232    set_namelist namelist_cfg jpni 2 
     
    12511241    set_namelist 1_namelist_cfg ln_clobber .true. 
    12521242    set_namelist 1_namelist_cfg ln_read_cfg .true. 
    1253     set_namelist 1_namelist_cfg ln_linssh .true. 
    1254     set_namelist 1_namelist_cfg ln_hpg_sco .false. 
    1255     set_namelist 1_namelist_cfg ln_hpg_zps .true.  
     1243    set_namelist 1_namelist_cfg ln_linssh .false. 
    12561244# 
    12571245    if [ ${USING_MPMD} == "yes" ] ; then 
     
    12751263    set_namelist namelist_cfg ln_clobber .true. 
    12761264    set_namelist namelist_cfg ln_read_cfg .true. 
    1277     set_namelist namelist_cfg ln_linssh .true. 
    1278     set_namelist namelist_cfg ln_hpg_sco .false. 
    1279     set_namelist namelist_cfg ln_hpg_zps .true.  
     1265    set_namelist namelist_cfg ln_linssh .false. 
    12801266    set_namelist namelist_cfg nn_fwb 0 
    12811267    set_namelist namelist_cfg jpni 2 
     
    12911277    set_namelist 1_namelist_cfg ln_clobber .true. 
    12921278    set_namelist 1_namelist_cfg ln_read_cfg .true. 
    1293     set_namelist 1_namelist_cfg ln_linssh .true. 
    1294     set_namelist 1_namelist_cfg ln_hpg_sco .false. 
    1295     set_namelist 1_namelist_cfg ln_hpg_zps .true.  
     1279    set_namelist 1_namelist_cfg ln_linssh .false. 
    12961280    set_namelist namelist_cfg cn_ocerst_in \"O2LP_LONG_00000075_restart\" 
    12971281    set_namelist namelist_ice_cfg cn_icerst_in \"O2LP_LONG_00000075_restart_ice\" 
     
    13361320    set_namelist namelist_cfg ln_clobber .true. 
    13371321    set_namelist namelist_cfg ln_read_cfg .true. 
    1338     set_namelist namelist_cfg ln_linssh .true. 
    1339     set_namelist namelist_cfg ln_hpg_sco .false. 
    1340     set_namelist namelist_cfg ln_hpg_zps .true.  
     1322    set_namelist namelist_cfg ln_linssh .false. 
    13411323    set_namelist namelist_cfg nn_fwb 0 
    13421324    set_namelist namelist_cfg jpni 4 
     
    13491331    set_namelist 1_namelist_cfg ln_clobber .true. 
    13501332    set_namelist 1_namelist_cfg ln_read_cfg .true. 
    1351     set_namelist 1_namelist_cfg ln_linssh .true. 
    1352     set_namelist 1_namelist_cfg ln_hpg_sco .false. 
    1353     set_namelist 1_namelist_cfg ln_hpg_zps .true.  
     1333    set_namelist 1_namelist_cfg ln_linssh .false. 
    13541334 
    13551335    if [ ${USING_MPMD} == "yes" ] ; then 
     
    13751355    set_namelist namelist_cfg ln_clobber .true. 
    13761356    set_namelist namelist_cfg ln_read_cfg .true. 
    1377     set_namelist namelist_cfg ln_linssh .true. 
    1378     set_namelist namelist_cfg ln_hpg_sco .false. 
    1379     set_namelist namelist_cfg ln_hpg_zps .true.  
     1357    set_namelist namelist_cfg ln_linssh .false. 
    13801358    set_namelist namelist_cfg nn_fwb 0 
    13811359    set_namelist namelist_cfg jpni 2 
     
    13881366    set_namelist 1_namelist_cfg ln_clobber .true. 
    13891367    set_namelist 1_namelist_cfg ln_read_cfg .true. 
    1390     set_namelist 1_namelist_cfg ln_linssh .true. 
    1391     set_namelist 1_namelist_cfg ln_hpg_sco .false. 
    1392     set_namelist 1_namelist_cfg ln_hpg_zps .true.  
     1368    set_namelist 1_namelist_cfg ln_linssh .false. 
    13931369 
    13941370    if [ ${USING_MPMD} == "yes" ] ; then 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/SETTE/sette_rpt.sh

    r8468 r8762  
    3232    cd ${TOOLS_DIR}/REBUILD_NEMO 
    3333    #SF echo "REBUILD LONG restart SAS files, without standard output" 
    34     ./rebuild_nemo -t 4 ../../CONFIG/SAS_LONG/LONG/SAS_00000100_restart_ice  $NPROC > /dev/null 2>&1 
     34    ./rebuild_nemo -t 4 ../../CONFIG/SAS_LONG/LONG/SAS_00000240_restart_ice  $NPROC > /dev/null 2>&1 
    3535    #SF echo "REBUILD SHORT restart SAS files, without standard output" 
    36     ./rebuild_nemo -t 4 ../../CONFIG/SAS_LONG/SHORT/SAS_00000100_restart_ice $NPROC >&- 
     36    ./rebuild_nemo -t 4 ../../CONFIG/SAS_LONG/SHORT/SAS_00000240_restart_ice $NPROC >&- 
    3737    cd ${SAS_RESTART_DIR}/LONG 
    3838    #SF echo "COPY rebuild restart files" 
    39     cp SAS_00000100_restart_ice.nc $vdir/$nam/$mach/$dorv/LONG/. 
    40     cp ../SHORT/SAS_00000100_restart_ice.nc $vdir/$nam/$mach/$dorv/SHORT/. 
    41  
    42     f1o=$vdir/$nam/$mach/$dorv/LONG/SAS_00000100_restart_ice.nc 
    43     f2o=$vdir/$nam/$mach/$dorv/SHORT/SAS_00000100_restart_ice.nc 
     39    cp SAS_00000240_restart_ice.nc $vdir/$nam/$mach/$dorv/LONG/. 
     40    cp ../SHORT/SAS_00000240_restart_ice.nc $vdir/$nam/$mach/$dorv/SHORT/. 
     41 
     42    f1o=$vdir/$nam/$mach/$dorv/LONG/SAS_00000240_restart_ice.nc 
     43    f2o=$vdir/$nam/$mach/$dorv/SHORT/SAS_00000240_restart_ice.nc 
    4444    if  [ ! -f $f1o ] &&  [ ! -f $f2o ] ; then 
    4545      printf "%-20s %s\n" $nam " REBUILD SAS restart ice DOES NOT exists; incomplete test"; 
Note: See TracChangeset for help on using the changeset viewer.