Gmx2023 vacuum bubbles between membrane leaflets

GROMACS version: 2023.0-gcc11.2.0-mkl-cuda
GROMACS modification: Yes/No

Hi everybody,
I am experiencing troubles with lipid bilayers and lipid/protein systems using gmx 2023.
in pure charmm36 bilayer simulations of E coli PLE I have well exercised before in gmx2016, vacuum bubbles arise between the lipid tails from the two membrane leaflets. correspondingly the area per lipids is larger than in our paper, and in new test simulations I have done on the same HPC now using gmx 2016 and 2020. the potential energy at t=0 is more or less identical. I am using identical pressure couplings, verlet and switch setups etc.

here the area per lipid (average from 100-200ns) at 296K
gmx2016|paper| 63.33±0.15 Å^2 (sd over 3 replica simulations and 100ns intervals)
gmx2016 63.46
gmx2020 63.54
gmx2023 66.48

and here the mdp file
; Created by:
; :-) GROMACS - gmx grompp, 2023 (-:
;
; Executable: /apps/SPACK/0.19.1/opt/linux-almalinux8-zen2/gcc-11.2.0/gromacs-2023-z4x4kdhoxzz4r6snx4jvfnxcwtjvsar7/bin/gmx
; Data prefix: /apps/SPACK/0.19.1/opt/linux-almalinux8-zen2/gcc-11.2.0/gromacs-2023-z4x4kdhoxzz4r6snx4jvfnxcwtjvsar7
; Working dir: /home/atuin/a101cb/a101cb10/gasderminD/10DSF_avanti/04_MD296K_noDSF
; Command line:
; gmx grompp -f md.mdp -p …/04_MD296K_noverlet_noDSF/topol_avanti.top -c …/04_MD296K_noverlet_noDSF/formd.pdb -n …/04_MD296K_noverlet_noDSF/index.ndx -maxwarn 1

; VARIOUS PREPROCESSING OPTIONS
; Preprocessor information: use cpp syntax.
; e.g.: -I/home/joe/doe -I/home/mary/roe
include =
; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive)
define =

; RUN CONTROL PARAMETERS
integrator = md
; Start time and timestep in ps
tinit = 0
dt = 0.002
nsteps = 100000000
; For exact run continuation or redoing part of a run
init_step = 0
; Part index is updated automatically on checkpointing (keeps files separate)
simulation-part = 1
; Multiple time-stepping
mts = no
; mode for center of mass motion removal
comm-mode = Linear
; number of steps for center of mass motion removal
nstcomm = 100
; group(s) for center of mass motion removal
comm-grps = System

; LANGEVIN DYNAMICS OPTIONS
; Friction coefficient (amu/ps) and random seed
bd-fric = 0
ld-seed = 1983

; ENERGY MINIMIZATION OPTIONS
; Force tolerance and initial step-size
emtol = 10
emstep = 0.01
; Max number of iterations in relax-shells
niter = 20
; Step size (ps^2) for minimization of flexible constraints
fcstep = 0
; Frequency of steepest descents steps when doing CG
nstcgsteep = 1000
nbfgscorr = 10

; TEST PARTICLE INSERTION OPTIONS
rtpi = 0.05

; OUTPUT CONTROL OPTIONS
; Output frequency for coords (x), velocities (v) and forces (f)
nstxout = 00000
nstvout = 00000
nstfout = 0
; Output frequency for energies to log file and energy file
nstlog = 50000
nstcalcenergy = 100
nstenergy = 50000
; Output frequency and precision for .xtc file
nstxout-compressed = 50000
compressed-x-precision = 1000
; This selects the subset of atoms for the compressed
; trajectory file. You can select multiple groups. By
; default, all atoms will be written.
compressed-x-grps =
; Selection of energy groups
energygrps = System

; NEIGHBORSEARCHING PARAMETERS
; cut-off scheme (Verlet: particle based cut-offs)
cutoff-scheme = Verlet
; nblist update frequency
nstlist = 10
; Periodic boundary conditions: xyz, no, xy
pbc = xyz
periodic-molecules = no
; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom,
; a value of -1 means: use rlist
verlet-buffer-tolerance = 0.005
; nblist cut-off
rlist = 1.2
; long-range cut-off for switched potentials

; OPTIONS FOR ELECTROSTATICS AND VDW
; Method for doing electrostatics
coulombtype = PME
coulomb-modifier = Potential-shift-Verlet
rcoulomb-switch = 0
rcoulomb = 1.2
; Relative dielectric constant for the medium and the reaction field
epsilon-r = 1
epsilon_rf = 1
; Method for doing Van der Waals
vdw-type = cut-off
vdw-modifier = Force-switch
; cut-off lengths
rvdw-switch = 0.8
rvdw = 1.2
; Apply long range dispersion corrections for Energy and Pressure
DispCorr = no
; Extension of the potential lookup tables beyond the cut-off
table-extension = 1
; Separate tables between energy group pairs
energygrp-table =
; Spacing for the PME/PPPM FFT grid
fourierspacing = 0.12
; FFT grid size, when a value is 0 fourierspacing will be used
fourier_nx = 0
fourier_ny = 0
fourier_nz = 0
; EWALD/PME/PPPM parameters
pme_order = 4
ewald_rtol = 1e-5
ewald-rtol-lj = 0.001
lj-pme-comb-rule = Geometric
ewald_geometry = 3d
epsilon_surface = 0
implicit_solvent = No

