incompatibility between Constraint::Weld and LocalEnergyMinimizer::minimizeEnergy ?
Posted: Fri Oct 14, 2016 2:22 am
Guys,
Is there an incompatibility between Constraint::Weld and LocalEnergyMinimizer::minimizeEnergy ?
I create one complex comprising proteins A and B, which are constrained to each other (I want them to stay together, moving as a single rigid body) and then apply springs to pull them onto another complex, comprising related proteins C and D. All four chains are Rigid, that is they have no internal degrees of freedom. C and D have no SimTK constraints per se, but their root mobilizer (connecting them to Ground) is of type Weld so they are immobile. When run the dynamics on this system, calling TimeStepper.stepTo(...), A and B stay together and move to align with D and C as expected. The only downside of calling the time integrator is that it is a bit slow compared to the minimizer. This is a very simple, low-dimensional problem, so it makes sense to just minimize.
However if I call LocalEnergyMinimizer::minimizeEnergy, A and B change their relative orientation, and are no longer in the same sort of complex. The constraints do not work, rather than holding A and B together they change the relative position and orientation of A vs. B. As such, A and B are also unable to align properly to C and D. C and D do remain fixed in their correct, initial position.
I verified that if I removed the Constraint::Weld, A gets aligned with C, and B gets aligned with D, as expected. However it is likely that the relative orientation of A vs. B is not exactly the same as it was initially. There are reasons why this can be a problem in my case.
I wonder if you could tell me whether Constraint::Weld is compatible with LocalEnergyMinimizer::minimizeEnergy ? Are there special considerations one needs to keep in mind? I think I got simbody from github in July 2015 using git clone https://github.com/simbody/simbody.git which hopefully gets the trunk release.
thanks
Sam
Is there an incompatibility between Constraint::Weld and LocalEnergyMinimizer::minimizeEnergy ?
I create one complex comprising proteins A and B, which are constrained to each other (I want them to stay together, moving as a single rigid body) and then apply springs to pull them onto another complex, comprising related proteins C and D. All four chains are Rigid, that is they have no internal degrees of freedom. C and D have no SimTK constraints per se, but their root mobilizer (connecting them to Ground) is of type Weld so they are immobile. When run the dynamics on this system, calling TimeStepper.stepTo(...), A and B stay together and move to align with D and C as expected. The only downside of calling the time integrator is that it is a bit slow compared to the minimizer. This is a very simple, low-dimensional problem, so it makes sense to just minimize.
However if I call LocalEnergyMinimizer::minimizeEnergy, A and B change their relative orientation, and are no longer in the same sort of complex. The constraints do not work, rather than holding A and B together they change the relative position and orientation of A vs. B. As such, A and B are also unable to align properly to C and D. C and D do remain fixed in their correct, initial position.
I verified that if I removed the Constraint::Weld, A gets aligned with C, and B gets aligned with D, as expected. However it is likely that the relative orientation of A vs. B is not exactly the same as it was initially. There are reasons why this can be a problem in my case.
I wonder if you could tell me whether Constraint::Weld is compatible with LocalEnergyMinimizer::minimizeEnergy ? Are there special considerations one needs to keep in mind? I think I got simbody from github in July 2015 using git clone https://github.com/simbody/simbody.git which hopefully gets the trunk release.
thanks
Sam