Files
sics/difrac/cinput.f
cvs 714b8ae84d - Fixed a bug which caused the SICServer to die when a socket was broken.
- Fixed many things in DIFRAC subsystem:
  * Recoded tcentr.f etc so that the course centering will work and will not
    go into an endless loop.
  * fixed boundary overwrites which occurred when yesno or alfnum where
    uset to get a single character and several were given.
  * Addeded documentation for DIFRAC
- Added tcl-files which  support the WWW status system
2000-03-31 13:16:50 +00:00

57 lines
2.1 KiB
Fortran

C-----------------------------------------------------------------------
C Input from the existing cell
C-----------------------------------------------------------------------
SUBROUTINE CINPUT (IOUT,PRIM,ANPRIM,TRANSF)
INCLUDE 'COMDIF'
DIMENSION A(3),ALP(3),SYS(7),TRANS(3,3,7),AA(3,3),PRIM(3),
$ ANPRIM(3),TRANSF(3,3),H(3,3)
CHARACTER CATMOD*1,SYS*1,LINE*80
DATA SYS/'P','A','B','C','I','F','R'/
DATA TRANS/ 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,.5,.5,
$ 0, 0, 1, .5, 0,.5, 0, 1, 0, 0, 0, 1, .5,.5, 0,
$ 0, 1, 0, 0, 0, 1, .5,.5,.5, 0, 1, 0, 0, 0, 1,
$ .5,.5, 0, 0,.5,.5, .5, 0,.5,
$ .666667, .333333, .333333,
$ -.333333, .333333, .333333,
$ -.333333, -.666667, .333333/
RADEG = 180./3.141593
DO 100 I = 1,3
A(I) = AP(I)
ALP(I) = RADEG*ATAN2(SANG(I),CANG(I))
100 CONTINUE
110 WRITE (COUT,10000)
CALL ALFNUM (LINE)
CATMOD = LINE(1:1)
IF (CATMOD .EQ. ' ') CATMOD = 'P'
READ (CATMOD,11000) ATMOD
WRITE (COUT,12000) A,ALP,CATMOD
CALL GWRITE (IOUT,' ')
DO 120 I = 1,7
IF (CATMOD .EQ. SYS(I)) GO TO 130
120 CONTINUE
GO TO 110
C-----------------------------------------------------------------------
C CRAP is a dummy floating argument
C-----------------------------------------------------------------------
130 CALL MATRIX(A,ALP,AA,CRAP,'ORTHOG')
DO 140 N = 1,3
CALL MATRIX(AA,TRANS(1,N,I),H(1,N),CRAP,'MATVEC')
140 CONTINUE
DO 150 N = 1,3
CALL MATRIX(AA,TRANS(1,N,I),PRIM(N),CRAP,'LENGTH')
J = MOD(N,3) + 1
K = 6 - N - J
CALL MATRIX(H(1,J),H(1,K),COSNG,CRAP,'SCALPR')
ANPRIM(N) = ACOS(COSNG)*RADEG
150 CONTINUE
DO 160 N = 1,3
DO 160 NN = 1,3
TRANSF(NN,N) = TRANS(N,NN,I)
160 CONTINUE
CALL BURGER(IOUT,PRIM,ANPRIM,TRANSF)
RETURN
10000 FORMAT (' Lattice Type (P) ? ',$)
11000 FORMAT (A1)
12000 FORMAT (' Input Cell:',F8.3,5F10.3/12X,'Lattice Type ',A)
END