Ignore:
Timestamp:
Sep 24, 2025, 10:24:33 AM (2 months ago)
Author:
rkazeroni
Message:

Add reduce_max functionality, similarly to reduce_min

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_transfert_para.f90

    r5477 r5829  
    5050                     reduce_min_r,reduce_min_r1,reduce_min_r2,reduce_min_r3,reduce_min_r4
    5151  END INTERFACE
    52    
     52
     53  INTERFACE reduce_max
     54    MODULE PROCEDURE reduce_max_i,reduce_max_i1,reduce_max_i2,reduce_max_i3,reduce_max_i4, &
     55                     reduce_max_r,reduce_max_r1,reduce_max_r2,reduce_max_r3,reduce_max_r4
     56  END INTERFACE
     57
    5358CONTAINS
    5459
     
    14441449
    14451450
     1451!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1452!! Definition des reduce_max   --> 4D   !!
     1453!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1454
     1455! Les entiers
     1456
     1457  SUBROUTINE reduce_max_i(VarIn, VarOut)
     1458    IMPLICIT NONE
     1459 
     1460    INTEGER,INTENT(IN)  :: VarIn
     1461    INTEGER,INTENT(OUT) :: VarOut
     1462   
     1463    INTEGER             :: Var_tmp
     1464           
     1465    CALL reduce_max_omp(VarIn,Var_tmp)
     1466!$OMP MASTER     
     1467    CALL reduce_max_mpi(Var_tmp,VarOut)
     1468!$OMP END MASTER
     1469 
     1470  END SUBROUTINE reduce_max_i 
     1471
     1472
     1473  SUBROUTINE reduce_max_i1(VarIn, VarOut)
     1474    IMPLICIT NONE
     1475 
     1476    INTEGER,INTENT(IN),DIMENSION(:)  :: VarIn
     1477    INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut
     1478   
     1479    INTEGER,DIMENSION(SIZE(VarIn))   :: Var_tmp
     1480           
     1481    CALL reduce_max_omp(VarIn,Var_tmp)
     1482!$OMP MASTER     
     1483    CALL reduce_max_mpi(Var_tmp,VarOut)
     1484!$OMP END MASTER
     1485 
     1486  END SUBROUTINE reduce_max_i1 
     1487
     1488
     1489  SUBROUTINE reduce_max_i2(VarIn, VarOut)
     1490    IMPLICIT NONE
     1491 
     1492    INTEGER,INTENT(IN),DIMENSION(:,:)  :: VarIn
     1493    INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut
     1494   
     1495    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp
     1496           
     1497    CALL reduce_max_omp(VarIn,Var_tmp)
     1498!$OMP MASTER     
     1499    CALL reduce_max_mpi(Var_tmp,VarOut)
     1500!$OMP END MASTER
     1501 
     1502  END SUBROUTINE reduce_max_i2 
     1503 
     1504
     1505  SUBROUTINE reduce_max_i3(VarIn, VarOut)
     1506    IMPLICIT NONE
     1507 
     1508    INTEGER,INTENT(IN),DIMENSION(:,:,:)  :: VarIn
     1509    INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut
     1510   
     1511    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3))  :: Var_tmp
     1512           
     1513    CALL reduce_max_omp(VarIn,Var_tmp)
     1514!$OMP MASTER     
     1515    CALL reduce_max_mpi(Var_tmp,VarOut)
     1516!$OMP END MASTER
     1517 
     1518  END SUBROUTINE reduce_max_i3 
     1519
     1520
     1521  SUBROUTINE reduce_max_i4(VarIn, VarOut)
     1522    IMPLICIT NONE
     1523 
     1524    INTEGER,INTENT(IN),DIMENSION(:,:,:,:)  :: VarIn
     1525    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut
     1526   
     1527    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4))  :: Var_tmp
     1528           
     1529    CALL reduce_max_omp(VarIn,Var_tmp)
     1530!$OMP MASTER     
     1531    CALL reduce_max_mpi(Var_tmp,VarOut)
     1532!$OMP END MASTER
     1533 
     1534  END SUBROUTINE reduce_max_i4 
     1535
     1536
     1537! Les reels
     1538
     1539  SUBROUTINE reduce_max_r(VarIn, VarOut)
     1540    IMPLICIT NONE
     1541 
     1542    REAL,INTENT(IN)  :: VarIn
     1543    REAL,INTENT(OUT) :: VarOut
     1544   
     1545    REAL             :: Var_tmp
     1546           
     1547    CALL reduce_max_omp(VarIn,Var_tmp)
     1548!$OMP MASTER     
     1549    CALL reduce_max_mpi(Var_tmp,VarOut)
     1550!$OMP END MASTER
     1551 
     1552  END SUBROUTINE reduce_max_r 
     1553
     1554
     1555  SUBROUTINE reduce_max_r1(VarIn, VarOut)
     1556    IMPLICIT NONE
     1557 
     1558    REAL,INTENT(IN),DIMENSION(:)  :: VarIn
     1559    REAL,INTENT(OUT),DIMENSION(:) :: VarOut
     1560   
     1561    REAL,DIMENSION(SIZE(VarIn))   :: Var_tmp
     1562           
     1563    CALL reduce_max_omp(VarIn,Var_tmp)
     1564!$OMP MASTER     
     1565    CALL reduce_max_mpi(Var_tmp,VarOut)
     1566!$OMP END MASTER
     1567 
     1568  END SUBROUTINE reduce_max_r1 
     1569
     1570
     1571  SUBROUTINE reduce_max_r2(VarIn, VarOut)
     1572    IMPLICIT NONE
     1573 
     1574    REAL,INTENT(IN),DIMENSION(:,:)  :: VarIn
     1575    REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut
     1576   
     1577    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp
     1578           
     1579    CALL reduce_max_omp(VarIn,Var_tmp)
     1580!$OMP MASTER     
     1581    CALL reduce_max_mpi(Var_tmp,VarOut)
     1582!$OMP END MASTER
     1583 
     1584  END SUBROUTINE reduce_max_r2 
     1585 
     1586
     1587  SUBROUTINE reduce_max_r3(VarIn, VarOut)
     1588    IMPLICIT NONE
     1589 
     1590    REAL,INTENT(IN),DIMENSION(:,:,:)  :: VarIn
     1591    REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut
     1592   
     1593    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3))  :: Var_tmp
     1594           
     1595    CALL reduce_max_omp(VarIn,Var_tmp)
     1596!$OMP MASTER     
     1597    CALL reduce_max_mpi(Var_tmp,VarOut)
     1598!$OMP END MASTER
     1599 
     1600  END SUBROUTINE reduce_max_r3 
     1601
     1602
     1603  SUBROUTINE reduce_max_r4(VarIn, VarOut)
     1604    IMPLICIT NONE
     1605 
     1606    REAL,INTENT(IN),DIMENSION(:,:,:,:)  :: VarIn
     1607    REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut
     1608   
     1609    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4))  :: Var_tmp
     1610           
     1611    CALL reduce_max_omp(VarIn,Var_tmp)
     1612!$OMP MASTER     
     1613    CALL reduce_max_mpi(Var_tmp,VarOut)
     1614!$OMP END MASTER
     1615 
     1616  END SUBROUTINE reduce_max_r4 
     1617
    14461618   
    14471619END MODULE mod_phys_lmdz_transfert_para
Note: See TracChangeset for help on using the changeset viewer.