- Timestamp:
- Mar 14, 2019, 10:34:31 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_transfert_para.F90
r2326 r3465 1 1 ! 2 !$ Header$2 !$Id$ 3 3 ! 4 4 MODULE mod_phys_lmdz_transfert_para … … 46 46 END INTERFACE 47 47 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 48 52 49 53 CONTAINS … … 1271 1275 END SUBROUTINE reduce_sum_r4 1272 1276 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 1273 1446 1274 1447 END MODULE mod_phys_lmdz_transfert_para
Note: See TracChangeset
for help on using the changeset viewer.