Introduction to Quadoa Optical CAD

Webinar hosted on July 31, 2024. Overview of Quadoa Optical CAD including Q&A session.

Transcription:

Hi, everyone.

Thanks for attending this introduction to Quadoa optical CAD webinar.

My name is Akash Arora, and I’ll be your host today.

For those of you who are going to stick around for the question and answer session at the end, please think about and submit any questions via the chat functionality in Teams.

Once we reach the Q and A, I will take those questions via Teams. And myself and some of the developers from Quadoa will handle those questions.

So we have a lot to cover today. Let’s go ahead and get started.

What is Quadoa Optical CAD?

It is technical software for optical systems design.

It was developed by Quadoa Optical Systems based in Berlin, Germany. And it’s been commercially available for a little under two years.

Diopter is the US distributor for Quadoaa Optical CAD, and we provide sales, technical support, and software training on the use of Quadoa.

Who uses Quadoa?

Really, anyone doing research and development in the area of optical design.

And that includes students and professors who are learning and teaching in optics courses at university.

What types of applications can Quadoa would be used for?

It really falls into a couple of categories, imaging and a focal optics, your standard cameras, telescopes, microscopes, lasers and fiber systems.

So it can do coherent beam propagation, Gaussian beam propagation, and some illumination systems as well. While QADOA is not a non sequential ray tracing package, it can do some simple luminaires, area lighting.

We’ll talk about that in a little bit.

The key capabilities of Quadoa can be categorized into a few areas.

Analysis, which is where we define the optical system and then have the software calculate various optical metrics of interest.

Optimization, where we define variables that the program can change, targets and constraints that we are trying to achieve, and have sophisticated algorithms improve the performance of the optical system.

And lastly, tolerancing, which will look at how the performance of the system changes with perturbations and give us an idea of how close it has to be to perfect to still meet SPAC once it’s built.

Quadoa is a native Windows Linux program.

You can run it on a Mac operating system, but it requires a virtual machine running one of those two platforms.

And from a visual standpoint, the layout has been designed to be similar to common engineering and productivity software. So it’s very intuitive to use straight out of the box.

There is a ribbon interface and button bars for quick tool access, editors and three d layouts for entering data about an optical system, and graphic and text windows for computing and displaying calculated data.

While Quadoa, as we’ll show, has many of the features you would expect from a typical optical design software package, there are a couple of things that really set it apart from existing optical design software.

First and foremost, it’s the code architecture in the modern UI.

The core of Quadoa is written in C plus plus and the user interface layer is in QT.

And this enables a really robust user interface and a very comprehensive API, which we’ll talk about.

Quinoa’s modeling paradigm comes down to really three key things that differ from standard sequential ray tracing software.

An object based optical model, which allows us to easily position components in absolute or relative coordinate systems, A surface stack definition, which provides a base spherical surface.

And we can add arbitrary property layers on top of that to define nearly unlimited types of surfaces.

And then multi sequential ray tracing, which is Quadoa is a natively multiple sequence program.

When we talk about double pass and multi pass systems, you’ll see how this is extremely powerful.

Quadoa is a base package, and then it has three add on toolboxes, a mechanical pad integration or import, which we’ll talk about, the ability to do coherent beam propagation using Gaussian beam decomposition, and a scripting API interface where you can use MATLAB, Python, or C plus plus to control the program.

Lastly, looking forward, Quadoa doesn’t currently offer non sequential ray tracing, but there is a plan to implement this. And the vision is to have a unified optical model to do sequential and non sequential ray tracing.

So with that being said, let’s jump into the program and take a look at some of the key capabilities.

Okay. Here we have a simple microscope objective.

And let’s talk about some of the fundamental capabilities of Quadoa’s modeling paradigm.

First and foremost, we have what we call the optical design editor. And you’ll see with many of the windows in Cordova, we have some tools up here particular to those editors.

We can click and drag to move and float and dock windows.

But when we’re talking about how we model the optical system, this is our object based optical model.

So here in this microscope objective, you can see that we’ve defined a surface highlighted here, which serves as the surface where our rays begin, a surface at the end, which serves as the focal plane. And then we’ve grouped our lenses into a hierarchical top level assembly, and then sub assemblies.

You can see here in this tree like structure, which is similar to mechanical CAD, we can reference things positionally in absolute or relative positions.

If I expand this off axis positioning entity, you can see here where we define the position of our component, the orientation, the order of operations, and even an offset pivot point directly within the definition of every component line.

All of the elements lie within the high level assembly, And then you can see that we have a subassembly here for a couple of additional elements that we have.

All of these lenses are defined as spherical surfaces. We’ll talk in just a few moments about how you define the properties of surfaces, form, phase, so on and so forth.

