program xyz_demo ! !******************************************************************************* ! !! XYZ_DEMO demonstrates a sample use of RB_3DM_XYZFILE. ! ! ! Modified: ! ! 29 June 2000 ! ! Author: ! ! John Burkardt ! integer, parameter :: maxi = 121 integer, parameter :: maxj = 41 integer, parameter :: maxk = 21 integer, parameter :: maxgrid = 7 ! integer i integer idim(maxgrid) integer ierror integer igrid integer ios integer iunit integer j integer jdim(maxgrid) integer k integer kdim(maxgrid) integer ngrid real x(maxi,maxj,maxk,maxgrid) real xmax real xmin real y(maxi,maxj,maxk,maxgrid) real ymax real ymin real z(maxi,maxj,maxk,maxgrid) real zmax real zmin ! write ( *, * ) ' ' write ( *, * ) 'XYZ_DEMO' write ( *, * ) ' Read a (big) (nasty) PLOT3D file.' write ( *, * ) ' This file is a 3D XYZ file with multiple grids.' ierror = 0 iunit = 1 open ( unit = iunit, file = '3dm_xyz.dat', form = 'unformatted', & status = 'old', iostat = ios ) if ( ios /= 0 ) then ierror = ios write ( *, * ) ' ' write ( *, * ) 'XYZ_DEMO - Fatal error!' write ( *, * ) ' Could not open the XYZ direct access file.' stop end if call rb_3dm_xyzfile ( iunit, idim, jdim, kdim, maxi, maxj, maxk, & maxgrid, ngrid, x, y, z, ierror ) close ( unit = iunit ) if ( ierror /= 0 ) then write ( *, * ) 'IERROR = ', ierror end if write ( *, * ) ' ' write ( *, * ) 'NGRID = ', ngrid write ( *, * ) ' ' write ( *, * ) ' I, IDIM(I), JDIM(I), KDIM(I)' write ( *, * ) ' ' do i = 1, ngrid write ( *, '(4i6)' ) i, idim(i), jdim(i), kdim(i) end do xmin = x(1,1,1,1) xmax = x(1,1,1,1) ymin = y(1,1,1,1) ymax = y(1,1,1,1) zmin = z(1,1,1,1) zmax = z(1,1,1,1) do igrid = 1, ngrid do i = 1, idim(igrid) do j = 1, jdim(igrid) do k = 1, kdim(igrid) xmin = min ( xmin, x(i,j,k,igrid) ) xmax = max ( xmax, x(i,j,k,igrid) ) ymin = min ( ymin, y(i,j,k,igrid) ) ymax = max ( ymax, y(i,j,k,igrid) ) zmin = min ( zmin, z(i,j,k,igrid) ) zmax = max ( zmax, z(i,j,k,igrid) ) end do end do end do end do write ( *, * ) ' ' write ( *, * ) 'XYZ ranges:' write ( *, * ) ' ' write ( *, * ) 'XMIN = ', xmin, ' XMAX = ', xmax write ( *, * ) 'YMIN = ', ymin, ' YMAX = ', ymax write ( *, * ) 'ZMIN = ', zmin, ' ZMAX = ', zmax write ( *, * ) ' ' write ( *, * ) 'XYZ_DEMO' write ( *, * ) ' Normal end of execution.' stop end