Changeset 13065 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce_sponge.F90
- Timestamp:
- 2020-06-08T18:11:57+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce_sponge.F90
r12807 r13065 106 106 REAL(wp) :: z1_ispongearea, z1_jspongearea 107 107 REAL(wp), DIMENSION(jpi,jpj) :: ztabramp 108 #if defined key_vertical 109 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampu 110 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampv 111 #endif 108 112 REAL(wp), DIMENSION(jpjmax) :: zmskwest, zmskeast 109 113 REAL(wp), DIMENSION(jpimax) :: zmsknorth, zmsksouth … … 128 132 ! --- West --- ! 129 133 ztabramp(:,:) = 0._wp 130 ind1 = 1+nbghostcells134 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 131 135 DO ji = mi0(ind1), mi1(ind1) 132 136 ztabramp(ji,:) = ssumask(ji,:) 133 137 END DO 134 138 ! 135 zmskwest(:) = 0._wp136 139 zmskwest(1:jpj) = MAXVAL(ztabramp(:,:), dim=1) 140 zmskwest(jpj+1:jpjmax) = 0._wp 137 141 138 142 ! --- East --- ! 139 143 ztabramp(:,:) = 0._wp 140 ind1 = jpiglo - nbghostcells - 1144 ind1 = jpiglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 141 145 DO ji = mi0(ind1), mi1(ind1) 142 146 ztabramp(ji,:) = ssumask(ji,:) 143 147 END DO 144 148 ! 145 zmskeast(:) = 0._wp146 149 zmskeast(1:jpj) = MAXVAL(ztabramp(:,:), dim=1) 150 zmskeast(jpj+1:jpjmax) = 0._wp 147 151 148 152 ! --- South --- ! 149 153 ztabramp(:,:) = 0._wp 150 ind1 = 1+nbghostcells154 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 151 155 DO jj = mj0(ind1), mj1(ind1) 152 156 ztabramp(:,jj) = ssvmask(:,jj) 153 157 END DO 154 158 ! 155 zmsksouth(:) = 0._wp156 159 zmsksouth(1:jpi) = MAXVAL(ztabramp(:,:), dim=2) 160 zmsksouth(jpi+1:jpimax) = 0._wp 157 161 158 162 ! --- North --- ! 159 163 ztabramp(:,:) = 0._wp 160 ind1 = jpjglo - nbghostcells - 1164 ind1 = jpjglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 161 165 DO jj = mj0(ind1), mj1(ind1) 162 166 ztabramp(:,jj) = ssvmask(:,jj) 163 167 END DO 164 168 ! 165 zmsknorth(:) = 0._wp166 169 zmsknorth(1:jpi) = MAXVAL(ztabramp(:,:), dim=2) 170 zmsknorth(jpi+1:jpimax) = 0._wp 171 167 172 ! JC: SPONGE MASKING TO BE SORTED OUT: 168 173 zmskwest(:) = 1._wp 169 174 zmskeast(:) = 1._wp 175 zmsksouth(:) = 1._wp 170 176 zmsknorth(:) = 1._wp 171 zmsksouth(:) = 1._wp172 177 #if defined key_mpp_mpi 173 178 ! CALL mpp_max( 'AGRIF_sponge', zmskwest(:) , jpjmax ) … … 192 197 193 198 ! --- West --- ! 194 ind1 = 1+nbghostcells195 ind2 = 1+nbghostcells + ispongearea199 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 200 ind2 = nn_hls + 1 + nbghostcells + ispongearea 196 201 DO ji = mi0(ind1), mi1(ind2) 197 202 DO jj = 1, jpj … … 202 207 ! ghost cells: 203 208 ind1 = 1 204 ind2 = n bghostcells + 1209 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 205 210 DO ji = mi0(ind1), mi1(ind2) 206 211 DO jj = 1, jpj … … 210 215 211 216 ! --- East --- ! 212 ind1 = jpiglo - nbghostcells- ispongearea213 ind2 = jpiglo - nbghostcells217 ind1 = jpiglo - ( nn_hls + nbghostcells ) - ispongearea 218 ind2 = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 214 219 DO ji = mi0(ind1), mi1(ind2) 215 220 DO jj = 1, jpj … … 219 224 220 225 ! ghost cells: 221 ind1 = jpiglo - nbghostcells226 ind1 = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 222 227 ind2 = jpiglo 223 228 DO ji = mi0(ind1), mi1(ind2) … … 228 233 229 234 ! --- South --- ! 230 ind1 = 1+nbghostcells231 ind2 = 1+nbghostcells + jspongearea235 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 236 ind2 = nn_hls + 1 + nbghostcells + jspongearea 232 237 DO jj = mj0(ind1), mj1(ind2) 233 238 DO ji = 1, jpi … … 238 243 ! ghost cells: 239 244 ind1 = 1 240 ind2 = n bghostcells + 1245 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 241 246 DO jj = mj0(ind1), mj1(ind2) 242 247 DO ji = 1, jpi … … 246 251 247 252 ! --- North --- ! 248 ind1 = jpjglo - nbghostcells- jspongearea249 ind2 = jpjglo - nbghostcells253 ind1 = jpjglo - ( nn_hls + nbghostcells ) - jspongearea 254 ind2 = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 250 255 DO jj = mj0(ind1), mj1(ind2) 251 256 DO ji = 1, jpi … … 255 260 256 261 ! ghost cells: 257 ind1 = jpjglo - nbghostcells262 ind1 = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 258 263 ind2 = jpjglo 259 264 DO jj = mj0(ind1), mj1(ind2) … … 273 278 fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji ,jj+1) ) * ssvmask(ji,jj) 274 279 END_2D 275 CALL lbc_lnk( 'agrif_Sponge', fspu, 'U', 1. ) ! Lateral boundary conditions276 CALL lbc_lnk( 'agrif_Sponge', fspv, 'V', 1. )277 278 spongedoneT = .TRUE.279 280 ENDIF 280 281 … … 289 290 & * ssvmask(ji,jj) * ssvmask(ji,jj+1) 290 291 END_2D 291 CALL lbc_lnk( 'agrif_Sponge', fspt, 'T', 1. ) ! Lateral boundary conditions 292 CALL lbc_lnk( 'agrif_Sponge', fspf, 'F', 1. ) 293 292 ENDIF 293 294 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 295 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1., fspv, 'V', 1., fspt, 'T', 1., fspf, 'F', 1. ) 296 spongedoneT = .TRUE. 297 spongedoneU = .TRUE. 298 ENDIF 299 IF( .NOT. spongedoneT ) THEN 300 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1., fspv, 'V', 1. ) 301 spongedoneT = .TRUE. 302 ENDIF 303 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 304 CALL lbc_lnk_multi( 'agrif_Sponge', fspt, 'T', 1., fspf, 'F', 1. ) 294 305 spongedoneU = .TRUE. 295 306 ENDIF … … 312 323 END_2D 313 324 ! 314 ztabramp(:,:) = REAL( mbkt_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'T', 1. ) 315 mbkt_parent(:,:) = NINT( ztabramp(:,:) ) 316 ztabramp(:,:) = REAL( mbku_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'U', 1. ) 317 mbku_parent(:,:) = NINT( ztabramp(:,:) ) 318 ztabramp(:,:) = REAL( mbkv_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'V', 1. ) 319 mbkv_parent(:,:) = NINT( ztabramp(:,:) ) 325 ztabramp (:,:) = REAL( mbkt_parent (:,:), wp ) 326 ztabrampu(:,:) = REAL( mbku_parentu(:,:), wp ) 327 ztabrampv(:,:) = REAL( mbkv_parentv(:,:), wp ) 328 CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1., ztabrampu, 'U', 1., ztabrampv, 'V', 1. ) 329 mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 330 mbku_parent(:,:) = NINT( ztabrampu(:,:) ) 331 mbkv_parent(:,:) = NINT( ztabrampv(:,:) ) 320 332 #endif 321 333 ! … … 505 517 506 518 INTEGER :: ji,jj,jk,jmax 507 519 INTEGER :: ind1 508 520 ! sponge parameters 509 521 REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax … … 646 658 647 659 jmax = j2-1 648 IF ((nbondj == 1).OR.(nbondj == 2)) jmax = MIN(jmax,jpj-nbghostcells-2) ! North 660 ind1 = jpjglo - ( nn_hls + nbghostcells + 2 ) ! North 661 DO jj = mj0(ind1), mj1(ind1) 662 jmax = MIN(jmax,jj) 663 END DO 649 664 650 665 DO jj = j1+1, jmax … … 684 699 ! 685 700 INTEGER :: ji, jj, jk, imax 701 INTEGER :: ind1 702 ! sponge parameters 686 703 REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 687 704 REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: vbdiff … … 802 819 803 820 imax = i2 - 1 804 IF ((nbondi == 1).OR.(nbondi == 2)) imax = MIN(imax,jpi-nbghostcells-2) ! East 805 821 ind1 = jpiglo - ( nn_hls + nbghostcells + 2 ) ! East 822 DO ji = mi0(ind1), mi1(ind1) 823 imax = MIN(imax,ji) 824 END DO 825 806 826 DO jj = j1+1, j2 807 827 DO ji = i1+1, imax ! vector opt.
Note: See TracChangeset
for help on using the changeset viewer.