C----------------------------------------------------------------------- C File: scale.for C Date: 09/12/1997 C Version: 96B C----------------------------------------------------------------------- C Tibor F. Nagy, Department of Physics, MSU C nagy_t@pa.msu.edu C----------------------------------------------------------------------- C Program to check the scaling of an AVS/Explorer field-file. C----------------------------------------------------------------------- PROGRAM SCALE C----------------------------------------------------------------------- IMPLICIT NONE INTEGER LIN,IER,NX,NY,NZ,I,J,K INTEGER IDUM,ILOW,IHIGH,FGETC REAL*4 RDUM(13),FLDMIN,FLDMAX CHARACTER FILNAM*30,C*1 INTEGER LENG INTEGER WMIN,WMAX,WORK C----------------------------------------------------------------------- WRITE(6,*) 'Scale checking of an AVS-field.' CALL INQNAM(FILNAM,LENG) LIN = 8 OPEN(LIN,FILE=FILNAM(1:LENG)//'.dat',FORM='UNFORMATTED', # STATUS='UNKNOWN') IER = FGETC(LIN,C) NX = ICHAR(C) IER = FGETC(LIN,C) NY = ICHAR(C) IER = FGETC(LIN,C) NZ = ICHAR(C) WMIN = 255 WMAX = 0 DO I=1,NZ DO J=1,NY DO K=1,NX IER = FGETC(LIN,C) WORK = ICHAR(C) IF (WORK.LT.WMIN) WMIN = WORK IF (WORK.GT.WMAX) WMAX = WORK ENDDO ENDDO ENDDO READ(LIN) IDUM,RDUM,ILOW,FLDMIN,IHIGH,FLDMAX CLOSE(LIN) WRITE(6,*) WRITE(6,'(1X,3(A,I4))') 'Dimensions: ',NX,' X ',NY,' X ',NZ WRITE(6,*) WRITE(6,'(1X,A)') 'Values in the field:' WRITE(6,'(1X,A,I5)') 'Min: ',WMIN WRITE(6,'(1X,A,I5)') 'Max: ',WMAX WRITE(6,*) WRITE(6,'(1X,A)') 'Scaling at the end of the file:' WRITE(6,'(1X,A,I4,A,F8.3)') 'Min: ',ILOW, ' = ',FLDMIN WRITE(6,'(1X,A,I4,A,F8.3)') 'Max: ',IHIGH,' = ',FLDMAX STOP END C End of program SCALE C----------------------------------------------------------------------- SUBROUTINE INQNAM (FILNAM,LENG) C----------------------------------------------------------------------- C Read a string and compute the length of the string C----------------------------------------------------------------------- IMPLICIT NONE CHARACTER FILNAM*30 INTEGER LENG C----------------------------------------------------------------------- 1 WRITE(6,'(1X,A,$)') 'Enter filename. (no extension) ' READ (5,'(A30)') FILNAM LENG = 30 DO WHILE (FILNAM(LENG:LENG).EQ.' ') LENG = LENG - 1 ENDDO IF (LENG.LT.1) GOTO 1 RETURN END C End of subroutine INQNAM C----------------------------------------------------------------------- C23456789012345678901234567890123456789012345678901234567890123456789012 C-----------------------------------------------------------------------