program q_demo ! !******************************************************************************* ! !! Q_DEMO demonstrates a sample use of RB_3DM_QFILE. ! ! ! Modified: ! ! 29 June 2000 ! ! Author: ! ! John Burkardt ! integer, parameter :: maxgrid = 7 integer, parameter :: maxi = 121 integer, parameter :: maxj = 41 integer, parameter :: maxk = 21 ! real alpha(maxgrid) real fsmach(maxgrid) integer i integer idim(maxgrid) integer ierror integer igrid integer ios integer iunit integer j integer jdim(maxgrid) integer k integer kdim(maxgrid) integer l integer ngrid real q(maxi,maxj,maxk,5,maxgrid) real qmax(5) real qmin(5) real re(maxgrid) real time(maxgrid) ! write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'Q_DEMO' write ( *, '(a)' ) ' Read a (big) (nasty) PLOT3D file.' write ( *, '(a)' ) ' This file is a 3D Q file with multiple grids.' ierror = 0 iunit = 1 open ( unit = iunit, file = '3dm_q.dat', form = 'unformatted', & status = 'old', iostat = ios ) if ( ios /= 0 ) then ierror = ios write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'Q_DEMO - Fatal error!' write ( *, '(a)' ) ' Could not open the Q file.' stop end if call rb_3dm_qfile ( iunit, idim, jdim, kdim, maxi, maxj, maxk, & maxgrid, ngrid, fsmach, alpha, re, time, q, ierror ) close ( unit = iunit ) if ( ierror /= 0 ) then write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'Q_DEMO - Fatal error!' write ( *, '(a)' ) ' Error return from RB_3DM_QFILE:' write ( *, '(a,i6)' ) ' IERROR = ', ierror stop end if write ( *, '(a)' ) ' ' write ( *, '(a,i6)' ) 'NGRID = ', ngrid write ( *, '(a)' ) ' ' write ( *, '(a)' ) ' I, IDIM(I), JDIM(I), KDIM(I)' write ( *, '(a)' ) ' ' do i = 1, ngrid write ( *, '(4i6)' ) i, idim(i), jdim(i), kdim(i) end do write ( *, '(a)' ) ' ' write ( *, '(a)' ) ' I, FSMACH(I), ALPHA(I), RE(I), TIME(I)' write ( *, '(a)' ) ' ' do i = 1, ngrid write ( *, '(i6,4g14.6)' ) i, fsmach(i), alpha(i), re(i), time(i) end do do l = 1, 5 qmin(l) = q(1,1,1,1,1) qmax(l) = q(1,1,1,1,1) do igrid = 1, ngrid do i = 1, idim(igrid) do j = 1, jdim(igrid) do k = 1, kdim(igrid) qmin(l) = min ( qmin(l), q(i,j,k,l,igrid) ) qmax(l) = max ( qmax(l), q(i,j,k,l,igrid) ) end do end do end do end do end do write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'Q ranges:' write ( *, '(a)' ) ' ' do l = 1, 5 write ( *, '(i6,2g14.6)' ) l, qmin(l), qmax(l) end do write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'Q_DEMO' write ( *, '(a)' ) ' Normal end of execution.' stop end