Skip to main content

Hello,



I would like to model an approximation of a converging Gaussian beam source in the non-sequential mode. I first tried to model the source with Source DLL, (Guassianbeam.dll) and use a negative position (Position in the object editor), so that the source is behind the waist, but it doesn’t look like the beams are converging on the waist. Of course, I understand why the divergence angle should always be positive.



Basically, my model should be relatively simple: a converging gaussian beam hits a reflective object.The Gaussian beam waist is located inside the object. The detector’s distance from the beam waist is also negative (~-40mm).



Perhaps I could use some lens objective to recreate an approximation of what I need, but it would be nice to have the appropriate source directly. I am using non-sequential mode, because there are presumably some multiple reflections occurring inside the object.



Thank you,



Mariangela

Hello Mariangela,



Thanks for your question here!



You have multiple options to model a Gaussian beam in non-sequential mode. First, there is a built-in Source Gaussian model that you can use for this purpose. In this case, you can define your Gaussian source by its beam size at the source location (i.e. radius at 1/e^2 intensity) and its position (i.e. the distance from the apparent point of divergence). If you set the position to be negative, then you will have a converging beam at the source location, please see below:





You may read more about the Source Gaussian in the Help system at:



The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Sources > Source Gaussian



The second option is, as you mentioned, the Source DLL type with the GussianSource.dll. In this case, you can define your Gaussian source by its waist radius, its position (i.e. the distance from the waist location), and its M^2 quality factor. If you set the position to be negative, then you will have a converging beam at the source location, please see below:





Alternatively, you can also use the Source DLL type with the SkewRaysCircular.dll. This DLL sends skew rays to model Gaussian Beam


Propagation in non-sequential mode. Skew rays are an efficient and accurate representation of Gaussian beams and can be used to quickly optimize for best focus or to minimize aberrations. It is the non-sequential equivalent of Paul Colbourne's user defined surfaces:


Using skew rays to model Gaussian beams - webinar · MyZemax



You may find more information about the Source DLLs in the Help file at:



The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Sources > Source DLL



 



If you have further questions, please let us know and we will be happy to help!



Best,



Csilla


Thank you very much for your reply.



I have another question about GaussianSource.dll.



Is there an analytical formula for computing n m l (the directional cosines) at the source based on x y (the spatial coordinate) of the source, its waist radius, wavelength, position, ( meaning the distance between the source and waist radius) and M^2 factor? 



Best,



Mariangela


No the direction cosines l, m and n are computed separately from the x,y starting points.



If you check in the Help file under Source DLL, you will find the equation for the spatial and angular distributions. But they are not related:





Let us know if you have any further questions.


Yes, I have seen that, but I find it unclear. How is theta defined in this case?


Yes my answer was incomplete. We actually do a correction on x and y after calculating the direction cosines.



Here is the code. Do not hesitate if you have any other questions.



    //Gaussian beam parameters


    double const w0 = data[30] <= 0. ? 1. : data[30]; //Waist


    double const z0 = data[31]; //Position


    double const M2 = max(data[32], 1.); //M^2





    // calculating divergence


    double const theta0 = 0.001 * sqrt(M2) * wavelength / (PI * w0);





    //position and angle distribution


    double constexpr mean = 0.0;


    normal_distribution<> pos(mean, 0.5 * sqrt(M2) * w0);


    normal_distribution<> angle_incoherent(mean, 0.5 * theta0);





    double const l = angle_incoherent(gen);


    double const m = angle_incoherent(gen);


    double const n = sqrt(1 - l * l - m * m);





    double const t = -z0 / n;


    double const x = pos(gen) - l * t;


    double const y = pos(gen) - m * t;


    double constexpr z = 0.0;





    data[1] = x;


    data[2] = y;


    data[3] = z;


    data[4] = l;


    data[5] = m;


    data[6] = n;


    data[7] = 1.0;

I need to simulate a gaussian beam in non sequential mode, which has 15 degree diveregence angle (half angle) and the beam raduis of 2.563 mm at 10 mm which has the profile shape as attached below, but when putting this values using the Gaussian source it doesnt give me the same results.



By using the skewRaysCircular I cannot get the gaussain beam profile and it just shows me a ring, how can I get a gaussian beam profile in the output?




Hi Shamim



The skewRaysCircular.dll is a source to display the envelope of a gaussian beam propagating, so yes it will show a ring.


Use the GaussianSource.dll instead. The propagation is based on rays but the statistical distribution of rays coming from this source gives a picture of a diffracting Gaussian beam. It is valid for small angles (paraxial approximation) and when propagating in free space. So clipping at apertures and aberrations will give incorrect results.



Sandrine


Hi Sandrine,



I used GaussianSource.dll ,I dont know location of the beam waist and just set beam waist location equal to source location.I should compare results of the zemax with LightTools but after adding similar 2 lenses ( standarda and even aspherisc) in both softwares, the beam profile in zemax rise dramatically which is not even close to the other software, I wonder what can be reason , because all the refractive indices, edge thicknesses, raduis and aspheric coefficients are same in both softwares!! 




Hello Further to the discussion here in NSQ

Is there a simpler way to insert a parameter M^2 ?  

for this beam laser i wonder to use source diode Gx ,Gy parameter ? 

Yair

 


Hi Yair!

The GaussianSource.dll contains a M^2 factor. Have you tried it?

Sandrine
 


Hi Sandrine , practically our beam profile has M^2 , 20  , but the zemax displaysed a calculation profile in detector of gaussian with a little spread. When in fact they are supposed to receive very closed to top hat profile .

By definition  , theta is diverg angle in gaussian beam .Wo waist size 

theta = M^2× pi × lambda / (4× 2Wo)

 You can explain the difference ?

Thanks 

Yair


Hi Yair

Could you send a sketch of your system or your zar file?

Theta is the half angle and w0 is the “fundamental” beam radius for M^2=1 in the GaussianSource.dll


Thanks for the reference

I am thinking of setting up a model with diode source  more suitable for me to achieve profile  M^2  20  

because Gx/Gy Super Gaussian properties exist .

 


Hello Yair

Sorry I should have replied quicker.

Check the help files for the definition of the Source Diode. We recently updated them. The super gaussian factor are using a super ellipse function.

 


Reply