C C Test Problem 1 - - ** Np tasks <= 11 ** C C This program evaluates the trapezoidal rule estimate C for an integral of F(x). In this case, F(x) is exp(x) C evaluated for the interval of 0 to 1. Each case provides C 2X increase in precision. Therefore each result should be C similar but, not the same. C C Testing for Nps 1 ... 11 should execute programs. C Testing for Nps 12 and above should stop the program. C C This program requires the following call(s) C MPI_INIT, MPI_COMM_RANK, MPI_COMM_SIZE, MPI_ABORT, MPI_FINALIZE program main include 'mpif.h' PARAMETER (KASES=11) DIMENSION TN(KASES) DIMENSION TARRAY(2) INTEGER N(KASES) INTEGER nworkers, whoami DATA A / 0.0 / DATA B / 1.0 / DATA N / 100, 200, 400, 800, 1600, 3200, x 6400, 12800, 25600, 51200, 102400 / C C Initialize environment C call mpi_init(ierr) call mpi_comm_rank(MPI_COMM_WORLD, whoami, ierr) call mpi_comm_size(MPI_COMM_WORLD, nworkers, ierr) PRINT 100,nworkers,KASES 100 FORMAT ('Environment allocated ', I6,' workers out of ', I6) if( whoami .GE. KASES ) then call mpi_abort(MPI_COMM_WORLD, ierr) endif whoami = whoami + 1 H = (B-A)/(N(whoami)) SUM = 0.0 DO 10 I = 1, N(whoami)-1 SUM = SUM+F(A+H*I) 10 CONTINUE TN(whoami) = H*((F(A)+F(B))/2.+SUM) PRINT 30,A,B,whoami,N(whoami) 30 FORMAT ('PROBLEM 1 WITH A,B,whoami,N = ',2F10.3,5X,I6,I6) PRINT 40,TN(whoami) 40 FORMAT ('GIVES TN =',F10.6) 60 FORMAT (F8.4,' USER, ',F8.4,' SYSTEM') call mpi_finalize(ierr) END C C FUNCTION F (X) F = EXP(X) C F = 4.0D0/(1.0D0+X*X) RETURN END