Skip to main content

Title. I can easily get the entry/exit points into a GRIN lens via tracing rays to a surface using SingleRayNormUnpol() and BatchRayTrace.

However, this only gives me the entry/exit points into a surface. Is there a way to get information out about the beam path within a GRIN optic via ZOS-API?

As an additional note, the GRIN optic is modelled via a custom *.dll extension I developed (not a ZEMAX Gradient 1-12 surface).

My alternative is to write my own GRIN raytracer for the intermediate steps.

@mlunin 

 

I haven’t checked if there isn’t already a built-in solution. I wouldn’t be surprised if there isn’t. Ray tracing is done on a per surface basis generally. However, you can also use this to your advantage.

Instead of having a single grin surface with a given thickness and Delta T. You can divide the original surface thickness into multiple grin surfaces with a thickness equal to Delta T (and keeping the same grin settings). Seeing you’ve already programmed your own grin DLL, I’m assuming you are able to program this into the ZOS-API. Let us know otherwise 😊

Take care,


David


Splitting like that wouldn’t be that elegant of a solution here (I thought of it previously) - I have a front and rear curvature that don’t match. Also - it would mess up having (0,0,0) coordinate be at the start of the lens (this simulation involves a lens that also has z-variance in the GRIN field)


@mlunin 

 

In Non-Sequential mode, the ray segments appear within the GRIN lens. I’ve used GRIN3 in the example below:

In hybrid mode, we seem to be able to get this data from a Analyze..Rays & Spots..Single Ray Trace.

I haven’t tested, but I’m assuming this will work in the ZOS-API.

I hope this helps.

Take care,

 

David


This might work since I only need it for one lens system - but the biggest limitation for me would be the 12 input box limit in NSC mode - I use a GRIN with about 54 inputs. I could always hardcode it as a one-off though since I only need this for 1-2 systems.

 

Thanks!!


Reply