 UXP/V  Fortran/VPP V20L20  Sat Aug 12 06:36:02 2000

 inc line-no. inc
            1         c
            2                program pwave3
            3         c
            4         cc     pwave3.f  main program of 3-dimensional wave equtaion
            5         c      modified leap-frog method  1991.12.14
            6                parameter(npe=16)
            7         !xocl processor pe(npe)
            8                parameter(nx=100,ny=100,nz=100)
            9                parameter(nb=4,iip0=8,iiq0=1,iir0=1,last=4)
           10                parameter(nx1=nx+1,nx2=nx+2,ny1=ny+1,ny2=ny+2)
           11                parameter(nz1=nz+1,nz2=nz+2)
           12                parameter(n1=nx2,n2=n1*ny2,n3=n2*nz2,noinp=30)
           13                parameter(n4=n3*nb)
           14                parameter(thx=0.5,tam=0.5,vis0=0.10)
           15         !xocl index partition ind=(pe,index=1:nz2,part=band)
           16         !xocl index partition indo=(pe,index=1:nz2,part=band,overlap=(1,1))
           17         c
           18                real*8 f(nx2,ny2,nz2,nb),u(nx2,ny2,nz2,nb)
           19                real*8 gf(nx2,ny2,nz2,nb),gu(nx2,ny2,nz2,nb)
           20                real*8 v(nx2,ny2,nz2,nb),p(nb)
           21                real*8 gv(nx2,ny2,nz2,nb)
           22                dimension ppin(10)
           23                real*8 zt0,zt1,zt2,zt
           24         !xocl local f(:,:,/indo,:),u(:,:,/indo,:),v(:,:,/indo,:)
           25         !xocl global gf,gu,gv
           26                equivalence (gf,f),(gu,u),(gv,v)
           27                common /blk/gf
           28         c
           29         c           ppin xl   yl   zl   dxl  dyl  dzl  dn  dv   9  10
           30                data ppin/62.0,62.0,62.0,10.0,10.0,10.0,1.0,0.0, 9, 10/
           31         c
           32         !xocl parallel region
           33         c
           34                xl=ppin(1)
           35                yl=ppin(2)
           36                zl=ppin(3)
           37                dxl=ppin(4)
           38                dyl=ppin(5)
           39                dzl=ppin(6)
           40                dn=ppin(7)
           41                dv=ppin(8)
           42                vis=vis0
           43         c
           44                hx=xl/float(nx1)
           45                hy=yl/float(ny1)
           46                hz=zl/float(nz1)
           47                t1=thx*hx
           48                dx1=0.5*t1/hx
           49                dy1=0.5*t1/hy
           50                dz1=0.5*t1/hz
           51                dx2=vis*0.50*(t1/hx)**2
           52                dy2=vis*0.50*(t1/hy)**2
           53                dz2=vis*0.50*(t1/hz)**2
           54         c
           55         c      initial parameters
           56         c
           57                write(6,122) nx,ny,nz,last,nx2,ny2,nz2
           58                write(6,124) t1,hx,hy,hz,dx1,dy1,dz1
           59           122  format(1h ,10i8)
           60           124  format(1h ,8(1pe10.3))
           61         c
           62         c      initial conditions
           63                call ainit1(ppin)
           64         c
           65         c      start of calculation
           66                call clock(zt0)
           67         c
           68     s          do 500 ii=1,last
           69     s          call clock(zt1)
           70                do 300 iir=1,iir0
           71                do 200 iiq=1,iiq0
           72     s          do 100 iip=1,iip0
           73         !xocl overlapfix(f) (id)
           74         !xocl movewait (id)
           75         c
           76         c      boundary conditions
           77         c
           78     s          do 20 m=1,nb
           79         !xocl spread do /ind
           80     s4         do 24 k=2,nz1
           81     v4         do 24 j=2,ny1
           82     v4         f(1,j,k,m)=f(nx1,j,k,m)
           83     v4         f(nx2,j,k,m)=f(2,j,k,m)
           84     v4     24 continue
           85         !xocl end spread
           86         !xocl spread do /ind
           87     s4         do 22 k=2,nz1
           88     v4         do 22 i=1,nx2
           89     v4         f(i,1,k,m)=f(i,ny1,k,m)
           90     v4         f(i,ny2,k,m)=f(i,2,k,m)
           91     v4     22  continue
           92         !xocl end spread
           93         !xocl spread move /indo,:,:
           94     s          do 26 k=1,1
           95     s          do 26 j=1,ny2
           96     s          do 26 i=1,nx2
           97         c      f(i,j,1,m)=gf(i,j,nz1,m)
           98         c      f(i,j,nz2,m)=gf(i,j,2,m)
           99     s          f(i,j,k,m)=gf(i,j,k+nz,m)
          100     s      26  continue
          101         !xocl end spread(id)
          102         !xocl movewait(id)
          103         !xocl spread move /indo,:,:
          104     s          do 28 k=nz2,nz2
          105     s          do 28 j=1,ny2
          106     s          do 28 i=1,nx2
          107         c      f(i,j,1,m)=gf(i,j,nz1,m)
          108         c      f(i,j,nz2,m)=gf(i,j,2,m)
          109     s          f(i,j,k,m)=gf(i,j,k-nz,m)
          110     s      28  continue
          111         !xocl end spread(id)
          112         !xocl movewait(id)
          113            20  continue
          114         c
          115         !xocl overlapfix(f) (id)
          116         !xocl movewait (id)
          117         c
          118         c      case of iip=1  2-step Lax-Wendroff method
          119     v          if(iip.eq.1) then
          120     v          t=0.5*t1
          121     s          dx=0.5*dx1
          122     s          dy=0.5*dy1
          123     s          dz=0.5*dz1
          124         !xocl spread do /ind
          125     s          do 32 k=1,nz1
          126     s2         do 32 m=1,nb
          127     v2         do 32 j=1,ny1
          128     v2         do 32 i=1,nx1
          129     v2         u(i,j,k,m)=0.125*(f(i,j,k,m)+f(i+1,j,k,m)+
          130              1            f(i,j+1,k,m)+f(i+1,j+1,k,m)+
          131              2            f(i,j,k+1,m)+f(i+1,j,k+1,m)+
          132              3            f(i,j+1,k+1,m)+f(i+1,j+1,k+1,m))
          133     v2     32  continue
          134         !xocl end spread
          135         c
          136     v          else
          137     s          t=t1
          138     s          dx=dx1
          139     s          dy=dy1
          140     m          dz=dz1
          141     v          endif
          142         c
          143         !xocl overlapfix(f,u) (id)
          144         !xocl movewait (id)
          145         c
          146         c      first step
          147         c
          148         !xocl spread do /ind
          149     s          do 40 k=1,nz1
          150     s          do 40 j=1,ny1
          151     v          do 40 i=1,nx1
          152         c
          153     v          p(1)=0.125*(f(i,j,k,1)+f(i+1,j,k,1)+
          154              1      f(i,j+1,k,1)+f(i+1,j+1,k,1)+
          155              2      f(i,j,k+1,1)+f(i+1,j,k+1,1)+
          156              3      f(i,j+1,k+1,1)+f(i+1,j+1,k+1,1))
          157     v          p(2)=0.125*(f(i,j,k,2)+f(i+1,j,k,2)+
          158              1      f(i,j+1,k,2)+f(i+1,j+1,k,2)+
          159              2      f(i,j,k+1,2)+f(i+1,j,k+1,2)+
          160              3      f(i,j+1,k+1,2)+f(i+1,j+1,k+1,2))
          161     v          p(3)=0.125*(f(i,j,k,3)+f(i+1,j,k,3)+
          162              1      f(i,j+1,k,3)+f(i+1,j+1,k,3)+
          163              2      f(i,j,k+1,3)+f(i+1,j,k+1,3)+
          164              3      f(i,j+1,k+1,3)+f(i+1,j+1,k+1,3))
          165     v          p(4)=0.125*(f(i,j,k,4)+f(i+1,j,k,4)+
          166              1      f(i,j+1,k,4)+f(i+1,j+1,k,4)+
          167              2      f(i,j,k+1,4)+f(i+1,j,k+1,4)+
          168              3      f(i,j+1,k+1,4)+f(i+1,j+1,k+1,4))
          169         c
          170     v          u(i,j,k,1)=u(i,j,k,1)
          171              1   -dx*(f(i+1,j+1,k+1,2)+f(i+1,j,k+1,2)
          172              2       -f(i,j+1,k+1,2)-f(i,j,k+1,2)
          173              3       +f(i+1,j+1,k,2)+f(i+1,j,k,2)
          174              4       -f(i,j+1,k,2)-f(i,j,k,2))
          175              5   -dy*(f(i+1,j+1,k+1,3)-f(i+1,j,k+1,3)
          176              6       +f(i,j+1,k+1,3)-f(i,j,k+1,3)
          177              7       +f(i+1,j+1,k,3)-f(i+1,j,k,3)
          178              8       +f(i,j+1,k,3)-f(i,j,k,3))
          179              1   -dz*(f(i+1,j+1,k+1,4)+f(i+1,j,k+1,4)
          180              2       +f(i,j+1,k+1,4)+f(i,j,k+1,4)
          181              3       -f(i+1,j+1,k,4)-f(i+1,j,k,4)
          182              4       -f(i,j+1,k,4)-f(i,j,k,4))
          183     v          u(i,j,k,2)=u(i,j,k,2)
          184              1   -dx*(f(i+1,j+1,k+1,1)+f(i+1,j,k+1,1)
          185              2       -f(i,j+1,k+1,1)-f(i,j,k+1,1)
          186              3       +f(i+1,j+1,k,1)+f(i+1,j,k,1)
          187              4       -f(i,j+1,k,1)-f(i,j,k,1))
          188     v          u(i,j,k,3)=u(i,j,k,3)
          189              1   -dy*(f(i+1,j+1,k+1,1)-f(i+1,j,k+1,1)
          190              2       +f(i,j+1,k+1,1)-f(i,j,k+1,1)
          191              3       +f(i+1,j+1,k,1)-f(i+1,j,k,1)
          192              4       +f(i,j+1,k,1)-f(i,j,k,1))
          193     v          u(i,j,k,4)=u(i,j,k,4)
          194              1   -dz*(f(i+1,j+1,k+1,1)+f(i+1,j,k+1,1)
          195              2       +f(i,j+1,k+1,1)+f(i,j,k+1,1)
          196              3       +f(i+1,j+1,k,1)+f(i+1,j,k,1)
          197              4       +f(i,j+1,k,1)+f(i,j,k,1))
          198         c
          199     v      40  continue
          200         !xocl end spread
          201         c
          202         !xocl overlapfix(u) (id)
          203         !xocl movewait (id)
          204         c
          205         c      preparation of second step
          206         c      second step
          207         c
          208         !xocl spread do /ind
          209     s          do 62 k=1,nz2
          210     s4         do 62 m=1,nb
          211     v4         do 62 j=1,ny2
          212     v4         do 62 i=1,nx2
          213     v4         v(i,j,k,m)=f(i,j,k,m)
          214     v4     62  continue
          215         !xocl end spread
          216         c
          217         !xocl overlapfix(v) (id)
          218         !xocl movewait (id)
          219         c
          220         !xocl spread do /ind
          221     s          do 60 k=2,nz1
          222     s          do 60 j=2,ny1
          223     v          do 60 i=2,nx1
          224         c
          225     v          p(1)=0.125*(u(i,j,k,1)+u(i-1,j,k,1)+
          226              1      u(i,j-1,k,1)+u(i-1,j-1,k,1)+
          227              2      u(i,j,k-1,1)+u(i-1,j,k-1,1)+
          228              3      u(i,j-1,k-1,1)+u(i-1,j-1,k-1,1))
          229     v          p(2)=0.125*(u(i,j,k,2)+u(i-1,j,k,2)+
          230              1      u(i,j-1,k,2)+u(i-1,j-1,k,2)+
          231              2      u(i,j,k-1,2)+u(i-1,j,k-1,2)+
          232              3      u(i,j-1,k-1,2)+u(i-1,j-1,k-1,2))
          233     v          p(3)=0.125*(u(i,j,k,3)+u(i-1,j,k,3)+
          234              1      u(i,j-1,k,3)+u(i-1,j-1,k,3)+
          235              2      u(i,j,k-1,3)+u(i-1,j,k-1,3)+
          236              3      u(i,j-1,k-1,3)+u(i-1,j-1,k-1,3))
          237     v          p(4)=0.125*(u(i,j,k,4)+u(i-1,j,k,4)+
          238              1      u(i,j-1,k,4)+u(i-1,j-1,k,4)+
          239              2      u(i,j,k-1,4)+u(i-1,j,k-1,4)+
          240              3      u(i,j-1,k-1,4)+u(i-1,j-1,k-1,4))
          241         c
          242     v          f(i,j,k,1)=f(i,j,k,1)
          243              1   -dx1*(u(i,j,k,2)+u(i,j-1,k,2)
          244              2        -u(i-1,j,k,2)-u(i-1,j-1,k,2)
          245              3        +u(i,j,k-1,2)+u(i,j-1,k-1,2)
          246              4        -u(i-1,j,k-1,2)-u(i-1,j-1,k-1,2))
          247              5   -dy1*(u(i,j,k,3)-u(i,j-1,k,3)
          248              6        +u(i-1,j,k,3)-u(i-1,j-1,k,3)
          249              7        +u(i,j,k-1,3)-u(i,j-1,k-1,3)
          250              8        +u(i-1,j,k-1,3)-u(i-1,j-1,k-1,3))
          251              1   -dz1*(u(i,j,k,4)+u(i,j-1,k,4)
          252              2        +u(i-1,j,k,4)+u(i-1,j-1,k,4)
          253              3        -u(i,j,k-1,4)-u(i,j-1,k-1,4)
          254              4        -u(i-1,j,k-1,4)-u(i-1,j-1,k-1,4))
          255              5   +dx2*(v(i-1,j,k,1)-2.0*v(i,j,k,1)+v(i+1,j,k,1))
          256              6   +dy2*(v(i,j+1,k,1)-2.0*v(i,j,k,1)+v(i,j-1,k,1))
          257              7   +dz2*(v(i,j,k+1,1)-2.0*v(i,j,k,1)+v(i,j,k-1,1))
          258     v          f(i,j,k,2)=f(i,j,k,2)
          259              1   -dx1*(u(i,j,k,1)+u(i,j-1,k,1)
          260              2        -u(i-1,j,k,1)-u(i-1,j-1,k,1)
          261              3        +u(i,j,k-1,1)+u(i,j-1,k-1,1)
          262              4        -u(i-1,j,k-1,1)-u(i-1,j-1,k-1,1))
          263              5   +dx2*(v(i-1,j,k,2)-2.0*v(i,j,k,2)+v(i+1,j,k,2))
          264              6   +dy2*(v(i,j+1,k,2)-2.0*v(i,j,k,2)+v(i,j-1,k,2))
          265              7   +dz2*(v(i,j,k+1,2)-2.0*v(i,j,k,2)+v(i,j,k-1,2))
          266     v          f(i,j,k,3)=f(i,j,k,3)
          267              1   -dy1*(u(i,j,k,1)-u(i,j-1,k,1)
          268              2        +u(i-1,j,k,1)-u(i-1,j-1,k,1)
          269              3        +u(i,j,k-1,1)-u(i,j-1,k-1,1)
          270              4        +u(i-1,j,k-1,1)-u(i-1,j-1,k-1,1))
          271              5   +dx2*(v(i-1,j,k,3)-2.0*v(i,j,k,3)+v(i+1,j,k,3))
          272              6   +dy2*(v(i,j+1,k,3)-2.0*v(i,j,k,3)+v(i,j-1,k,3))
          273              7   +dz2*(v(i,j,k+1,3)-2.0*v(i,j,k,3)+v(i,j,k-1,3))
          274     v          f(i,j,k,4)=f(i,j,k,4)
          275              1   -dz1*(u(i,j,k,1)+u(i,j-1,k,1)
          276              2        +u(i-1,j,k,1)+u(i-1,j-1,k,1)
          277              3        -u(i,j,k-1,1)-u(i,j-1,k-1,1)
          278              4        -u(i-1,j,k-1,1)-u(i-1,j-1,k-1,1))
          279              5   +dx2*(v(i-1,j,k,4)-2.0*v(i,j,k,4)+v(i+1,j,k,4))
          280              6   +dy2*(v(i,j+1,k,4)-2.0*v(i,j,k,4)+v(i,j-1,k,4))
          281              7   +dz2*(v(i,j,k+1,4)-2.0*v(i,j,k,4)+v(i,j,k-1,4))
          282         c
          283     v      60  continue
          284         !xocl end spread
          285         c
          286         c      end of 1 time step advance
          287         c
          288           100  continue
          289           200  continue
          290           300  continue
          291         c
          292     s          call clock(zt2)
          293     s          zt1=zt1-zt0
          294     s          zt2=zt2-zt0
          295     s          zt=zt2-zt1
          296     s          write(6,402) ii,zt0,zt1,zt2,zt
          297           402  format(1h , i6,1pe12.3,3(0pf12.5))
          298         c
          299         c      write the output data
          300         c
          301           500  continue
          302             9  continue
          303         !xocl end parallel
          304         c
          305                stop
          306                end

 Procedure information: program name(pwave3)
                        Statements:       130, diagnostics:0
                        Lines     :       306, highest severity code: 00
                        Dvt size  :         0 bytes*iteration count

 UXP/V  Fortran/VPP V20L20  Sat Aug 12 06:36:02 2000

 inc line-no. inc
          307                subroutine clock(ti)
          308                real*8 ti,ti1
          309                ti=1.0d0
          310                ti1=1.0d0
          311                call gettod(ti1)
          312                ti=1.0d-6*ti1
          313         c      x=0.0
          314         c      y=secnds(x)
          315         c      ti=1.0d0*y
          316                return
          317                end

 Procedure information: program name(clock)
                        Statements:         8, diagnostics:0
                        Lines     :        11, highest severity code: 00
                        Dvt size  :         0 bytes*iteration count

 UXP/V  Fortran/VPP V20L20  Sat Aug 12 06:36:02 2000

 inc line-no. inc
          318                subroutine ainit1(ppin)
          319                parameter(npe=16)
          320         !xocl processor pe(npe)
          321         !xocl subprocessor pes(npe)=pe(1:npe)
          322                parameter(nx=100,ny=100,nz=100)
          323                parameter(nb=4,iip0=8,iiq0=1,iir0=1,last=4)
          324                parameter(nx1=nx+1,nx2=nx+2,ny1=ny+1,ny2=ny+2)
          325                parameter(nz1=nz+1,nz2=nz+2)
          326                parameter(n1=nx2,n2=n1*ny2,n3=n2*nz2,noinp=30)
          327                parameter(n4=n3*nb)
          328         !xocl index partition ind=(pes,index=1:nz2,part=band)
          329         !xocl index partition indo=(pes,index=1:nz2,part=band,overlap=(1,1))
          330         c
          331                real*8 f(nx2,ny2,nz2,nb)
          332                real*8 gf(nx2,ny2,nz2,nb)
          333                dimension ppin(10)
          334         !xocl local f(:,:,/indo,:)
          335         !xocl global gf
          336                equivalence (gf,f)
          337                common /blk/gf
          338         c
          339         !xocl overlapfix(f) (id)
          340         !xocl movewait (id)
          341         c
          342                xl=ppin(1)
          343                yl=ppin(2)
          344                zl=ppin(3)
          345                dxl=ppin(4)
          346                dyl=ppin(5)
          347                dzl=ppin(6)
          348                dn=ppin(7)
          349                dv=ppin(8)
          350                hx=xl/float(nx1)
          351                hy=yl/float(ny1)
          352                hz=zl/float(nz1)
          353         c
          354         !xocl spread do /ind
          355     s          do 10 k=1,nz2
          356     v          z=0.5*hz*(2*k-nz2-1)
          357     v          do 10 j=1,ny2
          358     v          y=0.5*hy*(2*j-ny2-1)
          359     v4         do 10 i=1,nx2
          360     v4         x=0.5*hx*(2*i-nx2-1)
          361     v4         dn1=0.0
          362     v4         dv1=0.0
          363     v4         ax1=sqrt(x*x+y*y+z*z)
          364     v4         if(ax1.le.dxl) dn1=dn
          365     v4         f(i,j,k,1)=dn1
          366     v4         f(i,j,k,2)=0.0
          367     v4         f(i,j,k,3)=0.0
          368     v4         f(i,j,k,4)=0.0
          369     v4     10  continue
          370         !xocl end spread
          371                return
          372                end

 Procedure information: program name(ainit1)
                        Statements:        41, diagnostics:0
                        Lines     :        55, highest severity code: 00
                        Dvt size  :         0 bytes*iteration count

 Total information:     procedures: 3 unit
                        Statements:       179, diagnostics:0
                        Lines     :       372, highest severity code: 00
                        Dvt size  :         0 bytes*iteration count
