- Timestamp:
- 2015-10-06T18:28:13+02:00 (9 years ago)
- Location:
- branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/LBC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/LBC/lbclnk.F90
r5619 r5779 32 32 33 33 INTERFACE lbc_sum 34 MODULE PROCEDURE mpp_ sum_3d, mpp_sum_2d34 MODULE PROCEDURE mpp_lnk_sum_3d, mpp_lnk_sum_2d 35 35 END INTERFACE 36 36 -
branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r5619 r5779 72 72 PUBLIC mpp_lnk_3d, mpp_lnk_3d_gather, mpp_lnk_2d, mpp_lnk_2d_e 73 73 PUBLIC mpp_lnk_2d_9 74 PUBLIC mpp_ sum_3d, mpp_sum_2d74 PUBLIC mpp_lnk_sum_3d, mpp_lnk_sum_2d 75 75 PUBLIC mppscatter, mppgather 76 76 PUBLIC mpp_ini_ice, mpp_ini_znl … … 1395 1395 END SUBROUTINE mpp_lnk_2d_e 1396 1396 1397 SUBROUTINE mpp_ sum_3d( ptab, cd_type, psgn, cd_mpp, pval )1398 !!---------------------------------------------------------------------- 1399 !! *** routine mpp_ sum_3d ***1400 !! 1401 !! ** Purpose : Message passing manadgement 1397 SUBROUTINE mpp_lnk_sum_3d( ptab, cd_type, psgn, cd_mpp, pval ) 1398 !!---------------------------------------------------------------------- 1399 !! *** routine mpp_lnk_sum_3d *** 1400 !! 1401 !! ** Purpose : Message passing manadgement (sum in the overlap region) 1402 1402 !! 1403 1403 !! ** Method : Use mppsend and mpprecv function for passing mask … … 1445 1445 ! 1. standard boundary treatment 1446 1446 ! ------------------------------ 1447 IF( PRESENT( cd_mpp ) ) THEN ! only fill added line/raw with existing values1448 !1449 ! WARNING ptab is defined only between nld and nle1450 ! DO jk = 1, jpk1451 ! DO jj = nlcj+1, jpj ! added line(s) (inner only)1452 ! ptab(nldi :nlei , jj ,jk) = ptab(nldi:nlei, nlej,jk)1453 ! ptab(1 :nldi-1, jj ,jk) = ptab(nldi , nlej,jk)1454 ! ptab(nlei+1:nlci , jj ,jk) = ptab( nlei, nlej,jk)1455 ! END DO1456 ! DO ji = nlci+1, jpi ! added column(s) (full)1457 ! ptab(ji ,nldj :nlej ,jk) = ptab( nlei,nldj:nlej,jk)1458 ! ptab(ji ,1 :nldj-1,jk) = ptab( nlei,nldj ,jk)1459 ! ptab(ji ,nlej+1:jpj ,jk) = ptab( nlei, nlej,jk)1460 ! END DO1461 ! END DO1462 !1463 ELSE ! standard close or cyclic treatment1464 !1465 ! ! East-West boundaries1466 ! !* Cyclic east-west1467 IF( nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) ) THEN1468 ! ptab( 1 ,:,:) = ptab(jpim1,:,:)1469 ! ptab(jpi,:,:) = ptab( 2 ,:,:)1470 ELSE !* closed1471 ! IF( .NOT. cd_type == 'F' ) ptab( 1 :jpreci,:,:) = zland ! south except F-point1472 ! ptab(nlci-jpreci+1:jpi ,:,:) = zland ! north1473 ENDIF1474 ! ! North-South boundaries (always closed)1475 ! IF( .NOT. cd_type == 'F' ) ptab(:, 1 :jprecj,:) = zland ! south except F-point1476 ! ptab(:,nlcj-jprecj+1:jpj ,:) = zland ! north1477 !1478 ENDIF1479 1480 1447 ! 2. East and west directions exchange 1481 1448 ! ------------------------------------ 1482 1449 ! we play with the neigbours AND the row number because of the periodicity 1483 1450 ! 1484 SELECT CASE ( nbondi ) ! Read Dirichletlateral conditions1451 SELECT CASE ( nbondi ) ! Read lateral conditions 1485 1452 CASE ( -1, 0, 1 ) ! all exept 2 (i.e. close case) 1486 1453 iihom = nlci-jpreci … … 1512 1479 END SELECT 1513 1480 ! 1514 ! ! Write Dirichletlateral conditions1481 ! ! Write lateral conditions 1515 1482 iihom = nlci-nreci 1516 1483 ! … … 1536 1503 ! always closed : we play only with the neigbours 1537 1504 ! 1538 IF( nbondj /= 2 ) THEN ! Read Dirichletlateral conditions1505 IF( nbondj /= 2 ) THEN ! Read lateral conditions 1539 1506 ijhom = nlcj-jprecj 1540 1507 DO jl = 1, jprecj … … 1565 1532 END SELECT 1566 1533 ! 1567 ! ! Write Dirichletlateral conditions1534 ! ! Write lateral conditions 1568 1535 ijhom = nlcj-nrecj 1569 1536 ! … … 1599 1566 DEALLOCATE( zt3ns, zt3sn, zt3ew, zt3we ) 1600 1567 ! 1601 END SUBROUTINE mpp_ sum_3d1602 1603 SUBROUTINE mpp_ sum_2d( pt2d, cd_type, psgn, cd_mpp, pval )1604 !!---------------------------------------------------------------------- 1605 !! *** routine mpp_ sum_2d ***1606 !! 1607 !! ** Purpose : Message passing manadgement for 2d array 1568 END SUBROUTINE mpp_lnk_sum_3d 1569 1570 SUBROUTINE mpp_lnk_sum_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 1571 !!---------------------------------------------------------------------- 1572 !! *** routine mpp_lnk_sum_2d *** 1573 !! 1574 !! ** Purpose : Message passing manadgement for 2d array (sum in the overlap region) 1608 1575 !! 1609 1576 !! ** Method : Use mppsend and mpprecv function for passing mask … … 1649 1616 ! 1. standard boundary treatment 1650 1617 ! ------------------------------ 1651 !1652 ! IF( PRESENT( cd_mpp ) ) THEN ! only fill added line/raw with existing values1653 ! !1654 ! ! WARNING pt2d is defined only between nld and nle1655 ! DO jj = nlcj+1, jpj ! added line(s) (inner only)1656 ! pt2d(nldi :nlei , jj ) = pt2d(nldi:nlei, nlej)1657 ! pt2d(1 :nldi-1, jj ) = pt2d(nldi , nlej)1658 ! pt2d(nlei+1:nlci , jj ) = pt2d( nlei, nlej)1659 ! END DO1660 ! DO ji = nlci+1, jpi ! added column(s) (full)1661 ! pt2d(ji ,nldj :nlej ) = pt2d( nlei,nldj:nlej)1662 ! pt2d(ji ,1 :nldj-1) = pt2d( nlei,nldj )1663 ! pt2d(ji ,nlej+1:jpj ) = pt2d( nlei, nlej)1664 ! END DO1665 ! !1666 ! ELSE ! standard close or cyclic treatment1667 ! !1668 ! ! ! East-West boundaries1669 ! IF( nbondi == 2 .AND. & ! Cyclic east-west1670 ! & (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) ) THEN1671 ! pt2d( 1 ,:) = pt2d(jpim1,:) ! west1672 ! pt2d(jpi,:) = pt2d( 2 ,:) ! east1673 ! ELSE ! closed1674 ! IF( .NOT. cd_type == 'F' ) pt2d( 1 :jpreci,:) = zland ! south except F-point1675 ! pt2d(nlci-jpreci+1:jpi ,:) = zland ! north1676 ! ENDIF1677 ! ! ! North-South boundaries (always closed)1678 ! IF( .NOT. cd_type == 'F' ) pt2d(:, 1 :jprecj) = zland !south except F-point1679 ! pt2d(:,nlcj-jprecj+1:jpj ) = zland ! north1680 ! !1681 ! ENDIF1682 1683 1618 ! 2. East and west directions exchange 1684 1619 ! ------------------------------------ 1685 1620 ! we play with the neigbours AND the row number because of the periodicity 1686 1621 ! 1687 SELECT CASE ( nbondi ) ! Read Dirichletlateral conditions1622 SELECT CASE ( nbondi ) ! Read lateral conditions 1688 1623 CASE ( -1, 0, 1 ) ! all exept 2 (i.e. close case) 1689 1624 iihom = nlci - jpreci … … 1715 1650 END SELECT 1716 1651 ! 1717 ! ! Write Dirichletlateral conditions1652 ! ! Write lateral conditions 1718 1653 iihom = nlci-nreci 1719 1654 ! … … 1739 1674 ! always closed : we play only with the neigbours 1740 1675 ! 1741 IF( nbondj /= 2 ) THEN ! Read Dirichletlateral conditions1676 IF( nbondj /= 2 ) THEN ! Read lateral conditions 1742 1677 ijhom = nlcj - jprecj 1743 1678 DO jl = 1, jprecj … … 1768 1703 END SELECT 1769 1704 ! 1770 ! ! Write Dirichletlateral conditions1705 ! ! Write lateral conditions 1771 1706 ijhom = nlcj-nrecj 1772 1707 ! … … 1802 1737 DEALLOCATE( zt2ns, zt2sn, zt2ew, zt2we ) 1803 1738 ! 1804 END SUBROUTINE mpp_ sum_2d1739 END SUBROUTINE mpp_lnk_sum_2d 1805 1740 1806 1741 SUBROUTINE mppsend( ktyp, pmess, kbytes, kdest, md_req )
Note: See TracChangeset
for help on using the changeset viewer.