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=======================================================================