Changeset 358
- Timestamp:
- 09/07/15 18:28:16 (9 years ago)
- Location:
- codes/icosagcm/trunk/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/dissip_gcm.f90
r295 r358 111 111 IF (is_master) PRINT *, 'Rayleigh friction : Schaer-like mountain with shear DCMIP2.2' 112 112 CASE DEFAULT 113 IF (is_master) PRINT *, 'Bad selector : rayleigh_friction_type =', TRIM(rayleigh_friction_key), ' in dissip_gcm.f90/init_dissip' 113 IF (is_master) PRINT *, 'Bad selector : rayleigh_friction_type =', TRIM(rayleigh_friction_key), & 114 ' in dissip_gcm.f90/init_dissip' 114 115 STOP 115 116 END SELECT -
codes/icosagcm/trunk/src/domain.f90
r327 r358 472 472 473 473 ind_glo=0 474 WRITE(*,'')474 PRINT *,'' 475 475 PRINT*, ' MPI PROCESS DISTRIBUTION' 476 WRITE(*,'')476 PRINT *,'' 477 477 478 478 WRITE(*,"(' ')", ADVANCE='NO') … … 480 480 WRITE(*,"('=')", ADVANCE='NO') 481 481 ENDDO 482 WRITE(*,'')482 PRINT *,'' 483 483 484 484 DO nf=1,nb_face … … 489 489 WRITE(*,"('-')", ADVANCE='NO') 490 490 ENDDO 491 WRITE(*,'')491 PRINT *,'' 492 492 ENDIF 493 493 … … 496 496 WRITE(*,"(' ',' ',' |')",ADVANCE='NO') 497 497 ENDDO 498 WRITE(*,'')498 PRINT *,'' 499 499 500 500 WRITE(*,"('|')", ADVANCE='NO') … … 503 503 WRITE(*,"(' ',i4.4 ,' |')",ADVANCE='NO'),domglo_rank(ind_glo) 504 504 END DO 505 WRITE(*,'')505 PRINT *,'' 506 506 507 507 WRITE(*,"('|')", ADVANCE='NO') … … 509 509 WRITE(*,"(' ',' ',' |')",ADVANCE='NO') 510 510 ENDDO 511 WRITE(*,'')511 PRINT *,'' 512 512 513 513 ENDDO … … 517 517 WRITE(*,"('=')", ADVANCE='NO') 518 518 ENDDO 519 WRITE(*,'')519 PRINT *,'' 520 520 ENDDO 521 521 ENDIF -
codes/icosagcm/trunk/src/restart.f90
r327 r358 269 269 DO i=d%ii_begin,d%ii_end 270 270 DO k=0,5 271 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j .AND. d%edge_assign_pos(k,i,j)==k) THEN 271 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 272 .AND. d%edge_assign_pos(k,i,j)==k) THEN 272 273 ij=(j-1)*d%iim+i 273 274 ind_glo=d%assign_cell_glo(i,j) … … 287 288 DO i=d%ii_begin,d%ii_end 288 289 DO k=0,5 289 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j .AND. d%edge_assign_pos(k,i,j)==k) THEN 290 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j & 291 .AND. d%edge_assign_pos(k,i,j)==k) THEN 290 292 ij=(j-1)*d%iim+i 291 293 ind_glo=d%assign_cell_glo(i,j) … … 305 307 DO i=d%ii_begin,d%ii_end 306 308 DO k=0,5 307 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j .AND. d%edge_assign_pos(k,i,j)==k) THEN 309 IF (d%edge_assign_domain(k,i,j)==ind .AND. d%edge_assign_i(k,i,j)==i .AND. d%edge_assign_j(k,i,j)==j& 310 .AND. d%edge_assign_pos(k,i,j)==k) THEN 308 311 ij=(j-1)*d%iim+i 309 312 ind_glo=d%assign_cell_glo(i,j) -
codes/icosagcm/trunk/src/transfert.F90
r266 r358 3 3 #ifdef CPP_USING_MPI 4 4 USE transfert_mpi_mod, ONLY : init_transfert, transfert_request=>transfert_request_mpi, req_i1,req_e1_vect, & 5 req_e1_scal, req_i0, req_e0_vect, req_e0_scal, request_add_point, create_request, gather_field, scatter_field, & 6 t_message,init_message=>init_message_mpi,transfert_message=>transfert_message_mpi, & 7 send_message=>send_message_mpi,test_message=>test_message_mpi,wait_message=>wait_message_mpi,barrier, & 8 bcast_mpi 5 req_e1_scal, req_i0, req_e0_vect, req_e0_scal, request_add_point, & 6 create_request, gather_field, scatter_field, & 7 t_message, init_message=>init_message_mpi, & 8 transfert_message=>transfert_message_mpi, & 9 send_message=>send_message_mpi, & 10 test_message=>test_message_mpi, & 11 wait_message=>wait_message_mpi,barrier,bcast_mpi 9 12 #else 10 13 USE transfert_mpi_mod, ONLY : init_transfert, transfert_request=>transfert_request_seq, req_i1,req_e1_vect, & 11 req_e1_scal,req_i0, req_e0_vect, req_e0_scal, request_add_point, create_request, gather_field, scatter_field,& 12 t_message,init_message=>init_message_seq,transfert_message=>transfert_message_seq, & 13 send_message=>send_message_seq,test_message=>test_message_seq,wait_message=>wait_message_seq,barrier, & 14 bcast_mpi 14 req_e1_scal,req_i0, req_e0_vect, req_e0_scal, & 15 request_add_point, create_request, gather_field, & 16 scatter_field, t_message, & 17 init_message=>init_message_seq, & 18 transfert_message=>transfert_message_seq, & 19 send_message=>send_message_seq, & 20 test_message=>test_message_seq, & 21 wait_message=>wait_message_seq,barrier, bcas_mpi 15 22 #endif 16 23 -
codes/icosagcm/trunk/src/transfert_mpi.f90
r327 r358 1150 1150 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1151 1151 !$OMP CRITICAL 1152 CALL MPI_ISEND(buffer_r,send%size,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1152 CALL MPI_ISEND(buffer_r,send%size,MPI_REAL8,send%rank, & 1153 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1153 1154 !$OMP END CRITICAL 1154 1155 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1155 CALL MPI_ISEND(buffer_r,send%size,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1156 CALL MPI_ISEND(buffer_r,send%size,MPI_REAL8,send%rank, & 1157 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1156 1158 ENDIF 1157 1159 … … 1186 1188 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1187 1189 !$OMP CRITICAL 1188 CALL MPI_IRECV(buffer_r,recv%size,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1190 CALL MPI_IRECV(buffer_r,recv%size,MPI_REAL8,recv%rank, & 1191 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1189 1192 !$OMP END CRITICAL 1190 1193 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1191 CALL MPI_IRECV(buffer_r,recv%size,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1194 CALL MPI_IRECV(buffer_r,recv%size,MPI_REAL8,recv%rank, & 1195 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1192 1196 ENDIF 1193 1197 … … 1232 1236 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1233 1237 !$OMP CRITICAL 1234 CALL MPI_ISEND(buffer_r,send%size*dim3,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1238 CALL MPI_ISEND(buffer_r,send%size*dim3,MPI_REAL8,send%rank, & 1239 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1235 1240 !$OMP END CRITICAL 1236 1241 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1237 CALL MPI_ISEND(buffer_r,send%size*dim3,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1242 CALL MPI_ISEND(buffer_r,send%size*dim3,MPI_REAL8,send%rank, & 1243 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1238 1244 ENDIF 1239 1245 ENDIF … … 1274 1280 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1275 1281 !$OMP CRITICAL 1276 CALL MPI_IRECV(buffer_r,recv%size*dim3,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1282 CALL MPI_IRECV(buffer_r,recv%size*dim3,MPI_REAL8,recv%rank, & 1283 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1277 1284 !$OMP END CRITICAL 1278 1285 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1279 CALL MPI_IRECV(buffer_r,recv%size*dim3,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1286 CALL MPI_IRECV(buffer_r,recv%size*dim3,MPI_REAL8,recv%rank, & 1287 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1280 1288 ENDIF 1281 1289 ENDIF … … 1307 1315 CALL trace_start("copy_to_buffer") 1308 1316 DO d4=1,dim4 1309 offset=send%offset*dim3*dim4 + dim3*send%size*(d4-1) + (lbegin-1)*send%size 1317 offset=send%offset*dim3*dim4 + dim3*send%size*(d4-1) + & 1318 (lbegin-1)*send%size 1310 1319 1311 1320 DO d3=lbegin,lend … … 1321 1330 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1322 1331 !$OMP CRITICAL 1323 CALL MPI_ISEND(buffer_r,send%size*dim3*dim4,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1332 CALL MPI_ISEND(buffer_r,send%size*dim3*dim4,MPI_REAL8,send%rank, & 1333 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1324 1334 !$OMP END CRITICAL 1325 1335 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1326 CALL MPI_ISEND(buffer_r,send%size*dim3*dim4,MPI_REAL8,send%rank,send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1336 CALL MPI_ISEND(buffer_r,send%size*dim3*dim4,MPI_REAL8,send%rank, & 1337 send%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1327 1338 ENDIF 1328 1339 ENDIF … … 1367 1378 IF (mpi_threading_mode==MPI_THREAD_SERIALIZED) THEN 1368 1379 !$OMP CRITICAL 1369 CALL MPI_IRECV(buffer_r,recv%size*dim3*dim4,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1380 CALL MPI_IRECV(buffer_r,recv%size*dim3*dim4,MPI_REAL8,recv%rank, & 1381 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1370 1382 !$OMP END CRITICAL 1371 1383 ELSE IF (mpi_threading_mode==MPI_THREAD_MULTIPLE) THEN 1372 CALL MPI_IRECV(buffer_r,recv%size*dim3*dim4,MPI_REAL8,recv%rank,recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1384 CALL MPI_IRECV(buffer_r,recv%size*dim3*dim4,MPI_REAL8,recv%rank, & 1385 recv%tag+1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1373 1386 ENDIF 1374 1387 ENDIF … … 1387 1400 msize=message%buffers(ireq)%size 1388 1401 rank=message%buffers(ireq)%rank 1389 CALL MPI_ISEND(buffer_r,msize,MPI_REAL8,rank,1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1402 CALL MPI_ISEND(buffer_r,msize,MPI_REAL8,rank,1000*message%number, & 1403 comm_icosa, message%mpi_req(ireq),ierr) 1390 1404 ENDDO 1391 1405 … … 1394 1408 msize=message%buffers(ireq)%size 1395 1409 rank=message%buffers(ireq)%rank 1396 CALL MPI_IRECV(buffer_r,msize,MPI_REAL8,rank,1000*message%number,comm_icosa, message%mpi_req(ireq),ierr) 1410 CALL MPI_IRECV(buffer_r,msize,MPI_REAL8,rank,1000*message%number, & 1411 comm_icosa, message%mpi_req(ireq),ierr) 1397 1412 ENDDO 1398 1413 … … 1413 1428 1414 1429 !$OMP MASTER 1415 IF (message%pending .AND. .NOT. message%completed) CALL MPI_TESTALL(message%nreq,message%mpi_req,message%completed,message%status,ierr) 1430 IF (message%pending .AND. .NOT. message%completed) CALL MPI_TESTALL(message%nreq,& 1431 message%mpi_req,message%completed,message%status,ierr) 1416 1432 !$OMP END MASTER 1417 1433 END SUBROUTINE test_message_mpi … … 1456 1472 1457 1473 !$OMP MASTER 1458 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req,message%status,ierr) 1474 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req, & 1475 message%status,ierr) 1459 1476 !$OMP END MASTER 1460 1477 !$OMP BARRIER … … 1486 1503 1487 1504 !$OMP MASTER 1488 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req,message%status,ierr) 1505 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req, & 1506 message%status,ierr) 1489 1507 !$OMP END MASTER 1490 1508 !$OMP BARRIER … … 1534 1552 ELSE IF (field(1)%ndim==4) THEN 1535 1553 !$OMP MASTER 1536 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req,message%status,ierr) 1554 IF (.NOT. message%completed) CALL MPI_WAITALL(nreq,message%mpi_req, & 1555 message%status,ierr) 1537 1556 !$OMP END MASTER 1538 1557 !$OMP BARRIER … … 1557 1576 CALL trace_start("copy_from_buffer") 1558 1577 DO d4=1,dim4 1559 offset=recv%offset*dim3*dim4 + dim3*recv%size*(d4-1) + (lbegin-1)*recv%size 1578 offset=recv%offset*dim3*dim4 + dim3*recv%size*(d4-1) + & 1579 (lbegin-1)*recv%size 1560 1580 DO d3=lbegin,lend 1561 1581 DO n=1,recv%size … … 1624 1644 IF (field(ind)%ndim==2) THEN 1625 1645 DO n=1,req%size 1626 rval2d(req%target_ind(n))=field(req%src_domain(n))%rval2d(req%src_ind(n))*req%target_sign(n) 1646 rval2d(req%target_ind(n))=field(req%src_domain(n))%rval2d(req%src_ind(n))*& 1647 req%target_sign(n) 1627 1648 ENDDO 1628 1649 ELSE IF (field(ind)%ndim==3) THEN 1629 1650 DO n=1,req%size 1630 rval3d(req%target_ind(n),:)=field(req%src_domain(n))%rval3d(req%src_ind(n),:)*req%target_sign(n) 1651 rval3d(req%target_ind(n),:)=field(req%src_domain(n))%rval3d(req%src_ind(n),:)*& 1652 req%target_sign(n) 1631 1653 ENDDO 1632 1654 ELSE IF (field(ind)%ndim==4) THEN 1633 1655 DO n=1,req%size 1634 rval4d(req%target_ind(n),:,:)=field(req%src_domain(n))%rval4d(req%src_ind(n),:,:)*req%target_sign(n) 1656 rval4d(req%target_ind(n),:,:)=field(req%src_domain(n))%rval4d(req%src_ind(n),:,:)*& 1657 req%target_sign(n) 1635 1658 ENDDO 1636 1659 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.