Changeset 327 for codes/icosagcm/trunk/src/domain.f90
- Timestamp:
- 02/09/15 20:18:34 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/domain.f90
r295 r327 402 402 SUBROUTINE assign_domain 403 403 USE mpipara 404 USE grid_param 404 405 IMPLICIT NONE 405 406 INTEGER :: nb_domain(0:mpi_size-1) 406 407 INTEGER :: rank, ind,ind_glo 408 INTEGER :: block_j,jb,i,j,nd_glo,n,nf 409 LOGICAL :: exit 407 410 408 411 DO rank=0,mpi_size-1 … … 415 418 ALLOCATE(domloc_glo_ind(ndomain)) 416 419 420 421 block_j=sqrt(nsplit_i*nsplit_j*nb_face*1./mpi_size) 422 exit=.FALSE. 423 jb=1 424 i=1 425 j=1 426 ind=1 427 nd_glo=0 417 428 rank=0 418 ind=0 419 DO ind_glo=1,ndomain_glo 420 ind=ind+1 429 DO WHILE (.NOT. exit) 430 431 IF (j==MIN(jb+block_j,nsplit_j*nb_face+1)) THEN 432 j=jb 433 i=i+1 434 ENDIF 435 436 IF (i>nsplit_i) THEN 437 i=1 438 jb=jb+block_j 439 j=jb 440 ENDIF 441 442 IF (ind>nb_domain(rank)) THEN 443 rank=rank+1 444 ind=1 445 ENDIF 446 ind_glo=(j-1)*nsplit_i+i 447 448 nd_glo=nd_glo+1 449 IF (nd_glo==ndomain_glo) THEN 450 451 exit=.TRUE. 452 IF (.NOT. (rank==mpi_size-1 .AND. ind==nb_domain(rank) )) THEN 453 PRINT *, "Distribution problem in assign_domain" 454 STOP 455 ENDIF 456 457 ENDIF 458 421 459 domglo_rank(ind_glo)=rank 422 460 domglo_loc_ind(ind_glo)=ind … … 426 464 ENDIF 427 465 428 IF (ind==nb_domain(rank)) THEN 429 rank=rank+1 430 ind=0 431 ENDIF 466 j=j+1 467 ind=ind+1 468 432 469 ENDDO 470 471 IF (is_mpi_master) THEN 472 473 ind_glo=0 474 WRITE(*,'') 475 PRINT*, ' MPI PROCESS DISTRIBUTION' 476 WRITE(*,'') 477 478 WRITE(*,"(' ')", ADVANCE='NO') 479 DO n=1,nsplit_i*7-1 480 WRITE(*,"('=')", ADVANCE='NO') 481 ENDDO 482 WRITE(*,'') 483 484 DO nf=1,nb_face 485 DO j=1,nsplit_j 486 IF (j>1) THEN 487 WRITE(*,"(' ')", ADVANCE='NO') 488 DO n=1,nsplit_i*7-1 489 WRITE(*,"('-')", ADVANCE='NO') 490 ENDDO 491 WRITE(*,'') 492 ENDIF 493 494 WRITE(*,"('|')", ADVANCE='NO') 495 DO i=1,nsplit_i 496 WRITE(*,"(' ',' ',' |')",ADVANCE='NO') 497 ENDDO 498 WRITE(*,'') 499 500 WRITE(*,"('|')", ADVANCE='NO') 501 DO i=1,nsplit_i 502 ind_glo=ind_glo+1 503 WRITE(*,"(' ',i4.4 ,' |')",ADVANCE='NO'),domglo_rank(ind_glo) 504 END DO 505 WRITE(*,'') 506 507 WRITE(*,"('|')", ADVANCE='NO') 508 DO i=1,nsplit_i 509 WRITE(*,"(' ',' ',' |')",ADVANCE='NO') 510 ENDDO 511 WRITE(*,'') 512 513 ENDDO 514 515 WRITE(*,"(' ')", ADVANCE='NO') 516 DO n=1,nsplit_i*7-1 517 WRITE(*,"('=')", ADVANCE='NO') 518 ENDDO 519 WRITE(*,'') 520 ENDDO 521 ENDIF 522 523 ! rank=0 524 ! ind=0 525 ! DO ind_glo=1,ndomain_glo 526 ! ind=ind+1 527 ! domglo_rank(ind_glo)=rank 528 ! domglo_loc_ind(ind_glo)=ind 529 ! IF (rank==mpi_rank) THEN 530 ! CALL copy_domain(domain_glo(ind_glo),domain(ind)) 531 ! domloc_glo_ind(ind)=ind_glo 532 ! ENDIF 533 ! 534 ! IF (ind==nb_domain(rank)) THEN 535 ! rank=rank+1 536 ! ind=0 537 ! ENDIF 538 ! ENDDO 433 539 434 540 !$OMP PARALLEL
Note: See TracChangeset
for help on using the changeset viewer.