This API is currently available in C++ and Python.

class OEInterAdaptor : public OEMolAdaptor

The OEInterAdaptor class provides the ability to optimize a molecule or conformation with the use of internal coordinates (bond lengths, bond angle bonds and dihedral angles) defined by the internal Z-matrix.

The following methods are publicly inherited from OEAdaptor:
The following methods are publicly inherited from OEFunc0:
The following methods are publicly inherited from OEFunc1:
The following methods are publicly inherited from OEMolFunc:
The following methods are publicly inherited from OEMolAdaptor:
The OEInterAdaptor class defines the following public methods:


OEInterAdaptor(OEMolFunc1 &, bool dihedrals=true, bool own=false)

The molecule function used for function evaluation must be provided as the first argument to the constructor. The second argument allows to fix all dihedral angles. By default all dihedral angles are optimized. The third argument specifies whether the OEInterAdaptor object takes ownership of the memory of the molecule function instance. By default the OEInterAdaptor instance does not take ownership of the molecule function, so the OEInterAdaptor destructor does not delete the molecule function instance. If ownership of the molecule function is transferred to the OEInterAdaptor instance, the molecule function’s delete operator will be called in the OEInterAdaptor destructor.

Default and copy constructors.


bool AdaptGrad(double *ga, const double *g) const

Transforms the set of Cartesian gradients passed as a second argument to the method, into a set of internal coordinates gradients and copies them into the array passed as a first argument.


bool Set(const OESystem::OEUnaryPredicate<OEChem::OEAtomBase>&,
         unsigned int functype = OEFuncType::InterAdapt)
bool Set(const OESystem::OEUnaryPredicate<OEChem::OEBondBase>&,
         unsigned int functype = OEFuncType::InterAdapt)

Those two methods assign atom and bond predicates which are used to partially restrict molecules during optimization. First method specifies atoms which are to be held fixed in their starting positions. Second method is used to fix dihedral angles a1-a2-a3-a4 defined by a middle bond a2-a3. Both methods Set must be called before the method derived from Setup.