; OPTIONS FOR WEAK COUPLING ALGORITHMS
ensemble-temperature-setting = auto
ensemble-temperature = -1
; Temperature coupling
tcoupl = Nose-Hoover
nsttcouple = -1
nh-chain-length = 1
print-nose-hoover-chain-variables = no
; Groups to couple separately
tc-grps = Membrane Water_and_ions
; Time constant (ps) and reference temperature (K)
tau-t = 0.5 0.5
ref-t = 296 296
; pressure coupling
Pcoupl = Parrinello-Rahman
Pcoupltype = semiisotropic
nstpcouple = -1
; Time constant (ps), compressibility (1/bar) and reference P (bar)
tau-p = 5.0
compressibility = 4.5e-5 4.5e-5
ref-p = 1.0 1.0
; Scaling of reference coordinates, No, All or COM
refcoord-scaling = No

; OPTIONS FOR QMMM calculations
QMMM = no
; Groups treated with MiMiC
QMMM-grps =

; SIMULATED ANNEALING
; Type of annealing for each temperature group (no/single/periodic)
annealing = no
; Number of time points to use for specifying annealing in each group
annealing-npoints =
; List of times at the annealing points for each group
annealing-time =
; Temp. at each annealing point, for each group.
annealing-temp =

; GENERATE VELOCITIES FOR STARTUP RUN
gen-vel = yes
gen-temp = 290
gen-seed = -973078537

; OPTIONS FOR BONDS
constraints = h-bonds
; Type of constraint algorithm
constraint-algorithm = LINCS
; Do not constrain the start configuration
continuation = no
; Use successive overrelaxation to reduce the number of shake iterations
Shake-SOR = no
; Relative tolerance of shake
shake-tol = 1e-04
; Highest order in the expansion of the constraint coupling matrix
lincs-order = 4
; Number of iterations in the final step of LINCS. 1 is fine for
; normal simulations, but use 2 to conserve energy in NVE runs.
; For energy minimization with constraints it should be 4 to 8.
lincs-iter = 6
; Lincs will write a warning to the stderr if in one step a bond
; rotates over more degrees than
lincs-warnangle = 60
; Convert harmonic bonds to morse potentials
morse = no

; ENERGY GROUP EXCLUSIONS
; Pairs of energy groups for which all non-bonded interactions are excluded
energygrp-excl =

; WALLS
; Number of walls, type, atom types, densities and box-z scale factor for Ewald
nwall = 0
wall-type = 9-3
wall-r-linpot = -1
wall-atomtype =
wall-density =
wall-ewald-zfac = 3

; COM PULLING
pull = no

; AWH biasing
awh = no

; ENFORCED ROTATION
; Enforced rotation: No or Yes
rotation = no

; Group to display and/or manipulate in interactive MD session
IMD-group =

; NMR refinement stuff
; Distance restraints type: No, Simple or Ensemble
disre = No
; Force weighting of pairs in one distance restraint: Conservative or Equal
disre-weighting = Conservative
; Use sqrt of the time averaged times the instantaneous violation
disre-mixed = no
disre-fc = 1000
disre-tau = 0
; Output frequency for pair distances to energy file
nstdisreout = 100
; Orientation restraints: No or Yes
orire = no
; Orientation restraints force constant and tau for time averaging
orire-fc = 0
orire-tau = 0
orire-fitgrp =
; Output frequency for trace(SD) and S to energy file
nstorireout = 100

; Free energy variables
free-energy = no
couple-moltype =
couple-lambda0 = vdw-q
couple-lambda1 = vdw-q
couple-intramol = no
init-lambda = 0
init-lambda-state = -1
delta-lambda = 0
nstdhdl = 50
fep-lambdas =
mass-lambdas =
coul-lambdas =
vdw-lambdas =
bonded-lambdas =
restraint-lambdas =
temperature-lambdas =
calc-lambda-neighbors = 1
init-lambda-weights =
dhdl-print-energy = no
sc-function = beutler
sc-alpha = 0
sc-power = 1
sc-r-power = 6
sc-sigma = 0.3
sc-coul = no
sc-gapsys-scale-linpoint-lj = 0.85
sc-gapsys-scale-linpoint-q = 0.3
sc-gapsys-sigma-lj = 0.3
separate-dhdl-file = yes
dhdl-derivatives = yes
dh_hist_size = 0
dh_hist_spacing = 0.1