One of the great things about Quadoa that highlights the modern user interface is that you can define your optical components here in the optical design editor, or you can right click and modify components here directly in the three d viewer. You can see that I can move components around. I have access to a couple of different tools here, and I can drill down on individual surfaces and modify things here.

If you’ve got a rather complicated optical system, it can be convenient to directly modify components here in the three d viewer.

The optical design editor is where we define our optical components, but it is not where we define the sequence that rays trace through the system or the properties of those rays. And this really highlights the paradigm shift with Quadoa.

If I come over here to the system setup tree, you’ll see that there is a sequences entity here.

And I have defined a user sequence where I specify the aperture type, the field type, stop surface, focal versus a focal.

And if I expand that tree, I have two entities, an entity that defines my source properties and an entity that defines my surface list.

Let me expand the source properties entity first, and you can see here some common definitions that you would want to provide for your source.

What type of source it is. You’ll notice the standard point source and plain wavefront, but also some more powerful source options options that you don’t find in other common software.

The ability to find the distribution of rays, and this the options here actually change depending on what source type you’re using.

Appetization, polarization, which we’ll talk about a little bit later. You can use Jones and Stokes calculus to define polarization states, and then wavelengths and fields common to all software packages, you can define those.

Once you define that source, again, the real paradigm shift is this surface list down here.

This is where we tell Quadoa where the rays are going to start, what order they’re going to propagate through the surfaces, and what the action on a particular surface should be, whether it be transmitting or reflecting.

In this simple microscope objective, it’s not too complicated, and we can actually define this sequence as an auto sequence.

If I right click here, you’ll see an auto sequence is telling Quadoa that the order we’ve defined the components in our editor is the order that it should trace the rays.

So it’s easy to set up those types of systems. But as we’re going to see in a few moments, when you have systems that are more complicated, this separation of optical system definition and ray sequence definition makes all the difference.

Let’s jump over and take a look at some analyses.

Here’s an optical system where I have just an aspheric lens. And in just a few moments, I’m going to talk about how we define aspheric properties on different surfaces.

And you can see here many of the analyses that I have open. If I go to the analysis tab, you can get a better idea of the different types of analyses that are supported in Quadoa.

All of the ones that you would expect from a standard optical design software package, and even some that you might be a little bit surprised about.

Again, one of the great things about Quadoa’s user interface execution is all of the plots are very modern, provide interactive capabilities with zooming, dragging the different axes, resetting things.

On any plot, you can export the image or the data to a CSV file.

On three-dimensional plots, you have a couple of other options as well.

Here in most plots, if you click the gear icon, you see the settings unique to that plot. Here we have an FFT point spread function.

You also have a display settings option, where you can quickly toggle between a two dimensional plot, a three-dimensional surface plot, or cross section plots. And you have control over the color map as well. So very modern plotting capabilities.

One of my favorite things is this arbitrary cross section ability where I can click it and then drag across my plot to generate an arbitrary cross section plot of the data that I’m interested in.

So across the board, Quadoa implements plots and data calculation with a very modern, very intuitive style of interaction.

Let’s talk more about how we define surfaces in Quadoa.

So this is another really powerful capability in Quadoa, which is how we define different surface forms.

Quadoa uses what’s called a surface stack definition.

If I look at the singlet lens in this optical model, you’ll see that I have a material defined for that lens and two surfaces.

And if I open up the surface construct, what you see here is the surface stack definition.

When I right click on a surface, you’ll see the different types of properties that you can add to surfaces. And you can add these in any number and any combination.

Form, phase, aperture, coding, polarization, attenuator, and scatter.

Here on this surface, we have a base spherical form with its radius.

We have a Zernike polynomial with fifty polynomial terms.

One of the things I absolutely love about Quadoa, particularly for working with freeform surfaces, is if I right click the Zernike form, I can easily reset all the coefficients to zero, or define only the X symmetric or y symmetric terms as variable. I can’t tell you how simple but powerful that is when you’re working with things like freeform prisms or other freeform surfaces.

You can also see that we’ve got a couple of other forms, cosine and Gaussian peak, as well as a phase profile. So natively built into Quadoa, we can stack profiles on one surface and you don’t have to define multiple surfaces and tell the program that they’re all to be considered one. This is a much more intuitive way to do this.

If I look over here at the surface form plot, you can see the surface form that I have defined there with all those different profiles superimposed.

I also have a lenslet array here.

And the way that a lenslet array is defined is quite similar. If I come to the lenslet array, you’ll see that there is this construct called a Form Array operator.

I simply right click, add the Form Array operator.

