PROGRAM config2pdb C Program to convert config format file of Li Ju to .pdb file. IMPLICIT DOUBLE PRECISION (A-H,O-Z) PARAMETER (NM=100000) DIMENSION SX(NM),SY(NM),SZ(NM),H(3,3),X(NM),Y(NM),Z(NM) DIMENSION NTYPE(NM) CHARACTER NAME(NM)*2,NAME_PDB*60,NAME_CONFIG*60,BUF*100 DATA LP_CONFIG,LP_PDB /25,26/ PRINT *,'Input name of the config file (J.L. format):' READ (*,'(A60)') NAME_CONFIG OPEN (UNIT=LP_CONFIG,STATUS='UNKNOWN',FORM='UNFORMATTED', A FILE=NAME_CONFIG) READ (LP_CONFIG) N READ (LP_CONFIG) (NTYPE(I),I=1,N) READ (LP_CONFIG) ((H(I,J),J=1,3), I=1,3) READ (LP_CONFIG) (SX(I),SY(I),SZ(I),I=1,N) CLOSE (LP_CONFIG) DO I=1,N X(I) = H(1,1)*SX(I)+H(2,1)*SY(I)+H(3,1)*SZ(I) Y(I) = H(1,2)*SX(I)+H(2,2)*SY(I)+H(3,2)*SZ(I) Z(I) = H(1,3)*SX(I)+H(2,3)*SY(I)+H(3,3)*SZ(I) IF (NTYPE(I).EQ.1) NAME(I)='Si' IF (NTYPE(I).EQ.2) NAME(I)='C ' ENDDO PRINT *,'Input name of the .pdb file:' READ (*,'(A60)') NAME_PDB OPEN (UNIT=LP_PDB,STATUS='UNKNOWN',FORM='FORMATTED', A FILE=NAME_PDB) C Header: BUF = 'HEADER CONVERTED FROM CONFIG FILE '// A NAME_CONFIG(1:INDEX(NAME_CONFIG,' ')-1) // A ' BY config2pdb .' WRITE(LP_PDB,'(A100)') BUF C H matrix in footnote -1 and 0: WRITE(LP_PDB, A '("FTNOTE -1 H-MATRIX(11,12,13,21,22,23,31,32,33):")') WRITE(LP_PDB,'(A10,9F8.3)') A 'FTNOTE 0', A H(1,1),H(1,2),H(1,3),H(2,1),H(2,2),H(2,3),H(3,1),H(3,2),H(3,3) C Crystal Dimensions: WRITE(LP_PDB,'(A7,3(F8.3,1X),A36)') A 'CRYST1 ',H(1,1),H(2,2),H(3,3), A '90.000 90.000 90.000 P 1 1' C Atom positions: WRITE(LP_PDB,111) (I,NAME(I),' 1',X(I),Y(I),Z(I),I=1,N) 111 FORMAT('ATOM ',I5,1X,A2,10X,A2,4X,3F8.3) CLOSE(LP_PDB) STOP END