Here are some source code modifications that allow two reference
groups for the pull code (umbrella option). It would be simple to mod
this for more than two groups. It would be slightly more difficult to
enable all pull options (e.g. constraints) with more than one
reference group, as that may require modification to update() (and one
other function whose name escapes me) in some cases.
For usage, on would have, in addition to x.ppa, a file called x.ppa2.
I have only tested it when there is one pulled group per reference
group.
I used gromacs 3.3.1 as my base code. Based on the .pdf manual
recently made available for gromacs 4, this option does not appear to
be currently available for gromacs 4, and I didn't invest any time to
see how difficult it would be to add this.
Hope it is useful,
Chris.
###
$diff orig/src/kernel/md.c new/src/kernel/md.c
329c329
< t_pull pulldata; /* for pull code */
---
t_pull pulldata,pulldata_refTwo; /* for pull code */
397a398,400
init_pull(log,nfile,fnm,&pulldata_refTwo,state->x,mdatoms,inputrec->opts.nFreeze,
state->box,START(nsb),HOMENR(nsb),cr);
693c696
< (pulldata.runtype == eAfm || pulldata.runtype == eUmbrella))
---
(pulldata.runtype == eAfm || pulldata.runtype == eUmbrella)){
696a700,703
pull(&pulldata_refTwo,state->x,f,force_vir,state->box,
top,inputrec->delta_t,step,t,
mdatoms,START(nsb),HOMENR(nsb),cr);
}
###
$diff orig/src/mdlib/pullinit.c new/src/mdlib/pullinit.c
223a224
static int timesCalled=0;
230a232,235
char tempfnmpi[256],tempfnmpo[256],tempfnmpd[256]; /*part of the
double pull reference hack */
timesCalled++;
241c246,256
< read_pullparams(pull, opt2fn("-pi",nfile,fnm), opt2fn("-po",nfile,fnm));
---
if(timesCalled==1){
sprintf(tempfnmpi,"%s",opt2fn("-pi",nfile,fnm));
sprintf(tempfnmpo,"%s",opt2fn("-po",nfile,fnm));
sprintf(tempfnmpd,"%s",opt2fn("-pd",nfile,fnm));
}else{
sprintf(tempfnmpi,"%s2",opt2fn("-pi",nfile,fnm));
sprintf(tempfnmpo,"%s2",opt2fn("-po",nfile,fnm));
sprintf(tempfnmpd,"%s2",opt2fn("-pd",nfile,fnm));
}
read_pullparams(pull, tempfnmpi, tempfnmpo);
248c263
< char * filename = opt2fn("-pd", nfile, fnm);
---
char * filename = tempfnmpd;
250c265
< pull->out = ffopen(opt2fn("-pd",nfile,fnm),"w");
---
pull->out = ffopen(tempfnmpd,"w");
###
Code changes finished.
_______________________________________________
gmx-users mailing list [email protected]
http://www.gromacs.org/mailman/listinfo/gmx-users
Please search the archive at http://www.gromacs.org/search before posting!
Please don't post (un)subscribe requests to the list. Use the
www interface or send it to [EMAIL PROTECTED]
Can't post? Read http://www.gromacs.org/mailing_lists/users.php