# [gmx-developers] Re: MCMD, dynamic topology, constraints

Jason de Joannis jdejoan at emory.edu
Thu Jun 16 18:07:27 CEST 2005

```Here is what I have done for turning off Lincs constraints.
In update() after the call to constrain(), for those constraints
with type set to zero, I replace the new coords "xprime" with the
unconstrained ones "x_unc". This seems to work because the simulation
does not crash any more. Of course it does generate a lot of
Lincs warnings but that is okay.

I think this approach also gets the constraint forces and virial right.
Are there any caveats/problems with this approach?

Another idea I had was to use
bllen[b] = bllen0[b];
inside constrain_lincs(). The idea is to trick mdrun into thinking
that the current constraint length "bllen" is equal to the
set-point "bllen0". I don't know why this didn't work (i.e. crash).

A word of explanation for the constraint blocks would help if anyone
knows how they work...

/Jason

Quoting Jason de Joannis <jdejoan at emory.edu>:

> Hi,
>  I have found an easy way to toggle various interactions on/off
> during a simulation. For example, to turn off RB-dihedral #i,
> set its "type" to 0 as follows:
> top->idef.il[F_RBDIHS].iatoms[5*i] = 0;
>
>  Then inside the rbdihs() routine make the RB evaluation conditional:
>   for(i=0; (i<nbonds); ) {
>     type = forceatoms[i++];
>     ai   = forceatoms[i++];
>     aj   = forceatoms[i++];
>     ak   = forceatoms[i++];
>     al   = forceatoms[i++];
>     if(type) {
>       [ evaluate this RB-dihedral... ]
>     }
>   }
>
>  Now I am trying to find a similar simple approach for toggling LINCS
> bond constraints, but this routine has a different structure than those
> of the other bonded interactions.
>
> /Jason
>
> --
> Jason de Joannis, Ph.D.
> Emory University
> 1515 Pierce Dr, Atlanta, GA 30329
> Phone: (404) 712-2983
> Email: jdejoan at emory.edu
> http://userwww.service.emory.edu/~jdejoan
>
>
>
>
>

```