quartiq / rayopt

Python optics and lens design, raytracing
GNU Lesser General Public License v3.0
254 stars 50 forks source link

Error running tutorial #11

Closed gapster closed 8 years ago

gapster commented 8 years ago

I've just installed rayopt from the Conda repository: conda install -c https://conda.anaconda.org/jordens/channel/ci rayopt

This is what conda tells me I have: rayopt * 0.0+git py27_102 jordens/channel/ci

My python, numpy, and matplotlib are conda's latest numpy 1.11.1 matplotlib 1.5.1 python 2.7.12

And finally OS X 10.11.5

I ran the tutorial jupyter notebook that comes with the package, but an error was raised in the third notebook frame (ro.Analysis(s))

Any ideas?


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-bb2a1fe7e9c5> in <module>()
----> 1 ro.Analysis(s)

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/analysis.pyc in __init__(self, system, **kwargs)
     72             setattr(self, k, v)
     73         if self.run:
---> 74             self.run()
     75         if self.print:
     76             for t in self.text:

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/analysis.pyc in run(self)
    113         for h in min(self.system.fields), max(self.system.fields):
    114             t = GeometricTrace(self.system)
--> 115             t.rays_clipping((0, h))
    116             t.plot(ax)
    117 

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/geometric_trace.pyc in rays_clipping(self, yo, wavelength, axis)
    213 
    214     def rays_clipping(self, yo, wavelength=None, axis=1):
--> 215         z, p = self.system.pupil(yo, l=wavelength, stop=-1)
    216         yp = np.zeros((3, 2))
    217         yp[1:, axis] = p[:, axis]/np.fabs(p).max()

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/system.pyc in pupil(self, yo, l, stop, **kwargs)
    592             c = self._pupil_cache[k] = PolarCacheND(self._aim_pupil,
    593                                                     l=l, stop=stop, **kwargs)
--> 594         q = c(*yo)
    595         return q[0], q[1:].reshape(2, 2)

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/cachend.pyc in __call__(self, *args)
     50             if np.any(np.isnan(guess)):
     51                 guess = self.guess
---> 52         value = self.solver(*args, guess=guess, **self.kwargs)
     53         self.cache[args] = value
     54         self._update()

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/system.pyc in _aim_pupil(self, xo, yo, guess, **kwargs)
    577             yp = [0, 0]
    578             yp[ax] = 2*sig - 1.
--> 579             a1 = self.aim_marginal(y, yp, z, a[sig, ax], **kwargs)
    580             a[sig, ax] = a1
    581             if sig == 1:  # and guess is None

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/system.pyc in aim_marginal(self, yo, yp, z, p, l, stop, **kwargs)
    553             else:
    554                 return d[-1]
--> 555         a = self.solve_brentq(dist, **kwargs)
    556         assert a
    557         return a*p

/Users/gpajer/miniconda2/lib/python2.7/site-packages/rayopt/system.pyc in solve_brentq(self, merit, a, b, tol, maxiter)
    496                 break
    497         if i == maxiter - 1:
--> 498             raise ValueError("no viable interval found", a, b, fb)
    499         fa = merit(a)
    500         if abs(fa) <= tol:

ValueError: (u'no viable interval found', 4.0, 4.0, nan)