Removed unused parameters and cleanup of inputrec.
authorRossen Apostolov <rossen@kth.se>
Thu, 5 Jun 2014 11:40:24 +0000 (13:40 +0200)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Fri, 20 Jun 2014 08:04:56 +0000 (10:04 +0200)
Removed optimize_fft, dihre_fc, nstcheckpoint.

Fixes #820, related to #552.

Change-Id: I8d1c3700834e5575972165410b3b29cbb56cba53

manual/forcefield.tex
share/html/online/mdp.html
src/contrib/pmetest.c [deleted file]
src/gromacs/fileio/tpxio.c
src/gromacs/gmxlib/txtdump.c
src/gromacs/gmxpreprocess/readir.c
src/gromacs/legacyheaders/types/inputrec.h
src/gromacs/tools/compare.c

index 9ffa55cc044a3b8c2d57b85424ffb9dc2aecf0f7..205bc9c11dd71f860f4e3e7e1f3f5a81d52cf9c9 100644 (file)
@@ -2495,31 +2495,14 @@ by selecting the electrostatics type:
 coulombtype     = P3M-AD
 \end{verbatim}
 
-\subsection{Optimizing Fourier transforms}
-To get the best possible performance you should try to avoid large
-prime numbers for grid dimensions.
-The FFT code used in {\gromacs} is
-optimized for grid sizes of the form $2^a 3^b 5^c 7^d 11^e 13^f$,
-where $e+f$ is $0$ or $1$ and the other exponents arbitrary. (See
-further the documentation of the FFT algorithms at
-\href{http://www.fftw.org}{www.fftw.org}.
-
-It is also possible to optimize the transforms for the current problem
-by performing some calculations at the start of the run. This is not
-done by default since it takes a couple of minutes, but for large
-runs it will save time. Turn it on by specifying
-
-\begin{verbatim}
-optimize-fft      = yes
-\end{verbatim}
-in your {\tt .mdp} file.
-
-When running in parallel, the grid must be communicated several times,
-thus hurting scaling performance. With PME you can improve this
-by increasing grid spacing while simultaneously increasing the
-interpolation to {\eg} sixth order.
-Since the interpolation is entirely local, doing so will
-improve the scaling in most cases.
+\subsection{Optimizing Fourier transforms and PME calculations}
+It is recommended to optimize the parameters for calculation of
+electrostatic interaction such as PME grid dimensions and cut-off radii.
+This is particularly relevant to do before launching long production runs.
+
+{\gromacs} includes a special tool, {\tt g_tune_pme}, which automates the 
+process of selecting the optimal size of the grid and number of PME-only
+notes.
 
 %
 % Temporarily removed since I am not sure about the state of the testlr
index ebbec487aefac7c710335f96193c9cee8a7813a2..d55efb5372540f9f9b8a51ae0089a7b999d2b7d0 100644 (file)
@@ -111,7 +111,6 @@ ns-type                  = grid
 pbc                      = xyz
 ; nblist cut-off         = 
 rlist                    = 0.8
-domain-decomposition     = no
 
 ; OPTIONS FOR ELECTROSTATICS AND VDW = 
 ; Method for doing electrostatics = 
diff --git a/src/contrib/pmetest.c b/src/contrib/pmetest.c
deleted file mode 100644 (file)
index 3f03bb7..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * 
- *                This source code is part of
- * 
- *                 G   R   O   M   A   C   S
- * 
- *          GROningen MAchine for Chemical Simulations
- * 
- *                        VERSION 3.3.99_development_20071104
- * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2006, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
-
- * This program is free software; you can redistribute it and/or
- * 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:
- * Groningen Machine for Chemical Simulation
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "typedefs.h"
-#include "macros.h"
-#include "gromacs/utility/smalloc.h"
-#include "copyrite.h"
-#include "main.h"
-#include "nrnb.h"
-#include "txtdump.h"
-#include "gromacs/fileio/tpxio.h"
-#include "gromacs/commandline/pargs.h"
-#include "gromacs/fileio/futil.h"
-#include "gmx_fatal.h"
-#include "vec.h"
-#include "mdatoms.h"
-#include "coulomb.h"
-#include "nsb.h"
-#include "rmpbc.h"
-#include "pme.h"
-#include "force.h"
-#include "xvgr.h"
-#include "pbc.h"
-
-#include "gromacs/utility/gmxmpi.h"
-
-#include "block_tx.h"
-
-rvec *xptr=NULL;
-
-static int comp_xptr(const void *a,const void *b)
-{
-  int  va,vb;
-  real dx;
-  
-  va = *(int *)a;
-  vb = *(int *)b;
-  
-  if ((dx = (xptr[va][XX] - xptr[vb][XX])) < 0)
-    return -1;
-  else if (dx > 0)
-    return 1;
-  else
-    return 0;
-}
-
-static void do_my_pme(FILE *fp,real tm,gmx_bool bVerbose,t_inputrec *ir,
-                     rvec x[],rvec xbuf[],rvec f[],
-                     real charge[],real qbuf[],real qqbuf[],
-                     matrix box,gmx_bool bSort,
-                     t_commrec *cr,t_nsborder *nsb,t_nrnb *nrnb,
-                     t_block *excl,real qtot,
-                     t_forcerec *fr,int index[],FILE *fp_xvg,
-                     int ngroups,unsigned short cENER[])
-{
-  real   ener,vcorr,q,xx,dvdl=0,vdip,vcharge;
-  tensor vir,vir_corr,vir_tot;
-  rvec   mu_tot[2];
-  int    i,m,ii,ig,jg;
-  real   **epme,*qptr;
-  
-  /* Initiate local variables */  
-  fr->f_el_recip = f;
-  clear_mat(vir);
-  clear_mat(vir_corr);
-  
-  if (ngroups > 1) {
-    fprintf(fp,"There are %d energy groups\n",ngroups);
-    snew(epme,ngroups);
-    for(i=0; (i<ngroups); i++)
-      snew(epme[i],ngroups);
-  }
-    
-  /* Put x is in the box, this part needs to be parallellized properly */
-  /*put_atoms_in_box(box,nsb->natoms,x);*/
-  /* Here sorting of X (and q) is done.
-   * Alternatively, one could just put the atoms in one of the
-   * cr->nnodes slabs. That is much cheaper than sorting.
-   */
-  for(i=0; (i<nsb->natoms); i++)
-    index[i] = i;
-  if (bSort) {
-    xptr = x;
-    qsort(index,nsb->natoms,sizeof(index[0]),comp_xptr);
-    xptr = NULL; /* To trap unintentional use of the ptr */
-  }
-  /* After sorting we only need the part that is to be computed on 
-   * this processor. We also compute the mu_tot here (system dipole)
-   */
-  clear_rvec(mu_tot[0]);
-  for(i=START(nsb); (i<START(nsb)+HOMENR(nsb)); i++) {
-    ii      = index[i];
-    q       = charge[ii];
-    qbuf[i] = q;
-    for(m=0; (m<DIM); m++) {
-      xx         = x[ii][m];
-      xbuf[i][m] = xx;
-      mu_tot[0][m] += q*xx;
-    }
-    clear_rvec(f[ii]);
-  }
-  copy_rvec(mu_tot[0],mu_tot[1]);
-  if (debug) {
-    pr_rvec(debug,0,"qbuf",qbuf,nsb->natoms,TRUE);
-    pr_rvecs(debug,0,"xbuf",xbuf,nsb->natoms);
-    pr_rvecs(debug,0,"box",box,DIM);
-  }
-  for(ig=0; (ig<ngroups); ig++) {
-    for(jg=ig; (jg<ngroups); jg++) {
-      if (ngroups > 1) {
-       for(i=START(nsb); (i<START(nsb)+HOMENR(nsb)); i++) {
-         if ((cENER[i] == ig) || (cENER[i] == jg))
-           qqbuf[i] = qbuf[i];
-         else
-           qqbuf[i] = 0;
-       }
-       qptr = qqbuf;
-      }
-      else
-       qptr = qbuf;
-      ener  = do_pme(fp,bVerbose,ir,xbuf,f,qptr,qptr,box,cr,
-                    nsb,nrnb,vir,fr->ewaldcoeff,FALSE,0,&dvdl,FALSE);
-      vcorr = ewald_LRcorrection(fp,nsb,cr,fr,qptr,qptr,excl,xbuf,box,mu_tot,
-                                ir->ewald_geometry,ir->epsilon_surface,
-                                0,&dvdl,&vdip,&vcharge);
-      gmx_sum(1,&ener,cr);
-      gmx_sum(1,&vcorr,cr);
-      if (ngroups > 1)
-       epme[ig][jg] = ener+vcorr;
-    }
-  }
-  if (ngroups > 1) {
-    if (fp_xvg) 
-      fprintf(fp_xvg,"%10.3f",tm);
-    for(ig=0; (ig<ngroups); ig++) {
-      for(jg=ig; (jg<ngroups); jg++) {
-       if (ig != jg)
-         epme[ig][jg] -= epme[ig][ig]+epme[jg][jg];
-       if (fp_xvg) 
-         fprintf(fp_xvg,"  %12.5e",epme[ig][jg]);
-      }
-    }
-    if (fp_xvg) 
-      fprintf(fp_xvg,"\n");
-  }
-  else {
-    fprintf(fp,"Time: %10.3f Energy: %12.5e  Correction: %12.5e  Total: %12.5e\n",
-           tm,ener,vcorr,ener+vcorr);
-    if (fp_xvg) 
-      fprintf(fp_xvg,"%10.3f %12.5e %12.5e %12.5e\n",tm,ener+vcorr,vdip,vcharge);
-    if (bVerbose) {
-      m_add(vir,vir_corr,vir_tot);
-      gmx_sum(9,vir_tot[0],cr);
-      pr_rvecs(fp,0,"virial",vir_tot,DIM); 
-    }
-    fflush(fp);
-  }
-}
-
-int main(int argc,char *argv[])
-{
-  static char *desc[] = {
-    "The [TT]pmetest[tt] program tests the scaling of the PME code. When only given",
-    "a [TT].tpr[tt] file it will compute PME for one frame. When given a trajectory",
-    "it will do so for all the frames in the trajectory. Before the PME",
-    "routine is called the coordinates are sorted along the X-axis.[PAR]",
-    "As an extra service to the public the program can also compute",
-    "long-range Coulomb energies for components of the system. When the",
-    "[TT]-groups[tt] flag is given to the program the energy groups",
-    "from the [TT].tpr[tt] file will be read, and half an energy matrix computed."
-  };
-  t_commrec    *cr,*mcr;
-  static t_filenm fnm[] = {
-    { efTPX, NULL,      NULL,       ffREAD  },
-    { efTRN, "-o",      NULL,       ffWRITE },
-    { efLOG, "-g",      "pme",      ffWRITE },
-    { efTRX, "-f",      NULL,       ffOPTRD },
-    { efXVG, "-x",      "ener-pme", ffWRITE }
-  };
-#define NFILE asize(fnm)
-
-  /* Command line options ! */
-  static gmx_bool bVerbose=FALSE;
-  static gmx_bool bOptFFT=FALSE;
-  static gmx_bool bSort=FALSE;
-  static int  ewald_geometry=eewg3D;
-  static int  nnodes=1;
-  static int  pme_order=0;
-  static rvec grid = { -1, -1, -1 };
-  static real rc   = 0.0;
-  static real dtol = 0.0;
-  static gmx_bool bGroups = FALSE;
-  static t_pargs pa[] = {
-    { "-np",      FALSE, etINT, {&nnodes},
-      "Number of nodes, must be the same as used for [TT]grompp[tt]" },
-    { "-v",       FALSE, etBOOL,{&bVerbose},  
-      "Be loud and noisy" },
-    { "-sort",    FALSE, etBOOL,{&bSort},  
-      "Sort coordinates. Crucial for domain decomposition." },
-    { "-grid",    FALSE, etRVEC,{&grid},
-      "Number of grid cells in X, Y, Z dimension (if -1 use from [TT].tpr[tt])" },
-    { "-order",   FALSE, etINT, {&pme_order},
-      "Order of the PME spreading algorithm" },
-    { "-groups",  FALSE, etBOOL, {&bGroups},
-      "Compute half an energy matrix based on the energy groups in your [TT].tpr[tt] file" },
-    { "-rc",      FALSE, etREAL, {&rc},
-      "Rcoulomb for Ewald summation" },
-    { "-tol",     FALSE, etREAL, {&dtol},
-      "Tolerance for Ewald summation" }
-  };
-  FILE        *fp;
-  t_inputrec  *ir;
-  t_topology  top;
-  t_tpxheader tpx;
-  t_nrnb      nrnb;
-  t_nsborder  *nsb;
-  t_forcerec  *fr;
-  t_mdatoms   *mdatoms;
-  char        title[STRLEN];
-  int         natoms,step,status,i,ncg,root;
-  real        t,lambda,ewaldcoeff,qtot;
-  rvec        *x,*f,*xbuf;
-  int         *index;
-  gmx_bool        bCont;
-  real        *charge,*qbuf,*qqbuf;
-  matrix      box;
-  
-  /* Start the actual parallel code if necessary */
-  cr   = init_par(&argc,&argv);
-  root = 0;
-  
-  if (MASTER(cr)) 
-    CopyRight(stderr,argv[0]);
-  
-  /* Parse command line on all processors, arguments are passed on in 
-   * init_par (see above)
-   */
-  parse_common_args(&argc,argv,
-                   PCA_NOEXIT_ON_ARGS | PCA_BE_NICE |
-                   PCA_CAN_SET_DEFFNM | (MASTER(cr) ? 0 : PCA_QUIET),
-                   NFILE,fnm,asize(pa),pa,asize(desc),desc,0,NULL);
-  
-#ifndef GMX_MPI
-  if (nnodes > 1) 
-    gmx_fatal(FARGS,"GROMACS compiled without MPI support - can't do parallel runs");
-#endif
-
-  /* Open log files on all processors */
-  open_log(ftp2fn(efLOG,NFILE,fnm),cr);
-  snew(ir,1);
-  
-  if (MASTER(cr)) {
-    /* Read tpr file etc. */
-    read_tpxheader(ftp2fn(efTPX,NFILE,fnm),&tpx,FALSE,NULL,NULL);
-    snew(x,tpx.natoms);
-    read_tpx(ftp2fn(efTPX,NFILE,fnm),&step,&t,&lambda,ir,
-            box,&natoms,x,NULL,NULL,&top);
-    /* Charges */
-    qtot = 0;
-    snew(charge,natoms);
-    for(i=0; (i<natoms); i++) {
-      charge[i] = top.atoms.atom[i].q;
-      qtot += charge[i];
-    }
-  
-    /* Grid stuff */
-    if (opt2parg_bSet("-grid",asize(pa),pa)) {
-      ir->nkx = grid[XX];
-      ir->nky = grid[YY];
-      ir->nkz = grid[ZZ];
-    }
-    /* Check command line parameters for consistency */
-    if ((ir->nkx <= 0) || (ir->nky <= 0) || (ir->nkz <= 0))
-      gmx_fatal(FARGS,"PME grid = %d %d %d",ir->nkx,ir->nky,ir->nkz);
-    if (opt2parg_bSet("-rc",asize(pa),pa)) 
-      ir->rcoulomb = rc;
-    if (ir->rcoulomb <= 0)
-      gmx_fatal(FARGS,"rcoulomb should be > 0 (not %f)",ir->rcoulomb);
-    if (opt2parg_bSet("-order",asize(pa),pa)) 
-      ir->pme_order = pme_order;
-    if (ir->pme_order <= 0)
-      gmx_fatal(FARGS,"pme_order should be > 0 (not %d)",ir->pme_order);
-    if (opt2parg_bSet("-tol",asize(pa),pa))
-      ir->ewald_rtol = dtol;
-    if (ir->ewald_rtol <= 0)
-      gmx_fatal(FARGS,"ewald_tol should be > 0 (not %f)",ir->ewald_rtol);
-  }
-  else {
-    init_top(&top);
-  }
-
-  /* Add parallellization code here */
-  snew(nsb,1);
-  if (MASTER(cr)) {
-    ncg = top.blocks[ebCGS].multinr[0];
-    for(i=0; (i<cr->nnodes-1); i++)
-      top.blocks[ebCGS].multinr[i] = min(ncg,(ncg*(i+1))/cr->nnodes);
-    for( ; (i<MAXNODES); i++)
-      top.blocks[ebCGS].multinr[i] = ncg;
-  }
-  if (PAR(cr)) {
-    /* Set some variables to zero to avoid core dumps */
-    ir->opts.ngtc = ir->opts.ngacc = ir->opts.ngfrz = ir->opts.ngener = 0;
-#ifdef GMX_MPI
-    /* Distribute the data over processors */
-    MPI_Bcast(&natoms,1,MPI_INT,root,MPI_COMM_WORLD);
-    MPI_Bcast(ir,sizeof(*ir),MPI_BYTE,root,MPI_COMM_WORLD);
-    MPI_Bcast(&qtot,1,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-#endif
-
-    /* Call some dedicated communication routines, master sends n-1 times */
-    if (MASTER(cr)) {
-      for(i=1; (i<cr->nnodes); i++) {
-       mv_block(i,&(top.blocks[ebCGS]));
-       mv_block(i,&(top.atoms.excl));
-      }
-    }
-    else {
-      ld_block(root,&(top.blocks[ebCGS]));
-      ld_block(root,&(top.atoms.excl));
-    }
-    if (!MASTER(cr)) {
-      snew(charge,natoms);
-      snew(x,natoms);
-    }
-#ifdef GMX_MPI
-    MPI_Bcast(charge,natoms,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-#endif
-  }
-  ewaldcoeff = calc_ewaldcoeff(ir->rcoulomb,ir->ewald_rtol);
-  
-  
-  if (bVerbose)
-    pr_inputrec(stdlog,0,"Inputrec",ir);
-
-  /* Allocate memory for temp arrays etc. */
-  snew(xbuf,natoms);
-  snew(f,natoms);
-  snew(qbuf,natoms);
-  snew(qqbuf,natoms);
-  snew(index,natoms);
-
-  /* Initialize the PME code */  
-  init_pme(stdlog,cr,ir->nkx,ir->nky,ir->nkz,ir->pme_order,
-          natoms,FALSE,bOptFFT,ewald_geometry);
-          
-  /* MFlops accounting */
-  init_nrnb(&nrnb);
-  
-  /* Initialize the work division */
-  calc_nsb(stdlog,&(top.blocks[ebCGS]),cr->nnodes,nsb,0);
-  nsb->nodeid = cr->nodeid;
-  print_nsb(stdlog,"pmetest",nsb);  
-
-  /* Initiate forcerec */
-  mdatoms = atoms2md(stdlog,&top.atoms,ir->opts.nFreeze,ir->eI,
-                    ir->delta_t,0,ir->opts.tau_t,FALSE,FALSE);
-  snew(fr,1);
-  init_forcerec(stdlog,fr,ir,&top,cr,mdatoms,nsb,box,FALSE,NULL,NULL,FALSE);
-  
-  /* First do PME based on coordinates in tpr file, send them to
-   * other processors if needed.
-   */
-  if (MASTER(cr))
-    fprintf(stdlog,"-----\n"
-           "Results based on tpr file %s\n",ftp2fn(efTPX,NFILE,fnm));
-#ifdef GMX_MPI
-  if (PAR(cr)) {
-    MPI_Bcast(x[0],natoms*DIM,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-    MPI_Bcast(box[0],DIM*DIM,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-    MPI_Bcast(&t,1,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-  }
-#endif
-  do_my_pme(stdlog,0,bVerbose,ir,x,xbuf,f,charge,qbuf,qqbuf,box,bSort,
-           cr,nsb,&nrnb,&(top.atoms.excl),qtot,fr,index,NULL,
-           bGroups ? ir->opts.ngener : 1,mdatoms->cENER);
-
-  /* If we have a trajectry file, we will read the frames in it and compute
-   * the PME energy.
-   */
-  if (ftp2bSet(efTRX,NFILE,fnm)) {
-    fprintf(stdlog,"-----\n"
-           "Results based on trx file %s\n",ftp2fn(efTRX,NFILE,fnm));
-    if (MASTER(cr)) {
-      sfree(x);
-      natoms = read_first_x(&status,ftp2fn(efTRX,NFILE,fnm),&t,&x,box); 
-      if (natoms != top.atoms.nr)
-       gmx_fatal(FARGS,"natoms in trx = %d, in tpr = %d",natoms,top.atoms.nr);
-      fp = xvgropen(ftp2fn(efXVG,NFILE,fnm),"PME Energy","Time (ps)","E (kJ/mol)");
-    }
-    else
-      fp = NULL;
-    do {
-      /* Send coordinates, box and time to the other nodes */
-#ifdef GMX_MPI
-      if (PAR(cr)) {
-       MPI_Bcast(x[0],natoms*DIM,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-       MPI_Bcast(box[0],DIM*DIM,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-       MPI_Bcast(&t,1,GMX_MPI_REAL,root,MPI_COMM_WORLD);
-      }
-#endif
-      rm_pbc(&top.idef,nsb->natoms,box,x,x);
-      /* Call the PME wrapper function */
-      do_my_pme(stdlog,t,bVerbose,ir,x,xbuf,f,charge,qbuf,qqbuf,box,bSort,cr,
-               nsb,&nrnb,&(top.atoms.excl),qtot,fr,index,fp,
-               bGroups ? ir->opts.ngener : 1,mdatoms->cENER);
-      /* Only the master processor reads more data */
-      if (MASTER(cr))
-          bCont = read_next_x(status,&t,natoms,x,box);
-      /* Check whether we need to continue */
-#ifdef GMX_MPI
-      if (PAR(cr))
-          MPI_Bcast(&bCont,1,MPI_INT,root,MPI_COMM_WORLD);
-#endif
-      
-    } while (bCont);
-    
-    /* Finish I/O, close files */
-    if (MASTER(cr)) {
-      close_trx(status);
-      gmx_ffclose(fp);
-    }
-  }
-  
-  if (bVerbose) {
-    /* Do some final I/O about performance, might be useful in debugging */
-    fprintf(stdlog,"-----\n");
-    print_nrnb(stdlog,&nrnb);
-  }
-  
-  /* Finish the parallel stuff */  
-  if (gmx_parallel_env_initialized())
-    gmx_finalize(cr);
-
-  /* Thank the audience, as usual */
-  if (MASTER(cr)) 
-    gmx_thanx(stderr);
-
-  return 0;
-}
-
index 0fdb93aad232ad294dcbff7889c45db0b123dce9..c5ee1e2e7147d2f853e55c5b560cbf5090acb422 100644 (file)
@@ -88,7 +88,8 @@ enum tpxv {
     tpxv_ComputationalElectrophysiology = 96,                /**< support for ion/water position swaps (computational electrophysiology) */
     tpxv_Use64BitRandomSeed,                                 /**< change ld_seed from int to gmx_int64_t */
     tpxv_RestrictedBendingAndCombinedAngleTorsionPotentials, /**< potentials for supporting coarse-grained force fields */
-    tpxv_InteractiveMolecularDynamics                        /**< interactive molecular dynamics (IMD) */
+    tpxv_InteractiveMolecularDynamics,                       /**< interactive molecular dynamics (IMD) */
+    tpxv_RemoveObsoleteParameters1                           /**< remove optimize_fft, dihre_fc, nstcheckpoint */
 };
 
 /*! \brief Version number of the file format written to run input
@@ -102,7 +103,7 @@ enum tpxv {
  *
  * When developing a feature branch that needs to change the run input
  * file format, change tpx_tag instead. */
-static const int tpx_version = tpxv_InteractiveMolecularDynamics;
+static const int tpx_version = tpxv_RemoveObsoleteParameters1;
 
 
 /* This number should only be increased when you edit the TOPOLOGY section
@@ -815,7 +816,7 @@ static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead,
     int      i, j, k, *tmp, idum = 0;
     real     rdum, bd_temp;
     rvec     vdum;
-    gmx_bool bSimAnn;
+    gmx_bool bSimAnn, bdum = 0;
     real     zerotemptime, finish_t, init_temp, finish_temp;
 
     if (file_version != tpx_version)
@@ -846,6 +847,7 @@ static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead,
         gmx_fio_do_int(fio, idum);
         ir->nsteps = idum;
     }
+
     if (file_version > 25)
     {
         if (file_version >= 62)
@@ -950,13 +952,10 @@ static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead,
     }
     ir->nstcomm = abs(ir->nstcomm);
 
-    if (file_version > 25)
+    /* ignore nstcheckpoint */
+    if (file_version > 25 && file_version < tpxv_RemoveObsoleteParameters1)
     {
-        gmx_fio_do_int(fio, ir->nstcheckpoint);
-    }
-    else
-    {
-        ir->nstcheckpoint = 0;
+        gmx_fio_do_int(fio, idum);
     }
 
     gmx_fio_do_int(fio, ir->nstcgsteep);
@@ -1181,7 +1180,11 @@ static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead,
         gmx_fio_do_real(fio, ir->epsilon_surface);
     }
 
-    gmx_fio_do_gmx_bool(fio, ir->bOptFFT);
+    /* ignore bOptFFT */
+    if (file_version < tpxv_RemoveObsoleteParameters1)
+    {
+        gmx_fio_do_gmx_bool(fio, bdum);
+    }
 
     if (file_version >= 93)
     {
@@ -1385,19 +1388,17 @@ static void do_inputrec(t_fileio *fio, t_inputrec *ir, gmx_bool bRead,
         ir->orires_tau  = 0;
         ir->nstorireout = 0;
     }
+
+    /* ignore dihre_fc */
     if (file_version >= 26 && file_version < 79)
     {
-        gmx_fio_do_real(fio, ir->dihre_fc);
+        gmx_fio_do_real(fio, rdum);
         if (file_version < 56)
         {
             gmx_fio_do_real(fio, rdum);
             gmx_fio_do_int(fio, idum);
         }
     }
-    else
-    {
-        ir->dihre_fc = 0;
-    }
 
     gmx_fio_do_real(fio, ir->em_stepsize);
     gmx_fio_do_real(fio, ir->em_tol);
index ff9966f70a0147839d2dab5d3e260680a5728f0c..47876e95914819186303233a72a24a69a74c44e5 100644 (file)
@@ -895,7 +895,6 @@ void pr_inputrec(FILE *fp, int indent, const char *title, t_inputrec *ir,
         PR("ewald-rtol-lj", ir->ewald_rtol_lj);
         PR("ewald-geometry", ir->ewald_geometry);
         PR("epsilon-surface", ir->epsilon_surface);
-        PS("optimize-fft", EBOOL(ir->bOptFFT));
         PS("lj-pme-comb-rule", ELJPMECOMBNAMES(ir->ljpme_combination_rule));
         PS("ePBC", EPBC(ir->ePBC));
         PS("bPeriodicMols", EBOOL(ir->bPeriodicMols));
@@ -1023,8 +1022,6 @@ void pr_inputrec(FILE *fp, int indent, const char *title, t_inputrec *ir,
         PR("orires-tau", ir->orires_tau);
         PR("nstorireout", ir->nstorireout);
 
-        PR("dihre-fc", ir->dihre_fc);
-
         PR("em-stepsize", ir->em_stepsize);
         PR("em-tol", ir->em_tol);
         PI("niter", ir->niter);
index b2d19cd75df263ecd553ef716a9dd7fa3cace9e4..a2f84972f2044f14b8c6f71e864eb4b58d3ba034 100644 (file)
@@ -1773,7 +1773,7 @@ void get_ir(const char *mdparin, const char *mdparout,
         warning_note(wi, warn_buf);
     }
 
-    /* remove the following deprecated commands */
+    /* ignore the following deprecated commands */
     REM_TYPE("title");
     REM_TYPE("cpp");
     REM_TYPE("domain-decomposition");
@@ -1783,6 +1783,7 @@ void get_ir(const char *mdparin, const char *mdparout,
     REM_TYPE("dihre-tau");
     REM_TYPE("nstdihreout");
     REM_TYPE("nstcheckpoint");
+    REM_TYPE("optimize-fft");
 
     /* replace the following commands with the clearer new versions*/
     REPL_TYPE("unconstrained-start", "continuation");
@@ -1843,7 +1844,6 @@ void get_ir(const char *mdparin, const char *mdparout,
     ITYPE ("nstxout", ir->nstxout,    0);
     ITYPE ("nstvout", ir->nstvout,    0);
     ITYPE ("nstfout", ir->nstfout,    0);
-    ir->nstcheckpoint = 1000;
     CTYPE ("Output frequency for energies to log file and energy file");
     ITYPE ("nstlog",  ir->nstlog, 1000);
     ITYPE ("nstcalcenergy", ir->nstcalcenergy, 100);
@@ -1916,7 +1916,6 @@ void get_ir(const char *mdparin, const char *mdparout,
     EETYPE("lj-pme-comb-rule", ir->ljpme_combination_rule, eljpme_names);
     EETYPE("ewald-geometry", ir->ewald_geometry, eewg_names);
     RTYPE ("epsilon-surface", ir->epsilon_surface, 0.0);
-    EETYPE("optimize-fft", ir->bOptFFT,  yesno_names);
 
     CCTYPE("IMPLICIT SOLVENT ALGORITHM");
     EETYPE("implicit-solvent", ir->implicit_solvent, eis_names);
index 3f463dcd53443547f885c9b8df131a04a3dcb85e..6c790977393aea73765b0fd3b87ae786044fd373 100644 (file)
@@ -337,9 +337,8 @@ typedef struct {
     int             nstlist;                 /* number of steps before pairlist is generated   */
     int             ndelta;                  /* number of cells per rlong                      */
     int             nstcomm;                 /* number of steps after which center of mass     */
-    /* motion is removed                               */
+                                             /* motion is removed                              */
     int             comm_mode;               /* Center of mass motion removal algorithm      */
-    int             nstcheckpoint;           /* checkpointing frequency                      */
     int             nstlog;                  /* number of steps after which print to logfile   */
     int             nstxout;                 /* number of steps after which X is output        */
     int             nstvout;                 /* id. for V                                      */
@@ -358,7 +357,6 @@ typedef struct {
     real            ewald_rtol_lj;           /* Real space tolerance for LJ-Ewald            */
     int             ewald_geometry;          /* normal/3d ewald, or pseudo-2d LR corrections */
     real            epsilon_surface;         /* Epsilon for PME dipole correction            */
-    gmx_bool        bOptFFT;                 /* optimize the fft plan at start               */
     int             ljpme_combination_rule;  /* Type of combination rule in LJ-PME          */
     int             ePBC;                    /* Type of periodic boundary conditions           */
     int             bPeriodicMols;           /* Periodic molecules                           */
@@ -422,7 +420,6 @@ typedef struct {
     real            orires_fc;               /* force constant for orientational restraints  */
     real            orires_tau;              /* time constant for memory function in orires    */
     int             nstorireout;             /* frequency of writing tr(SD) to enx           */
-    real            dihre_fc;                /* force constant for dihedral restraints (obsolete)      */
     real            em_stepsize;             /* The stepsize for updating                      */
     real            em_tol;                  /* The tolerance                          */
     int             niter;                   /* Number of iterations for convergence of      */
index 24ad49bab7c581586be4f5cce08308988a77484a..1f3a2348a9c17ec681c7c79ee12179b4137fea50 100644 (file)
@@ -756,7 +756,6 @@ static void cmp_inputrec(FILE *fp, t_inputrec *ir1, t_inputrec *ir2, real ftol,
     cmp_int(fp, "inputrec->ndelta", -1, ir1->ndelta, ir2->ndelta);
     cmp_int(fp, "inputrec->nstcomm", -1, ir1->nstcomm, ir2->nstcomm);
     cmp_int(fp, "inputrec->comm_mode", -1, ir1->comm_mode, ir2->comm_mode);
-    cmp_int(fp, "inputrec->nstcheckpoint", -1, ir1->nstcheckpoint, ir2->nstcheckpoint);
     cmp_int(fp, "inputrec->nstlog", -1, ir1->nstlog, ir2->nstlog);
     cmp_int(fp, "inputrec->nstxout", -1, ir1->nstxout, ir2->nstxout);
     cmp_int(fp, "inputrec->nstvout", -1, ir1->nstvout, ir2->nstvout);
@@ -775,7 +774,6 @@ static void cmp_inputrec(FILE *fp, t_inputrec *ir1, t_inputrec *ir2, real ftol,
     cmp_real(fp, "inputrec->ewald_rtol", -1, ir1->ewald_rtol, ir2->ewald_rtol, ftol, abstol);
     cmp_int(fp, "inputrec->ewald_geometry", -1, ir1->ewald_geometry, ir2->ewald_geometry);
     cmp_real(fp, "inputrec->epsilon_surface", -1, ir1->epsilon_surface, ir2->epsilon_surface, ftol, abstol);
-    cmp_int(fp, "inputrec->bOptFFT", -1, ir1->bOptFFT, ir2->bOptFFT);
     cmp_int(fp, "inputrec->bContinuation", -1, ir1->bContinuation, ir2->bContinuation);
     cmp_int(fp, "inputrec->bShakeSOR", -1, ir1->bShakeSOR, ir2->bShakeSOR);
     cmp_int(fp, "inputrec->etc", -1, ir1->etc, ir2->etc);
@@ -857,7 +855,6 @@ static void cmp_inputrec(FILE *fp, t_inputrec *ir1, t_inputrec *ir2, real ftol,
     cmp_real(fp, "inputrec->orires_fc", -1, ir1->orires_fc, ir2->orires_fc, ftol, abstol);
     cmp_real(fp, "inputrec->orires_tau", -1, ir1->orires_tau, ir2->orires_tau, ftol, abstol);
     cmp_int(fp, "inputrec->nstorireout", -1, ir1->nstorireout, ir2->nstorireout);
-    cmp_real(fp, "inputrec->dihre_fc", -1, ir1->dihre_fc, ir2->dihre_fc, ftol, abstol);
     cmp_real(fp, "inputrec->em_stepsize", -1, ir1->em_stepsize, ir2->em_stepsize, ftol, abstol);
     cmp_real(fp, "inputrec->em_tol", -1, ir1->em_tol, ir2->em_tol, ftol, abstol);
     cmp_int(fp, "inputrec->niter", -1, ir1->niter, ir2->niter);