And then under that, I define the forms that I want to replicate. It’s it’s an extremely intuitive and powerful way for modeling arbitrary optical surfaces.

One last thing that I’ll point out here is you can also define form with Python code.

So the great thing here is that using Python code doesn’t lock you out of using the other built in layer capabilities.

So you can write Python code to define the custom aspects of your surface, But you don’t have to duplicate other mathematical functions that are already built into the software.

That can save a tremendous amount of time.

Let’s now talk about the multi sequential nature of Quadoa.

So we talked about Quadoa’s paradigm that is fundamentally different than optical design software that uses a sequential surface listing.

Let’s drill down a bit more on that with a system that really highlights that benefit. Here we have an interferometer.

And in this interferometer, we have several groups of lenses with a couple of beam splitters.

Let me first point out how the beam splitters are defined.

We use these custom element constructs. And if I open it up, I have a material where I’m using this catalog material and I have seven surfaces. The six outer surfaces of the beam splitter, and the one splitter surface.

And the custom element construct tells Quadoa that these surfaces are enclosing a volume material.

The beauty then is that I can move this custom element as a single entity. We’ll talk about tolerancing later. That’s going to be really critical with how we’re defining this optical system.

So I’ve defined all of my components only a single time here in Quadoa.

And then down here in the sequences definition, I have two paths. I have a test path, which I’ll hide the other path. So the test path starts here at the source, goes through some lenses, reflects off this beam splitter, comes through the other beam splitter and lenses, reflects off the surface under test, and then comes back up to our camera.

The reference path follows a different sequence.

The reference path uses, of course, some of the same optics, but then reflects at the second beam splitter over to a reference surface, and then comes back through to the camera here.

This really highlights the power of Quanoa’s paradigm. The object based optical model separately defined from the surface sequence definition.

One of the things that you’ll notice here is that we don’t need multiple configurations to model multiple paths.

In standard sequential ray tracing software, you would have to do things like change the material of the beam splitter surface between glass and mirror, depending on whether you’re transmitting or reflecting.

You would have to duplicate surfaces when you are going through in double pass fashion. And you would have to use a lot of solves to make sure that all the properties of the surfaces were identical between the different paths.

Then you would also have to ignore ranges of surfaces to get surfaces and components to show up in one path, but not the other. It’s really complicated. And again, it didn’t take long when I first saw Quadoa to really understand the power of this paradigm.

In the test path, we’ve defined the order of our rays here at surface seven of the beam splitter is where we define the reflection action.

And we continue on down to the surface under test here, where we define another reflection.

And then we go all the way back through to our detector surface.

So again, notice that we are not actually redefining any optical components in this model. Everything is defined a tolerancing or optimization, I don’t need to worry about coordinate shifting surfaces or solve pickups, anything like that. Everything is defined once, and the sequences down here tell Quadoa what the properties of the rays are and where they go.

When I look at an analysis in this system, for example, an interferogram is a very natural analysis to look at. When I open up the settings, you’ll see here that I define the two sequences that I want to evaluate.

And it’s as simple as that.

I’ve added a little bit of defocus to one of the paths relative to the other one. So you can see those defocus fringes here, But this system really demonstrates powerfully what the benefit is of Quado’s paradigm.

An object based optical model defined once, and then sequences that you can define any number of. There’s no limitation to the number of sequences that you can define. The benefits of this are wide ranging. And when we talk about optimization and tolerancing shortly, you’ll see some more benefits.

Now, I said that multi configurations were not necessary to model this type of optical system, but Quadoa does support multi config systems.

Let’s take a look at an example of how that’s executed.

Here, I have a zoom lens system and let me point out a couple of things first and foremost.

So multi configurations are a powerful modeling tool that have really taken on a purpose in standard optical design software that they were never really intended for.

Multi configs are typically zoom lenses, scanning systems.

They’re used for thermal analysis.

Any simulation where components are moving or changing shape, that is what multi configs were originally added in most software packages to simulate.

They’ve taken on a life of their own to model multipath systems, multi sequential systems.

But again, because Quadoa is natively multi sequential, you don’t need to use multi configs for a lot of systems.

Here, we have two groups of lenses. And again, the assembly construct is really powerful in this setup, where we have two sets of lenses that are mechanically tied to one another. We define those as two separate assemblies.

And the way that we do multi configurations in Quadoa is with a multi config lookup table.

We can open it in the Setup tab here. And Quadoa implements this in a really intuitive fashion. I don’t need to look up four letter monikers to understand what I use to control a thickness or a radius of a configuration.

I simply define an alphanumeric identifier, a variable, if you will, define my configurations and the value of that variable in each configuration.

