Ignore:
Timestamp:
Nov 21, 2019, 4:43:45 PM (4 years ago)
Author:
lguez
Message:

Merge revisions 3427:3600 of trunk into branch Ocean_skin

Location:
LMDZ6/branches/Ocean_skin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Ocean_skin

  • LMDZ6/branches/Ocean_skin/libf/phy_common/mod_phys_lmdz_transfert_para.F90

    r2326 r3605  
    11!
    2 !$Header$
     2!$Id$
    33!
    44MODULE mod_phys_lmdz_transfert_para
     
    4646  END INTERFACE
    4747
     48  INTERFACE reduce_min
     49    MODULE PROCEDURE reduce_min_i,reduce_min_i1,reduce_min_i2,reduce_min_i3,reduce_min_i4, &
     50                     reduce_min_r,reduce_min_r1,reduce_min_r2,reduce_min_r3,reduce_min_r4
     51  END INTERFACE
    4852   
    4953CONTAINS
     
    12711275  END SUBROUTINE reduce_sum_r4 
    12721276
     1277
     1278!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1279!! Definition des reduce_min   --> 4D   !!
     1280!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1281
     1282! Les entiers
     1283
     1284  SUBROUTINE reduce_min_i(VarIn, VarOut)
     1285    IMPLICIT NONE
     1286 
     1287    INTEGER,INTENT(IN)  :: VarIn
     1288    INTEGER,INTENT(OUT) :: VarOut
     1289   
     1290    INTEGER             :: Var_tmp
     1291           
     1292    CALL reduce_min_omp(VarIn,Var_tmp)
     1293!$OMP MASTER     
     1294    CALL reduce_min_mpi(Var_tmp,VarOut)
     1295!$OMP END MASTER
     1296 
     1297  END SUBROUTINE reduce_min_i 
     1298
     1299
     1300  SUBROUTINE reduce_min_i1(VarIn, VarOut)
     1301    IMPLICIT NONE
     1302 
     1303    INTEGER,INTENT(IN),DIMENSION(:)  :: VarIn
     1304    INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut
     1305   
     1306    INTEGER,DIMENSION(SIZE(VarIn))   :: Var_tmp
     1307           
     1308    CALL reduce_min_omp(VarIn,Var_tmp)
     1309!$OMP MASTER     
     1310    CALL reduce_min_mpi(Var_tmp,VarOut)
     1311!$OMP END MASTER
     1312 
     1313  END SUBROUTINE reduce_min_i1 
     1314
     1315
     1316  SUBROUTINE reduce_min_i2(VarIn, VarOut)
     1317    IMPLICIT NONE
     1318 
     1319    INTEGER,INTENT(IN),DIMENSION(:,:)  :: VarIn
     1320    INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut
     1321   
     1322    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp
     1323           
     1324    CALL reduce_min_omp(VarIn,Var_tmp)
     1325!$OMP MASTER     
     1326    CALL reduce_min_mpi(Var_tmp,VarOut)
     1327!$OMP END MASTER
     1328 
     1329  END SUBROUTINE reduce_min_i2 
     1330 
     1331
     1332  SUBROUTINE reduce_min_i3(VarIn, VarOut)
     1333    IMPLICIT NONE
     1334 
     1335    INTEGER,INTENT(IN),DIMENSION(:,:,:)  :: VarIn
     1336    INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut
     1337   
     1338    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3))  :: Var_tmp
     1339           
     1340    CALL reduce_min_omp(VarIn,Var_tmp)
     1341!$OMP MASTER     
     1342    CALL reduce_min_mpi(Var_tmp,VarOut)
     1343!$OMP END MASTER
     1344 
     1345  END SUBROUTINE reduce_min_i3 
     1346
     1347
     1348  SUBROUTINE reduce_min_i4(VarIn, VarOut)
     1349    IMPLICIT NONE
     1350 
     1351    INTEGER,INTENT(IN),DIMENSION(:,:,:,:)  :: VarIn
     1352    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut
     1353   
     1354    INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4))  :: Var_tmp
     1355           
     1356    CALL reduce_min_omp(VarIn,Var_tmp)
     1357!$OMP MASTER     
     1358    CALL reduce_min_mpi(Var_tmp,VarOut)
     1359!$OMP END MASTER
     1360 
     1361  END SUBROUTINE reduce_min_i4 
     1362
     1363
     1364! Les reels
     1365
     1366  SUBROUTINE reduce_min_r(VarIn, VarOut)
     1367    IMPLICIT NONE
     1368 
     1369    REAL,INTENT(IN)  :: VarIn
     1370    REAL,INTENT(OUT) :: VarOut
     1371   
     1372    REAL             :: Var_tmp
     1373           
     1374    CALL reduce_min_omp(VarIn,Var_tmp)
     1375!$OMP MASTER     
     1376    CALL reduce_min_mpi(Var_tmp,VarOut)
     1377!$OMP END MASTER
     1378 
     1379  END SUBROUTINE reduce_min_r 
     1380
     1381
     1382  SUBROUTINE reduce_min_r1(VarIn, VarOut)
     1383    IMPLICIT NONE
     1384 
     1385    REAL,INTENT(IN),DIMENSION(:)  :: VarIn
     1386    REAL,INTENT(OUT),DIMENSION(:) :: VarOut
     1387   
     1388    REAL,DIMENSION(SIZE(VarIn))   :: Var_tmp
     1389           
     1390    CALL reduce_min_omp(VarIn,Var_tmp)
     1391!$OMP MASTER     
     1392    CALL reduce_min_mpi(Var_tmp,VarOut)
     1393!$OMP END MASTER
     1394 
     1395  END SUBROUTINE reduce_min_r1 
     1396
     1397
     1398  SUBROUTINE reduce_min_r2(VarIn, VarOut)
     1399    IMPLICIT NONE
     1400 
     1401    REAL,INTENT(IN),DIMENSION(:,:)  :: VarIn
     1402    REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut
     1403   
     1404    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp
     1405           
     1406    CALL reduce_min_omp(VarIn,Var_tmp)
     1407!$OMP MASTER     
     1408    CALL reduce_min_mpi(Var_tmp,VarOut)
     1409!$OMP END MASTER
     1410 
     1411  END SUBROUTINE reduce_min_r2 
     1412 
     1413
     1414  SUBROUTINE reduce_min_r3(VarIn, VarOut)
     1415    IMPLICIT NONE
     1416 
     1417    REAL,INTENT(IN),DIMENSION(:,:,:)  :: VarIn
     1418    REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut
     1419   
     1420    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3))  :: Var_tmp
     1421           
     1422    CALL reduce_min_omp(VarIn,Var_tmp)
     1423!$OMP MASTER     
     1424    CALL reduce_min_mpi(Var_tmp,VarOut)
     1425!$OMP END MASTER
     1426 
     1427  END SUBROUTINE reduce_min_r3 
     1428
     1429
     1430  SUBROUTINE reduce_min_r4(VarIn, VarOut)
     1431    IMPLICIT NONE
     1432 
     1433    REAL,INTENT(IN),DIMENSION(:,:,:,:)  :: VarIn
     1434    REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut
     1435   
     1436    REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4))  :: Var_tmp
     1437           
     1438    CALL reduce_min_omp(VarIn,Var_tmp)
     1439!$OMP MASTER     
     1440    CALL reduce_min_mpi(Var_tmp,VarOut)
     1441!$OMP END MASTER
     1442 
     1443  END SUBROUTINE reduce_min_r4 
     1444
     1445
    12731446   
    12741447END MODULE mod_phys_lmdz_transfert_para
Note: See TracChangeset for help on using the changeset viewer.