SUBROUTINE auxval ! USE constants USE basic USE fields USE beam USE random_mod USE omp_lib ! ! Set auxiliary values ! IMPLICIT NONE INTEGER:: nzperproc,i, remain ! !________________________________________________________________________________ IF(mpirank .eq. 0) WRITE(*,'(a/)') '=== Set auxiliary values ===' !________________________________________________________________________________ ! ! Define Zindex bounds for the MPI process in the case of sequential run ALLOCATE( Zbounds(0:mpisize), Nplocs_all(0:mpisize-1)) Zbounds=0 Zbounds(mpisize) = nz IF(mpisize.gt.1) THEN ! If we use mpi we define the left and right nodes used for communications leftproc=mpirank-1 IF(mpirank .eq. 0 .AND. partperiodic) THEN leftproc = mpisize-1 ELSE IF (mpirank .eq. 0) THEN leftproc=-1 END IF rightproc = mpirank+1 IF(mpirank .eq. mpisize-1 .AND. partperiodic) THEN rightproc = 0 ELSE IF (mpirank .eq. mpisize-1) THEN rightproc=-1 END IF nzperproc=nz/mpisize remain=nz-nzperproc*mpisize do i=1,mpisize-1 Zbounds(i)=Zbounds(i-1)+nzperproc+1*(remain.gt.0) remain=remain-1 end do ELSE leftproc=-1 rightproc=-1 END IF WRITE(*,*) "mpirank, left, right", mpirank, leftproc, rightproc !________________________________________________________________________________ !________________________________________________________________________________ END SUBROUTINE auxval