And then what I do is come over to my optical design editor and simply type in the alphanumeric identifier that’s changing between configurations And Quadoa understands, okay, the value in this configuration three is one hundred and eleven point six. And if I simply click from one configuration to the other, the value changes.

So in this model, we are shifting the Z position of the second assembly of lenses, and the camera position of the image surface.

So the implementation of multi configurations in Quadoa, I think, is also very intuitive and powerful.

Let’s talk about another feature which is somewhat related to multi configurations, the slider functionality.

So here we have another interferometer sample file, a Fizzo interferometer.

And there’s a capability in Quadoa where we can once again define an alphanumeric identifier, put that into a parameter cell in our optical design editor, and then define a range of values over which we want to change it. And using this slider interface, we can easily click and drag and change that value within the range that we have defined. So what we’re changing here are the X and Y positions of some components in our system.

And you can see how that interferogram updates as I change these parameters.

One of the other really cool things that’s built into Quadoa is a video recording capability. So if you want to animate your optical system, again, a zoom lens, a scanning lens, some other simulation that you’re looking at, You can very easily create videos for marketing purposes or maybe for a presentation that you are trying to explain how a system works to another group of people.

Another really cool built in functionality that Quadoa has.

Let’s keep moving and talk about another really powerful capability in Quadoa optimization.

So all optical design software packages, as I said before, have capabilities that fall into three broad categories, analysis, optimization, and tolerancing.

We’ve looked at analysis, how you can define an optical system in Quadoa, look at a lot of different optical performance metrics.

Let’s look at how Quadoa optimizes.

If I click on the optimization tab here, you’ll quickly see a lot of the functionality that Quadoa offers.

Local, extended, and global optimization routines that are all fundamentally based off variance of damp least squares optimization, tools to quickly focus or collimate an optical system, the ability to optimize materials, as well as merit function wizards and targets.

So here, what we have is a doublet lens.

And the way that a doublet lens is defined is with the doublet lens construct.

We have two materials and three surfaces defined.

Let me quickly show you the material catalog before we optimize this system, because I think it also shows some of the cool UI interface capabilities of Quadoa.

If I come to the material catalog here, you’ll see a lot of the common material catalogs that you’re familiar with, SHOT, Hoya, CDGM.

One of the cool things that I can do here is I can select materials and quickly look at the dispersion and transmission properties.

If I come to the glass map, I can actually hit the control key, select multiple glasses, and quickly come over to the dispersion and transmission plots and see how those compare to one another.

Again, simple, but really powerful, enabled with the modern user interface.

Now, from an optimization perspective, there’s a couple of things we need to define to optimize, variables, targets, and constraints.

To define variables, we simply click on this V icon next to any parameter, or in the case of materials, we click on the substitute checkbox.

And that will tell Quadoa that we are allowing those to vary during our optimization merit function is defined here in the optimization tree of the system setup tab.

Now let me point out a couple of really cool things.

Number one is you can define as many merit functions as you want, each with their own set of variables, targets, and constraints.

This can be really useful if you know that a certain set of components are going to affect a certain set of targets more directly than others. And it can really make the optimization more efficient.

The other thing that having multiple merit functions enables is solves.

So the way that Quadoa implements solves is essentially as a mini merit function, which is really what a solve is. It’s a single variable with a single target that you’re trying to optimize for. You can do that by creating a merit function in Quadoaa and clicking this auto apply checkbox.

What that will do is it will optimize that merit function with every update of the system.

Naturally that needs to be something that’s very quick to calculate, like f number, numerical aperture, so on and so forth.

The merit function that we’ve defined here, I can see the variables that I’ve defined, and we have three curvatures and the back focal distance.

Directly in line, I have a lower and upper limit. If I choose to implement one on that variable, the bounding type, as well as some other parameters there.

If I come down here, this is where we define our targets and constraints. And the way that Quadoa does optimization is extremely efficient.

Instead of each target tracing its own race set and calculating the value of interest, what we do in QdOA is we define a set of rays that we’re going to trace, and then we have several goals and constraints that use that ray data to calculate.

It’s a much quicker and faster way of optimizing than having each target trace their own ray set.

Here, you can see that we’re targeting spot radius with a numerical aperture constraint.

Let me go ahead and run the extended optimizer, because we’re using glass substitution.

Here in the optimization dialog, you can see some overview of what we’re doing with our optimization.

I have options that control both extended optimization and the local optimization.

You can see the optimization routines available here, and some parameters that give you more fine level control over how the optimizer proceeds.

Let’s optimize for, let’s say, ten seconds here, and see where the optimizer comes up with a solution.

And I can quickly see that Quadoa chose some radii, a back focal distance, and some glasses to minimize the spot radius.

