#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2009,2010,2011,2012,2013,2014, by the GROMACS development team, led by
+# Copyright (c) 2009,2010,2011,2012,2013,2014,2015, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
endif()
# xlc
- # The suppressions below stop information messages about -O3
- # causing non-strict IEEE compliance that changes the semantics of
- # the program (duh; 1500-036), warnings about correct PBC-related use of
- # maximum array indices of DIM-sized C arrays (1500-010).
+ # The suppressions below stop
+ # 1500-036: (I) about -O3 causing non-strict IEEE compliance that changes the semantics of the program (duh)
+ # 1500-010: (W) about correct PBC-related use of maximum array indices of DIM-sized C arrays
+ # 1500-030: (I) Additional optimization may be attained by recompiling and specifying MAXMEM option with a value greater than 8192.
if (CMAKE_C_COMPILER_ID MATCHES "XL")
GMX_TEST_CFLAG(CFLAGS_OPT "-qarch=auto -qtune=auto" GMXC_CFLAGS)
GMX_TEST_CFLAG(CFLAGS_LANG "-qlanglvl=extc99" GMXC_CFLAGS)
- GMX_TEST_CFLAG(CFLAGS_LANG "-qsuppress=1500-036 -qsuppress=1500-010" GMXC_CFLAGS)
+ GMX_TEST_CFLAG(CFLAGS_LANG "-qsuppress=1500-036 -qsuppress=1500-010 -qsuppress=1500-030" GMXC_CFLAGS)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "XL")
GMX_TEST_CXXFLAG(CXXFLAGS_OPT "-qarch=auto -qtune=auto" GMXC_CXXFLAGS)
- GMX_TEST_CXXFLAG(CFLAGS_LANG "-qsuppress=1500-036 -qsuppress=1500-010" GMXC_CXXFLAGS)
+ GMX_TEST_CXXFLAG(CFLAGS_LANG "-qsuppress=1500-036 -qsuppress=1500-010 -qsuppress=1500-030" GMXC_CXXFLAGS)
endif()
# msvc
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
/* To determine the bounding box for a zone we need to find
* the extreme corners of 4, 2 or 1 corners.
*/
- nc = 1 << (ddbox->npbcdim - 1);
+ nc = 1 << (ddbox->nboundeddim - 1);
for (c = 0; c < nc; c++)
{
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2009,2010,2014, by the GROMACS development team, led by
+ * Copyright (c) 2009,2010,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
if (dd_nc != NULL && (*dd_nc)[j] > 1 && (*dd_nc)[d] == 1)
{
gmx_fatal(FARGS, "Domain decomposition has not been implemented for box vectors that have non-zero components in directions that do not use domain decomposition: ncells = %d %d %d, box vector[%d] = %f %f %f",
- dd_nc[XX], dd_nc[YY], dd_nc[ZZ],
+ (*dd_nc)[XX], (*dd_nc)[YY], (*dd_nc)[ZZ],
j+1, box[j][XX], box[j][YY], box[j][ZZ]);
}
}
const char *Program(void)
{
+ const char *programName = NULL;
+
try
{
- return gmx::getProgramContext().fullBinaryPath();
+ programName = gmx::getProgramContext().fullBinaryPath();
}
GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR;
+
+ return programName;
}
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
nlist->gid[nri] = 0;
nlist->shift[nri] = nbl_sci->shift & NBNXN_CI_SHIFT;
- bFEP_i = (gridi->fep[c_abs - gridi->cell0] & (1 << i));
+ bFEP_i = (gridi->fep[c_abs - gridi->cell0*GPU_NSUBCELL] & (1 << i));
xi = nbat->x[ind_i*nbat->xstride+XX] + shx;
yi = nbat->x[ind_i*nbat->xstride+YY] + shy;
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
gmx_bool bVV, bTemp, bPres, bTrotter;
gmx_bool bUpdateDoLR;
real dvdl_constr;
- rvec *cbuf = NULL;
+ rvec *cbuf = NULL;
+ int cbuf_nalloc = 0;
matrix lastbox;
int lamnew = 0;
/* for FEP */
/* md-vv uses averaged full step velocities for T-control
md-vv-avek uses averaged half step velocities for T-control (but full step ekin for P control)
md uses averaged half step kinetic energies to determine temperature unless defined otherwise by GMX_EKIN_AVE_VEL; */
- bVV = EI_VV(ir->eI);
- if (bVV) /* to store the initial velocities while computing virial */
- {
- snew(cbuf, top_global->natoms);
- }
+ bVV = EI_VV(ir->eI);
bTrotter = (bVV && (IR_NPT_TROTTER(ir) || IR_NPH_TROTTER(ir) || IR_NVT_TROTTER(ir)));
if (bRerunMD)
if (bVV && !bStartingFromCpt && !bRerunMD)
/* ############### START FIRST UPDATE HALF-STEP FOR VV METHODS############### */
{
+ rvec *vbuf = NULL;
+
wallcycle_start(wcycle, ewcUPDATE);
if (ir->eI == eiVV && bInitStep)
{
* revert back to the initial coordinates
* so that the input is actually the initial step.
*/
- copy_rvecn(state->v, cbuf, 0, state->natoms); /* should make this better for parallelizing? */
+ snew(vbuf, state->natoms);
+ copy_rvecn(state->v, vbuf, 0, state->natoms); /* should make this better for parallelizing? */
}
else
{
}
}
/* if it's the initial step, we performed this first step just to get the constraint virial */
- if (bInitStep && ir->eI == eiVV)
+ if (ir->eI == eiVV && bInitStep)
{
- copy_rvecn(cbuf, state->v, 0, state->natoms);
+ copy_rvecn(vbuf, state->v, 0, state->natoms);
+ sfree(vbuf);
}
wallcycle_stop(wcycle, ewcUPDATE);
}
if (ir->eI == eiVVAK)
{
+ /* We probably only need md->homenr, not state->natoms */
+ if (state->natoms > cbuf_nalloc)
+ {
+ cbuf_nalloc = state->natoms;
+ srenew(cbuf, cbuf_nalloc);
+ }
copy_rvecn(state->x, cbuf, 0, state->natoms);
}
bUpdateDoLR = (fr->bTwinRange && do_per_step(step, ir->nstcalclr));