Changeset 13286 for NEMO/trunk/src/OCE/SBC/cpl_oasis3.F90
- Timestamp:
- 2020-07-09T17:48:29+02:00 (5 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 2 2 ^/utils/build/makenemo@HEAD makenemo 3 3 ^/utils/build/mk@HEAD mk 4 ^/utils/tools /@HEADtools4 ^/utils/tools@HEAD tools 5 5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM … … 8 8 9 9 # SETTE 10 ^/utils/CI/ sette@12931sette10 ^/utils/CI/r12931_sette_ticket2366@HEAD sette
-
- Property svn:externals
-
NEMO/trunk/src/OCE/SBC/cpl_oasis3.F90
r12527 r13286 69 69 INTEGER, PUBLIC, PARAMETER :: nmaxcat=5 ! Maximum number of coupling fields 70 70 INTEGER, PUBLIC, PARAMETER :: nmaxcpl=5 ! Maximum number of coupling fields 71 LOGICAL, PARAMETER :: ltmp_wapatch = .TRUE. ! patch to restore wraparound rows in cpl_send, cpl_rcv, cpl_define72 INTEGER :: nldi_save, nlei_save73 INTEGER :: nldj_save, nlej_save74 71 75 72 TYPE, PUBLIC :: FLD_CPL !: Type for coupling field information … … 148 145 !!-------------------------------------------------------------------- 149 146 150 ! patch to restore wraparound rows in cpl_send, cpl_rcv, cpl_define151 IF( ltmp_wapatch ) THEN152 nldi_save = nldi ; nlei_save = nlei153 nldj_save = nldj ; nlej_save = nlej154 IF( nimpp == 1 ) nldi = 1155 IF( nimpp + jpi - 1 == jpiglo ) nlei = jpi156 IF( njmpp == 1 ) nldj = 1157 IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj158 ENDIF159 147 IF(lwp) WRITE(numout,*) 160 148 IF(lwp) WRITE(numout,*) 'cpl_define : initialization in coupled ocean/atmosphere case' … … 182 170 ! 183 171 ishape(1) = 1 184 ishape(2) = nlei-nldi+1172 ishape(2) = Ni_0 185 173 ishape(3) = 1 186 ishape(4) = nlej-nldj+1174 ishape(4) = Nj_0 187 175 ! 188 176 ! ... Allocate memory for data exchange 189 177 ! 190 ALLOCATE(exfld( nlei-nldi+1, nlej-nldj+1), stat = nerror)178 ALLOCATE(exfld(Ni_0, Nj_0), stat = nerror) 191 179 IF( nerror > 0 ) THEN 192 180 CALL oasis_abort ( ncomp_id, 'cpl_define', 'Failure in allocating exfld') ; RETURN … … 198 186 199 187 paral(1) = 2 ! box partitioning 200 paral(2) = jpiglo * ( nldj-1+njmpp-1) + (nldi-1+nimpp-1) ! NEMO lower left corner global offset201 paral(3) = nlei-nldi+1! local extent in i202 paral(4) = nlej-nldj+1! local extent in j188 paral(2) = jpiglo * (Njs0-1+njmpp-1) + (Nis0-1+nimpp-1) ! NEMO lower left corner global offset 189 paral(3) = Ni_0 ! local extent in i 190 paral(4) = Nj_0 ! local extent in j 203 191 paral(5) = jpiglo ! global extent in x 204 192 … … 206 194 WRITE(numout,*) ' multiexchg: paral (1:5)', paral 207 195 WRITE(numout,*) ' multiexchg: jpi, jpj =', jpi, jpj 208 WRITE(numout,*) ' multiexchg: nldi, nlei, nimpp =', nldi, nlei, nimpp209 WRITE(numout,*) ' multiexchg: nldj, nlej, njmpp =', nldj, nlej, njmpp196 WRITE(numout,*) ' multiexchg: Nis0, Nie0, nimpp =', Nis0, Nie0, nimpp 197 WRITE(numout,*) ' multiexchg: Njs0, Nje0, njmpp =', Njs0, Nje0, njmpp 210 198 ENDIF 211 199 … … 316 304 #endif 317 305 ! 318 IF( ltmp_wapatch ) THEN319 nldi = nldi_save ; nlei = nlei_save320 nldj = nldj_save ; nlej = nlej_save321 ENDIF322 306 END SUBROUTINE cpl_define 323 307 … … 337 321 INTEGER :: jc,jm ! local loop index 338 322 !!-------------------------------------------------------------------- 339 ! patch to restore wraparound rows in cpl_send, cpl_rcv, cpl_define340 IF( ltmp_wapatch ) THEN341 nldi_save = nldi ; nlei_save = nlei342 nldj_save = nldj ; nlej_save = nlej343 IF( nimpp == 1 ) nldi = 1344 IF( nimpp + jpi - 1 == jpiglo ) nlei = jpi345 IF( njmpp == 1 ) nldj = 1346 IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj347 ENDIF348 323 ! 349 324 ! snd data to OASIS3 … … 353 328 354 329 IF( ssnd(kid)%nid(jc,jm) /= -1 ) THEN 355 CALL oasis_put ( ssnd(kid)%nid(jc,jm), kstep, pdata( nldi:nlei, nldj:nlej,jc), kinfo )330 CALL oasis_put ( ssnd(kid)%nid(jc,jm), kstep, pdata(Nis0:Nie0, Njs0:Nje0,jc), kinfo ) 356 331 357 332 IF ( sn_cfctl%l_oasout ) THEN … … 363 338 WRITE(numout,*) 'oasis_put: kstep ', kstep 364 339 WRITE(numout,*) 'oasis_put: info ', kinfo 365 WRITE(numout,*) ' - Minimum value is ', MINVAL(pdata( nldi:nlei,nldj:nlej,jc))366 WRITE(numout,*) ' - Maximum value is ', MAXVAL(pdata( nldi:nlei,nldj:nlej,jc))367 WRITE(numout,*) ' - Sum value is ', SUM(pdata( nldi:nlei,nldj:nlej,jc))340 WRITE(numout,*) ' - Minimum value is ', MINVAL(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 341 WRITE(numout,*) ' - Maximum value is ', MAXVAL(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 342 WRITE(numout,*) ' - Sum value is ', SUM(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 368 343 WRITE(numout,*) '****************' 369 344 ENDIF … … 374 349 ENDDO 375 350 ENDDO 376 IF( ltmp_wapatch ) THEN377 nldi = nldi_save ; nlei = nlei_save378 nldj = nldj_save ; nlej = nlej_save379 ENDIF380 351 ! 381 352 END SUBROUTINE cpl_snd … … 396 367 !! 397 368 INTEGER :: jc,jm ! local loop index 398 LOGICAL :: llaction, ll fisrt369 LOGICAL :: llaction, ll_1st 399 370 !!-------------------------------------------------------------------- 400 ! patch to restore wraparound rows in cpl_send, cpl_rcv, cpl_define401 IF( ltmp_wapatch ) THEN402 nldi_save = nldi ; nlei_save = nlei403 nldj_save = nldj ; nlej_save = nlej404 ENDIF405 371 ! 406 372 ! receive local data from OASIS3 on every process … … 409 375 ! 410 376 DO jc = 1, srcv(kid)%nct 411 IF( ltmp_wapatch ) THEN 412 IF( nimpp == 1 ) nldi = 1 413 IF( nimpp + jpi - 1 == jpiglo ) nlei = jpi 414 IF( njmpp == 1 ) nldj = 1 415 IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj 416 ENDIF 417 llfisrt = .TRUE. 377 ll_1st = .TRUE. 418 378 419 379 DO jm = 1, srcv(kid)%ncplmodel … … 431 391 432 392 kinfo = OASIS_Rcv 433 IF( ll fisrt ) THEN434 pdata( nldi:nlei,nldj:nlej,jc) = exfld(:,:) * pmask(nldi:nlei,nldj:nlej,jm)435 ll fisrt = .FALSE.393 IF( ll_1st ) THEN 394 pdata(Nis0:Nie0,Njs0:Nje0,jc) = exfld(:,:) * pmask(Nis0:Nie0,Njs0:Nje0,jm) 395 ll_1st = .FALSE. 436 396 ELSE 437 pdata(nldi:nlei,nldj:nlej,jc) = pdata(nldi:nlei,nldj:nlej,jc) + exfld(:,:) * pmask(nldi:nlei,nldj:nlej,jm) 397 pdata(Nis0:Nie0,Njs0:Nje0,jc) = pdata(Nis0:Nie0,Njs0:Nje0,jc) & 398 & + exfld(:,:) * pmask(Nis0:Nie0,Njs0:Nje0,jm) 438 399 ENDIF 439 400 … … 444 405 WRITE(numout,*) 'oasis_get: kstep', kstep 445 406 WRITE(numout,*) 'oasis_get: info ', kinfo 446 WRITE(numout,*) ' - Minimum value is ', MINVAL(pdata( nldi:nlei,nldj:nlej,jc))447 WRITE(numout,*) ' - Maximum value is ', MAXVAL(pdata( nldi:nlei,nldj:nlej,jc))448 WRITE(numout,*) ' - Sum value is ', SUM(pdata( nldi:nlei,nldj:nlej,jc))407 WRITE(numout,*) ' - Minimum value is ', MINVAL(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 408 WRITE(numout,*) ' - Maximum value is ', MAXVAL(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 409 WRITE(numout,*) ' - Sum value is ', SUM(pdata(Nis0:Nie0,Njs0:Nje0,jc)) 449 410 WRITE(numout,*) '****************' 450 411 ENDIF … … 456 417 ENDDO 457 418 458 IF( ltmp_wapatch ) THEN459 nldi = nldi_save ; nlei = nlei_save460 nldj = nldj_save ; nlej = nlej_save461 ENDIF462 419 !--- Fill the overlap areas and extra hallows (mpp) 463 420 !--- check periodicity conditions (all cases) 464 IF( . not. llfisrt ) THEN421 IF( .NOT. ll_1st ) THEN 465 422 CALL lbc_lnk( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn ) 466 423 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.