A couple of other things that I’d like to highlight quickly about optimization are some of the unique parameters that you can target.

Up here, you’ll see a lot of the options for aberrations, performance, optical properties, ray data. You can have a multi ray goal where you’re targeting the max incident angle of a large set of rays at a particular surface for optimizing for sensitivity. That’s super valuable.

You can write Python scripts to have custom targets or math expressions that combine multiple built in calculations.

One of the things that really blew me away when I first saw it was this general distance three d constraint, where I can specify a coordinate on any two surfaces in my system and constrain the distance of those two from one another independent of where rays hit those surfaces.

When I was doing a design for freeform prism optimization for near eye displays, this was fundamentally revolutionary where I could keep the surfaces stitched together at the edges.

Whereas in previous designs I’ve done in other code, the surfaces really run away from you and it’s hard to maintain manufacturability.

Let’s talk about tolerancing now.

Okay. Tolerancing is another one of those fundamental capabilities that Quadoa provides. And as I said before, it’s really just looking at how errors in your optical system impact the performance of the system.

Here, we have an optical system with some lenses grouped into different assemblies.

And again, this is one of the areas where the ability to define components in absolute or relative coordinates is massive.

The ability to define offset pivot points without cluttering your optical system definition with coordinate shifting surfaces, and the ability to define assemblies and sub assemblies to be able to model complex interdependencies between components.

Tolerancing is really one of the key areas where you get this benefit.

Tolerancing in Quadoa is relatively straightforward. If I click on the Tolerancing tab here, you’ll see that we can define global tolerances that apply to all components in our system, or we can define individual tolerances that only apply to a single surface element or assembly.

There is a tolerance wizard that you can activate here. And you can see that tolerances are grouped into element or component tolerances, surface tolerances, and assembly tolerances.

We can define these here, and these are going to be global tolerances that are applied to all components in our system.

You can also see here the different types of statistics that control the tolerance distribution for any particular tolerance that you’re defining. There’s quite a wide range of statistics that are natively supported here.

In this optical system, we have already defined some tolerances.

And where you see those is in the tolerance tree of the system setup editor.

So if I expand the tolerance tree here, you’ll see global element tolerances that we have defined. So you’ll notice that there’s no definition of a particular element that we’re choosing here because these are global.

Global surface tolerances.

Global assembly tolerances.

And then we have a couple of individual tolerances here. I can add those by using the tools up here in the ribbon, or you’ll find across Quadoa right click menus that offer a lot of functionality.

And you can see here, I have the ability to add specific surface, element, or assembly tolerances.

If I expand that element tolerance, you’ll see here I define the particular element and then the tolerances that are unique to that element. Same thing with surface and assembly tolerances.

You’ll also notice down here that I have the ability to add compensators if I want to, to compensate for the errors in the optical system.

The two primary means of tolerance analysis, as with most optical design software packages, are sensitivity analysis and Monte Carlo simulation.

If I click on the sensitivity analysis, you’ll see here I can choose which merit function defines my performance criterion.

We’ve defined a spot radius merit function in this system.

And I can click Okay. And within a matter of seconds, Quadoa will go through all of the tolerances in the optical system, and it’ll generate an output that looks like this, where it tells us what the tolerance is on which component, the positive perturbation value that gave this value of our merit function, which corresponds to this amount of change, and then the negative perturbation value. So simply looking at the extremes of the tolerance range, and how those impact our target value, we can easily save that to file if we want to.

The Monte Carlo simulation similarly gives us some additional options, the number of samples, Let’s crank this up to one hundred. The ability to save the best and worst or all systems.

Let me click Okay. That’ll proceed very quickly.

And once again, we have a table with all of our results and identification of best and worst, and also a built in histogram where we can bin our Monte Carlo trials based on the merit function value. This is really useful to look at yield values for manufacturing.

And once again, we can easily save this data out to file for further analysis.

Let’s keep moving here so that we can save some time for Q and A at the end. I’ve got a couple more features that I want to highlight for all of you. Let’s talk about the Mechanics Toolbox.

As I mentioned previously, Quadoa is not a non sequential ray tracing package.

But what you will find is that a lot of the reasons that you use a non sequential ray tracing package, actually you can achieve those things within Quadoa as it exists today.

Quadoa, the base package has the ability to export to CAD.

And you can see that tool in the file menu and the different file types that are offered to export to STL, STEP, and IGES, standard mechanical CAD formats.

The mechanics toolbox that is an optional add on to Quadoaa provides a couple of features.

You can bring in mechanical CAD components like this telescope mount that’s brought in as an STL part here to visualize it in your optical system, as you can see here.

