Code beautification with uncrustify
[alexxy/gromacs.git] / src / programs / grompp / tomorse.c
index bd25f712a5f5addddd4d6d969225f14ade07a854..bb427385b7f1a3bb3bbf056fe1332479d8db979b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * 
+ *
  *                This source code is part of
- * 
+ *
  *                 G   R   O   M   A   C   S
- * 
+ *
  *          GROningen MAchine for Chemical Simulations
- * 
+ *
  *                        VERSION 3.2.0
  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
- * 
+ *
  * If you want to redistribute modifications, please consider that
  * scientific software is very special. Version control is crucial -
  * bugs must be traceable. We will be happy to consider code for
  * inclusion in the official distribution, but derived work must not
  * be called official GROMACS. Details are found in the README & COPYING
  * files - if they are missing, get the official version at www.gromacs.org.
- * 
+ *
  * To help us fund GROMACS development, we humbly ask that you cite
  * the papers on the package - you can find them in the top README file.
- * 
+ *
  * For more info, check our website at http://www.gromacs.org
- * 
+ *
  * And Hey:
  * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
  */
 #include "macros.h"
 
 typedef struct {
-  char *ai,*aj;
-  real e_diss;
+    char *ai, *aj;
+    real  e_diss;
 } t_2morse;
 
 static t_2morse *read_dissociation_energies(int *n2morse)
 {
-  FILE     *fp;
-  char     ai[32],aj[32];
-  double   e_diss;
-  const char *fn="edissoc.dat";
-  t_2morse *t2m=NULL;
-  int      maxn2m=0,n2m=0;
-  int      nread;
-  
-  /* Open the file with dissociation energies */
-  fp = libopen(fn);
-  do {
-    /* Try and read two atom names and an energy term from it */
-    nread = fscanf(fp,"%s%s%lf",ai,aj,&e_diss);
-    if (nread == 3) {
-      /* If we got three terms, it probably was OK, no further checking */
-      if (n2m >= maxn2m) {
-       /* Increase memory for 16 at once, some mallocs are stupid */
-       maxn2m += 16;
-       srenew(t2m,maxn2m);
-      }
-      /* Copy the values */
-      t2m[n2m].ai = strdup(ai);
-      t2m[n2m].aj = strdup(aj);
-      t2m[n2m].e_diss = e_diss;
-      /* Increment counter */
-      n2m++;
+    FILE       *fp;
+    char        ai[32], aj[32];
+    double      e_diss;
+    const char *fn     = "edissoc.dat";
+    t_2morse   *t2m    = NULL;
+    int         maxn2m = 0, n2m = 0;
+    int         nread;
+
+    /* Open the file with dissociation energies */
+    fp = libopen(fn);
+    do
+    {
+        /* Try and read two atom names and an energy term from it */
+        nread = fscanf(fp, "%s%s%lf", ai, aj, &e_diss);
+        if (nread == 3)
+        {
+            /* If we got three terms, it probably was OK, no further checking */
+            if (n2m >= maxn2m)
+            {
+                /* Increase memory for 16 at once, some mallocs are stupid */
+                maxn2m += 16;
+                srenew(t2m, maxn2m);
+            }
+            /* Copy the values */
+            t2m[n2m].ai     = strdup(ai);
+            t2m[n2m].aj     = strdup(aj);
+            t2m[n2m].e_diss = e_diss;
+            /* Increment counter */
+            n2m++;
+        }
+        /* If we did not read three items, quit reading */
     }
-    /* If we did not read three items, quit reading */
-  } while (nread == 3);
-  ffclose(fp);
-  
-  /* Set the return values */
-  *n2morse = n2m;
-  
-  return t2m;
+    while (nread == 3);
+    ffclose(fp);
+
+    /* Set the return values */
+    *n2morse = n2m;
+
+    return t2m;
 }
 
-static int nequal(char *a1,char *a2)
+static int nequal(char *a1, char *a2)
 {
-  int i;
-  
-  /* Count the number of (case insensitive) characters that are equal in 
-   * two strings. If they are equally long their respective null characters are
-   * counted also.
-   */
-  for(i=0; (a1[i] != '\0') && (a2[i] != '\0'); i++)
-    if (toupper(a1[i]) != toupper(a2[i]))
-      break;
-  if ((a1[i] == '\0') && (a2[i] == '\0'))
-    i++;
-  
-  return i;
+    int i;
+
+    /* Count the number of (case insensitive) characters that are equal in
+     * two strings. If they are equally long their respective null characters are
+     * counted also.
+     */
+    for (i = 0; (a1[i] != '\0') && (a2[i] != '\0'); i++)
+    {
+        if (toupper(a1[i]) != toupper(a2[i]))
+        {
+            break;
+        }
+    }
+    if ((a1[i] == '\0') && (a2[i] == '\0'))
+    {
+        i++;
+    }
+
+    return i;
 }
 
-static real search_e_diss(int n2m,t_2morse t2m[],char *ai,char *aj)
+static real search_e_diss(int n2m, t_2morse t2m[], char *ai, char *aj)
 {
-  int i;
-  int ibest=-1;
-  int nii,njj,nbstii=0,nbstjj=0;
-  real ediss = 400;
-  
-  /* Do a best match search for dissociation energies */
-  for(i=0; (i<n2m); i++) {
-    /* Check for a perfect match */
-    if (((gmx_strcasecmp(t2m[i].ai,ai) == 0) && (gmx_strcasecmp(t2m[i].aj,aj) == 0)) ||
-       ((gmx_strcasecmp(t2m[i].aj,ai) == 0) && (gmx_strcasecmp(t2m[i].ai,aj) == 0))) {
-      ibest = i;
-      break;
+    int  i;
+    int  ibest = -1;
+    int  nii, njj, nbstii = 0, nbstjj = 0;
+    real ediss = 400;
+
+    /* Do a best match search for dissociation energies */
+    for (i = 0; (i < n2m); i++)
+    {
+        /* Check for a perfect match */
+        if (((gmx_strcasecmp(t2m[i].ai, ai) == 0) && (gmx_strcasecmp(t2m[i].aj, aj) == 0)) ||
+            ((gmx_strcasecmp(t2m[i].aj, ai) == 0) && (gmx_strcasecmp(t2m[i].ai, aj) == 0)))
+        {
+            ibest = i;
+            break;
+        }
+        else
+        {
+            /* Otherwise count the number of equal characters in the strings ai and aj
+             * and the ones from the file
+             */
+            nii = nequal(t2m[i].ai, ai);
+            njj = nequal(t2m[i].aj, aj);
+            if (((nii >  nbstii) && (njj >= nbstjj)) ||
+                ((nii >= nbstii) && (njj >  nbstjj)))
+            {
+                if ((nii > 0) && (njj > 0))
+                {
+                    ibest  = i;
+                    nbstii = nii;
+                    nbstjj = njj;
+                }
+            }
+            else
+            {
+                /* Swap ai and aj (at least in counting the number of equal chars) */
+                nii = nequal(t2m[i].ai, aj);
+                njj = nequal(t2m[i].aj, ai);
+                if (((nii >  nbstii) && (njj >= nbstjj)) ||
+                    ((nii >= nbstii) && (njj >  nbstjj)))
+                {
+                    if ((nii > 0) && (njj > 0))
+                    {
+                        ibest  = i;
+                        nbstii = nii;
+                        nbstjj = njj;
+                    }
+                }
+            }
+        }
     }
-    else {
-      /* Otherwise count the number of equal characters in the strings ai and aj
-       * and the ones from the file
-       */
-      nii = nequal(t2m[i].ai,ai);
-      njj = nequal(t2m[i].aj,aj);
-      if (((nii >  nbstii) && (njj >= nbstjj)) ||
-         ((nii >= nbstii) && (njj >  nbstjj))) {
-       if ((nii > 0) && (njj > 0)) {
-         ibest  = i;
-         nbstii = nii;
-         nbstjj = njj;
-       }
-      }
-      else {
-       /* Swap ai and aj (at least in counting the number of equal chars) */
-       nii = nequal(t2m[i].ai,aj);
-       njj = nequal(t2m[i].aj,ai);
-       if (((nii >  nbstii) && (njj >= nbstjj)) ||
-           ((nii >= nbstii) && (njj >  nbstjj))) {
-         if ((nii > 0) && (njj > 0)) {
-           ibest  = i;
-           nbstii = nii;
-           nbstjj = njj;
-         }
-       }
-      }
+    /* Return the dissocation energy corresponding to the best match, if we have
+     * found one. Do some debug output anyway.
+     */
+    if (ibest == -1)
+    {
+        if (debug)
+        {
+            fprintf(debug, "MORSE: Couldn't find E_diss for bond %s - %s, using default %g\n", ai, aj, ediss);
+        }
+        return ediss;
+    }
+    else
+    {
+        if (debug)
+        {
+            fprintf(debug, "MORSE: Dissoc. E (%10.3f) for bond %4s-%4s taken from bond %4s-%4s\n",
+                    t2m[ibest].e_diss, ai, aj, t2m[ibest].ai, t2m[ibest].aj);
+        }
+        return t2m[ibest].e_diss;
     }
-  }
-  /* Return the dissocation energy corresponding to the best match, if we have
-   * found one. Do some debug output anyway.
-   */
-  if (ibest == -1) {
-    if (debug)
-      fprintf(debug,"MORSE: Couldn't find E_diss for bond %s - %s, using default %g\n",ai,aj,ediss);
-    return ediss;
-  }
-  else {
-    if (debug)
-      fprintf(debug,"MORSE: Dissoc. E (%10.3f) for bond %4s-%4s taken from bond %4s-%4s\n",
-             t2m[ibest].e_diss,ai,aj,t2m[ibest].ai,t2m[ibest].aj);
-    return t2m[ibest].e_diss;
-  }
 }
 
-void convert_harmonics(int nrmols,t_molinfo mols[],gpp_atomtype_t atype)
+void convert_harmonics(int nrmols, t_molinfo mols[], gpp_atomtype_t atype)
 {
-  int      n2m;
-  t_2morse *t2m;
-  
-  int  i,j,k,last,ni,nj;
-  int  nrharm,nrmorse,bb;
-  real edis,kb,b0,beta;
-  gmx_bool *bRemoveHarm;
-
-  /* First get the data */
-  t2m = read_dissociation_energies(&n2m);
-  if (debug)
-    fprintf(debug,"MORSE: read %d dissoc energies\n",n2m);
-  if (n2m <= 0) {
-    fprintf(stderr,"No dissocation energies read\n");
-    return;
-  }
-  
-  /* For all the molecule types */
-  for(i=0; (i<nrmols); i++) {
-    /* Check how many morse and harmonic BONDSs there are, increase size of
-     * morse with the number of harmonics 
-     */
-    nrmorse = mols[i].plist[F_MORSE].nr;
-    
-    for(bb=0; (bb < F_NRE); bb++) {
-      if ((interaction_function[bb].flags & IF_BTYPE) && (bb != F_MORSE)) {
-       nrharm  = mols[i].plist[bb].nr;
-       pr_alloc(nrharm,&(mols[i].plist[F_MORSE]));
-       snew(bRemoveHarm,nrharm);
-       
-       /* Now loop over the harmonics, trying to convert them */
-       for(j=0; (j<nrharm); j++) {
-         ni   = mols[i].plist[bb].param[j].AI;
-         nj   = mols[i].plist[bb].param[j].AJ;
-         edis = 
-           search_e_diss(n2m,t2m,
-                         get_atomtype_name(mols[i].atoms.atom[ni].type,atype),
-                         get_atomtype_name(mols[i].atoms.atom[nj].type,atype));
-         if (edis != 0) {
-           bRemoveHarm[j] = TRUE;
-           b0   = mols[i].plist[bb].param[j].c[0];
-           kb   = mols[i].plist[bb].param[j].c[1];
-           beta = sqrt(kb/(2*edis));
-           mols[i].plist[F_MORSE].param[nrmorse].a[0] = ni;
-           mols[i].plist[F_MORSE].param[nrmorse].a[1] = nj;
-           mols[i].plist[F_MORSE].param[nrmorse].c[0] = b0; 
-           mols[i].plist[F_MORSE].param[nrmorse].c[1] = edis;
-           mols[i].plist[F_MORSE].param[nrmorse].c[2] = beta;
-           nrmorse++; 
-         }
-       }
-       mols[i].plist[F_MORSE].nr = nrmorse;
-       
-       /* Now remove the harmonics */
-       for(j=last=0; (j<nrharm); j++) {
-         if (!bRemoveHarm[j]) {
-           /* Copy it to the last position */
-           for(k=0; (k<MAXATOMLIST); k++)
-             mols[i].plist[bb].param[last].a[k] = 
-               mols[i].plist[bb].param[j].a[k];
-           for(k=0; (k<MAXFORCEPARAM); k++)
-             mols[i].plist[bb].param[last].c[k] = 
-               mols[i].plist[bb].param[j].c[k];
-           last++;
-         }
-       }
-       sfree(bRemoveHarm);
-       fprintf(stderr,"Converted %d out of %d %s to morse bonds for mol %d\n",
-               nrharm-last,nrharm,interaction_function[bb].name,i);
-       mols[i].plist[bb].nr = last;
-      }
+    int       n2m;
+    t_2morse *t2m;
+
+    int       i, j, k, last, ni, nj;
+    int       nrharm, nrmorse, bb;
+    real      edis, kb, b0, beta;
+    gmx_bool *bRemoveHarm;
+
+    /* First get the data */
+    t2m = read_dissociation_energies(&n2m);
+    if (debug)
+    {
+        fprintf(debug, "MORSE: read %d dissoc energies\n", n2m);
+    }
+    if (n2m <= 0)
+    {
+        fprintf(stderr, "No dissocation energies read\n");
+        return;
+    }
+
+    /* For all the molecule types */
+    for (i = 0; (i < nrmols); i++)
+    {
+        /* Check how many morse and harmonic BONDSs there are, increase size of
+         * morse with the number of harmonics
+         */
+        nrmorse = mols[i].plist[F_MORSE].nr;
+
+        for (bb = 0; (bb < F_NRE); bb++)
+        {
+            if ((interaction_function[bb].flags & IF_BTYPE) && (bb != F_MORSE))
+            {
+                nrharm  = mols[i].plist[bb].nr;
+                pr_alloc(nrharm, &(mols[i].plist[F_MORSE]));
+                snew(bRemoveHarm, nrharm);
+
+                /* Now loop over the harmonics, trying to convert them */
+                for (j = 0; (j < nrharm); j++)
+                {
+                    ni   = mols[i].plist[bb].param[j].AI;
+                    nj   = mols[i].plist[bb].param[j].AJ;
+                    edis =
+                        search_e_diss(n2m, t2m,
+                                      get_atomtype_name(mols[i].atoms.atom[ni].type, atype),
+                                      get_atomtype_name(mols[i].atoms.atom[nj].type, atype));
+                    if (edis != 0)
+                    {
+                        bRemoveHarm[j] = TRUE;
+                        b0             = mols[i].plist[bb].param[j].c[0];
+                        kb             = mols[i].plist[bb].param[j].c[1];
+                        beta           = sqrt(kb/(2*edis));
+                        mols[i].plist[F_MORSE].param[nrmorse].a[0] = ni;
+                        mols[i].plist[F_MORSE].param[nrmorse].a[1] = nj;
+                        mols[i].plist[F_MORSE].param[nrmorse].c[0] = b0;
+                        mols[i].plist[F_MORSE].param[nrmorse].c[1] = edis;
+                        mols[i].plist[F_MORSE].param[nrmorse].c[2] = beta;
+                        nrmorse++;
+                    }
+                }
+                mols[i].plist[F_MORSE].nr = nrmorse;
+
+                /* Now remove the harmonics */
+                for (j = last = 0; (j < nrharm); j++)
+                {
+                    if (!bRemoveHarm[j])
+                    {
+                        /* Copy it to the last position */
+                        for (k = 0; (k < MAXATOMLIST); k++)
+                        {
+                            mols[i].plist[bb].param[last].a[k] =
+                                mols[i].plist[bb].param[j].a[k];
+                        }
+                        for (k = 0; (k < MAXFORCEPARAM); k++)
+                        {
+                            mols[i].plist[bb].param[last].c[k] =
+                                mols[i].plist[bb].param[j].c[k];
+                        }
+                        last++;
+                    }
+                }
+                sfree(bRemoveHarm);
+                fprintf(stderr, "Converted %d out of %d %s to morse bonds for mol %d\n",
+                        nrharm-last, nrharm, interaction_function[bb].name, i);
+                mols[i].plist[bb].nr = last;
+            }
+        }
     }
-  }
-  sfree(t2m);
+    sfree(t2m);
 }