Changeset 186 for codes/icosagcm/trunk/src/domain.f90
- Timestamp:
- 01/09/14 09:56:11 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/domain.f90
r174 r186 58 58 END TYPE t_domain 59 59 60 INTEGER,SAVE :: ndomain 61 INTEGER,SAVE :: ndomain_glo 62 60 63 TYPE(t_domain),SAVE,ALLOCATABLE,TARGET :: domain(:) 61 INTEGER :: ndomain62 64 TYPE(t_domain),SAVE,ALLOCATABLE,TARGET :: domain_glo(:) 63 INTEGER :: ndomain_glo 64 65 INTEGER,ALLOCATABLE,SAVE :: domglo_rank(:) 66 INTEGER,ALLOCATABLE,SAVE :: domglo_loc_ind(:) 67 INTEGER,ALLOCATABLE,SAVE :: domloc_glo_ind(:) 68 65 66 INTEGER,ALLOCATABLE,SAVE :: domglo_rank(:) ! size : ndomain_glo : mpi rank assigned to a domain 67 INTEGER,ALLOCATABLE,SAVE :: domglo_loc_ind(:) ! size : ndomain_glo : corresponding local indice for a global domain indice 68 INTEGER,ALLOCATABLE,SAVE :: domloc_glo_ind(:) ! size : ndomain : corresponding global indice for a local domain indice 69 70 LOGICAL, ALLOCATABLE, SAVE :: assigned_domain(:) ! size : ndomain : is an omp task is assigned to this domain 71 !$OMP THREADPRIVATE(assigned_domain) 72 69 73 CONTAINS 70 74 … … 423 427 ENDIF 424 428 ENDDO 429 430 !$OMP PARALLEL 431 CALL assign_domain_omp 432 !$OMP END PARALLEL 433 425 434 426 435 END SUBROUTINE assign_domain 427 436 437 SUBROUTINE assign_domain_omp 438 USE omp_para 439 USE mpipara 440 IMPLICIT NONE 441 INTEGER :: nb_domain 442 INTEGER :: rank, ind, i 443 444 ALLOCATE(assigned_domain(ndomain)) 445 446 ind=0 447 DO rank=0,omp_size-1 448 nb_domain=ndomain/omp_size 449 IF ( rank < MOD(ndomain,omp_size) ) nb_domain=nb_domain+1 450 451 DO i=1,nb_domain 452 ind=ind+1 453 IF (rank==omp_rank) THEN 454 assigned_domain(ind)=.TRUE. 455 PRINT *,"Rank ",mpi_rank," task ",rank," local domain : ",ind," global domain ",domloc_glo_ind(ind) 456 ELSE 457 assigned_domain(ind)=.FALSE. 458 ENDIF 459 ENDDO 460 461 ENDDO 462 463 END SUBROUTINE assign_domain_omp 464 465 428 466 429 467 SUBROUTINE compute_domain
Note: See TracChangeset
for help on using the changeset viewer.