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 7988 for branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90 – NEMO

Ignore:
Timestamp:
2017-04-28T17:39:22+02:00 (7 years ago)
Author:
jchanut
Message:

Add AGRIF proper AGRIF bcs to GLS and TKE + vvl update

File:
1 edited

Legend:

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

    r7977 r7988  
    228228                  & Agrif_Fixed(), 'Step', Agrif_Nb_Step() 
    229229 
     230      ! Save "old" scale factor (prior update) for subsequent asselin correction 
     231      ! of prognostic variables (needed to update initial state only) 
     232      fse3u_a(:,:,:) = fse3u_n(:,:,:) 
     233      fse3v_a(:,:,:) = fse3v_n(:,:,:) 
     234      hu_a(:,:) = hu(:,:) 
     235      hv_a(:,:) = hv(:,:) 
     236 
     237      ! Vertical scale factor interpolations 
     238      ! ------------------------------------ 
     239      ! 
    230240      CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3u_n(:,:,:),  'U'  ) 
    231241      CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3v_n(:,:,:),  'V'  ) 
     
    310320                     DO ji=i1,i2 
    311321                        IF( tabres(ji,jj,jk,jn) .NE. 0. ) THEN 
    312                            tsb(ji,jj,jk,jn) = tsb(ji,jj,jk,jn) &  
    313                                  & + atfp * ( tabres(ji,jj,jk,jn) & 
    314                                  &             - tsn(ji,jj,jk,jn)*fse3t_a(ji,jj,jk) ) &  
    315                                  & * tmask(ji,jj,jk) / fse3t_b(ji,jj,jk) 
     322                           tsb(ji,jj,jk,jn) = ( tsb(ji,jj,jk,jn)*fse3t_b(ji,jj,jk)   & ! jc: should be fse3t_b prior update 
     323                                & + atfp * ( tabres(ji,jj,jk,jn)                    & 
     324                                &             - tsn(ji,jj,jk,jn)*fse3t_a(ji,jj,jk) ) &  
     325                                & * tmask(ji,jj,jk) ) / fse3t_b(ji,jj,jk) 
    316326                        ENDIF 
    317327                     ENDDO 
     
    367377                  ! 
    368378                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    369                      ub(ji,jj,jk) = ub(ji,jj,jk) &  
    370                            & + atfp * ( tabres(ji,jj,jk)                     &  
     379                     ub(ji,jj,jk) = (       ub(ji,jj,jk)*fse3u_b(ji,jj,jk)   & ! jc: should be fse3u_b prior update 
     380                           & + atfp * ( tabres(ji,jj,jk)                     & 
    371381                           &              - un(ji,jj,jk)*fse3u_a(ji,jj,jk) ) &  
    372                            & * umask(ji,jj,jk) / fse3u_b(ji,jj,jk) 
     382                           & * umask(ji,jj,jk) ) / fse3u_b(ji,jj,jk) 
    373383                  ENDIF 
    374384                  ! 
     
    413423                  ! 
    414424                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    415                      vb(ji,jj,jk) = vb(ji,jj,jk) &  
     425                     vb(ji,jj,jk) = (       vb(ji,jj,jk)*fse3v_b(ji,jj,jk)   & ! jc: should be fse3v_b prior update 
    416426                           & + atfp * ( tabres(ji,jj,jk)                     &  
    417427                           &              - vn(ji,jj,jk)*fse3v_a(ji,jj,jk) ) &  
    418                            & * vmask(ji,jj,jk) / fse3v_b(ji,jj,jk) 
     428                           & * vmask(ji,jj,jk) ) / fse3v_b(ji,jj,jk) 
    419429                  ENDIF 
    420430                  ! 
     
    809819            fsdept_b(i1:i2,j1:j2,1) = 0.5_wp * fse3w_b(i1:i2,j1:j2,1) 
    810820            ! 
    811             DO jk = 2, jpkm1 
     821            DO jk = 2, jpk 
    812822               DO jj = j1,j2 
    813823                  DO ji = i1,i2             
     
    823833               END DO 
    824834            END DO 
     835            ! 
    825836         ENDIF         
    826837         ! 
    827838         ! 2) Updates at now time step: 
    828839         ! ---------------------------- 
     840         ! 
     841         ! Save "old" scale factor (prior update) for subsequent asselin correction 
     842         ! of prognostic variables (needed to update initial state only) 
     843         fse3t_a(i1:i2,j1:j2,k1:k2) = fse3t_n(i1:i2,j1:j2,k1:k2) 
    829844         ! 
    830845         ! Update vertical scale factor at T-points: 
     
    843858         fsde3w_n(i1:i2,j1:j2,1) = fsdept_n(i1:i2,j1:j2,1) - (ht(i1:i2,j1:j2)-ht_0(i1:i2,j1:j2)) ! Last term in the rhs is ssh 
    844859         ! 
    845          DO jk = 2, jpkm1 
     860         DO jk = 2, jpk 
    846861            DO jj = j1,j2 
    847862               DO ji = i1,i2             
Note: See TracChangeset for help on using the changeset viewer.