[MMTK] creating new ForceField

konrad.hinsen at cea.fr konrad.hinsen at cea.fr
Thu May 18 09:29:27 CEST 2006

On 17.05.2006, at 21:37, Andrey Khavryuchenko wrote:

> I'm trying to create new force field using PyQuante package.
> As far as I've got from reading docs and source code, I have to define
> 'evaluatorTerms' in the class, derived from ForceField.  However,  
> there's
> no documentation on this method.
> Studying the source code and provided examples show that this  
> method has to return a list of evaluators.


> But my code never ever reaches the evaluator....

What did you do to use your force field?

> def py_evaluator():
>     print 'here'
>     return
> class RhfForceField(ForceField.ForceField):
>     def __init__(self):
>         ForceField.ForceField('Restricted Hartree Fock')
>         return
>     def evaluatorTerms(self, universe, subset1, subset2, global_data):
>         return [py_evaluator]

That's basically what you need to do. However, the low-level  
evaluator must have a C interface, a Python fonction won't do.

I suggest you look at a recent development release (2.5.x) for two  
simple examples. They are in Examples/Forcefield/ElectricField and  
Examples/Forcefield/HarmonicOscillator, or here on the Web:


Each example is provided in three versions: a C implementation, a  
Pyrex implementation, and a Python implementation. The Python  
implementation would be the ideal starting point for your project.  
Note however that there is a yet unresolved problem with it: when  
called from a minimizer or integrator, evaluators implemented in  
Python tend to crash on at least some platforms and some Python  
versions. I have no idea what causes these crashes, nor enough time  
at the moment to investigate much.

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: konrad.hinsen at cea.fr

More information about the mmtk mailing list