C======================================================================= C======================================================================= C C example program heat: C explicitly solves the 1D diffusion equation C C======================================================================= C======================================================================= C======================================================================= C C host process-main program C C======================================================================= subroutine hostmain include 'mesh_uparms.h' include 'mesh_parms.h' include 'mesh_common.h' C=======grid size C moved to archetype file mesh_uparms.h C integer NX C parameter (NX=100) integer NSTEPS parameter (NSTEPS=100) C=======grid variables (whole array in host) real uk(1:NX) dx = 1.0/NX dt = 0.5*dx*dx C=======initialization do i=2,NX-1 uk(i)=0.0 enddo uk(1)=1.0 uk(NX)=1.0 call mesh_HtoG_host(uk) C=======time step loop do k=1,NSTEPS C===========grid computation (grid processes only) C===========sequential output call mesh_GtoH_host(uk) print*, 'timestep ', k print 25,(uk(I),I=1,NX) 25 format(4X,E15.5) enddo end C======================================================================= C C grid process-main program C C======================================================================= subroutine gridmain include 'mesh_uparms.h' include 'mesh_parms.h' include 'mesh_common.h' C=======grid size C moved to archetype file mesh_uparms.H C integer NX C parameter (NX=100) integer NSTEPS parameter (NSTEPS=100) C=======grid variables (local sections) real uk(IXLO:IXHI),ukp1(IXLO:IXHI) dx = 1.0/NX dt = 0.5*dx*dx C=======initialization call mesh_HtoG_grid(uk) C=======time step loop do k=1,NSTEPS C===========grid computation call mesh_update_bdry(uk) call xintersect(2,NX-1,istart,iend,iempty) do i=istart,iend ukp1(i)=uk(i)+(dt/(dx*dx))*(uk(i+1)-2*uk(i)+uk(i-1)) enddo do i=istart,iend uk(i)=ukp1(i) enddo C===========sequential output (I/O in host process only) call mesh_GtoH_grid(uk) enddo end C=======================================================================