Changeset 4954
- Timestamp:
- 2014-12-02T12:13:53+01:00 (9 years ago)
- Location:
- branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90
r4789 r4954 21 21 LOGICAL , PUBLIC :: ln_spc_dyn = .FALSE. !: 22 22 INTEGER , PUBLIC :: nn_cln_update = 3 !: update frequency 23 INTEGER , PUBLIC, PARAMETER :: nn_sponge_len = 2 !: Sponge width (in number of parent grid points) 23 24 REAL(wp), PUBLIC :: rn_sponge_tra = 2800. !: sponge coeff. for tracers 24 25 REAL(wp), PUBLIC :: rn_sponge_dyn = 2800. !: sponge coeff. for dynamics … … 42 43 LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_u 43 44 LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_v 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: spe1ur , spe2vr , spbtr2 !: ??? 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: spe1ur2, spe2vr2, spbtr3 !: ??? 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fsaht_spu, fsaht_spv !: sponge diffusivities 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fsahm_spt, fsahm_spf !: sponge viscosities 47 46 48 ! Barotropic arrays used to store open boundary data during 47 49 ! time-splitting loop: … … 79 81 ierr(:) = 0 80 82 ! 81 ALLOCATE( spe1ur (jpi,jpj), spe2vr (jpi,jpj), & 82 & spbtr2 (jpi,jpj), spe1ur2(jpi,jpj), & 83 & spe2vr2(jpi,jpj), spbtr3(jpi,jpj), & 83 ALLOCATE( fsaht_spu(jpi,jpj), fsaht_spv(jpi,jpj), & 84 & fsahm_spt(jpi,jpj), fsahm_spf(jpi,jpj), & 84 85 & tabspongedone_tsn(jpi,jpj), & 85 86 # if defined key_top -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90
r4862 r4954 9 9 USE agrif_oce 10 10 USE wrk_nemo 11 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 11 12 12 13 IMPLICIT NONE … … 94 95 CALL wrk_alloc( jpi, jpj, ztabramp ) 95 96 96 ispongearea = 2 + 2* Agrif_irhox()97 ispongearea = 2 + nn_sponge_len * Agrif_irhox() 97 98 ilci = nlci - ispongearea 98 99 ilcj = nlcj - ispongearea 99 100 z1spongearea = 1._wp / REAL( ispongearea - 2 ) 100 spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 101 102 ztabramp(:,:) = 0. 101 102 ztabramp(:,:) = 0._wp 103 103 104 104 IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN … … 149 149 ! Tracers 150 150 IF( .NOT. spongedoneT ) THEN 151 spe1ur(:,:) = 0. 152 spe2vr(:,:) = 0. 153 154 IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 155 spe1ur(2:ispongearea-1,: ) = visc_tra & 156 & * 0.5 * ( ztabramp(2:ispongearea-1,: ) & 157 & + ztabramp(3:ispongearea ,: ) ) & 158 & * e2u(2:ispongearea-1,:) / e1u(2:ispongearea-1,:) 159 160 spe2vr(2:ispongearea ,1:jpjm1 ) = visc_tra & 161 & * 0.5 * ( ztabramp(2:ispongearea ,1:jpjm1) & 162 & + ztabramp(2:ispongearea,2 :jpj ) ) & 163 & * e1v(2:ispongearea,1:jpjm1) / e2v(2:ispongearea,1:jpjm1) 164 ENDIF 165 166 IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 167 spe1ur(ilci+1:nlci-2,: ) = visc_tra & 168 & * 0.5 * ( ztabramp(ilci+1:nlci-2,: ) & 169 & + ztabramp(ilci+2:nlci-1,: ) ) & 170 & * e2u(ilci+1:nlci-2,:) / e1u(ilci+1:nlci-2,:) 171 172 spe2vr(ilci+1:nlci-1,1:jpjm1 ) = visc_tra & 173 & * 0.5 * ( ztabramp(ilci+1:nlci-1,1:jpjm1) & 174 & + ztabramp(ilci+1:nlci-1,2:jpj ) ) & 175 & * e1v(ilci+1:nlci-1,1:jpjm1) / e2v(ilci+1:nlci-1,1:jpjm1) 176 ENDIF 177 178 IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 179 spe1ur(1:jpim1,2:ispongearea ) = visc_tra & 180 & * 0.5 * ( ztabramp(1:jpim1,2:ispongearea ) & 181 & + ztabramp(2:jpi ,2:ispongearea ) ) & 182 & * e2u(1:jpim1,2:ispongearea) / e1u(1:jpim1,2:ispongearea) 183 184 spe2vr(: ,2:ispongearea-1) = visc_tra & 185 & * 0.5 * ( ztabramp(: ,2:ispongearea-1) & 186 & + ztabramp(: ,3:ispongearea ) ) & 187 & * e1v(:,2:ispongearea-1) / e2v(:,2:ispongearea-1) 188 ENDIF 189 190 IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 191 spe1ur(1:jpim1,ilcj+1:nlcj-1) = visc_tra & 192 & * 0.5 * ( ztabramp(1:jpim1,ilcj+1:nlcj-1) & 193 & + ztabramp(2:jpi ,ilcj+1:nlcj-1) ) & 194 & * e2u(1:jpim1,ilcj+1:nlcj-1) / e1u(1:jpim1,ilcj+1:nlcj-1) 195 196 spe2vr(: ,ilcj+1:nlcj-2) = visc_tra & 197 & * 0.5 * ( ztabramp(: ,ilcj+1:nlcj-2) & 198 & + ztabramp(: ,ilcj+2:nlcj-1) ) & 199 & * e1v(:,ilcj+1:nlcj-2) / e2v(:,ilcj+1:nlcj-2) 200 ENDIF 151 fsaht_spu(:,:) = 0._wp 152 fsaht_spv(:,:) = 0._wp 153 DO jj = 2, jpjm1 154 DO ji = 2, jpim1 ! vector opt. 155 fsaht_spu(ji,jj) = 0.5_wp * visc_tra * (ztabramp(ji,jj) + ztabramp(ji+1,jj )) 156 fsaht_spv(ji,jj) = 0.5_wp * visc_tra * (ztabramp(ji,jj) + ztabramp(ji ,jj+1)) 157 END DO 158 END DO 159 160 CALL lbc_lnk( fsaht_spu, 'U', 1. ) ! Lateral boundary conditions 161 CALL lbc_lnk( fsaht_spv, 'V', 1. ) 201 162 spongedoneT = .TRUE. 202 163 ENDIF … … 204 165 ! Dynamics 205 166 IF( .NOT. spongedoneU ) THEN 206 spe1ur2(:,:) = 0. 207 spe2vr2(:,:) = 0. 208 209 IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 210 spe1ur2(2:ispongearea-1,: ) = visc_dyn & 211 & * 0.5 * ( ztabramp(2:ispongearea-1,: ) & 212 & + ztabramp(3:ispongearea ,: ) ) 213 spe2vr2(2:ispongearea ,1:jpjm1) = visc_dyn & 214 & * 0.5 * ( ztabramp(2:ispongearea ,1:jpjm1) & 215 & + ztabramp(2:ispongearea ,2:jpj ) ) 216 ENDIF 217 218 IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 219 spe1ur2(ilci+1:nlci-2 ,: ) = visc_dyn & 220 & * 0.5 * ( ztabramp(ilci+1:nlci-2, : ) & 221 & + ztabramp(ilci+2:nlci-1, : ) ) 222 spe2vr2(ilci+1:nlci-1 ,1:jpjm1) = visc_dyn & 223 & * 0.5 * ( ztabramp(ilci+1:nlci-1,1:jpjm1 ) & 224 & + ztabramp(ilci+1:nlci-1,2:jpj ) ) 225 ENDIF 226 227 IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 228 spe1ur2(1:jpim1,2:ispongearea ) = visc_dyn & 229 & * 0.5 * ( ztabramp(1:jpim1,2:ispongearea ) & 230 & + ztabramp(2:jpi ,2:ispongearea ) ) 231 spe2vr2(: ,2:ispongearea-1) = visc_dyn & 232 & * 0.5 * ( ztabramp(: ,2:ispongearea-1) & 233 & + ztabramp(: ,3:ispongearea ) ) 234 ENDIF 235 236 IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 237 spe1ur2(1:jpim1,ilcj+1:nlcj-1 ) = visc_dyn & 238 & * 0.5 * ( ztabramp(1:jpim1,ilcj+1:nlcj-1 ) & 239 & + ztabramp(2:jpi ,ilcj+1:nlcj-1 ) ) 240 spe2vr2(: ,ilcj+1:nlcj-2 ) = visc_dyn & 241 & * 0.5 * ( ztabramp(: ,ilcj+1:nlcj-2 ) & 242 & + ztabramp(: ,ilcj+2:nlcj-1 ) ) 243 ENDIF 167 fsahm_spt(:,:) = 0._wp 168 fsahm_spf(:,:) = 0._wp 169 DO jj = 2, jpjm1 170 DO ji = 2, jpim1 ! vector opt. 171 fsahm_spt(ji,jj) = visc_dyn * ztabramp(ji,jj) 172 fsahm_spf(ji,jj) = 0.25_wp * visc_dyn * ( ztabramp(ji,jj) + ztabramp(ji ,jj+1) & 173 & +ztabramp(ji,jj) + ztabramp(ji+1,jj ) ) 174 END DO 175 END DO 176 177 CALL lbc_lnk( fsahm_spt, 'T', 1. ) ! Lateral boundary conditions 178 CALL lbc_lnk( fsahm_spf, 'F', 1. ) 244 179 spongedoneU = .TRUE. 245 spbtr3(:,:) = 1. / ( e1f(:,:) * e2f(:,:) )246 180 ENDIF 247 181 ! … … 249 183 ! 250 184 #endif 185 251 186 END SUBROUTINE Agrif_Sponge 252 187 … … 261 196 262 197 INTEGER :: ji, jj, jk, jn ! dummy loop indices 263 198 INTEGER :: iku, ikv 264 199 REAL(wp) :: ztsa, zabe1, zabe2, zbtr 265 REAL(wp), DIMENSION(i1:i2,j1:j2 ) :: ztu, ztv200 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: ztu, ztv 266 201 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) ::tsbdiff 267 202 ! 268 269 270 203 IF (before) THEN 271 204 tabres(i1:i2,j1:j2,k1:k2,n1:n2) = tsn(i1:i2,j1:j2,k1:k2,n1:n2) 272 ELSE 273 274 tsbdiff(:,:,:,:) = tsb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:) 275 DO jn = 1, jpts 205 ELSE 206 207 tsbdiff(:,:,:,:) = tsb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:) 208 DO jn = 1, jpts 276 209 DO jk = 1, jpkm1 277 278 210 DO jj = j1,j2-1 279 211 DO ji = i1,i2-1 280 zabe1 = umask(ji,jj,jk) * spe1ur(ji,jj) * fse3u(ji,jj,jk)281 zabe2 = vmask(ji,jj,jk) * spe2vr(ji,jj) * fse3v(ji,jj,jk)282 ztu(ji,jj ) = zabe1 * ( tsbdiff(ji+1,jj ,jk,jn) - tsbdiff(ji,jj,jk,jn) )283 ztv(ji,jj ) = zabe2 * ( tsbdiff(ji ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) )212 zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,jk) 213 zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,jk) 214 ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj ,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 215 ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 284 216 ENDDO 285 217 ENDDO 286 218 219 IF( ln_zps ) THEN ! set gradient at partial step level 220 DO jj = j1,j2-1 221 DO ji = i1,i2-1 222 ! last level 223 iku = mbku(ji,jj) 224 ikv = mbkv(ji,jj) 225 IF( iku == jk ) THEN 226 ztu(ji,jj,jk) = 0._wp 227 ENDIF 228 IF( ikv == jk ) THEN 229 ztv(ji,jj,jk) = 0._wp 230 ENDIF 231 END DO 232 END DO 233 ENDIF 234 ENDDO 235 236 DO jk = 1, jpkm1 287 237 DO jj = j1+1,j2-1 288 238 DO ji = i1+1,i2-1 289 239 290 240 IF (.NOT. tabspongedone_tsn(ji,jj)) THEN 291 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)241 zbtr = r1_e12t(ji,jj) / fse3t_n(ji,jj,jk) 292 242 ! horizontal diffusive trends 293 ztsa = zbtr * ( ztu(ji,jj ) - ztu(ji-1,jj ) + ztv(ji,jj) - ztv(ji ,jj-1) )243 ztsa = zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji ,jj-1,jk) ) 294 244 ! add it to the general tracer trends 295 245 tsa(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) + ztsa … … 327 277 328 278 IF (before) THEN 329 330 279 tabres = un(i1:i2,j1:j2,:) 331 332 280 ELSE 333 281 334 282 ubdiff(i1:i2,j1:j2,:) = (ub(i1:i2,j1:j2,:) - tabres(:,:,:))*umask(i1:i2,j1:j2,:) 335 336 DO jk=1,jpkm1337 ubdiff(i1:i2,j1:j2,jk) = ubdiff(i1:i2,j1:j2,jk) * spe1ur2(i1:i2,j1:j2)338 ENDDO339 283 340 284 DO jk = 1, jpkm1 ! Horizontal slab … … 346 290 DO jj = j1,j2 347 291 DO ji = i1+1,i2 ! vector opt. 348 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)349 hdivdiff(ji,jj,jk) = ( e2u(ji,jj)*fse3u(ji,jj,jk) * ubdiff(ji,jj,jk) - e2u(ji-1,jj)* fse3u(ji-1,jj ,jk)&350 * ubdiff(ji-1,jj,jk) ) * zbtr292 zbtr = r1_e12t(ji,jj) / fse3t_n(ji,jj,jk) * fsahm_spt(ji,jj) 293 hdivdiff(ji,jj,jk) = ( e2u(ji ,jj)*fse3u_n(ji ,jj,jk) * ubdiff(ji ,jj,jk) & 294 & -e2u(ji-1,jj)*fse3u_n(ji-1,jj,jk) * ubdiff(ji-1,jj,jk) ) * zbtr 351 295 END DO 352 296 END DO … … 354 298 DO jj = j1,j2-1 355 299 DO ji = i1,i2 ! vector opt. 356 zbtr = spbtr3(ji,jj) * fse3f(ji,jj,jk) 357 rotdiff(ji,jj,jk) = (- e1u(ji ,jj+1) * ubdiff(ji ,jj+1,jk) + e1u(ji,jj) * ubdiff(ji,jj,jk) ) & 358 * fmask(ji,jj,jk) * zbtr 300 zbtr = r1_e12f(ji,jj) * fse3f_n(ji,jj,jk) * fsahm_spf(ji,jj) 301 rotdiff(ji,jj,jk) = (-e1u(ji,jj+1) * ubdiff(ji,jj+1,jk) & 302 +e1u(ji,jj ) * ubdiff(ji,jj ,jk) & 303 & ) * fmask(ji,jj,jk) * zbtr 359 304 END DO 360 305 END DO … … 373 318 ze1v = hdivdiff(ji,jj,jk) 374 319 ! horizontal diffusive trends 375 zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u (ji,jj,jk) ) &320 zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u_n(ji,jj,jk) ) & 376 321 + ( hdivdiff(ji+1,jj,jk) - ze1v ) / e1u(ji,jj) 377 322 … … 399 344 400 345 ! horizontal diffusive trends 401 zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v (ji,jj,jk) ) &346 zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v_n(ji,jj,jk) ) & 402 347 + ( hdivdiff(ji,jj+1,jk) - ze1v ) / e2v(ji,jj) 403 348 … … 443 388 vbdiff(i1:i2,j1:j2,:) = (vb(i1:i2,j1:j2,:) - tabres(:,:,:))*vmask(i1:i2,j1:j2,:) 444 389 445 DO jk=1,jpkm1446 vbdiff(i1:i2,j1:j2,jk) = vbdiff(i1:i2,j1:j2,jk) * spe2vr2(i1:i2,j1:j2)447 ENDDO448 449 390 DO jk = 1, jpkm1 ! Horizontal slab 450 391 ! ! =============== … … 455 396 DO jj = j1+1,j2 456 397 DO ji = i1,i2 ! vector opt. 457 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)458 hdivdiff(ji,jj,jk) = ( e1v(ji,jj) * fse3v(ji,jj,jk) * vbdiff(ji,jj,jk) - e1v(ji ,jj-1)&459 * fse3v(ji ,jj-1,jk) * vbdiff(ji,jj-1,jk) ) * zbtr398 zbtr = r1_e12t(ji,jj) / fse3t_n(ji,jj,jk) * fsahm_spt(ji,jj) 399 hdivdiff(ji,jj,jk) = ( e1v(ji,jj ) * fse3v(ji,jj ,jk) * vbdiff(ji,jj ,jk) & 400 & -e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * vbdiff(ji,jj-1,jk) ) * zbtr 460 401 END DO 461 402 END DO 462 403 DO jj = j1,j2 463 404 DO ji = i1,i2-1 ! vector opt. 464 zbtr = spbtr3(ji,jj) * fse3f(ji,jj,jk) 465 rotdiff(ji,jj,jk) = (e2v(ji+1,jj ) * vbdiff(ji+1,jj ,jk) - e2v(ji,jj) * vbdiff(ji,jj,jk)) & 466 * fmask(ji,jj,jk) * zbtr 405 zbtr = r1_e12f(ji,jj) * fse3f_n(ji,jj,jk) * fsahm_spf(ji,jj) 406 rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) & 407 & -e2v(ji ,jj) * vbdiff(ji ,jj,jk) & 408 & ) * fmask(ji,jj,jk) * zbtr 467 409 END DO 468 410 END DO … … 482 424 ze1v = hdivdiff(ji,jj,jk) 483 425 ! horizontal diffusive trends 484 zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u (ji,jj,jk) ) + ( hdivdiff(ji+1,jj,jk) - ze1v) &426 zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u_n(ji,jj,jk) ) + ( hdivdiff(ji+1,jj,jk) - ze1v) & 485 427 / e1u(ji,jj) 486 428 … … 504 446 ! horizontal diffusive trends 505 447 506 zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v (ji,jj,jk) ) + ( hdivdiff(ji,jj+1,jk) - ze1v) &448 zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v_n(ji,jj,jk) ) + ( hdivdiff(ji,jj+1,jk) - ze1v) & 507 449 / e2v(ji,jj) 508 450 -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90
r4793 r4954 74 74 DO jj = j1,j2-1 75 75 DO ji = i1,i2-1 76 zabe1 = umask(ji,jj,jk) * spe1ur(ji,jj) * fse3u(ji,jj,jk)77 zabe2 = vmask(ji,jj,jk) * spe2vr(ji,jj) * fse3v(ji,jj,jk)76 zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,jk) 77 zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,jk) 78 78 ztu(ji,jj) = zabe1 * ( trbdiff(ji+1,jj ,jk,jn) - trbdiff(ji,jj,jk,jn) ) 79 79 ztv(ji,jj) = zabe2 * ( trbdiff(ji ,jj+1,jk,jn) - trbdiff(ji,jj,jk,jn) ) … … 85 85 86 86 IF (.NOT. tabspongedone_trn(ji,jj)) THEN 87 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)87 zbtr = r1_e12t(ji,jj) / fse3t(ji,jj,jk) 88 88 ! horizontal diffusive trends 89 89 ztra = zbtr * ( ztu(ji,jj) - ztu(ji-1,jj ) + ztv(ji,jj) - ztv(ji ,jj-1) ) -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90
r4793 r4954 1 1 #define TWO_WAY 2 #undef DECAL_FEEDBACK 2 3 3 4 MODULE agrif_top_update -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r4874 r4954 303 303 USE par_oce ! ONLY : jpts 304 304 USE oce 305 USE agrif_oce 305 306 IMPLICIT NONE 306 307 !!---------------------------------------------------------------------- … … 373 374 CALL Agrif_Set_bc(vn_interp_id,(/0,1/)) 374 375 375 CALL Agrif_Set_bc(tsn_sponge_id,(/-3*Agrif_irhox(),0/)) 376 CALL Agrif_Set_bc(un_sponge_id,(/-2*Agrif_irhox()-1,0/)) 377 CALL Agrif_Set_bc(vn_sponge_id,(/-2*Agrif_irhox()-1,0/)) 376 ! CALL Agrif_Set_bc(tsn_sponge_id,(/-3*Agrif_irhox(),0/)) 377 ! CALL Agrif_Set_bc(un_sponge_id,(/-2*Agrif_irhox()-1,0/)) 378 ! CALL Agrif_Set_bc(vn_sponge_id,(/-2*Agrif_irhox()-1,0/)) 379 CALL Agrif_Set_bc(tsn_sponge_id,(/-nn_sponge_len*Agrif_irhox(),0/)) 380 CALL Agrif_Set_bc(un_sponge_id ,(/-nn_sponge_len*Agrif_irhox(),0/)) 381 CALL Agrif_Set_bc(vn_sponge_id ,(/-nn_sponge_len*Agrif_irhox(),0/)) 378 382 379 383 CALL Agrif_Set_bc(sshn_id,(/0,0/)) … … 414 418 ! High order updates 415 419 ! CALL Agrif_Set_Updatetype(tsn_id, update = Agrif_Update_Full_Weighting) 416 ! CALL Agrif_Set_Updatetype(un_update_id,update1 = Agrif_Update_Average, update2 = 417 ! CALL Agrif_Set_Updatetype(vn_update_id,update1 = Agrif_Update_Full_Weighting, update2 = 420 ! CALL Agrif_Set_Updatetype(un_update_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Full_Weighting) 421 ! CALL Agrif_Set_Updatetype(vn_update_id,update1 = Agrif_Update_Full_Weighting, update2 = Agrif_Update_Average) 418 422 ! 419 ! CALL Agrif_Set_Updatetype(ub2b_update_id,update1 = Agrif_Update_Average, update2 = 420 ! CALL Agrif_Set_Updatetype(vb2b_update_id,update1 = Agrif_Update_Full_Weighting, update2 = 423 ! CALL Agrif_Set_Updatetype(ub2b_update_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Full_Weighting) 424 ! CALL Agrif_Set_Updatetype(vb2b_update_id,update1 = Agrif_Update_Full_Weighting, update2 = Agrif_Update_Average) 421 425 ! CALL Agrif_Set_Updatetype(sshn_id, update = Agrif_Update_Full_Weighting) 422 426 … … 636 640 !!---------------------------------------------------------------------- 637 641 USE agrif_util 642 USE agrif_oce 638 643 USE dom_oce 639 644 USE trc … … 654 659 !----------------------------- 655 660 CALL Agrif_Set_bc(trn_id,(/0,1/)) 656 CALL Agrif_Set_bc(trn_sponge_id,(/-3*Agrif_irhox(),0/)) 661 ! CALL Agrif_Set_bc(trn_sponge_id,(/-3*Agrif_irhox(),0/)) 662 CALL Agrif_Set_bc(trn_sponge_id,(/-nn_sponge_len*Agrif_irhox(),0/)) 657 663 658 664 ! 5. Update type … … 692 698 ! 693 699 INTEGER :: ios ! Local integer output status for namelist read 700 INTEGER :: iminspon 694 701 NAMELIST/namagrif/ nn_cln_update, rn_sponge_tra, rn_sponge_dyn, ln_spc_dyn, ln_chk_bathy, & 695 702 & ln_agrif_tke … … 724 731 visc_dyn = rn_sponge_dyn 725 732 ! 733 ! Check sponge length: 734 iminspon = MIN(FLOOR(REAL(jpiglo-4)/REAL(2*Agrif_irhox())), FLOOR(REAL(jpjglo-4)/REAL(2*Agrif_irhox())) ) 735 IF (lk_mpp) iminspon = MIN(iminspon,FLOOR(REAL(jpi-2)/REAL(Agrif_irhox())), FLOOR(REAL(jpj-2)/REAL(Agrif_irhox())) ) 736 IF (nn_sponge_len > iminspon) CALL ctl_stop('agrif sponge length is too large') 737 ! 726 738 IF( agrif_oce_alloc() > 0 ) CALL ctl_warn('agrif agrif_oce_alloc: allocation of arrays failed') 727 739 # if defined key_lim2 -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r4757 r4954 443 443 ENDIF 444 444 #endif 445 ! !* Fill boundary data arrays withAGRIF446 ! ! ------------------------------------ -445 ! !* Fill boundary data arrays for AGRIF 446 ! ! ------------------------------------ 447 447 #if defined key_agrif 448 448 IF( .NOT.Agrif_Root() ) CALL agrif_dta_ts( kt ) … … 879 879 #if defined key_agrif 880 880 ! Save time integrated fluxes during child grid integration 881 ! (used to update coarse grid transports) 882 ! Useless with 2nd order momentum schemes 881 ! (used to update coarse grid transports at next time step) 883 882 ! 884 883 IF ( (.NOT.Agrif_Root()).AND.(ln_bt_fw) ) THEN -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r4486 r4954 34 34 USE iom 35 35 #if defined key_agrif 36 USE agrif_opa_update37 36 USE agrif_opa_interp 38 37 #endif … … 295 294 ENDIF 296 295 ! 297 ! Update velocity at AGRIF zoom boundaries298 #if defined key_agrif299 IF ( .NOT.Agrif_Root() ) CALL Agrif_Update_Dyn( kt )300 #endif301 !302 296 IF(ln_ctl) CALL prt_ctl( tab2d_1=sshb, clinfo1=' sshb - : ', mask1=tmask, ovlap=1 ) 303 297 ! -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r4785 r4954 41 41 USE traqsr ! penetrative solar radiation (needed for nksr) 42 42 #if defined key_agrif 43 USE agrif_opa_update44 43 USE agrif_opa_interp 45 44 #endif … … 141 140 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 142 141 ENDIF 143 ENDIF 144 ! 145 #if defined key_agrif 146 ! Update tracer at AGRIF zoom boundaries 147 IF( .NOT.Agrif_Root() ) CALL Agrif_Update_Tra( kt ) ! children only 148 #endif 142 ENDIF 149 143 ! 150 144 ! trends computation -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/step.F90
r4785 r4954 299 299 IF( lk_vvl ) CALL dom_vvl_sf_swp( kstp ) ! swap of vertical scale factors 300 300 301 #if defined key_agrif 302 ! AGRIF update 303 IF (.NOT.Agrif_Root()) THEN 304 CALL Agrif_Update_Tra( kstp )! Update active tracers 305 CALL Agrif_Update_Dyn( kstp )! Update momentum 306 ENDIF 307 #endif 308 ! 301 309 IF( ln_diahsb ) CALL dia_hsb( kstp ) ! - ML - global conservation diagnostics 302 310 IF( lk_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r4328 r4954 114 114 #if defined key_agrif 115 115 USE agrif_opa_sponge ! Momemtum and tracers sponges 116 USE agrif_opa_update ! Update (2-way nesting) 116 117 #endif 117 118 #if defined key_top
Note: See TracChangeset
for help on using the changeset viewer.