diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc index 1e5d2d20abbdb16a9a4acae04f6e685c50e376ab..4aa4b97d1266c86ec0738c298d6c828cea43af4e 100644 --- a/src/harmonicmaps.cc +++ b/src/harmonicmaps.cc @@ -145,11 +145,14 @@ int main (int argc, char *argv[]) try // Initial iterate // ////////////////////////// - std::string lambda = std::string("lambda x: (") + parameterSet.get<std::string>("initialIterate") + std::string(")"); - PythonFunction<FieldVector<double,dim>, TargetSpace::CoordinateType > pythonInitialIterate(Python::evaluate(lambda)); + // Read initial iterate into a PythonFunction + typedef VirtualDifferentiableFunction<FieldVector<double, dim>, TargetSpace::CoordinateType> FBase; + + Python::Module module = Python::import(parameterSet.get<std::string>("initialIterate")); + auto pythonInitialIterate = module.get("fdf").toC<std::shared_ptr<FBase>>(); std::vector<TargetSpace::CoordinateType> v; - Functions::interpolate(feBasis, v, pythonInitialIterate); + Functions::interpolate(feBasis, v, *pythonInitialIterate); for (size_t i=0; i<x.size(); i++) x[i] = v[i];