Ignore:
Timestamp:
2017-04-26T12:03:26+02:00 (3 years ago)
Author:
jchanut
Message:

Add zstar coordinate with AGRIF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90

    r6204 r7971  
    137137         DO jk=1,jpkm1 
    138138            DO jj=1,jpj 
    139                spgu(2,jj)=spgu(2,jj)+fse3u(2,jj,jk)*ua(2,jj,jk) 
     139               spgu(2,jj)=spgu(2,jj)+fse3u_a(2,jj,jk)*ua(2,jj,jk) 
    140140            END DO 
    141141         END DO 
     
    143143         DO jj=1,jpj 
    144144            IF (umask(2,jj,1).NE.0.) THEN 
    145                spgu(2,jj)=spgu(2,jj)/hu(2,jj) 
     145               spgu(2,jj)=spgu(2,jj)*hur_a(2,jj) 
    146146            ENDIF 
    147147         END DO 
     
    161161         DO jk=1,jpkm1 
    162162            DO jj=1,jpj 
    163                spgu1(2,jj)=spgu1(2,jj)+fse3u(2,jj,jk)*ua(2,jj,jk) 
     163               spgu1(2,jj)=spgu1(2,jj)+fse3u_a(2,jj,jk)*ua(2,jj,jk) 
    164164            END DO 
    165165         END DO 
     
    167167         DO jj=1,jpj 
    168168            IF (umask(2,jj,1).NE.0.) THEN 
    169                spgu1(2,jj)=spgu1(2,jj)/hu(2,jj) 
     169               spgu1(2,jj)=spgu1(2,jj)*hur_a(2,jj) 
    170170            ENDIF 
    171171         END DO 
     
    207207         DO jk=1,jpkm1 
    208208            DO jj=1,jpj 
    209                spgu(nlci-2,jj)=spgu(nlci-2,jj)+fse3u(nlci-2,jj,jk)*ua(nlci-2,jj,jk) 
     209               spgu(nlci-2,jj)=spgu(nlci-2,jj)+fse3u_a(nlci-2,jj,jk)*ua(nlci-2,jj,jk) 
    210210            ENDDO 
    211211         ENDDO 
    212212         DO jj=1,jpj 
    213213            IF (umask(nlci-2,jj,1).NE.0.) THEN 
    214                spgu(nlci-2,jj)=spgu(nlci-2,jj)/hu(nlci-2,jj) 
     214               spgu(nlci-2,jj)=spgu(nlci-2,jj)*hur_a(nlci-2,jj) 
    215215            ENDIF 
    216216         END DO 
     
    229229         DO jk=1,jpkm1 
    230230            DO jj=1,jpj 
    231                spgu1(nlci-2,jj)=spgu1(nlci-2,jj)+fse3u(nlci-2,jj,jk)*ua(nlci-2,jj,jk)*umask(nlci-2,jj,jk) 
     231               spgu1(nlci-2,jj)=spgu1(nlci-2,jj)+fse3u_a(nlci-2,jj,jk)*ua(nlci-2,jj,jk)*umask(nlci-2,jj,jk) 
    232232            END DO 
    233233         END DO 
    234234         DO jj=1,jpj 
    235235            IF (umask(nlci-2,jj,1).NE.0.) THEN 
    236                spgu1(nlci-2,jj)=spgu1(nlci-2,jj)/hu(nlci-2,jj) 
     236               spgu1(nlci-2,jj)=spgu1(nlci-2,jj)*hur_a(nlci-2,jj) 
    237237            ENDIF 
    238238         END DO 
     
    278278         DO jk=1,jpkm1 
    279279            DO ji=1,jpi 
    280                spgv(ji,2)=spgv(ji,2)+fse3v(ji,2,jk)*va(ji,2,jk) 
     280               spgv(ji,2)=spgv(ji,2)+fse3v_a(ji,2,jk)*va(ji,2,jk) 
    281281            END DO 
    282282         END DO 
     
    284284         DO ji=1,jpi 
    285285            IF (vmask(ji,2,1).NE.0.) THEN 
    286                spgv(ji,2)=spgv(ji,2)/hv(ji,2) 
     286               spgv(ji,2)=spgv(ji,2)*hvr_a(ji,2) 
    287287            ENDIF 
    288288         END DO 
     
    302302         DO jk=1,jpkm1 
    303303            DO ji=1,jpi 
    304                spgv1(ji,2)=spgv1(ji,2)+fse3v(ji,2,jk)*va(ji,2,jk)*vmask(ji,2,jk) 
     304               spgv1(ji,2)=spgv1(ji,2)+fse3v_a(ji,2,jk)*va(ji,2,jk)*vmask(ji,2,jk) 
    305305            END DO 
    306306         END DO 
     
    308308         DO ji=1,jpi 
    309309            IF (vmask(ji,2,1).NE.0.) THEN 
    310                spgv1(ji,2)=spgv1(ji,2)/hv(ji,2) 
     310               spgv1(ji,2)=spgv1(ji,2)*hvr_a(ji,2) 
    311311            ENDIF 
    312312         END DO 
     
    353353         DO jk=1,jpkm1 
    354354            DO ji=1,jpi 
    355                spgv(ji,nlcj-2)=spgv(ji,nlcj-2)+fse3v(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
     355               spgv(ji,nlcj-2)=spgv(ji,nlcj-2)+fse3v_a(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
    356356            END DO 
    357357         END DO 
     
    359359         DO ji=1,jpi 
    360360            IF (vmask(ji,nlcj-2,1).NE.0.) THEN 
    361                spgv(ji,nlcj-2)=spgv(ji,nlcj-2)/hv(ji,nlcj-2) 
     361               spgv(ji,nlcj-2)=spgv(ji,nlcj-2)*hvr_a(ji,nlcj-2) 
    362362            ENDIF 
    363363         END DO 
     
    378378         DO jk=1,jpkm1 
    379379            DO ji=1,jpi 
    380                spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)+fse3v(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
     380               spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)+fse3v_a(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
    381381            END DO 
    382382         END DO 
     
    384384         DO ji=1,jpi 
    385385            IF (vmask(ji,nlcj-2,1).NE.0.) THEN 
    386                spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)/hv(ji,nlcj-2) 
     386               spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)*hvr_a(ji,nlcj-2) 
    387387            ENDIF 
    388388         END DO 
     
    503503         zt = REAL(Agrif_NbStepint(),wp) / zrhot 
    504504      ENDIF 
    505  
    506       ! Linear interpolation of sea level 
    507       Agrif_SpecialValue    = 0.e0 
    508       Agrif_UseSpecialValue = .TRUE. 
    509       CALL Agrif_Bc_variable(sshn_id,calledweight=zt, procname=interpsshn ) 
    510       Agrif_UseSpecialValue = .FALSE. 
    511505 
    512506      ! Interpolate barotropic fluxes 
     
    539533   SUBROUTINE Agrif_ssh( kt ) 
    540534      !!---------------------------------------------------------------------- 
    541       !!                  ***  ROUTINE Agrif_DYN  *** 
     535      !!                  ***  ROUTINE Agrif_ssh  *** 
    542536      !!----------------------------------------------------------------------   
    543537      INTEGER, INTENT(in) ::   kt 
    544538      !! 
     539      INTEGER :: ji, jj 
    545540      !!----------------------------------------------------------------------   
    546541 
    547542      IF( Agrif_Root() )   RETURN 
    548543 
     544      ! Linear interpolation of sea level 
     545      Agrif_SpecialValue    = 0.e0 
     546      Agrif_UseSpecialValue = .TRUE. 
     547      CALL Agrif_Bc_variable(sshn_id, procname=interpsshn ) 
     548      Agrif_UseSpecialValue = .FALSE. 
     549 
    549550      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    550          ssha(2,:)=ssha(3,:) 
    551          sshn(2,:)=sshn(3,:) 
     551         DO jj=1,jpj 
     552            ssha(2,jj) = hbdy_w(jj) 
     553         END DO 
    552554      ENDIF 
    553555 
    554556      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    555          ssha(nlci-1,:)=ssha(nlci-2,:) 
    556          sshn(nlci-1,:)=sshn(nlci-2,:) 
     557         DO jj=1,jpj 
     558            ssha(nlci-1,jj) = hbdy_e(jj) 
     559         END DO 
    557560      ENDIF 
    558561 
    559562      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    560          ssha(:,2)=ssha(:,3) 
    561          sshn(:,2)=sshn(:,3) 
     563         DO ji=1,jpi 
     564            ssha(ji,2) = hbdy_s(ji) 
     565         END DO 
    562566      ENDIF 
    563567 
    564568      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    565          ssha(:,nlcj-1)=ssha(:,nlcj-2) 
    566          sshn(:,nlcj-1)=sshn(:,nlcj-2) 
     569         DO ji=1,jpi 
     570            ssha(ji,nlcj-1) = hbdy_n(ji) 
     571         END DO 
    567572      ENDIF 
    568573 
     
    812817               DO ji=i1,i2 
    813818                  ptab(ji,jj,jk) = e2u(ji,jj) * un(ji,jj,jk) 
    814                   ptab(ji,jj,jk) = ptab(ji,jj,jk) * fse3u(ji,jj,jk) 
     819                  ptab(ji,jj,jk) = ptab(ji,jj,jk) * fse3u_n(ji,jj,jk) 
    815820               END DO 
    816821            END DO 
     
    821826            DO jj=j1,j2 
    822827               ua(i1:i2,jj,jk) = (ptab(i1:i2,jj,jk)/(zrhoy*e2u(i1:i2,jj))) 
    823                ua(i1:i2,jj,jk) = ua(i1:i2,jj,jk) / fse3u(i1:i2,jj,jk) 
     828               ua(i1:i2,jj,jk) = ua(i1:i2,jj,jk) / fse3u_a(i1:i2,jj,jk) 
    824829            END DO 
    825830         END DO 
     
    880885               DO ji=i1,i2 
    881886                  ptab(ji,jj,jk) = e1v(ji,jj) * vn(ji,jj,jk) 
    882                   ptab(ji,jj,jk) = ptab(ji,jj,jk) * fse3v(ji,jj,jk) 
     887                  ptab(ji,jj,jk) = ptab(ji,jj,jk) * fse3v_n(ji,jj,jk) 
    883888               END DO 
    884889            END DO 
     
    889894            DO jj=j1,j2 
    890895               va(i1:i2,jj,jk) = (ptab(i1:i2,jj,jk)/(zrhox*e1v(i1:i2,jj))) 
    891                va(i1:i2,jj,jk) = va(i1:i2,jj,jk) / fse3v(i1:i2,jj,jk) 
     896               va(i1:i2,jj,jk) = va(i1:i2,jj,jk) / fse3v_a(i1:i2,jj,jk) 
    892897            END DO 
    893898         END DO 
     
    11101115         ! Polynomial interpolation coefficients: 
    11111116         zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)        & 
    1112                &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
     1117                 &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
    11131118         !  
    11141119         IF(western_side ) ubdy_w(j1:j2) = zat * ptab(i1,j1:j2)   
     
    11511156         ! Polynomial interpolation coefficients: 
    11521157         zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)        & 
    1153                &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
     1158                 &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
    11541159         ! 
    11551160         IF(western_side ) vbdy_w(j1:j2) = zat * ptab(i1,j1:j2)   
Note: See TracChangeset for help on using the changeset viewer.