Changeset 11463
- Timestamp:
- 2019-08-20T14:14:56+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_oce_interp.F90
r11099 r11463 110 110 DO jk = 1, jpkm1 111 111 DO jj = 1, jpj 112 uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj,Krhs_a) & 113 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 112 uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj, Krhs_a) & 113 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 114 & * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 114 115 END DO 115 116 END DO … … 122 123 DO jk=1,jpkm1 ! Smooth 123 124 DO jj=j1,j2 124 uu(ibdy2,jj,jk,Krhs_a) = 0.25_wp*(uu(ibdy2-1,jj,jk,Krhs_a)+2._wp*uu(ibdy2,jj,jk,Krhs_a)+uu(ibdy2+1,jj,jk,Krhs_a)) 125 uu(ibdy2,jj,jk,Krhs_a) = 0.25_wp*( uu(ibdy2-1,jj,jk,Krhs_a)+2._wp*uu(ibdy2,jj,jk,Krhs_a) & 126 & + uu(ibdy2+1,jj,jk,Krhs_a) ) 125 127 END DO 126 128 END DO … … 130 132 DO jk = 1, jpkm1 131 133 DO jj = 1, jpj 132 zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) &133 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) * uu(ibdy1:ibdy2,jj,jk,Krhs_a)*umask(ibdy1:ibdy2,jj,jk)134 zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 135 & * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 134 136 END DO 135 137 END DO … … 140 142 DO jk = 1, jpkm1 141 143 DO jj = 1, jpj 142 uu(ibdy1:ibdy2,jj,jk,Krhs_a) = ( uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 143 & + uu_b(ibdy1:ibdy2,jj,Krhs_a)-zub(ibdy1:ibdy2,jj)) * umask(ibdy1:ibdy2,jj,jk) 144 uu(ibdy1:ibdy2,jj,jk,Krhs_a) = ( uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 145 & + uu_b(ibdy1:ibdy2,jj, Krhs_a) & 146 & - zub(ibdy1:ibdy2,jj) ) & 147 & * umask(ibdy1:ibdy2,jj,jk) 144 148 END DO 145 149 END DO … … 149 153 DO jk = 1, jpkm1 150 154 DO jj = 1, jpj 151 zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) &152 & + e3v(ibdy1:ibdy2,jj,jk,Krhs_a)* vv(ibdy1:ibdy2,jj,jk,Krhs_a) * vmask(ibdy1:ibdy2,jj,jk)155 zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) + e3v(ibdy1:ibdy2,jj,jk,Krhs_a) & 156 & * vv(ibdy1:ibdy2,jj,jk,Krhs_a) * vmask(ibdy1:ibdy2,jj,jk) 153 157 END DO 154 158 END DO … … 158 162 DO jk = 1, jpkm1 159 163 DO jj = 1, jpj 160 vv(ibdy1:ibdy2,jj,jk,Krhs_a) = ( vv(ibdy1:ibdy2,jj,jk,Krhs_a) & 161 & + vv_b(ibdy1:ibdy2,jj,Krhs_a)-zvb(ibdy1:ibdy2,jj))*vmask(ibdy1:ibdy2,jj,jk) 164 vv(ibdy1:ibdy2,jj,jk,Krhs_a) = ( vv(ibdy1:ibdy2,jj,jk,Krhs_a) & 165 & + vv_b(ibdy1:ibdy2,jj, Krhs_a) & 166 & - zvb(ibdy1:ibdy2,jj) ) & 167 & * vmask(ibdy1:ibdy2,jj,jk) 162 168 END DO 163 169 END DO … … 181 187 DO jk = 1, jpkm1 182 188 DO jj = 1, jpj 183 uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj,Krhs_a) & 184 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 189 uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj, Krhs_a) & 190 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 191 & * uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 192 & * umask(ibdy1:ibdy2,jj,jk) 185 193 END DO 186 194 END DO … … 193 201 DO jk=1,jpkm1 ! Smooth 194 202 DO jj=j1,j2 195 uu(ibdy1,jj,jk,Krhs_a) = 0.25_wp*(uu(ibdy1-1,jj,jk,Krhs_a)+2._wp*uu(ibdy1,jj,jk,Krhs_a)+uu(ibdy1+1,jj,jk,Krhs_a)) 203 uu(ibdy1,jj,jk,Krhs_a) = 0.25_wp*( uu(ibdy1-1,jj,jk,Krhs_a) & 204 & + 2._wp*uu(ibdy1 ,jj,jk,Krhs_a) & 205 & + uu(ibdy1+1,jj,jk,Krhs_a) ) 196 206 END DO 197 207 END DO … … 201 211 DO jk = 1, jpkm1 202 212 DO jj = 1, jpj 203 zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) & 204 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 213 zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) & 214 & + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 215 & * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 205 216 END DO 206 217 END DO … … 211 222 DO jk = 1, jpkm1 212 223 DO jj = 1, jpj 213 uu(ibdy1:ibdy2,jj,jk,Krhs_a) = ( uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 214 & + uu_b(ibdy1:ibdy2,jj,Krhs_a)-zub(ibdy1:ibdy2,jj))*umask(ibdy1:ibdy2,jj,jk) 224 uu(ibdy1:ibdy2,jj,jk,Krhs_a) = ( uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 225 & + uu_b(ibdy1:ibdy2,jj, Krhs_a) & 226 & - zub(ibdy1:ibdy2,jj) & 227 & ) * umask(ibdy1:ibdy2,jj,jk) 215 228 END DO 216 229 END DO … … 222 235 DO jk = 1, jpkm1 223 236 DO jj = 1, jpj 224 zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) & 225 & + e3v(ibdy1:ibdy2,jj,jk,Krhs_a) * vv(ibdy1:ibdy2,jj,jk,Krhs_a) * vmask(ibdy1:ibdy2,jj,jk) 237 zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) & 238 & + e3v(ibdy1:ibdy2,jj,jk,Krhs_a) & 239 & * vv(ibdy1:ibdy2,jj,jk,Krhs_a) & 240 & * vmask(ibdy1:ibdy2,jj,jk) 226 241 END DO 227 242 END DO … … 231 246 DO jk = 1, jpkm1 232 247 DO jj = 1, jpj 233 vv(ibdy1:ibdy2,jj,jk,Krhs_a) = ( vv(ibdy1:ibdy2,jj,jk,Krhs_a) & 234 & + vv_b(ibdy1:ibdy2,jj,Krhs_a)-zvb(ibdy1:ibdy2,jj)) * vmask(ibdy1:ibdy2,jj,jk) 248 vv(ibdy1:ibdy2,jj,jk,Krhs_a) = ( vv(ibdy1:ibdy2,jj,jk,Krhs_a) & 249 & + vv_b(ibdy1:ibdy2,jj, Krhs_a) & 250 & - zvb(ibdy1:ibdy2,jj) & 251 & ) * vmask(ibdy1:ibdy2,jj,jk) 235 252 END DO 236 253 END DO … … 254 271 DO jk = 1, jpkm1 255 272 DO ji = 1, jpi 256 vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2,Krhs_a) & 257 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) * vv(ji,jbdy1:jbdy2,jk,Krhs_a) * vmask(ji,jbdy1:jbdy2,jk) 273 vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2, Krhs_a) & 274 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 275 & * vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 276 & * vmask(ji,jbdy1:jbdy2,jk) 258 277 END DO 259 278 END DO … … 266 285 DO jk = 1, jpkm1 ! Smooth 267 286 DO ji = i1, i2 268 vv(ji,jbdy2,jk,Krhs_a) = 0.25_wp*(vv(ji,jbdy2-1,jk,Krhs_a)+2._wp*vv(ji,jbdy2,jk,Krhs_a)+vv(ji,jbdy2+1,jk,Krhs_a)) 287 vv(ji,jbdy2,jk,Krhs_a) = 0.25_wp*( vv(ji,jbdy2-1,jk,Krhs_a) & 288 & + 2._wp*vv(ji,jbdy2 ,jk,Krhs_a) & 289 & + vv(ji,jbdy2+1,jk,Krhs_a) ) 269 290 END DO 270 291 END DO … … 274 295 DO jk=1,jpkm1 275 296 DO ji=1,jpi 276 zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) & 277 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) * vv(ji,jbdy1:jbdy2,jk,Krhs_a) * vmask(ji,jbdy1:jbdy2,jk) 297 zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) & 298 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 299 & * vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 300 & * vmask(ji,jbdy1:jbdy2,jk) 278 301 END DO 279 302 END DO … … 284 307 DO jk = 1, jpkm1 285 308 DO ji = 1, jpi 286 vv(ji,jbdy1:jbdy2,jk,Krhs_a) = ( vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 287 & + vv_b(ji,jbdy1:jbdy2,Krhs_a) - zvb(ji,jbdy1:jbdy2) ) * vmask(ji,jbdy1:jbdy2,jk) 309 vv(ji,jbdy1:jbdy2,jk,Krhs_a) = ( vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 310 & + vv_b(ji,jbdy1:jbdy2, Krhs_a) & 311 & - zvb(ji,jbdy1:jbdy2) & 312 & ) * vmask(ji,jbdy1:jbdy2,jk) 288 313 END DO 289 314 END DO … … 293 318 DO jk = 1, jpkm1 294 319 DO ji = 1, jpi 295 zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) & 296 & + e3u(ji,jbdy1:jbdy2,jk,Krhs_a) * uu(ji,jbdy1:jbdy2,jk,Krhs_a) * umask(ji,jbdy1:jbdy2,jk) 320 zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) & 321 & + e3u(ji,jbdy1:jbdy2,jk,Krhs_a) & 322 & * uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 323 & * umask(ji,jbdy1:jbdy2,jk) 297 324 END DO 298 325 END DO … … 303 330 DO jk = 1, jpkm1 304 331 DO ji = 1, jpi 305 uu(ji,jbdy1:jbdy2,jk,Krhs_a) = ( uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 306 & + uu_b(ji,jbdy1:jbdy2,Krhs_a) - zub(ji,jbdy1:jbdy2) ) * umask(ji,jbdy1:jbdy2,jk) 332 uu(ji,jbdy1:jbdy2,jk,Krhs_a) = ( uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 333 & + uu_b(ji,jbdy1:jbdy2, Krhs_a) & 334 & - zub(ji,jbdy1:jbdy2) & 335 & ) * umask(ji,jbdy1:jbdy2,jk) 307 336 END DO 308 337 END DO … … 326 355 DO jk = 1, jpkm1 327 356 DO ji = 1, jpi 328 vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2,Krhs_a) & 329 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) * vv(ji,jbdy1:jbdy2,jk,Krhs_a) * vmask(ji,jbdy1:jbdy2,jk) 357 vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2, Krhs_a) & 358 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 359 & * vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 360 & * vmask(ji,jbdy1:jbdy2,jk) 330 361 END DO 331 362 END DO … … 338 369 DO jk = 1, jpkm1 ! Smooth 339 370 DO ji = i1, i2 340 vv(ji,jbdy1,jk,Krhs_a) = 0.25_wp*(vv(ji,jbdy1-1,jk,Krhs_a)+2._wp*vv(ji,jbdy1,jk,Krhs_a)+vv(ji,jbdy1+1,jk,Krhs_a)) 371 vv(ji,jbdy1,jk,Krhs_a) = 0.25_wp*( vv(ji,jbdy1-1,jk,Krhs_a) & 372 & + 2._wp*vv(ji,jbdy1 ,jk,Krhs_a) & 373 & + vv(ji,jbdy1+1,jk,Krhs_a) ) 341 374 END DO 342 375 END DO … … 346 379 DO jk=1,jpkm1 347 380 DO ji=1,jpi 348 zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) & 349 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) * vv(ji,jbdy1:jbdy2,jk,Krhs_a) * vmask(ji,jbdy1:jbdy2,jk) 381 zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) & 382 & + e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 383 & * vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 384 & * vmask(ji,jbdy1:jbdy2,jk) 350 385 END DO 351 386 END DO … … 356 391 DO jk = 1, jpkm1 357 392 DO ji = 1, jpi 358 vv(ji,jbdy1:jbdy2,jk,Krhs_a) = ( vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 359 & + vv_b(ji,jbdy1:jbdy2,Krhs_a) - zvb(ji,jbdy1:jbdy2) ) * vmask(ji,jbdy1:jbdy2,jk) 393 vv(ji,jbdy1:jbdy2,jk,Krhs_a) = ( vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 394 & + vv_b(ji,jbdy1:jbdy2, Krhs_a) & 395 & - zvb(ji,jbdy1:jbdy2) & 396 & ) * vmask(ji,jbdy1:jbdy2,jk) 360 397 END DO 361 398 END DO … … 367 404 DO jk = 1, jpkm1 368 405 DO ji = 1, jpi 369 zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) & 370 & + e3u(ji,jbdy1:jbdy2,jk,Krhs_a) * uu(ji,jbdy1:jbdy2,jk,Krhs_a) * umask(ji,jbdy1:jbdy2,jk) 406 zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) & 407 & + e3u(ji,jbdy1:jbdy2,jk,Krhs_a) & 408 & * uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 409 & * umask(ji,jbdy1:jbdy2,jk) 371 410 END DO 372 411 END DO … … 377 416 DO jk = 1, jpkm1 378 417 DO ji = 1, jpi 379 uu(ji,jbdy1:jbdy2,jk,Krhs_a) = ( uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 380 & + uu_b(ji,jbdy1:jbdy2,Krhs_a) - zub(ji,jbdy1:jbdy2) ) * umask(ji,jbdy1:jbdy2,jk) 418 uu(ji,jbdy1:jbdy2,jk,Krhs_a) = ( uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 419 & + uu_b(ji,jbdy1:jbdy2, Krhs_a) & 420 & - zub(ji,jbdy1:jbdy2) & 421 & ) * umask(ji,jbdy1:jbdy2,jk) 381 422 END DO 382 423 END DO … … 684 725 iref = ji 685 726 jref = jj 686 if(western_side) iref=MAX(2,ji)687 if(eastern_side) iref=MIN(nlci-1,ji)688 if(southern_side) jref=MAX(2 ,jj)727 if(western_side) iref=MAX(2 ,ji) 728 if(eastern_side) iref=MIN(nlci-1,ji) 729 if(southern_side) jref=MAX(2 ,jj) 689 730 if(northern_side) jref=MIN(nlcj-1,jj) 690 731 N_in = 0 … … 693 734 N_in = N_in + 1 694 735 tabin(jk,:) = ptab(ji,jj,jk,n1:n2-1) 695 h_in(N_in) = ptab(ji,jj,jk,n2)736 h_in(N_in) = ptab(ji,jj,jk,n2) 696 737 END DO 697 738 N_out = 0 … … 722 763 ! 723 764 ! Remove CORNERS 724 IF((nbondj == -1).OR.(nbondj == 2)) jmin = 2 + nbghostcells765 IF((nbondj == -1).OR.(nbondj == 2)) jmin = 2 + nbghostcells 725 766 IF((nbondj == +1).OR.(nbondj == 2)) jmax = nlcj - nbghostcells - 1 726 IF((nbondi == -1).OR.(nbondi == 2)) imin = 2 + nbghostcells767 IF((nbondi == -1).OR.(nbondi == 2)) imin = 2 + nbghostcells 727 768 IF((nbondi == +1).OR.(nbondi == 2)) imax = nlci - nbghostcells - 1 728 769 ! … … 737 778 ibdy = nlci-nbghostcells 738 779 DO jn = 1, jpts 739 ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 780 ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 781 & + z2 * ptab_child(ibdy ,jmin:jmax,1:jpkm1,jn) 740 782 DO jk = 1, jpkm1 741 783 DO jj = jmin,jmax … … 743 785 ts(ibdy,jj,jk,jn,Krhs_a) = ts(ibdy+1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 744 786 ELSE 745 ts(ibdy,jj,jk,jn,Krhs_a)=(z4*ts(ibdy+1,jj,jk,jn,Krhs_a)+z3*ts(ibdy-1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk) 787 ts(ibdy,jj,jk,jn,Krhs_a) = ( z4 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 788 & + z3 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 789 & ) * tmask(ibdy ,jj,jk) 746 790 IF( uu(ibdy-1,jj,jk,Kmm_a) > 0._wp ) THEN 747 ts(ibdy,jj,jk,jn,Krhs_a)=( z6*ts(ibdy-1,jj,jk,jn,Krhs_a)+z5*ts(ibdy+1,jj,jk,jn,Krhs_a) & 748 + z7*ts(ibdy-2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 791 ts(ibdy,jj,jk,jn,Krhs_a) = ( z6 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 792 & + z5 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 793 & + z7 * ts(ibdy-2,jj,jk,jn,Krhs_a) & 794 & ) * tmask(ibdy ,jj,jk) 749 795 ENDIF 750 796 ENDIF … … 752 798 END DO 753 799 ! Restore ghost points: 754 ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy+1,jmin:jmax,1:jpkm1) 800 ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 801 & * tmask(ibdy+1,jmin:jmax,1:jpkm1) 755 802 END DO 756 803 ENDIF … … 766 813 jbdy = nlcj-nbghostcells 767 814 DO jn = 1, jpts 768 ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 815 ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 816 & + z2 * ptab_child(imin:imax,jbdy ,1:jpkm1,jn) 769 817 DO jk = 1, jpkm1 770 818 DO ji = imin,imax … … 772 820 ts(ji,jbdy,jk,jn,Krhs_a) = ts(ji,jbdy+1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 773 821 ELSE 774 ts(ji,jbdy,jk,jn,Krhs_a)=(z4*ts(ji,jbdy+1,jk,jn,Krhs_a)+z3*ts(ji,jbdy-1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk) 822 ts(ji,jbdy,jk,jn,Krhs_a)=( z4 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 823 & + z3 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 824 & ) * tmask(ji,jbdy ,jk) 775 825 IF (vv(ji,jbdy-1,jk,Kmm_a) > 0._wp ) THEN 776 ts(ji,jbdy,jk,jn,Krhs_a)=( z6*ts(ji,jbdy-1,jk,jn,Krhs_a)+z5*ts(ji,jbdy+1,jk,jn,Krhs_a) & 777 + z7*ts(ji,jbdy-2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 826 ts(ji,jbdy,jk,jn,Krhs_a)=( z6 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 827 & + z5 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 828 & + z7 * ts(ji,jbdy-2,jk,jn,Krhs_a) & 829 & ) * tmask(ji,jbdy ,jk) 778 830 ENDIF 779 831 ENDIF … … 781 833 END DO 782 834 ! Restore ghost points: 783 ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) * tmask(imin:imax,jbdy+1,1:jpkm1) 835 ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 836 & * tmask(imin:imax,jbdy+1,1:jpkm1) 784 837 END DO 785 838 ENDIF … … 795 848 ibdy = 1+nbghostcells 796 849 DO jn = 1, jpts 797 ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 850 ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 851 & + z2 * ptab_child(ibdy ,jmin:jmax,1:jpkm1,jn) 798 852 DO jk = 1, jpkm1 799 853 DO jj = jmin,jmax … … 801 855 ts(ibdy,jj,jk,jn,Krhs_a) = ts(ibdy-1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 802 856 ELSE 803 ts(ibdy,jj,jk,jn,Krhs_a)=(z4*ts(ibdy-1,jj,jk,jn,Krhs_a)+z3*ts(ibdy+1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk) 857 ts(ibdy,jj,jk,jn,Krhs_a) = ( z4 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 858 & + z3 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 859 & ) * tmask(ibdy ,jj,jk) 804 860 IF( uu(ibdy,jj,jk,Kmm_a) < 0._wp ) THEN 805 ts(ibdy,jj,jk,jn,Krhs_a)=( z6*ts(ibdy+1,jj,jk,jn,Krhs_a)+z5*ts(ibdy-1,jj,jk,jn,Krhs_a) & 806 + z7*ts(ibdy+2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 861 ts(ibdy,jj,jk,jn,Krhs_a) = ( z6 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 862 & + z5 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 863 & + z7 * ts(ibdy+2,jj,jk,jn,Krhs_a) & 864 & ) * tmask(ibdy,jj,jk) 807 865 ENDIF 808 866 ENDIF … … 810 868 END DO 811 869 ! Restore ghost points: 812 ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy-1,jmin:jmax,1:jpkm1) 870 ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 871 & * tmask(ibdy-1,jmin:jmax,1:jpkm1) 813 872 END DO 814 873 ENDIF … … 824 883 jbdy=1+nbghostcells 825 884 DO jn = 1, jpts 826 ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 885 ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 886 & + z2 * ptab_child(imin:imax,jbdy ,1:jpkm1,jn) 827 887 DO jk = 1, jpkm1 828 888 DO ji = imin,imax 829 889 IF( vmask(ji,jbdy,jk) == 0._wp ) THEN 830 ts(ji,jbdy,jk,jn,Krhs_a) =ts(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk)890 ts(ji,jbdy,jk,jn,Krhs_a) = ts(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 831 891 ELSE 832 ts(ji,jbdy,jk,jn,Krhs_a)=(z4*ts(ji,jbdy-1,jk,jn,Krhs_a)+z3*ts(ji,jbdy+1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk) 892 ts(ji,jbdy,jk,jn,Krhs_a) = ( z4 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 893 & + z3 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 894 & ) * tmask(ji,jbdy ,jk) 833 895 IF( vv(ji,jbdy,jk,Kmm_a) < 0._wp ) THEN 834 ts(ji,jbdy,jk,jn,Krhs_a)=( z6*ts(ji,jbdy+1,jk,jn,Krhs_a)+z5*ts(ji,jbdy-1,jk,jn,Krhs_a) & 835 + z7*ts(ji,jbdy+2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 896 ts(ji,jbdy,jk,jn,Krhs_a) = ( z6 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 897 & + z5 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 898 & + z7 * ts(ji,jbdy+2,jk,jn,Krhs_a) & 899 & ) * tmask(ji,jbdy ,jk) 836 900 ENDIF 837 901 ENDIF … … 839 903 END DO 840 904 ! Restore ghost points: 841 ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) * tmask(imin:imax,jbdy-1,1:jpkm1) 905 ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 906 & * tmask(imin:imax,jbdy-1,1:jpkm1) 842 907 END DO 843 908 ENDIF … … 900 965 DO jj=j1,j2 901 966 DO ji=i1,i2 902 ptab(ji,jj,jk,1) = (e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) * uu(ji,jj,jk,Kmm_a)*umask(ji,jj,jk)) 967 ptab(ji,jj,jk,1) = ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) & 968 & * uu(ji,jj,jk,Kmm_a) * umask(ji,jj,jk) ) 903 969 # if defined key_vertical 904 970 ptab(ji,jj,jk,2) = (umask(ji,jj,jk) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a)) … … 923 989 IF (ptab(ji,jj,jk,2) == 0) EXIT 924 990 N_in = N_in + 1 925 tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2)991 tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 926 992 h_in(N_in) = ptab(ji,jj,jk,2)/(e2u(ji,jj)*zrhoy) 927 993 ENDDO … … 945 1011 946 1012 IF (N_in * N_out > 0) THEN 947 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))1013 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 948 1014 ! Should be able to remove the next IF/ELSEIF statement once scale factors are dealt with properly 949 1015 if (h_diff < -1.e4) then 950 print *,'CHECK YOUR BATHY ...', h_diff, sum(h_out(1:N_out)), sum(h_in(1:N_in))1016 print *,'CHECK YOUR BATHY ...', h_diff, SUM( h_out(1:N_out) ), SUM( h_in(1:N_in) ) 951 1017 ! stop 952 1018 endif 953 1019 ENDIF 954 call reconstructandremap(tabin(1:N_in),h_in(1:N_in),uu(ji,jj,1:N_out,Krhs_a),h_out(1:N_out),N_in,N_out) 1020 call reconstructandremap( tabin(1:N_in) , h_in(1:N_in), uu(ji,jj,1:N_out,Krhs_a), & 1021 & h_out(1:N_out), N_in , N_out ) 955 1022 ENDDO 956 1023 ENDDO … … 992 1059 DO jj=j1,j2 993 1060 DO ji=i1,i2 994 ptab(ji,jj,jk,1) = (e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) * vv(ji,jj,jk,Kmm_a)*vmask(ji,jj,jk)) 1061 ptab(ji,jj,jk,1) = ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) & 1062 & * vv(ji,jj,jk,Kmm_a) * vmask(ji,jj,jk) ) 995 1063 # if defined key_vertical 996 1064 ptab(ji,jj,jk,2) = vmask(ji,jj,jk) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) … … 1015 1083 if (ptab(ji,jj,jk,2) == 0) EXIT 1016 1084 N_in = N_in + 1 1017 tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2)1085 tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 1018 1086 h_in(N_in) = ptab(ji,jj,jk,2)/(e1v(ji,jj)*zrhox) 1019 1087 END DO … … 1033 1101 CYCLE 1034 1102 ENDIF 1035 call reconstructandremap(tabin(1:N_in),h_in(1:N_in),vv(ji,jj,1:N_out,Krhs_a),h_out(1:N_out),N_in,N_out) 1103 call reconstructandremap( tabin(1:N_in) , h_in(1:N_in), vv(ji,jj,1:N_out,Krhs_a), & 1104 & h_out(1:N_out), N_in , N_out ) 1036 1105 END DO 1037 1106 END DO -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_oce_sponge.F90
r11053 r11463 393 393 394 394 IF (N_in * N_out > 0) THEN 395 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))395 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 396 396 if (h_diff < -1.e4) then 397 print *,'CHECK YOUR BATHY ...', h_diff, sum(h_out(1:N_out)), sum(h_in(1:N_in))397 print *,'CHECK YOUR BATHY ...', h_diff, SUM( h_out(1:N_out) ), SUM( h_in(1:N_in) ) 398 398 endif 399 399 ENDIF … … 403 403 ENDDO 404 404 405 ubdiff(i1:i2,j1:j2,:) = ( uu(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,:))*umask(i1:i2,j1:j2,:)405 ubdiff(i1:i2,j1:j2,:) = ( uu(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,: ) )*umask(i1:i2,j1:j2,:) 406 406 #else 407 ubdiff(i1:i2,j1:j2,:) = ( uu(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*umask(i1:i2,j1:j2,:)407 ubdiff(i1:i2,j1:j2,:) = ( uu(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1) )*umask(i1:i2,j1:j2,:) 408 408 #endif 409 409 ! … … 540 540 541 541 IF (N_in * N_out > 0) THEN 542 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))542 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 543 543 if (h_diff < -1.e4) then 544 print *,'CHECK YOUR BATHY ...', h_diff, sum(h_out(1:N_out)), sum(h_in(1:N_in))544 print *,'CHECK YOUR BATHY ...', h_diff, SUM( h_out(1:N_out) ), SUM( h_in(1:N_in) ) 545 545 endif 546 546 ENDIF … … 549 549 ENDDO 550 550 551 vbdiff(i1:i2,j1:j2,:) = ( vv(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,:))*vmask(i1:i2,j1:j2,:)551 vbdiff(i1:i2,j1:j2,:) = ( vv(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,: ) )*vmask(i1:i2,j1:j2,:) 552 552 # else 553 vbdiff(i1:i2,j1:j2,:) = ( vv(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*vmask(i1:i2,j1:j2,:)553 vbdiff(i1:i2,j1:j2,:) = ( vv(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1) )*vmask(i1:i2,j1:j2,:) 554 554 # endif 555 555 ! … … 570 570 DO ji = i1,i2-1 ! vector opt. 571 571 zbtr = r1_e1e2f(ji,jj) * e3f(ji,jj,jk) * fsahm_spf(ji,jj) 572 rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) &573 & - e2v(ji ,jj) * vbdiff(ji ,jj,jk) ) * fmask(ji,jj,jk) * zbtr572 rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) & 573 & - e2v(ji ,jj) * vbdiff(ji ,jj,jk) ) * fmask(ji,jj,jk) * zbtr 574 574 END DO 575 575 END DO … … 586 586 IF( .NOT. tabspongedone_u(ji,jj) ) THEN 587 587 DO jk = 1, jpkm1 588 uu(ji,jj,jk,Krhs_a) = uu(ji,jj,jk,Krhs_a) & 589 & - ( rotdiff (ji ,jj,jk) - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) ) & 590 & + ( hdivdiff(ji+1,jj,jk) - hdivdiff(ji,jj ,jk)) * r1_e1u(ji,jj) 588 uu(ji,jj,jk,Krhs_a) = uu(ji ,jj,jk,Krhs_a) & 589 & - ( rotdiff(ji ,jj,jk) - rotdiff(ji,jj-1,jk) ) & 590 & / ( e2u(ji ,jj) * e3u(ji,jj ,jk,Kmm_a) ) & 591 & + ( hdivdiff(ji+1,jj,jk) - hdivdiff(ji,jj ,jk) ) * r1_e1u(ji,jj) 591 592 END DO 592 593 ENDIF … … 600 601 IF( .NOT. tabspongedone_v(ji,jj) ) THEN 601 602 DO jk = 1, jpkm1 602 vv(ji,jj,jk,Krhs_a) = vv(ji,jj,jk,Krhs_a) & 603 & + ( rotdiff (ji,jj ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) ) & 604 & + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji ,jj,jk) ) * r1_e2v(ji,jj) 603 vv(ji,jj,jk,Krhs_a) = vv(ji,jj ,jk,Krhs_a) & 604 & + ( rotdiff(ji,jj ,jk) - rotdiff(ji-1,jj,jk) ) & 605 & / ( e1v(ji,jj ) * e3v(ji ,jj,jk,Kmm_a) ) & 606 & + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji ,jj,jk) ) * r1_e2v(ji,jj) 605 607 END DO 606 608 ENDIF -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_oce_update.F90
r11099 r11463 315 315 DO jj=j1,j2 316 316 DO ji=i1,i2 317 tabres(ji,jj,jk,jn) = ( ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Kmm_a) )&318 * tmask(ji,jj,jk) + (tmask(ji,jj,jk)-1)*999._wp317 tabres(ji,jj,jk,jn) = ( ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Kmm_a) ) & 318 & * tmask(ji,jj,jk) + (tmask(ji,jj,jk) - 1._wp)*999._wp 319 319 END DO 320 320 END DO … … 325 325 DO ji=i1,i2 326 326 tabres(ji,jj,jk,n2) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm_a) & 327 + (tmask(ji,jj,jk)-1)*999._wp327 & + (tmask(ji,jj,jk) - 1._wp)*999._wp 328 328 END DO 329 329 END DO 330 330 END DO 331 331 ELSE 332 tabres_child(:,:,:,:) = 0. 332 tabres_child(:,:,:,:) = 0._wp 333 333 AGRIF_SpecialValue = 0._wp 334 334 DO jj=j1,j2 … … 356 356 ENDIF 357 357 DO jn=n1,n2-1 358 CALL reconstructandremap(tabin(1:N_in,jn),h_in(1:N_in),tabres_child(ji,jj,1:N_out,jn),h_out(1:N_out),N_in,N_out) 358 CALL reconstructandremap( tabin(1:N_in,jn), h_in(1:N_in), tabres_child(ji,jj,1:N_out,jn), & 359 & h_out(1:N_out) , N_in , N_out ) 359 360 ENDDO 360 361 ENDIF … … 369 370 DO ji=i1,i2 370 371 IF( tabres_child(ji,jj,jk,jn) .NE. 0. ) THEN 371 ts(ji,jj,jk,jn,Kbb_a) = ts(ji,jj,jk,jn,Kbb_a) & 372 & + atfp * ( tabres_child(ji,jj,jk,jn) & 373 & - ts(ji,jj,jk,jn,Kmm_a) ) * tmask(ji,jj,jk) 372 ts(ji,jj,jk,jn,Kbb_a) = ts(ji,jj,jk,jn,Kbb_a) & 373 & + atfp * ( tabres_child(ji,jj,jk,jn) & 374 & - ts(ji,jj,jk,jn,Kmm_a) & 375 & ) * tmask(ji,jj,jk) 374 376 ENDIF 375 377 ENDDO … … 414 416 !> jc tmp 415 417 tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Kmm_a) / e3t_0(ji,jj,jk) 416 ! 418 ! tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Kmm_a) 417 419 !< jc tmp 418 420 END DO … … 438 440 ztno = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 439 441 ts(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) ) & 440 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a)442 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 441 443 ENDIF 442 444 END DO … … 496 498 DO ji=i1,i2 497 499 tabres(ji,jj,jk,1) = zrhoy * e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) * umask(ji,jj,jk) * uu(ji,jj,jk,Kmm_a) & 498 + (umask(ji,jj,jk)-1)*999._wp500 & + (umask(ji,jj,jk)-1._wp)*999._wp 499 501 tabres(ji,jj,jk,2) = zrhoy * umask(ji,jj,jk) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) & 500 + (umask(ji,jj,jk)-1)*999._wp502 & + (umask(ji,jj,jk)-1._wp)*999._wp 501 503 END DO 502 504 END DO … … 513 515 IF( tabres(ji,jj,jk,2) < -900) EXIT 514 516 N_in = N_in + 1 515 tabin(jk) = tabres(ji,jj,jk,1)/tabres(ji,jj,jk,2)517 tabin(jk) = tabres(ji,jj,jk,1)/tabres(ji,jj,jk,2) 516 518 h_in(N_in) = tabres(ji,jj,jk,2)/e2u(ji,jj) 517 519 ENDDO … … 523 525 ENDDO 524 526 IF (N_in * N_out > 0) THEN 525 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))527 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 526 528 IF (h_diff < -1.e-4) THEN 527 529 !Even if bathy at T points match it's possible for the U points to be deeper in the child grid. … … 540 542 ENDDO 541 543 ENDIF 542 CALL reconstructandremap(tabin(1:N_in),h_in(1:N_in),tabres_child(ji,jj,1:N_out),h_out(1:N_out),N_in,N_out) 543 tabres_child(ji,jj,N_out) = tabres_child(ji,jj,N_out) + excess/(e2u(ji,jj)*h_out(N_out)) 544 CALL reconstructandremap( tabin(1:N_in) , h_in(1:N_in), tabres_child(ji,jj,1:N_out), & 545 & h_out(1:N_out), N_in , N_out ) 546 tabres_child(ji,jj,N_out) = tabres_child(ji,jj,N_out) + excess/( e2u(ji,jj)*h_out(N_out) ) 544 547 ENDIF 545 548 ENDDO … … 550 553 DO ji=i1,i2 551 554 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 552 uu(ji,jj,jk,Kbb_a) = uu(ji,jj,jk,Kbb_a)&553 & + atfp * ( tabres_child(ji,jj,jk) - uu(ji,jj,jk,Kmm_a) ) * umask(ji,jj,jk)555 uu(ji,jj,jk,Kbb_a) = uu(ji,jj,jk,Kbb_a) & 556 & + atfp * ( tabres_child(ji,jj,jk) - uu(ji,jj,jk,Kmm_a) ) * umask(ji,jj,jk) 554 557 ENDIF 555 558 ! … … 579 582 zrhoy = Agrif_Rhoy() 580 583 DO jk = k1, k2 581 tabres(i1:i2,j1:j2,jk,1) = zrhoy * e2u(i1:i2,j1:j2) * e3u(i1:i2,j1:j2,jk,Kmm_a) * uu(i1:i2,j1:j2,jk,Kmm_a) 584 tabres(i1:i2,j1:j2,jk,1) = zrhoy * e2u(i1:i2,j1:j2) * e3u(i1:i2,j1:j2,jk,Kmm_a) & 585 & * uu(i1:i2,j1:j2,jk,Kmm_a) 582 586 END DO 583 587 ELSE … … 591 595 zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 592 596 zunu = tabres(ji,jj,jk,1) 593 uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno ) )&594 &* umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a)597 uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno ) ) & 598 & * umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a) 595 599 ENDIF 596 600 ! … … 682 686 DO jj=j1,j2 683 687 DO ji=i1,i2 684 tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) * vmask(ji,jj,jk) * vv(ji,jj,jk,Kmm_a) & 685 + (vmask(ji,jj,jk)-1)*999._wp 688 tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) & 689 & * vmask(ji,jj,jk) * vv(ji,jj,jk,Kmm_a) & 690 & + (vmask(ji,jj,jk)-1)*999._wp 686 691 tabres(ji,jj,jk,2) = vmask(ji,jj,jk) * zrhox * e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) & 687 692 + (vmask(ji,jj,jk)-1)*999._wp … … 708 713 ENDDO 709 714 IF (N_in * N_out > 0) THEN 710 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))715 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 711 716 IF (h_diff < -1.e-4) then 712 717 !Even if bathy at T points match it's possible for the U points to be deeper in the child grid. … … 714 719 excess = 0._wp 715 720 DO jk=N_in,1,-1 716 thick = MIN( -1*h_diff, h_in(jk))721 thick = MIN( -1._wp*h_diff, h_in(jk) ) 717 722 excess = excess + tabin(jk)*thick*e2u(ji,jj) 718 tabin(jk) = tabin(jk)*(1. - thick/h_in(jk))723 tabin(jk) = tabin(jk)*(1._wp - thick/h_in(jk)) 719 724 h_diff = h_diff + thick 720 725 IF ( h_diff == 0) THEN … … 725 730 ENDDO 726 731 ENDIF 727 CALL reconstructandremap(tabin(1:N_in),h_in(1:N_in),tabres_child(ji,jj,1:N_out),h_out(1:N_out),N_in,N_out) 732 CALL reconstructandremap( tabin(1:N_in) , h_in(1:N_in), tabres_child(ji,jj,1:N_out), & 733 & h_out(1:N_out), N_in , N_out ) 728 734 tabres_child(ji,jj,N_out) = tabres_child(ji,jj,N_out) + excess/(e1v(ji,jj)*h_out(N_out)) 729 735 ENDIF … … 736 742 ! 737 743 IF( .NOT.(lk_agrif_fstep.AND.(neuler==0)) ) THEN ! Add asselin part 738 vv(ji,jj,jk,Kbb_a) = vv(ji,jj,jk,Kbb_a) & 739 & + atfp * ( tabres_child(ji,jj,jk) - vv(ji,jj,jk,Kmm_a) ) * vmask(ji,jj,jk) 744 vv(ji,jj,jk,Kbb_a) = vv(ji,jj,jk,Kbb_a) & 745 & + atfp * ( tabres_child(ji,jj,jk) - vv(ji,jj,jk,Kmm_a) ) & 746 & * vmask(ji,jj,jk) 740 747 ENDIF 741 748 ! … … 781 788 zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 782 789 zvnu = tabres(ji,jj,jk,1) 783 vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) &784 &* vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a)790 vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) & 791 & * vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a) 785 792 ENDIF 786 793 ! … … 883 890 ! Update barotropic velocities: 884 891 IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 885 IF ( .NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN! Add asselin part892 IF ( .NOT.( lk_agrif_fstep .AND. (neuler==0) ) ) THEN ! Add asselin part 886 893 zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a) 887 894 uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1) … … 948 955 ! 949 956 ! Update barotropic velocities: 950 IF ( .NOT.ln_dynspg_ts .OR. ( ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN951 IF ( .NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN! Add asselin part957 IF ( .NOT.ln_dynspg_ts .OR. ( ln_dynspg_ts .AND. ( .NOT.ln_bt_fw ) ) ) THEN 958 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) THEN ! Add asselin part 952 959 zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a) 953 vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr *vmask(ji,jj,1)960 vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1) 954 961 END IF 955 962 ENDIF … … 1000 1007 DO jj=j1,j2 1001 1008 DO ji=i1,i2 1002 ssh(ji,jj,Kbb_a) = ssh(ji,jj,Kbb_a) & 1003 & + atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) * tmask(ji,jj,1) 1009 ssh(ji,jj,Kbb_a) = ssh(ji,jj,Kbb_a) & 1010 & + atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) & 1011 & * tmask(ji,jj,1) 1004 1012 END DO 1005 1013 END DO … … 1095 1103 zcor = rdt * r1_e1e2t(i1 ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj)) 1096 1104 ssh(i1 ,jj,Kmm_a) = ssh(i1 ,jj,Kmm_a) + zcor 1097 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i1 ,jj,Kbb_a) = ssh(i1 ,jj,Kbb_a) + atfp * zcor 1105 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) & 1106 & ssh(i1 ,jj,Kbb_a) = ssh(i1 ,jj,Kbb_a) + atfp * zcor 1098 1107 END DO 1099 1108 ENDIF … … 1102 1111 zcor = - rdt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 1103 1112 ssh(i2+1,jj,Kmm_a) = ssh(i2+1,jj,Kmm_a) + zcor 1104 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor 1113 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) & 1114 & ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor 1105 1115 END DO 1106 1116 ENDIF … … 1181 1191 IF (southern_side) THEN 1182 1192 DO ji=i1,i2 1183 zcor = rdt * r1_e1e2t(ji,j1 ) * e1v(ji,j1 ) * ( vb2_b(ji,j1)-tabres(ji,j1))1193 zcor = rdt * r1_e1e2t(ji,j1 ) * e1v(ji,j1 ) * ( vb2_b(ji,j1)-tabres(ji,j1) ) 1184 1194 ssh(ji,j1 ,Kmm_a) = ssh(ji,j1 ,Kmm_a) + zcor 1185 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j1 ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor 1195 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) & 1196 & ssh(ji,j1 ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor 1186 1197 END DO 1187 1198 ENDIF 1188 1199 IF (northern_side) THEN 1189 1200 DO ji=i1,i2 1190 zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2 ) * ( vb2_b(ji,j2)-tabres(ji,j2))1201 zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2 ) * ( vb2_b(ji,j2)-tabres(ji,j2) ) 1191 1202 ssh(ji,j2+1,Kmm_a) = ssh(ji,j2+1,Kmm_a) + zcor 1192 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor 1203 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) & 1204 & ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor 1193 1205 END DO 1194 1206 ENDIF … … 1223 1235 END DO 1224 1236 END DO 1225 tabres(:,:,:,1) =tabres(:,:,:,1)*Agrif_Rhox()*Agrif_Rhoy()1226 tabres(:,:,:,2) =tabres(:,:,:,2)*Agrif_Rhox()1227 tabres(:,:,:,3) =tabres(:,:,:,3)*Agrif_Rhoy()1237 tabres(:,:,:,1) = tabres(:,:,:,1)*Agrif_Rhox()*Agrif_Rhoy() 1238 tabres(:,:,:,2) = tabres(:,:,:,2)*Agrif_Rhox() 1239 tabres(:,:,:,3) = tabres(:,:,:,3)*Agrif_Rhoy() 1228 1240 ELSE 1229 1241 DO jk=k1,k2 … … 1234 1246 print *,'VAL2 = ',ji,jj,jk,tabres(ji,jj,jk,2),e1t(ji,jj)*tmask(ji,jj,jk) 1235 1247 print *,'VAL3 = ',ji,jj,jk,tabres(ji,jj,jk,3),e2t(ji,jj)*tmask(ji,jj,jk) 1236 ztemp = sqrt(tabres(ji,jj,jk,1)/(tabres(ji,jj,jk,2)*tabres(ji,jj,jk,3)))1248 ztemp = SQRT( tabres(ji,jj,jk,1)/(tabres(ji,jj,jk,2)*tabres(ji,jj,jk,3)) ) 1237 1249 print *,'CORR = ',ztemp-1. 1238 1250 print *,'NEW VALS = ',tabres(ji,jj,jk,2)*ztemp,tabres(ji,jj,jk,3)*ztemp, & 1239 1251 tabres(ji,jj,jk,2)*ztemp*tabres(ji,jj,jk,3)*ztemp 1240 e1t(ji,jj) = tabres(ji,jj,jk,2) *ztemp1241 e2t(ji,jj) = tabres(ji,jj,jk,3) *ztemp1252 e1t(ji,jj) = tabres(ji,jj,jk,2) * ztemp 1253 e2t(ji,jj) = tabres(ji,jj,jk,3) * ztemp 1242 1254 END IF 1243 1255 END DO … … 1319 1331 DO jj=j1,j2 1320 1332 DO ji=i1,i2 1321 ptab(ji,jj,jk) = e3t_0(ji,jj,jk) * (1._wp + ssh(ji,jj,Kmm_a) & 1322 & *ssmask(ji,jj)/(ht_0(ji,jj)-1._wp + ssmask(ji,jj))) 1333 ptab(ji,jj,jk) = e3t_0(ji,jj,jk) & 1334 & * ( 1._wp + ssh(ji,jj,Kmm_a) & 1335 & * ssmask(ji,jj) & 1336 & / ( ht_0(ji,jj)-1._wp + ssmask(ji,jj) ) ) 1323 1337 END DO 1324 1338 END DO … … 1339 1353 DO jj=j1,j2 1340 1354 DO ji=i1,i2 1341 e3t(ji,jj,jk,Kbb_a) = e3t(ji,jj,jk,Kbb_a)&1342 &+ atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) )1355 e3t(ji,jj,jk,Kbb_a) = e3t(ji,jj,jk,Kbb_a) & 1356 & + atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) ) 1343 1357 END DO 1344 1358 END DO … … 1353 1367 DO ji = i1,i2 1354 1368 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 1355 e3w(ji,jj,jk,Kbb_a) = e3w_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * tmask(ji,jj,jk) ) *&1356 &( e3t(ji,jj,jk-1,Kbb_a) - e3t_0(ji,jj,jk-1) ) &1357 & + 0.5_wp * tmask(ji,jj,jk) *&1358 &( e3t(ji,jj,jk ,Kbb_a) - e3t_0(ji,jj,jk ) )1359 gdepw(ji,jj,jk,Kbb_a) = gdepw(ji,jj,jk-1,Kbb_a) +e3t(ji,jj,jk-1,Kbb_a)1360 gdept(ji,jj,jk,Kbb_a) = zcoef * ( gdepw(ji,jj,jk ,Kbb_a) + 0.5 * e3w(ji,jj,jk,Kbb_a)) &1361 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kbb_a) + e3w(ji,jj,jk,Kbb_a))1369 e3w(ji,jj,jk,Kbb_a) = e3w_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * tmask(ji,jj,jk) ) & 1370 & * ( e3t(ji,jj,jk-1,Kbb_a) - e3t_0(ji,jj,jk-1) ) & 1371 & + 0.5_wp * tmask(ji,jj,jk) & 1372 & * ( e3t(ji,jj,jk ,Kbb_a) - e3t_0(ji,jj,jk ) ) 1373 gdepw(ji,jj,jk,Kbb_a) = gdepw(ji,jj,jk-1,Kbb_a) + e3t(ji,jj,jk-1,Kbb_a) 1374 gdept(ji,jj,jk,Kbb_a) = zcoef * ( gdepw(ji,jj,jk ,Kbb_a) + 0.5 * e3w(ji,jj,jk ,Kbb_a) ) & 1375 & + (1._wp - zcoef) * ( gdept(ji,jj,jk-1,Kbb_a) + e3w(ji,jj,jk ,Kbb_a) ) 1362 1376 END DO 1363 1377 END DO … … 1379 1393 ! 1380 1394 ! Update vertical scale factor at W-points and depths: 1381 e3w(i1:i2,j1:j2,1,Kmm_a) = e3w_0(i1:i2,j1:j2,1) + e3t(i1:i2,j1:j2,1,Kmm_a) - e3t_0(i1:i2,j1:j2,1)1395 e3w(i1:i2,j1:j2,1,Kmm_a) = e3w_0(i1:i2,j1:j2,1) + e3t(i1:i2,j1:j2,1,Kmm_a) - e3t_0(i1:i2,j1:j2,1) 1382 1396 gdept(i1:i2,j1:j2,1,Kmm_a) = 0.5_wp * e3w(i1:i2,j1:j2,1,Kmm_a) 1383 1397 gdepw(i1:i2,j1:j2,1,Kmm_a) = 0.0_wp 1384 gde3w(i1:i2,j1:j2,1 ) = gdept(i1:i2,j1:j2,1,Kmm_a) - (ht(i1:i2,j1:j2)-ht_0(i1:i2,j1:j2)) ! Last term in the rhs is ssh1398 gde3w(i1:i2,j1:j2,1 ) = gdept(i1:i2,j1:j2,1,Kmm_a) - ( ht(i1:i2,j1:j2) - ht_0(i1:i2,j1:j2) ) ! Last term in the rhs is ssh 1385 1399 ! 1386 1400 DO jk = 2, jpk … … 1388 1402 DO ji = i1,i2 1389 1403 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 1390 e3w(ji,jj,jk,Kmm_a) = e3w_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * tmask(ji,jj,jk) ) * ( e3t(ji,jj,jk-1,Kmm_a) - e3t_0(ji,jj,jk-1) ) & 1391 & + 0.5_wp * tmask(ji,jj,jk) * ( e3t(ji,jj,jk ,Kmm_a) - e3t_0(ji,jj,jk ) ) 1392 gdepw(ji,jj,jk,Kmm_a) = gdepw(ji,jj,jk-1,Kmm_a) + e3t(ji,jj,jk-1,Kmm_a) 1393 gdept(ji,jj,jk,Kmm_a) = zcoef * ( gdepw(ji,jj,jk ,Kmm_a) + 0.5 * e3w(ji,jj,jk,Kmm_a)) & 1394 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kmm_a) + e3w(ji,jj,jk,Kmm_a)) 1395 gde3w(ji,jj,jk) = gdept(ji,jj,jk,Kmm_a) - (ht(ji,jj)-ht_0(ji,jj)) ! Last term in the rhs is ssh 1404 e3w(ji,jj,jk,Kmm_a) = e3w_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * tmask(ji,jj,jk) ) & 1405 & * ( e3t(ji,jj,jk-1,Kmm_a) - e3t_0(ji,jj,jk-1) ) & 1406 & + 0.5_wp * tmask(ji,jj,jk) & 1407 & * ( e3t(ji,jj,jk ,Kmm_a) - e3t_0(ji,jj,jk ) ) 1408 gdepw(ji,jj,jk,Kmm_a) = gdepw(ji,jj,jk-1,Kmm_a) + e3t(ji,jj,jk-1,Kmm_a) 1409 gdept(ji,jj,jk,Kmm_a) = zcoef * ( gdepw(ji,jj,jk ,Kmm_a) + 0.5 * e3w(ji,jj,jk ,Kmm_a) ) & 1410 & + ( 1._wp - zcoef ) * ( gdept(ji,jj,jk-1,Kmm_a) + e3w(ji,jj,jk ,Kmm_a) ) 1411 gde3w(ji,jj,jk ) = gdept(ji,jj,jk ,Kmm_a) - ( ht(ji,jj)-ht_0(ji,jj) ) ! Last term in the rhs is ssh 1396 1412 END DO 1397 1413 END DO … … 1399 1415 ! 1400 1416 IF ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 1401 e3t (i1:i2,j1:j2,1:jpk,Kbb_a) = e3t(i1:i2,j1:j2,1:jpk,Kmm_a)1402 e3w (i1:i2,j1:j2,1:jpk,Kbb_a) = e3w(i1:i2,j1:j2,1:jpk,Kmm_a)1417 e3t(i1:i2,j1:j2,1:jpk,Kbb_a) = e3t(i1:i2,j1:j2,1:jpk,Kmm_a) 1418 e3w(i1:i2,j1:j2,1:jpk,Kbb_a) = e3w(i1:i2,j1:j2,1:jpk,Kmm_a) 1403 1419 gdepw(i1:i2,j1:j2,1:jpk,Kbb_a) = gdepw(i1:i2,j1:j2,1:jpk,Kmm_a) 1404 1420 gdept(i1:i2,j1:j2,1:jpk,Kbb_a) = gdept(i1:i2,j1:j2,1:jpk,Kmm_a) -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_top_interp.F90
r11053 r11463 151 151 ibdy = nlci-nbghostcells 152 152 DO jn = 1, jptra 153 tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 153 tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 154 & + z2 * ptab_child(ibdy ,jmin:jmax,1:jpkm1,jn) 154 155 DO jk = 1, jpkm1 155 156 DO jj = jmin,jmax … … 157 158 tr(ibdy,jj,jk,jn,Krhs_a) = tr(ibdy+1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 158 159 ELSE 159 tr(ibdy,jj,jk,jn,Krhs_a)=(z4*tr(ibdy+1,jj,jk,jn,Krhs_a)+z3*tr(ibdy-1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk) 160 tr(ibdy,jj,jk,jn,Krhs_a) = ( z4 * tr(ibdy+1,jj,jk,jn,Krhs_a) & 161 & + z3 * tr(ibdy-1,jj,jk,jn,Krhs_a) & 162 & ) * tmask(ibdy ,jj,jk) 160 163 IF( uu(ibdy-1,jj,jk,Kmm_a) > 0._wp ) THEN 161 tr(ibdy,jj,jk,jn,Krhs_a)=( z6*tr(ibdy-1,jj,jk,jn,Krhs_a)+z5*tr(ibdy+1,jj,jk,jn,Krhs_a) & 162 + z7*tr(ibdy-2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 163 ENDIF 164 ENDIF 165 END DO 166 END DO 167 ! Restore ghost points: 168 tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy+1,jmin:jmax,1:jpkm1) 164 tr(ibdy,jj,jk,jn,Krhs_a) = ( z6 * tr(ibdy-1,jj,jk,jn,Krhs_a) & 165 & + z5 * tr(ibdy+1,jj,jk,jn,Krhs_a) & 166 & + z7 * tr(ibdy-2,jj,jk,jn,Krhs_a) & 167 & ) * tmask(ibdy ,jj,jk) 168 ENDIF 169 ENDIF 170 END DO 171 END DO 172 ! Restore ghost points: 173 tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 174 & * tmask(ibdy+1,jmin:jmax,1:jpkm1) 169 175 END DO 170 176 ENDIF … … 180 186 jbdy = nlcj-nbghostcells 181 187 DO jn = 1, jptra 182 tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 188 tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 189 & + z2 * ptab_child(imin:imax,jbdy ,1:jpkm1,jn) 183 190 DO jk = 1, jpkm1 184 191 DO ji = imin,imax … … 186 193 tr(ji,jbdy,jk,jn,Krhs_a) = tr(ji,jbdy+1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 187 194 ELSE 188 tr(ji,jbdy,jk,jn,Krhs_a)=(z4*tr(ji,jbdy+1,jk,jn,Krhs_a)+z3*tr(ji,jbdy-1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk) 195 tr(ji,jbdy,jk,jn,Krhs_a) = ( z4 * tr(ji,jbdy+1,jk,jn,Krhs_a) 196 & + z3 * tr(ji,jbdy-1,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 189 197 IF (vv(ji,jbdy-1,jk,Kmm_a) > 0._wp ) THEN 190 tr(ji,jbdy,jk,jn,Krhs_a)=( z6*tr(ji,jbdy-1,jk,jn,Krhs_a)+z5*tr(ji,jbdy+1,jk,jn,Krhs_a) & 191 + z7*tr(ji,jbdy-2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 192 ENDIF 193 ENDIF 194 END DO 195 END DO 196 ! Restore ghost points: 197 tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) * tmask(imin:imax,jbdy+1,1:jpkm1) 198 tr(ji,jbdy,jk,jn,Krhs_a) = ( z6 * tr(ji,jbdy-1,jk,jn,Krhs_a) & 199 & + z5 * tr(ji,jbdy+1,jk,jn,Krhs_a) & 200 & + z7 * tr(ji,jbdy-2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 201 ENDIF 202 ENDIF 203 END DO 204 END DO 205 ! Restore ghost points: 206 tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 207 & * tmask(imin:imax,jbdy+1,1:jpkm1) 198 208 END DO 199 209 ENDIF … … 209 219 ibdy = 1+nbghostcells 210 220 DO jn = 1, jptra 211 tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 221 tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 222 & + z2 * ptab_child(ibdy ,jmin:jmax,1:jpkm1,jn) 212 223 DO jk = 1, jpkm1 213 224 DO jj = jmin,jmax … … 215 226 tr(ibdy,jj,jk,jn,Krhs_a) = tr(ibdy-1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 216 227 ELSE 217 tr(ibdy,jj,jk,jn,Krhs_a)=(z4*tr(ibdy-1,jj,jk,jn,Krhs_a)+z3*tr(ibdy+1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk) 228 tr(ibdy,jj,jk,jn,Krhs_a) = ( z4 * tr(ibdy-1,jj,jk,jn,Krhs_a) & 229 & + z3 * tr(ibdy+1,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 218 230 IF( uu(ibdy,jj,jk,Kmm_a) < 0._wp ) THEN 219 tr(ibdy,jj,jk,jn,Krhs_a)=( z6*tr(ibdy+1,jj,jk,jn,Krhs_a)+z5*tr(ibdy-1,jj,jk,jn,Krhs_a) & 220 + z7*tr(ibdy+2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 221 ENDIF 222 ENDIF 223 END DO 224 END DO 225 ! Restore ghost points: 226 tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy-1,jmin:jmax,1:jpkm1) 231 tr(ibdy,jj,jk,jn,Krhs_a) = ( z6 * tr(ibdy+1,jj,jk,jn,Krhs_a) & 232 & + z5 * tr(ibdy-1,jj,jk,jn,Krhs_a) & 233 & + z7 * tr(ibdy+2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 234 ENDIF 235 ENDIF 236 END DO 237 END DO 238 ! Restore ghost points: 239 tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 240 & * tmask(ibdy-1,jmin:jmax,1:jpkm1) 227 241 END DO 228 242 ENDIF … … 238 252 jbdy=1+nbghostcells 239 253 DO jn = 1, jptra 240 tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 254 tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 255 & + z2 * ptab_child(imin:imax,jbdy ,1:jpkm1,jn) 241 256 DO jk = 1, jpkm1 242 257 DO ji = imin,imax 243 258 IF( vmask(ji,jbdy,jk) == 0._wp ) THEN 244 tr(ji,jbdy,jk,jn,Krhs_a)=tr(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 245 ELSE 246 tr(ji,jbdy,jk,jn,Krhs_a)=(z4*tr(ji,jbdy-1,jk,jn,Krhs_a)+z3*tr(ji,jbdy+1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk) 259 tr(ji,jbdy,jk,jn,Krhs_a) = tr(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 260 ELSE 261 tr(ji,jbdy,jk,jn,Krhs_a) = ( z4 * tr(ji,jbdy-1,jk,jn,Krhs_a) & 262 & + z3 * tr(ji,jbdy+1,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 247 263 IF( vv(ji,jbdy,jk,Kmm_a) < 0._wp ) THEN 248 tr(ji,jbdy,jk,jn,Krhs_a)=( z6*tr(ji,jbdy+1,jk,jn,Krhs_a)+z5*tr(ji,jbdy-1,jk,jn,Krhs_a) & 249 + z7*tr(ji,jbdy+2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 250 ENDIF 251 ENDIF 252 END DO 253 END DO 254 ! Restore ghost points: 255 tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) * tmask(imin:imax,jbdy-1,1:jpkm1) 264 tr(ji,jbdy,jk,jn,Krhs_a) = ( z6 * tr(ji,jbdy+1,jk,jn,Krhs_a) & 265 & + z5 * tr(ji,jbdy-1,jk,jn,Krhs_a) & 266 & + z7 * tr(ji,jbdy+2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 267 ENDIF 268 ENDIF 269 END DO 270 END DO 271 ! Restore ghost points: 272 tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 273 & * tmask(imin:imax,jbdy-1,1:jpkm1) 256 274 END DO 257 275 ENDIF -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_top_sponge.F90
r10989 r11463 108 108 N_in = N_in + 1 109 109 tabin(jk,:) = tabres(ji,jj,jk,n1:n2-1) 110 h_in(N_in) = tabres(ji,jj,jk,n2)110 h_in(N_in) = tabres(ji,jj,jk,n2) 111 111 END DO 112 112 N_out = 0 113 113 DO jk=1,jpk ! jpk of child grid 114 114 IF (tmask(ji,jj,jk) == 0) EXIT 115 N_out = N_out + 1115 N_out = N_out + 1 116 116 h_out(jk) = e3t(ji,jj,jk,Kmm) !Child grid scale factors. Could multiply by e1e2t here instead of division above 117 117 ENDDO 118 118 IF (N_in > 0) THEN 119 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in))119 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 120 120 tabres(ji,jj,k2,:) = tabres(ji,jj,k2-1,:) !what is this line for????? 121 121 DO jn=1,jptra … … 133 133 trbdiff(ji,jj,jk,1:jptra) = tr(ji,jj,jk,1:jptra,Kbb) - tabres_child(ji,jj,jk,1:jptra) 134 134 # else 135 trbdiff(ji,jj,jk,1:jptra) = tr(ji,jj,jk,1:jptra,Kbb) - tabres(ji,jj,jk,1:jptra)135 trbdiff(ji,jj,jk,1:jptra) = tr(ji,jj,jk,1:jptra,Kbb) - tabres(ji,jj,jk,1:jptra) 136 136 # endif 137 137 ENDDO … … 153 153 DO ji = i1+1,i2-1 154 154 IF( .NOT. tabspongedone_trn(ji,jj) ) THEN 155 tr(ji,jj,jk,jn,Krhs) = tr(ji,jj,jk,jn,Krhs) + ( ztu(ji,jj) - ztu(ji-1,jj ) &156 & + ztv(ji,jj) - ztv(ji ,jj-1) )&157 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm)155 tr(ji,jj,jk,jn,Krhs) = tr(ji,jj,jk,jn,Krhs) + ( ztu(ji,jj) - ztu(ji-1,jj ) & 156 & + ztv(ji,jj) - ztv(ji ,jj-1) ) & 157 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 158 158 ENDIF 159 159 END DO -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_top_update.F90
r10989 r11463 84 84 DO jj=j1,j2 85 85 DO ji=i1,i2 86 tabres(ji,jj,jk,jn) = ( tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Kmm) ) &87 86 tabres(ji,jj,jk,jn) = ( tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Kmm) ) & 87 & * tmask(ji,jj,jk) + (tmask(ji,jj,jk)-1)*999._wp 88 88 END DO 89 89 END DO … … 93 93 DO jj=j1,j2 94 94 DO ji=i1,i2 95 tabres(ji,jj,jk,n2) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm) &96 95 tabres(ji,jj,jk,n2) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm) & 96 & + (tmask(ji,jj,jk)-1)*999._wp 97 97 END DO 98 98 END DO … … 138 138 DO ji=i1,i2 139 139 IF( tabres_child(ji,jj,jk,jn) .NE. 0. ) THEN 140 tr(ji,jj,jk,jn,Kbb) = ts(ji,jj,jk,jn,Kbb) & 141 & + atfp * ( tabres_child(ji,jj,jk,jn) & 142 & - tr(ji,jj,jk,jn,Kmm) ) * tmask(ji,jj,jk) 140 tr(ji,jj,jk,jn,Kbb) = ts(ji,jj,jk,jn,Kbb) & 141 & + atfp * ( tabres_child(ji,jj,jk,jn) & 142 & - tr(ji,jj,jk,jn,Kmm) & 143 & ) * tmask(ji,jj,jk) 143 144 ENDIF 144 145 ENDDO … … 183 184 DO ji=i1,i2 184 185 !> jc tmp 185 tabres(ji,jj,jk,jn) = tr(ji,jj,jk,jn,Kmm) 186 ! tabres(ji,jj,jk,jn) = tr(ji,jj,jk,jn,Kmm)* e3t(ji,jj,jk,Kmm)186 tabres(ji,jj,jk,jn) = tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Kmm) / e3t_0(ji,jj,jk) 187 ! tabres(ji,jj,jk,jn) = tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Kmm) 187 188 !< jc tmp 188 189 END DO … … 194 195 DO jn = n1,n2 195 196 tabres(i1:i2,j1:j2,k1:k2,jn) = tabres(i1:i2,j1:j2,k1:k2,jn) * e3t_0(i1:i2,j1:j2,k1:k2) & 196 &* tmask(i1:i2,j1:j2,k1:k2)197 & * tmask(i1:i2,j1:j2,k1:k2) 197 198 ENDDO 198 199 !< jc tmp … … 204 205 DO ji=i1,i2 205 206 IF( tabres(ji,jj,jk,jn) .NE. 0. ) THEN 206 ztb = tr(ji,jj,jk,jn,Kbb) * e3t(ji,jj,jk,Kbb) ! fse3t_b prior update should be used207 ztb = tr(ji,jj,jk,jn,Kbb) * e3t(ji,jj,jk,Kbb) ! fse3t_b prior update should be used 207 208 ztnu = tabres(ji,jj,jk,jn) 208 ztno = tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Krhs)209 tr(ji,jj,jk,jn,Kbb) = ( ztb + atfp * ( ztnu - ztno) ) &210 & * tmask(ji,jj,jk) /e3t(ji,jj,jk,Kbb)209 ztno = tr(ji,jj,jk,jn,Kmm) * e3t(ji,jj,jk,Krhs) 210 tr(ji,jj,jk,jn,Kbb) = ( ztb + atfp * ( ztnu - ztno) ) * tmask(ji,jj,jk) & 211 & / e3t(ji,jj,jk,Kbb) 211 212 ENDIF 212 213 ENDDO -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/OCE/step.F90
r11426 r11463 307 307 ! AGRIF 308 308 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 309 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 309 310 CALL Agrif_Integrate_ChildGrids( stp ) ! allows to finish all the Child Grids before updating 310 311 311 312 IF( Agrif_NbStepint() == 0 ) THEN 312 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices313 313 CALL Agrif_update_all( ) ! Update all components 314 314 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.