And there is also a tool to check ray intersections.

If I click on that tool, what you’ll see is that Quadoa detected one hundred and twenty eight Ray mechanics intersections.

And it will highlight them here in our model. And if I zoom in here, you can see that where the rays are intersecting are in the mounts for the primary mirror.

So this is kind of an interesting capability that is something that previous you would have to take your optical components into SOLIDWORKS or Creo or another CAD program to figure out whether your mechanics are interfering with your raise.

But this functionality allows you to cut that step out and do it directly within Quadoa.

Okay. Moving on, polarization ray tracing is another really cool functionality. And Quadoa has some really cool visualization features.

So Quadoa offers comprehensive polarization ray tracing.

What I showed you previously is in the sequence definition where we define our source, you can define the polarization properties of your source. And again, you can see the different options there. Linear circular polarization, Jones or Stokes vectors, random polarization.

In this system, we’re using Stokes calculus to define our polarization state.

And there’s a couple of cool things that I want to point out to you. This is a really simple system where we simply have a point source with two sequences, transmission through a glass plate and reflection off of a glass plate. And you can see the polarization map here, where we can see how the polarization state varies across the pupil.

One of the things I really like is the ability to visualize the polarization state in the layout. There’s an option up here in the three d viewer to essentially fletch the rays with their polarization state. And that’s what these cross lines are for. When you look at something like a wave plate, where you’re going from linear to circular polarization, it can be really helpful to have a visual aid of what the polarization state is like in any given optical space.

Another really cool analysis that I liked when I first saw it was these PointCare spheres that allow you to visually also look at the polarization distribution in your optical system.

So here, we’re showing the polarization distribution for transmitted and reflected light.

And in this sample file, we’re also looking at how things change when we angle that glass plate versus our incident at a smaller angle. And Brewster’s angle has an impact, of course, on the polarization state of transmitted and reflected light. So polarization ray tracing and polarization visualization are really powerful supported features in Quadoaa.

Let me talk about one to two more features before we pause and have some time for question and answer sessions.

The next feature that I’m going to talk about is ghost image analysis in before, Quadoa is not a non sequential ray tracing package, but it does have the ability to do single and double bounce ghost analysis.

And the multi sequential nature of Quadoa’s paradigm enables some really cool things that you would have a hard time doing in other software packages.

If I come up to the sequence tab here, you’ll see that we have some tools for generating ghost sequences.

In this system, we have a camera objective with a single field off axis field point.

What I can do is click generate ghosts, and I have this tool that will pop up, which will give me some options for looking at single or double bounce ghosts from a given field and wavelength or all of them.

And I can what this will do is it will generate sequences that I can then evaluate. I can tell it which surfaces I want to consider or ignore.

And I’ll go ahead and click Okay.

And what you can see here is all of these ghost sequences that I’m I have generated, and they show up here under the sequence list.

So you can see all of these different ghost sequences that have a unique icon and name to indicate as such. And I can sort the ghost sequences by illuminance.

I can sort them by total flux.

And there are two analyses which are unique to ghost sequences.

The ghost footprint diagram here, which will only show rays from these ghost sequences, and the ghost irradiance plot, which will also do the same thing, but show a false color plot.

You can see under the analysis tab where those are located here, the ghost footprint diagram and the ghost irradiance plot.

So there are some powerful built in capabilities in Quadoa to look at ghost paths that take into account coatings and materials and polarization, and allow you to evaluate the impacts of that ghosted light in your optical system.

Let me point out just one to two more features that I think are really useful in Quandula and good to know.

I mentioned previously that there were three toolboxes in Quadoaa, the mechanics toolbox, which I demonstrated earlier, the ability to bring in mechanical CAD files to visualize and check for ray intersections, the wave optics toolbox, which has these features here that utilize Gaussian beam decomposition to do coherent beam propagation through an optical system and account for diffraction at all apertures in the system, as opposed to the standard FFT and Huygens methods, which only account for diffraction from the stop aperture in the system.

Gaussian beam decomposition is really the best coherent propagation method available today. It is much less sensitive to phase sampling than some of the methods used in other programs.

And it’s so robust that it can even be used in non sequential ray tracing, which some other packages on the market utilize it for.

The third toolbox is the scripting toolbox.

The Python scripting capability, MATLAB scripting capability, and the C plus plus API capability.

One of the things that I’d like to point out about Quadoa is that from the very first line of code, it was written with API access in mind.

Indeed, the user interface layer actually calls many of those API functions down in the C plus plus core.

And because the API was baked in from the very beginning, API access is very comprehensive and robust.

Unlike some other packages on the market where the API was kind of an afterthought many decades later, and its effectiveness can be hit or miss depending on what you’re trying to do.

