Solved

# how to get the beam size and divergence at different FW for as non Gaussian beam

• 21 replies
• 391 views

• Infrared
• 11 replies

Dear all,

I noticed that zemax gives the beam size and divergence at 1/e^2 FW (full width) (13.5% FW) but, I would like to have it at 10%. Does anyone know whether there is a way in zemax to get the beam size and divergence at other FW. My beam is not Gaussian so, I cannot simply convert the 13.5%, the zemax output, to 10% using the intensity distribution.

Maryam

icon

Best answer by Maryam 10 March 2023, 11:42

View original

### 21 replies

Userlevel 7
+2

Hi Maryam,

I don’t think changing the threshold value is possible in OpticStudio. I think its always 1/e^2 as you reported.

They give you the method they use to derive it though if you search the Help File (F1) for “Beam Width and M-Squared”. It seems to be based on this paper. So, you could adjust the formula to have it at 10 percent. However, I leave you the maths because this is not my area of expertise.

Take care,

David

Hi David,

Thank you very much for the reply and sharing the link. Unfortunately, the link doesn’t work for me, it has expired. Can you open it yourself? if not could you please share the URL again?

Best regards,

Maryam

Userlevel 7
+2

Hi Maryam,

Sorry I edited the link.

Take care,

David

Hi David,

Thank but unfortunately, I don’t have access. Is there any other way to find the formula?

best regards,

Maryam

Userlevel 7
+2

Well, you would need something to “remove barriers in the name of science”…

Also, most of the formulas are also in the Help File as I mentioned. Just type “Beam width and m-squared” in the Search tab of OpticStudio Help File (F1) and click on the third result.

Take care,

David

Hi Maryam,

Are you using non-sequential mode or sequential mode?

Best regards,

Lenror

Hi Lenror,

Thanks for the reply. I am using no-sequential mode.

Regards,

Maryam

Hi Maryam,

ZPL Operand: Extract FWHM from non-sequential detector | Zemax Community

Thanks Lenror. I’ll check it.

Hi Lenror,

Thanks again for sharing the article.

I checked the ZPL code you shared but, this works for a nearly Gaussian beam profile. My beam is unfortunately not Gaussian, so this doesn’t work for me.

Best regards,

Maryam

Hi Maryam,

Can you share your zemax files or describe the beam source you use in detail?

Lenror

Hi Lenror,

Thanks for the reply. Unfortunately, due to the privacy of my company I cannot share anything.

Thanks for the answer anyway.

Best regards,

Maryam

Hi all,

one thing which might help is to find a way to export the data so I can use a Matlab code afterwards to get the beam size and divergence at 10% FW. I am looking to see whether there is an operand which can export the whole data, e.g., radiant or irradiance versus coordinate of the detector. I know that nsdd can be used but it only reports for a specific pixel. Is anyone aware of such an operand or any other way to export the data? just to clarify I have two lenses in my system which I can play with the distance between them to get the beam size and divergence in the limit which can be accepted by the system.  I have a macro which uses a for loop and change the distance between these two lenses and report the detector data. More specifically I use the nsdd operand to get the beam size and divergence but because this is calculated at 13%FW and my beam doesn’t have a Gaussian profile I would like to find a way to export these data (the whole data e.g., radiant or irradiance versus coordinate of the detector) somehow to use Matlab afterwards and calculate the beam size and divergence at 10%FW.  I know I can manually change the distance between the lenses and then export the data but, I would like to have this automated meaning that in my macro in the for loop I can insert something, a code or an operand, to report the whole data for this specific distance between these two lenses and then change the distance and report the data and so on.

Many thanks in advance and best regards,

Maryam

Hi Maryam,

In this article, I shared the ZPL file. I think you can modify the code to achieve irradiance and coordinate value.

ZPL Operand: Extract (提取物) FWHM from non-sequential detector | Zemax Community (社区)

Userlevel 7
+3

Hi Maryam,

Typically, with a non-gaussian spot, the spot size is evaluated in terms of a second-moment (of either the spatial irradiance distribution or the angular intensity distribution).  NSDD reports both of these values and the details are explained in the help documentation.  A second-moment technique is used, in general, because a spot profile may take on any arbitrary shape, so defining a spot size in terms of a percentage of the peak value may end up being indeterminate.  For example, take an Airy function that rings.  If you pick a threshold that is a small percentage of the peak value, then there are multiple radii that all have the same irradiance threshold value -- which one do you pick as the “spot size?”

