/* symtry.f -- translated by f2c (version 19950314).
   You must link the resulting object file with the libraries:
	-lF77 -lI77 -lm   (in that order)
*/

#include "f2c.h"

/* Common Block Declarations */

struct {
    char argz[512];
} argz_;

#define argz_1 argz_

struct {
    doublereal geo[258]	/* was [3][86] */;
} geom_;

#define geom_1 geom_

struct {
    integer ndep, locpar[258], idepfn[258], locdep[258];
} geosym_;

#define geosym_1 geosym_

/* Subroutine */ int symtry_(void)
{
    /* System generated locals */
    integer i__1;

    /* Local variables */
    static integer locn, i, j;
    static doublereal value;
    extern /* Subroutine */ int haddon_(doublereal *, integer *, integer *, 
	    integer *, doublereal *);

/* COMDECK SIZES */
/************************************************************************
****/
/*  THIS FILE CONTAINS ALL THE ARRAY SIZES FOR USE IN MOPAC.              
**/
/*                                                                        
**/
/*    THERE ARE ONLY  PARAMETERS THAT THE PROGRAMMER NEED SET:            
**/
/*    MAXHEV = MAXIMUM NUMBER OF HEAVY ATOMS (HEAVY: NON-HYDROGEN ATOMS)  
**/
/*    MAXLIT = MAXIMUM NUMBER OF HYDROGEN ATOMS.                          
**/
/*    MAXTIM = DEFAULT TIME FOR A JOB. (SECONDS)                          
**/
/*    MAXDMP = DEFAULT TIME FOR AUTOMATIC RESTART FILE GENERATION (SECS)  
**/
/*                                                                        
**/
/*                                                                        
**/
/************************************************************************
****/
/*                                                                        
**/
/*  THE FOLLOWING CODE DOES NOT NEED TO BE ALTERED BY THE PROGRAMMER      
**/
/*                                                                        
**/
/************************************************************************
****/
/*                                                                        
**/
/*   ALL OTHER PARAMETERS ARE DERIVED FUNCTIONS OF THESE TWO PARAMETERS   
**/
/*                                                                        
**/
/*     NAME                   DEFINITION                                  
**/
/*    NUMATM         MAXIMUM NUMBER OF ATOMS ALLOWED.                     
**/
/*    MAXORB         MAXIMUM NUMBER OF ORBITALS ALLOWED.                  
**/
/*    MAXPAR         MAXIMUM NUMBER OF PARAMETERS FOR OPTIMISATION.       
**/
/*    N2ELEC         MAXIMUM NUMBER OF TWO ELECTRON INTEGRALS ALLOWED.    
**/
/*    MPACK          AREA OF LOWER HALF TRIANGLE OF DENSITY MATRIX.       
**/
/*    MORB2          SQUARE OF THE MAXIMUM NUMBER OF ORBITALS ALLOWED.    
**/
/*    MAXHES         AREA OF HESSIAN MATRIX                               
**/
/************************************************************************
****/
/************************************************************************
****/
/*  FOR SHORT VERSION USE LINE WITH NMECI=1, FOR LONG VERSION USE LINE    
**/
/*  WITH NMECI=10                                                         
**/
/************************************************************************
****/
/*     PARAMETER (NMECI=1,   NPULAY=1) */
/************************************************************************
****/
/* DECK MOPAC */
/* next line added for Unix implementation for command line arguments */

/* ********************************************************************** 
*/

/*  SYMTRY COMPUTES THE BOND LENGTHS AND ANGLES THAT ARE FUNCTIONS OF */
/*         OTHER BOND LENGTHS AND ANGLES. */

/* ON INPUT GEO     = KNOWN INTERNAL COORDINATES */
/*          NDEP    = NUMBER OF DEPENDENCY FUNCTIONS. */
/*          IDEPFN  = ARRAY OF DEPENDENCY FUNCTIONS. */
/*          LOCDEP  = ARRAY OF LABELS OF DEPENDENT ATOMS. */
/*          LOCPAR  = ARRAY OF LABELS OF REFERENCE ATOMS. */

/*  ON OUTPUT THE ARRAY "GEO" IS FILLED */
/* ***********************************************************************
 */

/*     NOW COMPUTE THE DEPENDENT PARAMETERS. */

    i__1 = geosym_1.ndep;
    for (i = 1; i <= i__1; ++i) {
	haddon_(&value, &locn, &geosym_1.idepfn[i - 1], &geosym_1.locpar[i - 
		1], geom_1.geo);
	j = geosym_1.locdep[i - 1];
/* L10: */
	geom_1.geo[locn + j * 3 - 4] = value;
    }
    return 0;
} /* symtry_ */

