[gmx-users] Combining two Non-bonded potentials

Mehmet Suezen suzen at theochem.tu-muenchen.de
Tue Jan 15 19:17:52 CET 2002

David van der Spoel wrote:
> There is no straightforward way to implement this in gromacs. One would
> have to modify the inner loops, and pass an extra parameter to them (which
> needs to be read in grompp etc.)

Hi again,

I have been tring  to add a new non-bonded force field to source. Form
is as follows;

 V(r_ij) = q_i*q_j/ r_ij^2 + A_ij * exp(-B_ij * r_ij) - C_ij/r_ij^6 +
           4*e_ij*[(s_ij/r_ij)^n -(s_ij/r_ij)^m]
  7 Parameters To Be Pass: A_ij, B_ij, C_ij, e_ij, s_ij, n, and m

I've found following routines to be modified: I've call new potential
Routine                                 Short Description 
include/types/idef.h                       Definition of F_BHAM
include/types/nrnb.h                       Loop number
include/types/enums.h          match names-array with src/nrnb.c
include/types/forcerec.h                   Non-bonded parameter list ??
include/mdebin.h                      t_idef  bool ??
include/mdrun.h                       set_pot_bools ??
src/kernel/convparm.c             switch for non-bond params:
src/kernel/do_gct.c               Update the nonbonded force parameters
src/kernel/toppush.c              In function generate_nbparams  ??
src/kernel/gctio.c                            in function  copy_ff
src/kernel/topdirs.c                          see CASE d_nonbond_params
src/kernel/grompp.c                           Renumber nlist
src/gmxlib/mkinl.h                  define DO_BHAM
src/gmxlib/mkinl.c                  in function set_loop_options
src/gmxlib/mkinl_declarations.c     in function function_info
src/gmxlib/mkinl_interactions.c     in function calc_interactions
                                               do_softcore (my not be
src/gmxlib/ifunc.c                  in function t_interaction_function
                                   (F_BHAM) corresponds to
src/gmxlib/names.c             corresponds to include/types/enums.h
                               (names appeared in mdp file)
src/gmxlib/tpxio.c                  in function do_iparams (passin
src/gmxlib/txtdump.c                in function pr_iparams  (for dumping
src/gmxlib/nrnb.c              inner loop keynumbers  for non-bonded

But my difficulty arrises on how to pass force field parameter arguments
explicit potential calculation phase. Because I found structure
constructions a bit
complicated. And I guess crucial thing is adding new function in 
innerloop generation :mkinl_interactions.c. I do not need any water

these are  my findings that one needs to be modify 
* include/types/idef.h
  - New enumaration F_BHAMLJ
  - New Number of MAXFORCEPARAM 7
  - New structure bhamlj (7 params)  in typedef union
* include/types/nrnb.h
  - New Inner Loop  id added eNR_INL1500 means normal coulomb plus
* include/types/enums.h
  - New enumaration for NBF selection eNBF_BHAMLJ
* src/gmxlib/ifunc.c
  - New  def_np  BHAMLJ BuckingHamLj 3 7  (def,name,id,number of params)
* src/gmxlib/names.c
  - New enbf_names "Buckinghamlj"
* src/kernel/convparm.c
   - in function assign_param new case added F_BHAMLJ
* src/kernel/toppush.c  In function generate_nbparams new case F_BHAMLJ

I'd be glad for tips and important points one should be careful. At
least are there any other
routine should one modify except then those I mensioned above?.

On the other hand I found  Justin's documentation not sufficient by
really helpful
If there were more description on subprograms, I beleive it 'd be easy
add some more feature for people who doesn't know a lot about GROMACS



More information about the gromacs.org_gmx-users mailing list