Changeset 10437
- Timestamp:
- 2018-12-21T11:18:36+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/LBC/lib_mpp.F90
r10428 r10437 153 153 ! Communications summary report 154 154 CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: crname_lbc !: names of lbc_lnk calling routines 155 CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: crname_glb !: names of global comm calling routines 155 CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: crname_glb !: names of global comm calling routines 156 CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: crname_dlg !: names of delayed global comm calling routines 156 157 INTEGER, PUBLIC :: ncom_stp = 0 !: copy of time step # istp 157 158 INTEGER, PUBLIC :: ncom_fsbc = 1 !: copy of sbc time step # nn_fsbc … … 162 163 INTEGER, PUBLIC :: n_sequence_lbc = 0 !: # of communicated arraysvia lbc 163 164 INTEGER, PUBLIC :: n_sequence_glb = 0 !: # of global communications 165 INTEGER, PUBLIC :: n_sequence_dlg = 0 !: # of delayed global communications 164 166 INTEGER, PUBLIC :: numcom = -1 !: logical unit for communicaton report 165 167 LOGICAL, PUBLIC :: l_full_nf_update = .TRUE. !: logical for a full (2lines) update of bc at North fold report … … 603 605 isz = SIZE(y_in) 604 606 605 IF( narea == 1 .AND. numcom == -1 ) CALL mpp_report( cdname, ld_ glb= .TRUE. )607 IF( narea == 1 .AND. numcom == -1 ) CALL mpp_report( cdname, ld_dlg = .TRUE. ) 606 608 607 609 idvar = -1 … … 664 666 isz = SIZE(p_in) 665 667 666 IF( narea == 1 .AND. numcom == -1 ) CALL mpp_report( cdname, ld_ glb= .TRUE. )668 IF( narea == 1 .AND. numcom == -1 ) CALL mpp_report( cdname, ld_dlg = .TRUE. ) 667 669 668 670 idvar = -1 … … 1452 1454 1453 1455 1454 SUBROUTINE mpp_report( cdname, kpk, kpl, kpf, ld_lbc, ld_glb )1456 SUBROUTINE mpp_report( cdname, kpk, kpl, kpf, ld_lbc, ld_glb, ld_dlg ) 1455 1457 !!---------------------------------------------------------------------- 1456 1458 !! *** routine mpp_report *** … … 1461 1463 CHARACTER(len=*), INTENT(in ) :: cdname ! name of the calling subroutine 1462 1464 INTEGER , OPTIONAL, INTENT(in ) :: kpk, kpl, kpf 1463 LOGICAL , OPTIONAL, INTENT(in ) :: ld_lbc, ld_glb 1464 !! 1465 LOGICAL :: ll_lbc, ll_glb 1465 LOGICAL , OPTIONAL, INTENT(in ) :: ld_lbc, ld_glb, ld_dlg 1466 !! 1467 LOGICAL :: ll_lbc, ll_glb, ll_dlg 1466 1468 INTEGER :: ji, jj, jk, jh, jf ! dummy loop indices 1467 1469 !!---------------------------------------------------------------------- … … 1471 1473 ll_glb = .FALSE. 1472 1474 IF( PRESENT(ld_glb) ) ll_glb = ld_glb 1475 ll_dlg = .FALSE. 1476 IF( PRESENT(ld_dlg) ) ll_dlg = ld_dlg 1473 1477 ! 1474 1478 ! find the smallest common frequency: default = frequency product, if multiple, choose the larger of the 2 frequency … … 1491 1495 IF( n_sequence_glb > ncom_rec_max ) CALL ctl_stop( 'STOP', 'lib_mpp, increase ncom_rec_max' ) ! deadlock 1492 1496 crname_glb(n_sequence_glb) = cdname ! keep the name of the calling routine 1497 ENDIF 1498 IF( ll_dlg ) THEN 1499 IF( .NOT. ALLOCATED(crname_dlg) ) ALLOCATE( crname_dlg(ncom_rec_max) ) 1500 n_sequence_dlg = n_sequence_dlg + 1 1501 IF( n_sequence_dlg > ncom_rec_max ) CALL ctl_stop( 'STOP', 'lib_mpp, increase ncom_rec_max' ) ! deadlock 1502 crname_dlg(n_sequence_dlg) = cdname ! keep the name of the calling routine 1493 1503 ENDIF 1494 1504 ELSE IF ( ncom_stp == nit000+2*ncom_freq ) THEN … … 1539 1549 ENDIF 1540 1550 WRITE(numcom,*) ' ' 1551 IF ( n_sequence_dlg > 0 ) THEN 1552 WRITE(numcom,'(A,I4)') ' Delayed global communications : ', n_sequence_dlg 1553 jj = 1 1554 DO ji = 2, n_sequence_dlg 1555 IF( crname_dlg(ji-1) /= crname_dlg(ji) ) THEN 1556 WRITE(numcom,'(A, I4, A, A)') ' - ', jj,' times by subroutine ', TRIM(crname_dlg(ji-1)) 1557 jj = 0 1558 END IF 1559 jj = jj + 1 1560 END DO 1561 WRITE(numcom,'(A, I4, A, A)') ' - ', jj,' times by subroutine ', TRIM(crname_dlg(n_sequence_dlg)) 1562 DEALLOCATE(crname_dlg) 1563 ELSE 1564 WRITE(numcom,*) ' No MPI delayed global communication ' 1565 ENDIF 1566 WRITE(numcom,*) ' ' 1541 1567 WRITE(numcom,*) ' -----------------------------------------------' 1542 1568 WRITE(numcom,*) ' '
Note: See TracChangeset
for help on using the changeset viewer.