New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8288 for branches/2017/dev_r8183_ICEMODEL – NEMO

Ignore:
Timestamp:
2017-07-06T09:48:38+02:00 (7 years ago)
Author:
clem
Message:

correct a bug on agrif following #8287

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90

    r8226 r8288  
    160160         ENDIF 
    161161         ! 
     162         ! Mask domain edges: 
     163         !------------------- 
     164!         DO jk = 1, jpkm1 
     165!            DO jj = 1, jpj 
     166!               ua(1,jj,jk) = 0._wp 
     167!               va(1,jj,jk) = 0._wp 
     168!            END DO 
     169!         END DO 
     170         ! 
    162171      ENDIF 
    163172 
     
    223232         ENDIF 
    224233         ! 
     234         ! Mask domain edges: 
     235         !------------------- 
     236!         DO jk = 1, jpkm1 
     237!            DO jj = 1, jpj 
     238!               ua(nlci-1,jj,jk) = 0._wp 
     239!               va(nlci  ,jj,jk) = 0._wp 
     240!            END DO 
     241!         END DO 
     242         ! 
    225243      ENDIF 
    226244 
     
    285303         ENDIF 
    286304         ! 
     305         ! Mask domain edges: 
     306         !------------------- 
     307!         DO jk = 1, jpkm1 
     308!            DO ji = 1, jpi 
     309!               ua(ji,1,jk) = 0._wp 
     310!               va(ji,1,jk) = 0._wp 
     311!            END DO 
     312!         END DO 
     313         ! 
    287314      ENDIF 
    288315 
     
    348375         ENDIF 
    349376         ! 
     377         ! Mask domain edges: 
     378         !------------------- 
     379!         DO jk = 1, jpkm1 
     380!            DO ji = 1, jpi 
     381!               ua(ji,nlcj  ,jk) = 0._wp 
     382!               va(ji,nlcj-1,jk) = 0._wp 
     383!            END DO 
     384!         END DO 
     385         ! 
    350386      ENDIF 
    351387      ! 
     
    369405      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    370406         DO jj=1,jpj 
    371             IF( vmask(2,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    372                va_e(2:nbghostcells+1,jj) = vbdy_w(jj) * hvr_e(2:nbghostcells+1,jj) 
    373                ! Specified fluxes: 
    374                ua_e(2:nbghostcells+1,jj) = ubdy_w(jj) * hur_e(2:nbghostcells+1,jj) 
    375                ! Characteristics method (only if ghostcells=1): 
    376                !alt            ua_e(2,jj) = 0.5_wp * ( ubdy_w(jj) * hur_e(2,jj) + ua_e(3,jj) & 
    377                !alt                       &           - sqrt(grav * hur_e(2,jj)) * (sshn_e(3,jj) - hbdy_w(jj)) ) 
    378             ENDIF 
     407            va_e(2:nbghostcells+1,jj) = vbdy_w(jj) * hvr_e(2:nbghostcells+1,jj) 
     408            ! Specified fluxes: 
     409            ua_e(2:nbghostcells+1,jj) = ubdy_w(jj) * hur_e(2:nbghostcells+1,jj) 
     410            ! Characteristics method (only if ghostcells=1): 
     411            !alt            ua_e(2,jj) = 0.5_wp * ( ubdy_w(jj) * hur_e(2,jj) + ua_e(3,jj) & 
     412            !alt                       &           - sqrt(grav * hur_e(2,jj)) * (sshn_e(3,jj) - hbdy_w(jj)) ) 
    379413         END DO 
    380414      ENDIF 
     
    382416      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    383417         DO jj=1,jpj 
    384             IF( vmask(nlci-1,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    385                va_e(nlci-nbghostcells:nlci-1,jj)   = vbdy_e(jj) * hvr_e(nlci-nbghostcells:nlci-1,jj) 
    386                ! Specified fluxes: 
    387                ua_e(nlci-nbghostcells-1:nlci-2,jj) = ubdy_e(jj) * hur_e(nlci-nbghostcells-1:nlci-2,jj) 
    388                ! Characteristics method (only if ghostcells=1): 
    389                !alt            ua_e(nlci-2,jj) = 0.5_wp * ( ubdy_e(jj) * hur_e(nlci-2,jj) + ua_e(nlci-3,jj) & 
    390                !alt                            &           + sqrt(grav * hur_e(nlci-2,jj)) * (sshn_e(nlci-2,jj) - hbdy_e(jj)) ) 
    391             ENDIF 
     418            va_e(nlci-nbghostcells:nlci-1,jj)   = vbdy_e(jj) * hvr_e(nlci-nbghostcells:nlci-1,jj) 
     419            ! Specified fluxes: 
     420            ua_e(nlci-nbghostcells-1:nlci-2,jj) = ubdy_e(jj) * hur_e(nlci-nbghostcells-1:nlci-2,jj) 
     421            ! Characteristics method (only if ghostcells=1): 
     422            !alt            ua_e(nlci-2,jj) = 0.5_wp * ( ubdy_e(jj) * hur_e(nlci-2,jj) + ua_e(nlci-3,jj) & 
     423            !alt                            &           + sqrt(grav * hur_e(nlci-2,jj)) * (sshn_e(nlci-2,jj) - hbdy_e(jj)) ) 
    392424         END DO 
    393425      ENDIF 
     
    395427      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    396428         DO ji=1,jpi 
    397             IF( umask(ji,2,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    398                ua_e(ji,2:nbghostcells+1) = ubdy_s(ji) * hur_e(ji,2:nbghostcells+1) 
    399                ! Specified fluxes: 
    400                va_e(ji,2:nbghostcells+1) = vbdy_s(ji) * hvr_e(ji,2:nbghostcells+1) 
    401                ! Characteristics method (only if ghostcells=1): 
    402                !alt            va_e(ji,2) = 0.5_wp * ( vbdy_s(ji) * hvr_e(ji,2) + va_e(ji,3) & 
    403                !alt                       &           - sqrt(grav * hvr_e(ji,2)) * (sshn_e(ji,3) - hbdy_s(ji)) ) 
    404             ENDIF 
     429            ua_e(ji,2:nbghostcells+1) = ubdy_s(ji) * hur_e(ji,2:nbghostcells+1) 
     430            ! Specified fluxes: 
     431            va_e(ji,2:nbghostcells+1) = vbdy_s(ji) * hvr_e(ji,2:nbghostcells+1) 
     432            ! Characteristics method (only if ghostcells=1): 
     433            !alt            va_e(ji,2) = 0.5_wp * ( vbdy_s(ji) * hvr_e(ji,2) + va_e(ji,3) & 
     434            !alt                       &           - sqrt(grav * hvr_e(ji,2)) * (sshn_e(ji,3) - hbdy_s(ji)) ) 
    405435         END DO 
    406436      ENDIF 
     
    408438      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    409439         DO ji=1,jpi 
    410             IF( umask(ji,nlcj-1,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    411                ua_e(ji,nlcj-nbghostcells:nlcj-1)   = ubdy_n(ji) * hur_e(ji,nlcj-nbghostcells:nlcj-1) 
    412                ! Specified fluxes: 
    413                va_e(ji,nlcj-nbghostcells-1:nlcj-2) = vbdy_n(ji) * hvr_e(ji,nlcj-nbghostcells-1:nlcj-2) 
    414                ! Characteristics method (only if ghostcells=1): 
    415                !alt            va_e(ji,nlcj-2) = 0.5_wp * ( vbdy_n(ji) * hvr_e(ji,nlcj-2)  + va_e(ji,nlcj-3) & 
    416                !alt                            &           + sqrt(grav * hvr_e(ji,nlcj-2)) * (sshn_e(ji,nlcj-2) - hbdy_n(ji)) ) 
    417             ENDIF 
     440            ua_e(ji,nlcj-nbghostcells:nlcj-1)   = ubdy_n(ji) * hur_e(ji,nlcj-nbghostcells:nlcj-1) 
     441            ! Specified fluxes: 
     442            va_e(ji,nlcj-nbghostcells-1:nlcj-2) = vbdy_n(ji) * hvr_e(ji,nlcj-nbghostcells-1:nlcj-2) 
     443            ! Characteristics method (only if ghostcells=1): 
     444            !alt            va_e(ji,nlcj-2) = 0.5_wp * ( vbdy_n(ji) * hvr_e(ji,nlcj-2)  + va_e(ji,nlcj-3) & 
     445            !alt                            &           + sqrt(grav * hvr_e(ji,nlcj-2)) * (sshn_e(ji,nlcj-2) - hbdy_n(ji)) ) 
    418446         END DO 
    419447      ENDIF 
     
    497525         DO jj = 1, jpj 
    498526            DO ji = 2, indx 
    499                IF( tmask(2,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    500                   ssha(ji,jj)=ssha(indx+1,jj) 
    501                   sshn(ji,jj)=sshn(indx+1,jj) 
    502                ENDIF 
     527               ssha(ji,jj)=ssha(indx+1,jj) 
     528               sshn(ji,jj)=sshn(indx+1,jj) 
    503529            ENDDO 
    504530         ENDDO 
     
    510536         DO jj = 1, jpj 
    511537            DO ji = indx, nlci-1 
    512                IF( tmask(nlci-1,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    513                   ssha(ji,jj)=ssha(indx-1,jj) 
    514                   sshn(ji,jj)=sshn(indx-1,jj) 
    515                ENDIF 
     538               ssha(ji,jj)=ssha(indx-1,jj) 
     539               sshn(ji,jj)=sshn(indx-1,jj) 
    516540            ENDDO 
    517541         ENDDO 
     
    523547         DO jj = 2, indx 
    524548            DO ji = 1, jpi 
    525                IF( tmask(ji,2,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    526                   ssha(ji,jj)=ssha(ji,indx+1) 
    527                   sshn(ji,jj)=sshn(ji,indx+1) 
    528                ENDIF 
     549               ssha(ji,jj)=ssha(ji,indx+1) 
     550               sshn(ji,jj)=sshn(ji,indx+1) 
    529551            ENDDO 
    530552         ENDDO 
     
    536558         DO jj = indx, nlcj-1 
    537559            DO ji = 1, jpi 
    538                IF( tmask(ji,nlcj-1,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    539                   ssha(ji,jj)=ssha(ji,indx-1) 
    540                   sshn(ji,jj)=sshn(ji,indx-1) 
    541                ENDIF 
     560               ssha(ji,jj)=ssha(ji,indx-1) 
     561               sshn(ji,jj)=sshn(ji,indx-1) 
    542562            ENDDO 
    543563         ENDDO 
     
    558578      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    559579         DO jj = 1, jpj 
    560             IF( tmask(2,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    561                ssha_e(2:nbghostcells+1,jj) = hbdy_w(jj) 
    562             ENDIF 
     580            ssha_e(2:nbghostcells+1,jj) = hbdy_w(jj) 
    563581         END DO 
    564582      ENDIF 
     
    566584      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    567585         DO jj = 1, jpj 
    568             IF( tmask(nlci-1,jj,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    569                ssha_e(nlci-nbghostcells:nlci-1,jj) = hbdy_e(jj) 
    570             ENDIF 
     586            ssha_e(nlci-nbghostcells:nlci-1,jj) = hbdy_e(jj) 
    571587         END DO 
    572588      ENDIF 
     
    574590      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    575591         DO ji = 1, jpi 
    576             IF( tmask(ji,2,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    577                ssha_e(ji,2:nbghostcells+1) = hbdy_s(ji) 
    578             ENDIF 
     592            ssha_e(ji,2:nbghostcells+1) = hbdy_s(ji) 
    579593         END DO 
    580594      ENDIF 
     
    582596      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    583597         DO ji = 1, jpi 
    584             IF( tmask(ji,nlcj-1,1) == 1._wp ) THEN !clem: avoid interpolation if coast at the boundary 
    585                ssha_e(ji,nlcj-nbghostcells:nlcj-1) = hbdy_n(ji) 
    586             ENDIF 
     598            ssha_e(ji,nlcj-nbghostcells:nlcj-1) = hbdy_n(ji) 
    587599         END DO 
    588600      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.