- Timestamp:
- 2017-11-21T11:15:35+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90
r8741 r8762 65 65 66 66 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 ) 68 68 !!---------------------------------------------------------------------- 69 !! *** ROUTINE updateT ***69 !! *** ROUTINE updateTRC *** 70 70 !!---------------------------------------------------------------------- 71 71 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) :: ptab72 REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 73 73 LOGICAL , INTENT(in ) :: before 74 INTEGER, INTENT(in) :: nb, ndir75 74 !! 76 LOGICAL :: western_side, eastern_side, southern_side, northern_side77 75 INTEGER :: ji,jj,jk,jn 78 76 REAL(wp) :: ztb, ztnu, ztno … … 134 132 ENDIF 135 133 ! 136 !137 # if defined DECAL_FEEDBACK138 IF (.NOT.ln_linssh) THEN139 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 correction145 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN146 IF (southern_side) THEN147 DO jn = n1,n2148 DO jk=k1,k2149 DO ji=i1,i2150 ztb = trb(ji,j1-1,jk,jn) * e3t_b(ji,j1-1,jk) ! fse3t_b prior update should be used151 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 DO156 ENDDO157 ENDDO158 ENDIF159 IF (northern_side) THEN160 DO jn = n1,n2161 DO jk=k1,k2162 DO ji=i1,i2163 ztb = trb(ji,j2+1,jk,jn) * e3t_b(ji,j2+1,jk) ! fse3t_b prior update should be used164 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 DO169 ENDDO170 ENDDO171 ENDIF172 IF (western_side) THEN173 DO jn = n1,n2174 DO jk=k1,k2175 DO jj=j1,j2176 ztb = trb(i1-1,jj,jk,jn) * e3t_b(i1-1,jj,jk) ! fse3t_b prior update should be used177 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 DO182 ENDDO183 ENDDO184 ENDIF185 IF (eastern_side) THEN186 DO jn = n1,n2187 DO jk=k1,k2188 DO jj=j1,j2189 ztb = trb(i2+1,jj,jk,jn) * e3t_b(i2+1,jj,jk) ! fse3t_b prior update should be used190 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 DO195 ENDDO196 ENDDO197 ENDIF198 ENDIF ! Asselin correction199 200 IF (southern_side) THEN201 DO jn = n1,n2202 DO jk=k1,k2203 DO ji=i1,i2204 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 DO206 ENDDO207 ENDDO208 ENDIF209 IF (northern_side) THEN210 DO jn = n1,n2211 DO jk=k1,k2212 DO ji=i1,i2213 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 DO215 ENDDO216 ENDDO217 ENDIF218 IF (western_side) THEN219 DO jn = n1,n2220 DO jk=k1,k2221 DO jj=j1,j2222 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 DO224 ENDDO225 ENDDO226 ENDIF227 IF (eastern_side) THEN228 DO jn = n1,n2229 DO jk=k1,k2230 DO jj=j1,j2231 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 DO233 ENDDO234 ENDDO235 ENDIF236 ENDIF237 #endif238 134 ENDIF 239 135 !
Note: See TracChangeset
for help on using the changeset viewer.