The last feature I’d like to mention here before we pause for the Q and A session is the ability to import and export SEQ formats, ZMAX and Code five. And you can also export designs to those same formats.

And this was another thing which I really loved about Quadoa when I first saw it because it removes the barriers to adoption for a new optical design program.

If you want to continue using Z Max and code five, or you’re working with customers or colleagues who prefer those packages, you don’t have to give up the other packages to use Quadoa. You could use Quadoa and go back and forth with those other file formats very seamlessly.

That has been a whirlwind tour of Quadoa Optical CAD. I know there was a ton of stuff that we talked about here, but I hope that gives you a really good idea of what it’s capable of. And I’ll pause for a moment here and look at the chat. And if you have any questions, please submit those via the chat, and we will answer those. We do have a couple of people from Quodoa in Germany to answer questions if there are any questions that require more detailed understanding of the source code. So give me just a few moments here, and we’ll start the Q and A session.

Okay.

So it looks like we’ve already got a couple of questions here.

If you do have questions, put them in the chat dialogue, and I will read those out and answer them, in order.

So the first question that we’ve received here is, can we define a surface which can scatter or absorb light?

And the answer is yes, you certainly can do that. Actually, the most recent update to Quadoa added scatter as a property layer that you can define.

Let me actually jump over to Quadoa here to show you that.

And let’s go back to one of the original sample files that we looked at here.

And what you can see if I expand the surface stack property on a surface is that there is a scatter option here as a property that you can add to a surface.

Gaussian, Lambertian, and ABG properties are supported here. Now there’s an important caveat that is the same for any software package that doesn’t do non sequential ray tracing.

This scatter is intended to be small angle scatter. Something like you would get from a well polished optical surface.

So the rays can scatter, but generally, they still have to follow along on the same sequence that you define here.

And there are various analyses that support scattering. So if I open up the spot diagram here, and I look at the settings of the spot diagram, you’ll notice an option to enable scattering here. So if I have scatter properties assigned to any of my surfaces, I can check this box and those scatter properties will be enabled.

Wide angle scattering that sends rays in all directions, where it fundamentally changes the sequence of surfaces through which they trace is something that is generally not meant with this scatter model. That’s something that requires non sequential ray tracing, where you define wide angle scatter, and the rays can literally go anywhere. You don’t have to predefine the ray sequences.

As I mentioned before, that is something on the roadmap, but it is not currently available today.

The last part of that question was about absorbing light.

WADOA does offer a coating layer construct as well. So you can easily define anti reflection coatings, mirrors, beam splitters, or custom coatings that are created from combinations of different materials.

If I come up to the setup tab here, there is a coding catalog, along with a built in material catalog and also an off the shelf lens catalog.

Okay.

Actually, I think I read the most recent question first, but I’ll make sure to get to all of the, questions here.

Let me go back to the beginning. Does the three d viewer fully support the use of a three d CAD mouse such as those of three d connection?

Currently, it does not. And what I will say is I have actually myself suggested this to the developers as something that would be very valuable.

Sitting on my desk in front of me right now is actually a three d connection CAD mouse. And so I’m a big fan of the CAD mouse. One thing that I will say about, the three d viewer is as simple as it is, it uses the same methodology as CAD programs where a left click and drag rotates and a right click and drag translates.

As simple as that is, it has made interacting with the three d viewer considerably easier than a lot of other optical design software that I have used.

That being said, I am also a big fan of the three d CAD mice.

So that is something that has been brought to the attention of the developers, as a valuable feature.

And also Julian and Jens from Quadoa, Feel free to interrupt me if you guys have anything that you want to add to any of these answers, but I’ll continue to field these questions.

Okay.

Next question. How do you conveniently define wavelength selective elements, dichroics, band pass filters?

Can you define a white light source and then analyze both the transmitted and reflected light through a dichroic?

And I would say, yes, absolutely you can.

The easy way to define those types of components is once again, using a coding, where you can add coatings from catalog, or you can also very easily define wavelength dependence.

Let me see if I can find a sample file here very quickly. If I go to the file tab to open example, you’ll see that there are a large number of codings that are supported here. Or sorry, I’m mixing up my words. A large number of sample files that are available here across a range of types.

I don’t see one off the top of my head, but what I could do here on a particular lens is I could add a coating, and I could add a wavelength dependent coating.

You can then see that layer on that surface there. And if I simply click the plus icon, now I have a dialog that is open where I can quickly type in reflectivity as a function of wavelength for a small number of values, or I could load a CSV file that has that data pre populated so that I don’t have to type it in directly.

And then what I can do, you talked about the modeling the reflected and the transmitted path, that would be as simple as creating two sequences.

