Dear Netters, Some time ago I wrote two short FORTRAN programs: RANKZ and RANKFG. They can serve as handy tools for dealing with the normal coordinate analysis (NCA) using the GF-matrix Wilson method. To my knowledge, NCA is most commonly done by running well-known 1963 Schachtschneider & Mortimer programs (or their modifications). The basic idea is still the same: 1) Generate inverse of the kinetic energy matrix G 2) Generate the force constant matrix F_ij = sum_k (Z_ijk*f_k) (where f_k denotes the set of independent force constants, Z_ijk is the so-called Z-matrix which combines f_k 's to give F-matrix) [NOTE: - please, do not confuse the NCA Z-matrix with the "ab initio" Z-matrix (providing molecular geometry in internal coordinates) !!!] 3) Symmetrize matrices G and F (via Z) 4) Solve GF secular equation to obtain frequencies and normal eigenvectors. Generating good input for large molecules is still an art rather than routine, especially for beginners (like me). It is not easy to define sufficiently good set of internal coordinates and independent force constants. Moreover, globally independent force constants may become dependent within one symmetry block (after symmetrization of G and Z matrices). RANKZ and RANKFG programs test how good is the NCA input. RANKZ calculates rank of the combined Z-matrix (one or several combined symmetry blocks or unsymmetrized) using Gauss elimination. The input file(s) (with extension .ZMAT --- though it may be changed if needed) contain(s) the non-zero elements of Z-matrix in format (3I3,F9.6). The input is terminated by a sequence -1 0 0 0.000000. User can combine several blocks of symmetrized Z-matrix, each in separate '*.ZMAT' file, by answering 'N' when program asks 'END OF DATA ?' . The output file (extension '*.RAOUT') produced by the program contains a list of offending force constants which are either dependent or missing. RANKFG uses singular value decomposition to calculate the rank of the real symmetric matrix. It can be therefore used to test either G or F matrices. The rank of these matrices tells the number of frequencies from NCA calculations which will result in reasonable values within each of the symmetry blocks (this number depends on the redundancy of internal coordinates). The number can be then compared with the group-theoretical value. To calculate the rank of the G-matrix (or its symmetry block) the user should input '0' as a 'number of force constants'. The input file in this case should have an extension '*.GMAT' and should contain non-zero elements of G-matrix in the format (2I3,F12.6). The terminating sequence which markes the end of the list is -1 0 0.000000. The output produced by the program consists of the rank and the singular values of G-matrix (file *.RAOUTG). To calculate rank of F-matrix (or its symmetry block) user should input: the actual number of force constants, specify corresponding Z-matrix input file (*.ZMAT), and specify the file containing force constants (extension *.FI). The F-matrix is then calculated by the program. The format of Z-matrix file is the same as that of RANKZ input file. The force constant file *.FI has a free input format. In the output program gives the rank of the F-matrix and its singular values (file *.RAOUTF). Please, report bugs to chem86@jetson.uh.edu (Robert Fraczkiewicz) --- The programs and examples are available from Computational Chemistry List archives on www.ccl.net in directory pub/chemistry/software/normal_coor_anal. The files are: This file: readme Source code of the RANKZ program: rankz.f Source code of the RANKFG program: rankfg.f Examples of input files for some 60-atom molecule: (One symmetry block A2G, dimension=20, number of force constants=99) Z-matrix input file : a2g.zmat G-matrix input file : a2g.gmat Force constant file : a2g.fi Examples of output files: RANKZ output : a2g.raout RANKFG outputs : a2g.raoutg and a2g.raoutf Robert Fraczkiewicz Department of Chemistry University of Houston CHEM86@jetson.uh.edu