All you tell us is that your spot is non-gaussian.  That is very vague.  If your spot is well-behaved, in the sense that it is radially symmetric and the 10% of peak irradiance threshold yields a single-valued radius, then your approach should be okay.  In fact, you might be able to find a simple correlation (or scaling factor) that relates the second-moment values to your desired measure of spot size.  If so, that would save you a lot of time.

In any event, as far as using Matlab to extract the detector data and calculate a spot size, your best bet is to use the ZOS-API.  There is a bit of a learning curve, but the ZOS-API is much more powerful than ZPL.  Here is a simple example model:

and the following code is used to take control of the model in interactive mode, run a ray trace, and extract the detector data:

This script can be modified to include moving your lenses in a loop.

Regards,

Jeff

Hi Lenror,

Thank you very much for sharing the article. I try to see if that works for me.

Best regards,

Maryam

Hi Jeff,

Thank you very much for the explanation. I understand your point and I know that the spot size and divergence are calculated in terms of a second momentum (of either the spatial irradiance distribution or the angular intensity distribution) but the point is that the second moment is calculated at 1/e^2 FW (or 13% FW of either irradiance versus spatial coordinate or intensity versus angular coordinate (solid angle) curve). I however, like to have these second momentums at 10% FW of either the spatial irradiance distribution or the angular intensity distribution. For clarity I attached a picture of my detector viewer. My point is that the beam size which is reported by NSDD operand is the width of the red line, but I want the width of the black line. here I assumed that the red light is at 13%FW and black line is at 10% FW just for the sake of indicating. Please let me know if anything is unclear.

Best regards,

Maryam

Userlevel 6
+2

Hi Maryam,

The D4σ/second moment calculation actually comes from the ISO 11146-2 standard and is not an arbitrary value.  For Gaussian beams, the D4σ/second moment calculation happens to align with 1/e^2 value (by design), but the D4σ/second moment can be applied to any arbitrarily shaped beam, not just a rotationally symmetric Gaussian beam.  Simply saying you want the “beam width at 10%” is not a calculation that can be applied to a general beam.  This D4σ is what both commercial software and commercial measurement devices will output, so why are you choosing 10% rather than D4σ?  If you can change your specifications to align with industry standards, you might have fewer headaches in future projects.

I think your best bet is to calculate the beam size/divergence manually rather than expect OpticStudio/ZPL/Matlab to have a generic solution for you.

The beam width is pretty straight forward and it seems like you can already get this from the Detector Rectagnle from your previous attachment.

Assuming you're in the far-field of the beam so linear divergence actually makes sense, I suggest you place 2 Detector Rectangles at a fixed distance apart z (10mm, 100mm, or 1000mm helps with calculations).  Manually measure your 10% beam width at D1 and use the same criterion to measure the 10% beam at D2.  Then the divergence simply becomes:

`theta = atan((D2 - D1) / (2Z))`

Note this assumes up/down symmetry but if your beam is highly non-rotationally symmetric, you will probably have to calculate the divergence in multiple angles (+/-y and +/-x at least).

Userlevel 7
+3

Hi Maryam,

In general, for an arbitrary non-gaussian beam, the second-order moment beam width is *not* a 13% FW value.  I think your understanding of the definition is incorrect.  It is calculated as follows (see, for example: Beam diameter):

Regards,

Jeff

Hi Michael,

Thanks for the reply and explanation. Since I have a non-sequential design, I get the beam width from the spatial distribution of the incoherent irradiance and divergence from the angular distribution of the intensity. Your suggestion for placing two detectors at different z distances also works but, in non-sequential mode I can simply calculate it by plotting radiant intensity versus angle.  Meanwhile, I learned (thanks to @Chris Normanshire) that I can use keyword GetTextFile to save the detector data (exactly what I was looking for).  Then, I simply use a Matlab code for extracting the beam width and divergence at 10% FW.

Best regards,

Maryam

Hi Jeff,

Thank you very much for making this clear for me. It was very helpful. As I mentioned in reply to Micael I use GetTextFile keyword to get my detector data and then extract the beam width and divergence at 10%.

Best regards,

Maryam