+++ /dev/null
-!-------------------------------------------------------------------------!
-! !
-! N A S P A R A L L E L B E N C H M A R K S 3.3 !
-! !
-! L U !
-! !
-!-------------------------------------------------------------------------!
-! !
-! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. !
-! It is described in NAS Technical Reports 95-020 and 02-007 !
-! !
-! Permission to use, copy, distribute and modify this software !
-! for any purpose with or without fee is hereby granted. We !
-! request, however, that all derived work reference the NAS !
-! Parallel Benchmarks 3.3. This software is provided "as is" !
-! without express or implied warranty. !
-! !
-! Information on NPB 3.3, including the technical report, the !
-! original specifications, source code, results and information !
-! on how to submit new results, is available at: !
-! !
-! http://www.nas.nasa.gov/Software/NPB/ !
-! !
-! Send comments or suggestions to npb@nas.nasa.gov !
-! !
-! NAS Parallel Benchmarks Group !
-! NASA Ames Research Center !
-! Mail Stop: T27A-1 !
-! Moffett Field, CA 94035-1000 !
-! !
-! E-mail: npb@nas.nasa.gov !
-! Fax: (650) 604-3957 !
-! !
-!-------------------------------------------------------------------------!
-
-c---------------------------------------------------------------------
-c
-c Authors: S. Weeratunga
-c V. Venkatakrishnan
-c E. Barszcz
-c M. Yarrow
-c
-c---------------------------------------------------------------------
-
-c---------------------------------------------------------------------
- program applu
-c---------------------------------------------------------------------
-
-c---------------------------------------------------------------------
-c
-c driver for the performance evaluation of the solver for
-c five coupled parabolic/elliptic partial differential equations.
-c
-c---------------------------------------------------------------------
-
- implicit none
-
- include 'applu.incl'
- character class
- logical verified
- double precision mflops
- integer ierr
-
-c---------------------------------------------------------------------
-c initialize communications
-c---------------------------------------------------------------------
- call init_comm()
-
-c---------------------------------------------------------------------
-c read input data
-c---------------------------------------------------------------------
- call read_input()
-
-c---------------------------------------------------------------------
-c set up processor grid
-c---------------------------------------------------------------------
- call proc_grid()
-
-c---------------------------------------------------------------------
-c determine the neighbors
-c---------------------------------------------------------------------
- call neighbors()
-
-c---------------------------------------------------------------------
-c set up sub-domain sizes
-c---------------------------------------------------------------------
- call subdomain()
-
-c---------------------------------------------------------------------
-c set up coefficients
-c---------------------------------------------------------------------
- call setcoeff()
-
-c---------------------------------------------------------------------
-c set the masks required for comm
-c---------------------------------------------------------------------
- call sethyper()
-
-c---------------------------------------------------------------------
-c set the boundary values for dependent variables
-c---------------------------------------------------------------------
- call setbv()
-
-c---------------------------------------------------------------------
-c set the initial values for dependent variables
-c---------------------------------------------------------------------
- call setiv()
-
-c---------------------------------------------------------------------
-c compute the forcing term based on prescribed exact solution
-c---------------------------------------------------------------------
- call erhs()
-
-c---------------------------------------------------------------------
-c perform one SSOR iteration to touch all data and program pages
-c---------------------------------------------------------------------
- call ssor(1)
-
-c---------------------------------------------------------------------
-c reset the boundary and initial values
-c---------------------------------------------------------------------
- call setbv()
- call setiv()
-
-c---------------------------------------------------------------------
-c perform the SSOR iterations
-c---------------------------------------------------------------------
- call ssor(itmax)
-
-c---------------------------------------------------------------------
-c compute the solution error
-c---------------------------------------------------------------------
- call error()
-
-c---------------------------------------------------------------------
-c compute the surface integral
-c---------------------------------------------------------------------
- call pintgr()
-
-c---------------------------------------------------------------------
-c verification test
-c---------------------------------------------------------------------
- IF (id.eq.0) THEN
- call verify ( rsdnm, errnm, frc, class, verified )
- mflops = float(itmax)*(1984.77*float( nx0 )
- > *float( ny0 )
- > *float( nz0 )
- > -10923.3*(float( nx0+ny0+nz0 )/3.)**2
- > +27770.9* float( nx0+ny0+nz0 )/3.
- > -144010.)
- > / (maxtime*1000000.)
-
- call print_results('LU', class, nx0,
- > ny0, nz0, itmax, nnodes_compiled,
- > num, maxtime, mflops, ' floating point', verified,
- > npbversion, compiletime, cs1, cs2, cs3, cs4, cs5, cs6,
- > '(none)')
-
- END IF
-
- call mpi_finalize(ierr)
- end
-
-