One for the transmitted paths, one for the reflected paths, and I could look at those superimposed or one at a time in my three d viewer. The other thing that you can do from a visualization perspective is you can color the rays in the layout by the closest RGB value to that wavelength, which I think is another really cool visualization capability for modeling things like dichroics, band pass filters, things like that.

Okay. Next question.

Can we create new materials?

What about considering working temperature and pressure?

So yes, you can define new materials.

And the way that you would do that is in the Setup tab, you would come to the material catalog, which I showed you previously.

And here, you can create a new catalog and add new materials to it based upon the parameters that you would like to define. So I could create a new catalog here that is a test catalog.

And if I come down here, now you’ll see in the test catalog, in a user created catalog, I can add a material here.

We don’t allow you to modify the, the stock lens, the stock material catalogs naturally because those are updated periodically from the glass providers with error corrections to their data and updates and materials that are no longer sold. So you can see here, if I expand this add material catalog, what options are available.

You can use these different dispersion formulas to create a material.

There are anisotropic material functionalities that are available as well.

And then you can also define with that material what temperature you are, creating that that data for.

And then furthermore here, under the environment definition is where you are defining your ambient environment that this optical system is sitting in. Okay? So you can see here that by default, air is the ambient environment and we are defining a temperature and a pressure.

As I said, when I discussed the multi config capability, there is an ability to do thermal analysis with multiple configurations, where the software has built in functionality to, calculate radii and thicknesses and spacing changes based on the change in temperature.

Okay. Let me take a look at a couple more questions here. I know that we are couple minutes over time.

I’ll keep going for maybe five more minutes. I do want to be respectful of everyone’s time here. So if you need to drop off for any other time commitments, feel free to do so. But I’ll take another few minutes and answer some questions here.

Is the optimization faster than Z Max when comparing an identical optical system?

If yes, what is the nature of the advantage over Z Max? I think that’s a really great question.

I have not benchmarked the speed of optimization relative to Z Max or Code five or Oslo or any of the other packages out there. But what I will say is I think there are some things that would that would make it actually potentially even faster than one of those other packages.

As I mentioned before, when we’re defining the merit function, the efficiency of tracing a set of rays and then after that, calculating goals and constraints based upon that ray data really speeds up the calculation.

The speed of optimization depends on a number of things. The algorithm that you’re using, most of these software packages use damp least squares or some variation of damp least squares. That’s proven itself to be very powerful for optical design optimization, but also how you sample targets and goals, variables, what your starting system is. So I do think that the way Quadoa implements optimization also makes it more efficient in that respect.

There may be some white papers that we prepare in the future that does some more benchmarking compared to existing optical design programs.

Another thing that I think is really powerful about Quadoa is that Quadoa was not built with any paraxial ray tracing assumptions from the get go.

Most optical design software packages on the market, most sequential packages were originally geared towards rotationally symmetric optical systems that stuck very closely to their first order or paraxial approximations, focal length, pupil positions, things like that.

Quadoa in the core ray trace engine wasn’t written with those. So I’ve heard firsthand from users how wide angle optical systems, off axis systems, freeform optics actually trace faster without the need for implementing ray aiming routines or playing around with ray aiming settings.

So I think there are a number of paradigm changes that Quadoa has made, which will make optimization more efficient and potentially faster than some of the existing packages on the market.

Okay, let me take just one or two more questions here. I know we have a lot of questions here. There’s definitely a lot of enthusiasm. I think that’s a that’s a great thing here.

Is there an optical detector in Cordova? How many detectors can we place in simulation space? And can I tilt the detectors plane?

What I will say is an optical detector could be any surface that you like in Quadoaa.

And one of the beauties of the multi sequential paradigm is that when I define this surface list here under a sequence, the surface that I am ending this sequence on could be any surface in my optical model. So if I have a system with multiple detectors, let’s say, I would simply create a surface that represents each of those detectors in this optical design editor.

And then each sequence could end on a different detector.

Any number of sequences would be would be supported.

And I could evaluate any of my analyses, including image simulation and irradiance distributions, on pretty much any surface in my optical system.

Okay.

We are about seven minutes over. I know that there are more questions And, what I will do is make sure to follow-up with with each and every one of you that attended here. So if there are any additional questions that you have, I will make sure to answer those.

Thanks again to everyone for attending this webinar. I think it’s it’s really a fantastic time to, be in the market for alternate optical design software.

And I really think that, we are just starting out here, and there’s some really powerful capabilities that Quadoa offers that more and more people will see and understand the benefits of. So again, thank you once again for attending, and we’ll look forward to chatting with you in the future. Take care.