Initial revision
This commit is contained in:
76
difrac/angrw.f
Normal file
76
difrac/angrw.f
Normal file
@@ -0,0 +1,76 @@
|
||||
C-----------------------------------------------------------------------
|
||||
C Routine to read or write the alignment angles from IDATA.DA
|
||||
C
|
||||
C The call is CALL ANGRW (IRDWRT,NANG,NUM,NRECS,IOFF) where
|
||||
C IRDWRT is 0/1 for read or write;
|
||||
C NANG is the number of angles to be used;
|
||||
C NUM is the number of reflections;
|
||||
C NRECS is the record number to start the operation;
|
||||
C IOFF is the offset in the ACOUNT array.
|
||||
C The ACOUNT array is equivalenced to the angle arrays as :--
|
||||
C DIMENSION THETAS(NSIZE),OMEGAS(NSIZE),CHIS(NSIZE),PHIS(NSIZE),
|
||||
C $ ICNT(NSIZE),
|
||||
C $ THETAP(NSIZE),OMEGAP(NSIZE),CHIP(NSIZE),PHIP(NSIZE)
|
||||
C EQUIVALENCE (ACOUNT( 1),THETAS(1)),
|
||||
C $ (ACOUNT( NSIZE*1),OMEGAS(1)),
|
||||
C $ (ACOUNT(2*NSIZE+1),CHIS(1)),
|
||||
C $ (ACOUNT(3*NSIZE+1),PHIS(1)),
|
||||
C $ (ACOUNT(4*NSIZE+1),ICNT(1)),
|
||||
C $ (ACOUNT(5*NSIZE+1),THETAP(1)),
|
||||
C $ (ACOUNT(6*NSIZE+1),OMEGAP(1)),
|
||||
C $ (ACOUNT(7*NSIZE+1),CHIP(1)),
|
||||
C $ (ACOUNT(8*NSIZE+1),PHIP(1))
|
||||
C-----------------------------------------------------------------------
|
||||
SUBROUTINE ANGRW (IRDWRT,NANG,NUM,NRECS,IOFF)
|
||||
INCLUDE 'COMDIF'
|
||||
C-----------------------------------------------------------------------
|
||||
C Calculate the ACOUNT address offset and number of reads or writes
|
||||
C-----------------------------------------------------------------------
|
||||
NOFF = 0
|
||||
IF (IOFF .EQ. 1) NOFF = 5*NSIZE
|
||||
NRW = (NSIZE + 79)/80
|
||||
NADD = NOFF
|
||||
NREC = NRECS
|
||||
C-----------------------------------------------------------------------
|
||||
C Read data from the file
|
||||
C-----------------------------------------------------------------------
|
||||
IF (IRDWRT .EQ. 0) THEN
|
||||
DO 110 N = 1,NANG
|
||||
NADD1 = NADD + 1
|
||||
NADD2 = NADD + 80
|
||||
DO 100 J = 1,NRW
|
||||
IF (N .EQ. 1 .AND. J .EQ. 1) THEN
|
||||
READ (ISD,REC=NREC) NUM,(ACOUNT(I),I = NADD1,NADD2)
|
||||
ELSE
|
||||
READ (ISD,REC=NREC) (ACOUNT(I),I = NADD1,NADD2)
|
||||
ENDIF
|
||||
NREC = NREC + 1
|
||||
NADD1 = NADD2 + 1
|
||||
NADD2 = NADD2 + 80
|
||||
IF (NADD2 .GT. NADD+NSIZE) NADD2 = NADD + NSIZE
|
||||
100 CONTINUE
|
||||
NADD = NADD + NSIZE
|
||||
110 CONTINUE
|
||||
C-----------------------------------------------------------------------
|
||||
C Write data to the file
|
||||
C-----------------------------------------------------------------------
|
||||
ELSE
|
||||
DO 130 N = 1,NANG
|
||||
NADD1 = NADD + 1
|
||||
NADD2 = NADD + 80
|
||||
DO 120 J = 1,NRW
|
||||
IF (N .EQ. 1 .AND. J .EQ. 1) THEN
|
||||
WRITE (ISD,REC=NREC) NUM,(ACOUNT(I),I = NADD1,NADD2)
|
||||
ELSE
|
||||
WRITE (ISD,REC=NREC) (ACOUNT(I),I = NADD1,NADD2)
|
||||
ENDIF
|
||||
NREC = NREC + 1
|
||||
NADD1 = NADD2 + 1
|
||||
NADD2 = NADD2 + 80
|
||||
IF (NADD2 .GT. NADD+NSIZE) NADD2 = NADD + NSIZE
|
||||
120 CONTINUE
|
||||
NADD = NADD + NSIZE
|
||||
130 CONTINUE
|
||||
ENDIF
|
||||
RETURN
|
||||
END
|
||||
Reference in New Issue
Block a user