; Non-equilibrium MD stuff
acc-grps =
accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
deform =

; simulated tempering variables
simulated-tempering = no
simulated-tempering-scaling = geometric
sim-temp-low = 300
sim-temp-high = 300

; Ion/water position swapping for computational electrophysiology setups
; Swap positions along direction: no, X, Y, Z
swapcoords = no
adress = no

; User defined thingies
user1-grps =
user2-grps =
userint1 = 0
userint2 = 0
userint3 = 0
userint4 = 0
userreal1 = 0
userreal2 = 0
userreal3 = 0
userreal4 = 0
; Electric fields
; Format for electric-field-x, etc. is: four real variables:
; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps),
; and sigma (ps) width of the pulse. Omega = 0 means static field,
; sigma = 0 means no pulse, leaving the field to be a cosine function.
electric-field-x = 0 0 0 0
electric-field-y = 0 0 0 0
electric-field-z = 0 0 0 0

; Density guided simulation
density-guided-simulation-active = false

; QM/MM with CP2K
qmmm-cp2k-active = false

The first thing I would try in increasing tau_t. 0.5 ps is very short for a NH thermostat. We changes the default intervals for integrating the thermo and barostats in version 2023 and this can cause instabilities when (too) short coupling times are used and the system is susceptible to resonances.

Usually it is the barostat which is causing the issues, but tau_p=5 ps seems not unreasonable. Another thing to try would be to switch the v-rescale and c-rescale and check if the problem goes away.

Dear Berk,
thanks a lot for your comments and suggestions. Obviously the problem is indeed the Parrinello-Rahman barostat in gmx 2023. I did now tests in gmx 2021, 2022 and with gmx2023 and berendsen or c-rescale. the problem occurred ONLY in gmx2023+parrinello-rahman.
So c-rescale is definitely a good solution.
what do you mean you changed the default parameters for integrating the barostat? “nstpcouple = -1”? can it be set manually to the previous value? which was it prior 2023?
In my opinion, either we have to find a setup for parrinello-rahman barostat that works fine with gmx2023. or the usage of parrinello-rahman should be “forbidden” with the current defaults. In a different simulation of mine a transmembrane protein fell off the bilayer. these are very serious issues with the barostat that nobody should waste a simulation time on! do you want me to run more tests?
Bests
Kri

gromacs version and barostat APL [Ă…^2]

gmx2016| 63.33 ±0.15
gmx2016|Parrinello-Rahman| 63.46
gmx2020.6|Parrinello-Rahman| 63.54
gmx2021.4|Parrinello-Rahman| 63.36
gmx2022.4|Parrinello-Rahman| 63.38
gmx2023.0|Parrinello-Rahman| 66.48
gmx2023.0|Berendsen| 63.64
gmx2023.0|c-rescale| 63.38

Yes, you can set nstpcouple manually to the value that worked correctly before.

But the new default value should not cause issues when the compressibility is correct. If the actual compressibility along a dimension is lower that what is provided in the mdp file, the actual period of the PR barostat will be shorter and nstpcouple needs to be smaller than what is set automatically. We have had multiple reports of people reporting similar issues, but in all cases the compressibility turned out to be lower than what they set in the mdp file.

Could you check the period of the box fluctuations in your old, correct runs and compare this with tau_p?

well, compressibility of lipid bilayers is a bit difficult as it differs significantly from that of water, surrounding the bilayer. probably we should set the compressibility being higher than that of water.

following your instructions, I have repeated the old correct simulations writing out the box size very often to get a reasonable sampling of the box size. tau_p=5ps and I can see fluctuations of 5ps (visible per eye). I have tried to make an autocorelation analysis, but I am not 100% sure what the results mean, as the acf shows a minimum at about 8ps and a maximum of about 14.5ps.
is that what you have wanted? hopefully, it is visible in the pictures bellow.

and here the z coordinate from that simulation over time

Yes, the period looks even longer there than tau_p. So no issue there.

How long do you need to run to see the artifacts? It would be good if you can check if setting nsttouple or nsttcouple to the old value solves this, or if you need both.

I have set nstpcouple=nstlist=10 in gmx2023 and the issue seems to be resolved. the problem with nstpcouple=-1 in gmx2023 are the incredible huge fluctuations of the box size (here along the z-axis). it is no wonder that the bilayer leaflets loose contact to each other if they are being so drastically pulled and pressed along z.

and this is the box-Z in the gmx2016 version over 200ns with the same y scale as the previous plot.

That’s worrying. As I said, I have only seen such issues when the actual period of the barostat was much shorter than tau_p.

Could you file an issue on gitlab and attach the input files needed to reproduce this?

We would like to understand, and possibly fix, this issue.

Could you try to run with tau_t=2 to see if that might that couples with the pressure coupling?

sorry. made computer-free vacations in the mountains over the last 3 weeks.

tau_t=2 doesn’t seem to solve the issue, I filed an issue on gitlab and attached the input files.

bests!

1 Like