Hi Sasha, once you create a build directory (called build in the GROMACS example pages) you can go back to it after changing source files. Unless you did make clean in there (or equivalent if you used another build driver, e.g. Ninja), the next build will skip re-building of files that don’t need to be updated.
In addition, using ccache is very helpful to keep a cached copy of all object files. To use it, install it based on what your OS requires (Linux is easiest) and use -DGMX_ENABLE_CCACHE=ON). Most automated build tests rely heavily on this feature to run quickly.
Thanks! My question though is this: whatever code changes I introduce only affect mdrun. Is it possible to only keep rebuilding this one executable? In other words, is it possible to have gmx mdrun1, gmx mdrun2, etc in the same build directory?
Is it possible to have more than one pull section in the mdp file? The reason for this question is this: say, I want to calculate the PMF of an ion while the membrane is being shaken as discussed above. Both require pull sections, one being the hacked constant-force applied to the membrane, while the other is zero-velocity pull of that ion. Any chance this could be done without resorting to violence? Thanks!
Thanks Justin.
I think it unfortunately creates a bit of a mess, because I have a total of three groups involved in two separate biases. Namely, the constant-force pull contains
I understand that statements like for example pull_coord1_vec are specific to each bias, but the ones above are not, which seems like a problem. I can post my entire pull section prepared per your suggestion, if needed…
The pull_ngroups setting is global; it applies to any of the biases being applied. So you just define 3 groups that can be used by any bias, then call them by name in the appropriate sections.
Is the combination of setting pull_ngroups = 3 along with three separate pull_group*_name statements a correct understanding of your suggestion? In other words,
I would have been as simple, trust me – if the suggested sinusoidal force hack didn’t use pull code. ;) In any case, thanks a bunch. I will be trying this monster soon enough to report further.
The code version with the hack suggested by Berk does this with our pull input – even if the pull_coord1_k for the shaking atom is set to zero. I thought I was close to making it work, but no.
Internal error (bug):
Step 0: The total potential energy is -nan, which is not finite. The LJ and
electrostatic contributions to the energy are 17038.4 and 166975,
respectively. A non-finite potential energy can be caused by overlapping
interactions in bonded interactions or very large or Nan coordinate values.
Usually this is caused by a badly- or non-equilibrated initial configuration,
incorrect interactions or parameters in the topology.
As soon as in the code above the first bias is removed and ncoords etc are adjusted appropriately, the issue disappears, even with the hacked code… This hack seems to turn things upside down when multiple biases are present.
Go figure. It appears that crashing stops if the order of the two biases from above is switched and the hacked one is last… I hope Berk could comment on this behavior, so I would get at least some peace of mind.
This leaves us with the following issue for PMF calculations: the umbrella pullf/pullx data with -pf/-px supplied to mdrun will now produce two non-time columns and I only am interested in the first one. Is there a way to either output only the first column? Alternatively, the gmx wham documentation describes adding the groupsel.dat file, which, to the best of my understanding of that description, in my case would contain a bunch of lines as follows
Anyway, I just compared actual usable data from hacked and pristine codes and the physics seems to work – much better than expected, actually. We may have introduced something when we [very lightly] messed with amplitude parsing, which we abandoned anyway. I agree that your hack should have caused nothing.
In any case, I don’t think I should bother you with this now, but maybe I will at some point later. Thanks! ;)
p.s. I really wish proper sinusoidal excitation was implemented either as part of pulling or as a separate feature. Please accept the fact that non-bio people love and use Gromacs. I just got back from a nanofluidics conference and there’s a whole bunch of people who would welcome this feature.