[MMTK] Minimization module

khinsen at cea.fr khinsen at cea.fr
Mon Nov 7 09:31:01 CET 2005

On 06.11.2005, at 06:24, vanitha at cs.wisc.edu wrote:

> I need to add a new minimization algorithm to MMTK. I'm assuming  
> that this
> would entail changes to Minimization.py, MMTK_minimization.c and a  
> total
> recompile (I installed MMTK from source). Am I right? Or is there an
> easier way to do this like recompiling just the necessary source  
> files?

These are actually two questions:

1) How best to add a minimization algorithm to MMTK.
2) How to handle compilation/installation.

Question 2) is the simpler one, so I'll answer that one first. When  
you install from source, you unpack the tar file and do "python  
setup.py build" followed by "python setup.py install", which might  
require administrator privileges. Most users would then normally  
remove the source code directory. However, if you keep it, you can  
make changes to the sources and then just redo the "build" and  
"install" steps, in which case "build" will only recompile the files  
that actually changed. There is no need to recompile everything as  
long as you don't delete the subdirectory "build" that is created by  
the build process.

As for adding a minimization algorithm to MMTK, there are several  
options. You can, as you suggest, modify Minimization.py and  
MMTK_minimization.c. This is the simplest approach if your algorithm  
is a minor modification of something already there, and if you plan  
to use it only for yourself or submit it for inclusion in the  
official distribution.

The most important alternative is to add a new Python module plus a  
new C or Pyrex module, following the model of Minimization.py and  
MMTK_minimization.py. An example of this approach (for integrators,  
but that's nearly the same) is given in Examples/LangevinDynamics.  
This is a bit more effort to set up, but the advantages of this  
approach are numerous:

1) You don't need to change the existing MMTK code, which means you  
cannot break anything there.

2) You can keep your code separate from MMTK, install it separately  
(even in a different directory), and distribute it independently, for  
example to collaborators for testing. Those users can then be sure  
that installing your add-on won't break their existing MMTK  

3) You can use tools that weren't available when I wrote the initial  
minimization code, in particular Pyrex.

You can also look at Examples/ForceFields to see how to write and  
package independent add-on modules.

Konrad Hinsen
Laboratoire Leon Brillouin (CEA-CNRS), CEA Saclay,
91191 Gif-sur-Yvette Cedex, France
Tel.: +33-1 69 08 79 25
Fax: +33-1 69 08 82 61
E-Mail: khinsen at cea.fr

More information about the mmtk mailing list