Md-vv not working with parrinello-Rahman barostat when using pulling options

GROMACS version: 2021.1
GROMACS modification: No

I am trying to apply simulated-tempering on a system with an hydrated bilayer. I noticed that the latest versions of gromacs now allow to use the md-vv integrator (only option that works for simulated-tempering) with the parrinello-rahman barostat. This works if I do not apply pull dynamics to the system, but not with pulling.
If I apply pull dynamics it gives me the following error:

Assertion failed:
Condition: isInputCompatible || !(inputrec->eI == eiVV && inputrec->epc == epcPARRINELLORAHMAN)
Requested Parrinello-Rahman barostat with md-vv, but other options are not
compatible with the modular simulator. The Parrinello-Rahman barostat is not
implemented for md-vv in the legacy simulator. Use a different pressure
control algorithm.

Is this still some error of the recent implementation of md-vv with the Parrinello-Rahman barostat or Is there any reason why I should not use md-vv with Parrinello-Rahman and pulling?

Thanks a lot in advance,

Best regards,
Carla

There is certainly an input check missing here. The user should not get an assertion failure, but then the error message actually seems to talk to the user.
This check tells you that your combination is currently not supported. I don’t see why the modular simulator could not hand pulling though. I will ask the person who wrote this.

Thank you very much!

Dear hess,

Did you find any answer for this problem?
I was still not able to solve it.

Best,
Carla

This combination is not supported. We “fixed” that the user will now get a fatal error message. It’s unfortunate that we have a combination of option that does not work with any integrator.

I no asked why the pull code is not supported in md-vv at:

Oh, ok. Many thanks!
I will follow the answer to your question on GitLab then. Thank you very much.
Actually, md-vv works with the pull code, but not if the Parrinello-Rahman barostat is used. (if berendsen is used there’s no problem)

Are you sure? In the code I see that pulling is not supported at all in the modular simulator.

well, yes.
you can see from one of my .log files
If I change berendsen to PR then I have an error.
Apparently I cannot upload my .log file here but here is a copy:

Input Parameters:
integrator = md-vv
tinit = 0
dt = 0.005
(…)
tcoupl = V-rescale
nsttcouple = 10
nh-chain-length = 0
print-nose-hoover-chain-variables = false
pcoupl = Berendsen
pcoupltype = Semiisotropic
nstpcouple = 10
tau-p = 10
(…)
pull = true
pull-cylinder-r = 1.5
pull-constr-tol = 1e-06
pull-print-COM = false
pull-print-ref-value = false
pull-print-components = false
pull-nstxout = 50
pull-nstfout = 50
pull-pbc-ref-prev-step-com = false
pull-xout-average = false
pull-fout-average = false
pull-ngroups = 4
pull-group 0:
atom: not available
weight: not available
pbcatom = -1
pull-group 1:
atom (3):
atom[0,…,2] = {6464,…,6466}
weight: not available
pbcatom = 6465
pull-group 2:
atom (3):
atom[0,…,2] = {6467,…,6469}
weight: not available
pbcatom = 6468
pull-group 3:
atom (1664):
atom[0,…,1663] = {0,…,1663}
weight: not available
pbcatom = 831
pull-ncoords = 2
pull-coord 0:
type = umbrella
geometry = cylinder
group[0] = 3
group[1] = 1
dim (3):
dim[0]=0
dim[1]=0
dim[2]=1
origin (3):
origin[0]= 0.00000e+00
origin[1]= 0.00000e+00
origin[2]= 0.00000e+00
vec (3):
vec[0]= 0.00000e+00
vec[1]= 0.00000e+00
vec[2]= 1.00000e+00
start = false
init = -3.5
rate = 0
k = 1000
kB = 1000
pull-coord 1:
type = umbrella
geometry = cylinder
group[0] = 3
group[1] = 2
(…)

It runs with no error message. I just have problems if I change the barostat to PR (which I want to do and this is my problem)

I can give some further background and a few suggestions:

This is all as expected for GROMACS 2021. GROMACS 2021 has two implementations of md-vv: The legacy implementation which has been present since many years, and the modular implementation which we are slowly migrating to. The modular implementation is currently not feature-complete, i.e. there are algorithms which are not yet ported to the new framework. Whenever an algorithm which hasn’t been ported yet is chosen by the user, GROMACS defaults to the legacy implementation, which has the same feature set as earlier GROMACS versions. Pull is one of the algorithms that is not yet available for the modular simulator, so GROMACS uses the legacy code path.

Parrinello-Rahman for md-vv is a special case which was never implemented in the legacy code path. So for this specific pressure coupling algorithm and md-vv, pull cannot be used - because the pressure coupling algorithm is only implemented in the modular implementation, while pull is not yet available there.

You should be able to use any other pressure coupling algorithm. MTTK is equivalent to P-R and available in legacy md-vv, but does not work with constraints. Berendsen works, as you noticed, but will not generate the correct ensemble. C-rescale is a new pressure coupling algorithm which does generate the correct ensemble and works with constraints, so that could be an option. Finally, you could also use md instead of md-vv, in which case the combination of pull & Parrinello-Rahman will work.

Dear ptmerz.
First of all many thanks for your answer. Yes, I now understand the issue and the option I tried was to use the Beredsen barostat (not ideal though). Unfortunately, using md instead of md-vv is not an option because I want to do simulated-tempering. The C-rescale pressure coupling algorithm is completely new to me. I will check it.
Thanks you very much.
Carla