Project

General

Profile

Feature #879

Normal modes with vsites and/or shells does not work

Added by David van der Spoel over 5 years ago. Updated 12 months ago.

Status:
Closed
Priority:
Low
Category:
-
Target version:
Difficulty:
uncategorized
Close

Description

Tested normal mode analysis with different small molecules. TIP5P gives NaN everywhere in the mtx file. TIP4P gives strange numbers as well, while models with shells yield weird numbers. I guess that in all cases mdrun should only work on the real atoms and not on the vsites/shells.

Associated revisions

Revision c289d8f7 (diff)
Added by Rossen Apostolov about 3 years ago

Normal modes don't work currently with virtual sites or shells.

Refs #879.

Change-Id: I1c45b5a4b4c97feff222dccbbbb884e0153ad0c5

Revision 16f3a87b (diff)
Added by David van der Spoel over 1 year ago

Made normal modes work with shells and vsites

Implement shells and vsites in normal mode analysis (do_nm routine)
and analysis of eigenvalues and frequencies. The normal mode analysis
is done on real atoms only and the shells are minimized at each step
of the analysis.

Fixes #879

Change-Id: Iac127f51ef4ebd246c9d2417e039778b5952122f

History

#1 Updated by Berk Hess over 5 years ago

  • Status changed from New to Feedback wanted

This is not trivial to fix. You can not have mdrun only work on the normal atoms.
You need to put in the dependence of the coordinates which are a function of the
mass into the matrix calculation. Herman Berendsen derived a formula for shells.
We need to add a formula for virtual sites, which shouldn't be hard.
Who has time to look into this?

#2 Updated by David van der Spoel over 5 years ago

I will try. Do you have any equations written down? I would say that in both cases the normal mode calculation should be performed on the particles with particle type atom, not vsite or shell. Then, if you displace an atom you have to recompute the virtual sites, and in the case of shells, minimize them. Is it more complex than that? Maybe the .mtx file should only store the atomic hessian, otherwise g_nmeig should be changed too.

#3 Updated by Erik Lindahl over 4 years ago

  • Target version changed from 4.6 to 5.0

No update in 10 months, so changing target to 5.0.

#4 Updated by Rossen Apostolov over 3 years ago

  • Priority changed from Normal to Low
  • Target version changed from 5.0 to 5.x
  • Affected version set to 4.5.1

moving to a future version

#5 Updated by Gerrit Code Review Bot about 3 years ago

Gerrit received a related patchset '1' for Issue #879.
Uploader: Rossen Apostolov ()
Change-Id: I534566ac6eefe1c6124b45f2e24ced7a128477b3
Gerrit URL: https://gerrit.gromacs.org/3390

#6 Updated by Rossen Apostolov about 3 years ago

I pushed a patch to disable the combination for now.

#7 Updated by Gerrit Code Review Bot about 3 years ago

Gerrit received a related patchset '1' for Issue #879.
Uploader: Rossen Apostolov ()
Change-Id: I1c45b5a4b4c97feff222dccbbbb884e0153ad0c5
Gerrit URL: https://gerrit.gromacs.org/3412

#8 Updated by Rossen Apostolov about 3 years ago

  • Status changed from Feedback wanted to In Progress

#9 Updated by Erik Lindahl about 3 years ago

  • Status changed from In Progress to Closed

#10 Updated by Erik Lindahl about 3 years ago

  • Tracker changed from Bug to Feature
  • Status changed from Closed to Accepted

"re-opening" this as an accepted feature. For now Rossen's patch will disallow this, but at some point in the future it would be good to have native support for it.

#11 Updated by Gerrit Code Review Bot over 1 year ago

Gerrit received a related patchset '1' for Issue #879.
Uploader: David van der Spoel ()
Change-Id: Iac127f51ef4ebd246c9d2417e039778b5952122f
Gerrit URL: https://gerrit.gromacs.org/5146

#12 Updated by Berk Hess over 1 year ago

I think that for shells the trick is as follows:
You can write the Hessian for the full system of masses+shells as:
AC^T
CB
where A is the Hessian for the masses and B for the shells. Then the Hessian for the masses coupled by the shells is:
A - C^T B^-1 C

I don't know if this is better than the solution of minimizing the shells for each atom displacement.

#13 Updated by David van der Spoel over 1 year ago

And how about vsites? That is also a matrix transformation of course.
Question is rather, are we missing something in the present implementation?

#14 Updated by Berk Hess over 1 year ago

For vsites you would need to figure out matrix C for every construction type, which is tedious. Since the vsite construction is exact (and I assume handled correctly) in your current change, there is no reason to use the matrix trick. For vsites there is the iterative minimization, which requires setting and extremely low tolerance, as low as the tolerance used to minimize the structure, and it requires iterations that could increase the cost of the matrix calculation by an order of magnitude. But I guess the matrix calculation is still cheap. The matrix trick would avoid those two issues, but both are not really problematic.

#15 Updated by David van der Spoel over 1 year ago

OK, now that this passed the build tests in Jenkins we should consider whether we want to put much more effort in this. I can build in a warning about the tolerance for shells. I have some test cases but do not know how easy that is to add to the regression tests seeing that you can only run this really in double precision.

#16 Updated by David van der Spoel over 1 year ago

  • Status changed from Accepted to Resolved

#17 Updated by Mark Abraham 12 months ago

  • Target version changed from 5.x to 2016

#18 Updated by Mark Abraham 12 months ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF