[gmx-developers] Interfacing with gromacs to get potential energies/ forces

Augustin Chevallier augustin.chevallier at inria.fr
Mon Nov 21 13:52:22 CET 2016


Thank you for both of your answers!

 I've tried the code from David van der Spoel, however it crashes. Thus I have made my own (really messy) wrapper by taking the code from mdrun and modifying it.
It seems to work however I would like to confirm a few things. 
1/ the energy computed during do_forces
2/ after calling do_forces, enerd->term[F_EPOT] gives the potential energy (without kinetic energy)
3/ the units in enerd->term[F_EPOT]  is kJ/mol
Are these 3 points true?

>mdrun reads all of that from the .tpr and looks at your hardware and command-line options and sets up all of that complexity. I don't think you should want to try to simplify that - you need to satisfy >the prerequisites of do_force() and those were never designed for this use. The important questions are "what will vary between evaluations?" and "why is GROMACS the right tool for the job?"
well the positions of the atoms will vary. I need gromacs because it implements the most common force fields and is really fast.

>Yes. We are in the process of designing an API that would be usable for what you want, but that's years away still.
That's good to hear, just sad that it's still years away ;)

Thanks!
Augustin

----- Mail original -----
> De: "David van der Spoel" <spoel at xray.bmc.uu.se>
> À: "gromacs org gmx-developers" <gromacs.org_gmx-developers at maillist.sys.kth.se>
> Envoyé: Samedi 19 Novembre 2016 16:16:34
> Objet: Re: [gmx-developers] Interfacing with gromacs to get potential energies/ forces
> 
> On 19/11/16 14:48, Augustin Chevallier wrote:
> > Thanks! This code is what I was looking for.
> >
> > As for the problem you mentioned, why will this code change? Is it because
> > the code itself isn't mature or because gromacs 'core' code will change,
> > making this code obsolete? Also about the license, is there any kind of
> > restriction on the usage of this code?
> >
> The gromacs core is planned to change, meaning routines called by this
> code will disappear (or be replaced by others in a non-trivial manner).
> The specialized code here is also not mature and up-to-date with the
> latest gromacs.
> 
> The code is under the same LGPL license as the rest of gromacs.
> 
> > Augustin
> >
> > ----- Mail original -----
> >> De: "David van der Spoel" <spoel at xray.bmc.uu.se>
> >> À: gmx-developers at gromacs.org
> >> Envoyé: Vendredi 18 Novembre 2016 16:11:22
> >> Objet: Re: [gmx-developers] Interfacing with gromacs to get potential
> >> energies/ forces
> >>
> >> On 18/11/16 11:43, Augustin Chevallier wrote:
> >>> Hello,
> >>>
> >>> first, I apologize if this is not the right mailing list, however it
> >>> seemed more appropriate than user mailing list.
> >>>
> >>> I would like to get the potential energy computed by gromacs without
> >>> having to use the command line and the overhead of writing/reading the
> >>> result in files. I had a look at the code and indeed it seems possible
> >>> using mdlib, however I'm a bit overwhelmed by the complexity of the code.
> >>>
> >>> From what I understood, I should call the function do_forces(), however
> >>> it has many parameters, and after looking at do_md() ,mdrunner()  and
> >>> main() it seems there is quite a lot of things to set up before calling
> >>> that function.
> >>>
> >>> So here are some more precise questions:
> >>> *which initialization are required? should I just copy past some parts
> >>> of mdrunner for that?
> >>> *how do I load a gromacs topology file?
> >>> *I guess I also need a forcerec, how do I create on too?
> >>> *If I want to modify the atoms positions, can I do it in mdAtoms
> >>> directly?
> >>>
> >>> I know these questions are rather vague, so if you could just point to
> >>> which part of md_runner() and do_md() I should look at, it would greatly
> >>> help!
> >>>
> >> If you check out the branch qmmm you will find there is an interface to
> >> gromacs in src/gromacs/mmslave.h. You can call a few functions to change
> >> coordinates and charges and then calculate energy and forces. If you
> >> link your code to gromacs and call these routines it should work.
> >>
> >> The problem with this code is that it will most likely disappear or
> >> change a lot before being taken up in regular gromacs.
> >>
> >>
> >>
> >>> Thanks!
> >>> Augustin Chevallier
> >>>
> >>>
> >>
> >>
> >> --
> >> David van der Spoel, Ph.D., Professor of Biology
> >> Dept. of Cell & Molec. Biol., Uppsala University.
> >> Box 596, 75124 Uppsala, Sweden. Phone:	+46184714205.
> >> spoel at xray.bmc.uu.se    http://folding.bmc.uu.se
> >> --
> >> Gromacs Developers mailing list
> >>
> >> * Please search the archive at
> >> http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List before
> >> posting!
> >>
> >> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> >>
> >> * For (un)subscribe requests visit
> >> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or
> >> send a mail to gmx-developers-request at gromacs.org.
> >>
> 
> 
> --
> David van der Spoel, Ph.D., Professor of Biology
> Dept. of Cell & Molec. Biol., Uppsala University.
> Box 596, 75124 Uppsala, Sweden. Phone:	+46184714205.
> spoel at xray.bmc.uu.se    http://folding.bmc.uu.se
> --
> Gromacs Developers mailing list
> 
> * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List before
> posting!
> 
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> 
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or
> send a mail to gmx-developers-request at gromacs.org.
> Hi,

>On Fri, Nov 18, 2016 at 11:43 AM Augustin Chevallier <augustin.chevallier at inria.fr> wrote:
>
>    Hello

    first, I apologize if this is not the right mailing list, however it seemed more appropriate than user mailing list. 


Sure, this is appropriate discussion here.
 

    I would like to get the potential energy computed by gromacs without having to use the command line and the overhead of writing/reading the result in files.


If you don't need to change the model physics between computations of PE, then you should still consider mdrun -rerun, per http://www.gromacs.org/Documentation/How-tos/Single-Point_Energy.
 

    I had a look at the code and indeed it seems possible using mdlib, however I'm a bit overwhelmed by the complexity of the code.


Yes. We are in the process of designing an API that would be usable for what you want, but that's years away still.

    From what I understood, I should call the function do_forces(), however it has many parameters, and after looking at do_md() ,mdrunner()  and main() it seems there is quite a lot of things to set up before calling that function.

    So here are some more precise questions:
    *which initialization are required? should I just copy past some parts of mdrunner for that?
    *how do I load a gromacs topology file?
    *I guess I also need a forcerec, how do I create on too?


mdrun reads all of that from the .tpr and looks at your hardware and command-line options and sets up all of that complexity. I don't think you should want to try to simplify that - you need to satisfy the prerequisites of do_force() and those were never designed for this use. The important questions are "what will vary between evaluations?" and "why is GROMACS the right tool for the job?"

    *If I want to modify the atoms positions, can I do it in mdAtoms directly?


No, they live in a variable of type t_state.
 

    I know these questions are rather vague, so if you could just point to which part of md_runner() and do_md() I should look at, it would greatly help!


First let's see whether you can avoid it :-)

Mark
 

    Thanks!
    Augustin Chevallier
    --
    Gromacs Developers mailing list

    * Please search the archive at http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List before posting!

    * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists

    * For (un)subscribe requests visit
    https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or send a mail to gmx-developers-request at gromacs.org.





More information about the gromacs.org_gmx-developers mailing list