- Timestamp:
- Sep 24, 2025, 10:24:33 AM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_transfert_para.f90
r5477 r5829 50 50 reduce_min_r,reduce_min_r1,reduce_min_r2,reduce_min_r3,reduce_min_r4 51 51 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 53 58 CONTAINS 54 59 … … 1444 1449 1445 1450 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 1446 1618 1447 1619 END MODULE mod_phys_lmdz_transfert_para
Note: See TracChangeset
for help on using the changeset viewer.
