Function Repository Resource:

HermiteGaussianBeam

Source Notebook

Represent a Hermite–Gaussian beam and its properties

Contributed by: Jaroslav Kysela

ResourceFunction["HermiteGaussianBeam"]["prop"]

returns a given property of the Hermite-Gaussian beam.

ResourceFunction["HermiteGaussianBeam"][{"prop",{w0,zR,h,v}}]

specifies a beam waist w0, Rayleigh range zR, horizontal mode number h, and vertical mode number v.

ResourceFunction["HermiteGaussianBeam"][{"prop","Normalized"}]

returns property prop for a unit beam waist, Rayleigh range, horizontal mode and zero vertical mode number.

ResourceFunction["HermiteGaussianBeam"][{"prop",<|"w0"w0,|>}]

specifies a given set of independent input parameters as key-value pairs.

ResourceFunction["HermiteGaussianBeam"][{"prop",parspec,z}]

also specifies the longitudinal position.

ResourceFunction["HermiteGaussianBeam"][propspec,coords]

specifies the coordinate system.

ResourceFunction["HermiteGaussianBeam"][propspec,coords,False]

returns dependent parameters unevaluated.

Details

Hermite-Gaussian beams form a class of optical beams that generalize the Gaussian beam and have rectangular symmetry. These beams constitute an orthonormal basis of the vector space of all possible beam profiles.
ResourceFunction["HermiteGaussianBeam"] represents a Hermite-Gaussian field that propagates along the vertical z-axis and that is parametrized by its beam waist w0, Rayleigh range zR, horizontal mode number h and vertical mode number v. Both horizontal and vertical mode numbers are non-negative integers.
Properties can be accessed by calling ResourceFunction["HermiteGaussianBeam"]["Properties"]. All available profiles and computed parameters are listed in ResourceFunction["HermiteGaussianBeam"]["Profiles"] and ResourceFunction["HermiteGaussianBeam"]["Parameters"], respectively. The formatted summary of all properties can be retrieved by ResourceFunction["HermiteGaussianBeam"]["Summary"].
Available profiles include:
"Amplitude"non-negative amplitude of electromagnetic beam
"SignedAmplitude"real amplitude that is negative iff Hermite polynomials are negative
"ComplexAmplitude"complex amplitude that includes both "Amplitude" and "Phase"
"Intensity"square of (real) amplitude
"Phase"phase of electromagnetic beam
"SignedPhase"phase that complements "SignedAmplitude"
Available computed parameters include:
"BeamRadius"beam radius at given longitudinal position
"ComplexBeamParameter"complex beam parameter
"Curvature"beam curvature
"GouyPhase"Gouy phase
"RadiusOfCurvature"radius of curvature
"RayleighRange"Rayleigh range
The formula for a given computed parameter par is obtained by calling ResourceFunction["HermiteGaussianBeam"][par]. For instance, the explicit formula for the Gouy phase is retrieved by calling ResourceFunction["HermiteGaussianBeam"]["GouyPhase"].
A summary of all parameters and profiles in the form of Dataset is returned by ResourceFunction["HermiteGaussianBeam"]["Summary"].
Not all beam parameters are independent of each other. The canonical set of independent parameters is the beam waist w0, Rayleigh range zR, horizontal mode number h, and vertical mode number v, out of which all other properties can be calculated. The relation between w0 and zR reads , where k=2πn/λ is the beam’s wavenumber, n is the refractive index of the propagation medium, and λ is the beam’s wavelength. Instead of w0 and zR, one could thus choose any complete set of characteristics to specify the beam. For that reason, there are several ways of specifying a Hermite-Gaussian beam:
{w0,zR,h,v}specific beam waist, Rayleigh range, and the two mode numbers
"Normalized"equivalent to w0=1,zR=1,h=1, and v=0
<|k1v1,k2v2,|>Association with a set of independent parameters given as key-value pairs, for details see below
When the parameters are specified as an Association, the following named keys are supported:
"BeamWaist"beam waist
"RayleighRange"Rayleigh range
"Wavenumber"wavenumber k=2πn/λ
"Wavelength"wavelength λ
"RefractiveIndex"refractive index n
"HorizontalMode"horizontal mode number h
"VerticalMode"vertical mode number v
Shortened keys are also supported for convenience:
"w0"beam waist
"zR"Rayleigh range
"k"wavenumber k=2πn/λ
"λ"wavelength λ
"n"refractive index n
"h"horizontal mode number h
"v"vertical mode number v
Full and shortened keys can be used together in a single Association, but a given parameter can be specified only once.
There are two possibilities for an independent set of parameters: either 1) exactly two of w0, zR and k are given together with both h and v; or 2) exactly one of w0 and zR together with all λ, n, h and v are given.
The input parameters can be specified in the following formats:
xsymbolic variable
0.325numeric value
Quantity[x,unit]symbolic or numeric value with unit
QuantityVariable[x,unit]named physical quantity with unit
Two coordinate systems are supported, which can be specified in the second argument:
"Cartesian"Cartesian coordinates {x,y,z} (default)
"Cylindrical"cylindrical coordinates {r,ϕ,z}
The Hermite-Gaussian beam formula depends explicitly on several computed parameters such as beam radius and radius of curvature. These are by default automatically expanded into their functional representation. One can suppress this expansion by setting the third argument to False. This turns the parameters into QuantityVariable objects and the beam formula is thus returned in its higher-level form. Such a form might be beneficial when rendering the formula in some text or for reference purposes.

Examples

Basic Examples (4) 

Display the Hermite-Gaussian beam formula:

In[1]:=
ResourceFunction[
  "HermiteGaussianBeam"][{"SignedAmplitude", {w0, zR, h, v}}][x, y, z]
Out[1]=

Sample beam intensity along the x-axis:

In[2]:=
xint = Table[
   ResourceFunction[
     "HermiteGaussianBeam"][{"Intensity", <|"BeamWaist" -> 0.3, "RayleighRange" -> 1.0, "HorizontalMode" -> 1, "VerticalMode" -> 0|>}][x, 0, 0], {x, -1, 1, 0.01}];
Short[xint]
Out[3]=
In[4]:=
ListPlot[xint]
Out[4]=

Parameter table for given inputs:

In[5]:=
ResourceFunction[
  "HermiteGaussianBeam"][{"Summary", <|
    "w0" -> Quantity[50, "Micrometers"], "n" -> 1., "\[Lambda]" -> Quantity[808, "Nanometers"], "h" -> -1, "v" -> 2|>,
    Quantity[1, "Meters"]}]["Parameters"]
Out[5]=

Plot the intensity profile at beam waist:

In[6]:=
DensityPlot[
 ResourceFunction["HermiteGaussianBeam"][{"Intensity", {1, 1, 2, 1}}][
  x, y, 0], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 80]
Out[277]=

Scope (16) 

Profiles (4) 

Available beam profiles:

In[278]:=
ResourceFunction["HermiteGaussianBeam"]["Profiles"]
Out[278]=

Beam intensity as a function of coordinates:

In[279]:=
ResourceFunction["HermiteGaussianBeam"][{"Intensity", {w0, zR, h, v}}]
Out[279]=

Plot it along the x-axis:

In[280]:=
Plot[ResourceFunction[
   "HermiteGaussianBeam"][{"Intensity", {1.2, 3.5, 1, 0}}][x, 0, 0], {x, -5, 5}]
Out[280]=

Two-dimensional cross-section of the beam amplitude for a given z:

In[281]:=
zpos = 0.5;
beam = ResourceFunction[
   "HermiteGaussianBeam"][{"Amplitude", {1, 1, 1, 0}, zpos}];
DensityPlot[beam[x, y], {x, -2, 2}, {y, -2, 2}]
Out[282]=

When no parameters are supplied, QuantityVariables are used instead:

In[283]:=
ResourceFunction["HermiteGaussianBeam"]["Intensity"]
Out[283]=
In[284]:=
Short[InputForm[%], 2]
Out[284]=

Coordinate systems (3) 

By default, a Cartesian coordinate system is used:

In[285]:=
spec = {"ComplexAmplitude", {w0, zR, h, v}};
ResourceFunction["HermiteGaussianBeam"][spec][x, y, z] == ResourceFunction["HermiteGaussianBeam"][spec, "Cartesian"][x, y, z]
Out[286]=

Cylindrical coordinates are also supported:

In[287]:=
ResourceFunction["HermiteGaussianBeam"][spec, "Cylindrical"][r, \[Phi], z]
Out[287]=

The two systems are equivalent:

In[288]:=
ResourceFunction["HermiteGaussianBeam"][spec, "Cartesian"][x, y, z] ==
     ResourceFunction["HermiteGaussianBeam"][spec, "Cylindrical"][##, z] & @@ ToPolarCoordinates[{x, y}] // Simplify
Out[288]=
In[289]:=
ResourceFunction["HermiteGaussianBeam"][spec, "Cylindrical"][
     r, \[Phi], z] == ResourceFunction["HermiteGaussianBeam"][spec, "Cartesian"][##, z] & @@ FromPolarCoordinates[{r, \[Phi]}] // Simplify
Out[289]=

Computed parameters (5) 

Available computed parameters:

In[290]:=
ResourceFunction["HermiteGaussianBeam"]["Parameters"]
Out[290]=

Summary of all properties:

In[291]:=
Magnify[ResourceFunction["HermiteGaussianBeam"]["Summary"], 0.5]
Out[504]=

Beam radius formula:

In[505]:=
ResourceFunction["HermiteGaussianBeam"]["BeamRadius"]
Out[505]=

Beam radius as a function of longitudinal position:

In[506]:=
ResourceFunction["HermiteGaussianBeam"][{"BeamRadius", {w0, zR}}]
Out[506]=

Beam radius for a specific longitudinal position:

In[507]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", {w0, zR}, 0.53}]
Out[507]=

Numerical parameter values are supported:

In[508]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", {0.5, 1.2}, 0.53}]
Out[508]=

Syntax for most parameters follows that for beam radius:

In[509]:=
{
 ResourceFunction["HermiteGaussianBeam"]["Curvature"],
 ResourceFunction["HermiteGaussianBeam"][{"Curvature", zR}],
 ResourceFunction["HermiteGaussianBeam"][{"Curvature", 0.5}][1.3],
 ResourceFunction["HermiteGaussianBeam"][{"Curvature", 0.5, 1.3}],
 ResourceFunction[
  "HermiteGaussianBeam"][{"Curvature", <|"RayleighRange" -> 0.5|>, 1.3}]
 }
Out[509]=

Gouy phase depends explicitly on the mode numbers:

In[510]:=
ResourceFunction["HermiteGaussianBeam"][{"GouyPhase", {zR, h, v}, z}]
Out[510]=

Input values (4) 

Input parameters can also have units:

In[511]:=
{
 ResourceFunction[
  "HermiteGaussianBeam"][{"Curvature", QuantityVariable["zR", "Distance"], QuantityVariable["z", "Distance"]}],
 ResourceFunction[
  "HermiteGaussianBeam"][{"Curvature", Quantity[zR, "Millimeters"], Quantity[z, "Millimeters"]}],
 ResourceFunction[
  "HermiteGaussianBeam"][{"Curvature", Quantity[1, "Millimeters"], Quantity[5.0, "Millimeters"]}]
 }
Out[511]=

Define dependent parameters by specifying beam waist w0 and Rayleigh range zR:

In[512]:=
{
 ResourceFunction[
  "HermiteGaussianBeam"][{"BeamRadius", {w0, zR}, z}],
 ResourceFunction[
  "HermiteGaussianBeam"][{"GouyPhase", {zR, h, v}, z}]
 }
Out[512]=

Input the two values as an Association:

In[513]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"BeamWaist" -> w0, "RayleighRange" -> zR|>, z}]
Out[513]=

Shortened keys are supported:

In[514]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"w0" -> w0, "zR" -> zR|>, z}]
Out[514]=

When input as an Association, parameters other than beam waist and Rayleigh range can be supplied:

In[515]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"w0" -> w0, "\[Lambda]" -> \[Lambda], "n" -> n|>, z}]
Out[515]=

Compare with:

In[516]:=
ResourceFunction[
  "HermiteGaussianBeam"][{"BeamRadius", {w0, zR}, z}] /. zR -> ResourceFunction[
   "HermiteGaussianBeam"][{"RayleighRange", {w0, \[Lambda], n}}]
Out[516]=

Applications (3) 

Create a doughnut intensity pattern:

In[517]:=
superposition = ResourceFunction[
     "HermiteGaussianBeam"][{"Intensity", {1, 1, 1, 0}, .0005}][x, y] + ResourceFunction[
     "HermiteGaussianBeam"][{"Intensity", {1, 1, 0, 1}, .0005}][x, y];
DensityPlot[superposition, {x, -2, 2}, {y, -2, 2}, PlotRange -> All, PlotPoints -> 20]
Out[518]=

Interactive calculator of Hermite-Gaussian beam parameters:

In[519]:=
Manipulate[
 UnitConvert@
  Quiet@ResourceFunction["HermiteGaussianBeam"][{"Summary",
      Association["w0" -> Quantity[w0val, "Micrometers"], "n" -> nval,
        "\[Lambda]" -> Quantity[\[Lambda]val, "Nanometers"], "h" -> hval, "v" -> vval]
      , Quantity[zval, "Meters"]}]["Parameters"],
 {{w0val, 50, "beam waist"}, 1, 100}, {{nval, 1, "refractive index"}, 0.1, 2},
 {{\[Lambda]val, 500, "wavelength"}, 100, 1000}, {{zval, 0.1, "longitudinal position"}, -5, 5},
 {{hval, 1, "horizontal mode"}, -5, 5, 1}, {{vval, 0, "vertical mode"}, 0, 5, 1}
 ]
Out[519]=

Do not evaluate dependent parameters and use default values of independent parameters for nice rendering:

In[520]:=
ResourceFunction[
 "HermiteGaussianBeam"]["ComplexAmplitude", "Cartesian", False]
Out[520]=
In[521]:=
TraditionalForm[%]
Out[521]=

Compare with the evaluated formula:

In[522]:=
TraditionalForm@
 ResourceFunction["HermiteGaussianBeam"]["ComplexAmplitude", "Cartesian", True]
Out[522]=

Properties and Relations (7) 

For h=0 and v=0, the Hermite-Gaussian beam coincides with the Gaussian beam:

In[523]:=
gauss = ResourceFunction[
     "GaussianBeam"][{"ComplexAmplitude", {w0, zR}}][x, y, z];
hg0 = ResourceFunction[
   "HermiteGaussianBeam"][{"ComplexAmplitude", {w0, zR, 0, 0}}][x, y, z]
Out[524]=
In[525]:=
hg0 == gauss
Out[525]=

Formulas are normalized such that the total intensity for a given longitudinal position is unity:

In[526]:=
intensity = ResourceFunction["HermiteGaussianBeam"][{"Intensity", {1, 1, 2, 3}}][
  x, y, z]
Out[526]=
In[527]:=
totalIntensity = Integrate[
  intensity, {x, -\[Infinity], \[Infinity]}, {y, -\[Infinity], \[Infinity]}, Assumptions -> {w0 > 0, zR > 0, z \[Element] Reals}]
Out[527]=

Intensity is the square of real amplitude:

In[528]:=
With[{i = ResourceFunction[
     "HermiteGaussianBeam"][{"Intensity", {w0, zR, h, v}}][x, y, z], a = ResourceFunction[
     "HermiteGaussianBeam"][{"Amplitude", {w0, zR, h, v}}][x, y, z]},
 Simplify[i == a^2, {w0 > 0, zR > 0, 
Element[{x, y, z}, Reals], 
Element[{h, v}, NonNegativeIntegers]}]
 ]
Out[528]=

"Amplitude" is the absolute value of "SignedAmplitude":

In[529]:=
With[{a = ResourceFunction[
     "HermiteGaussianBeam"][{"Amplitude", {w0, zR, h, v}}][x, y, z], sa = ResourceFunction[
     "HermiteGaussianBeam"][{"SignedAmplitude", {w0, zR, h, v}}][x, y,
     z]},
 Simplify[a == Abs[sa], {w0 > 0, zR > 0, 
Element[{x, y, z}, Reals], 
Element[{h, v}, NonNegativeIntegers]}]
 ]
Out[529]=

Difference between "Phase" and "SignedPhase" is given by the sign of Hermite polynomials:

In[530]:=
With[{p = ResourceFunction["HermiteGaussianBeam"][{"Phase", {w0, zR, h, v}}][
    x, y, z], sp = ResourceFunction[
     "HermiteGaussianBeam"][{"SignedPhase", {w0, zR, h, v}}][x, y, z]},
 Simplify[p - sp]
 ]
Out[530]=

Complex amplitude contains both the amplitude and phase:

In[531]:=
With[{ca = ResourceFunction[
     "HermiteGaussianBeam"][{"ComplexAmplitude", {w0, zR, h, v}}][x, y, z], a = ResourceFunction[
     "HermiteGaussianBeam"][{"Amplitude", {w0, zR, h, v}}][x, y, z], p = ResourceFunction[
     "HermiteGaussianBeam"][{"Phase", {w0, zR, h, v}}][x, y, z]},
 FullSimplify[
  ca == a Exp[I p] // DivideSides[#, GenerateConditions -> False]& , {w0 > 0, zR > 0, 
Element[{x, y, z}, Reals], 
Element[{h, v}, NonNegativeIntegers]}]
 ]
Out[531]=

Signed profiles give rise to the same complex amplitude:

In[532]:=
With[{ca = ResourceFunction[
     "HermiteGaussianBeam"][{"ComplexAmplitude", {w0, zR, h, v}}][x, y, z], a = ResourceFunction[
     "HermiteGaussianBeam"][{"SignedAmplitude", {w0, zR, h, v}}][x, y,
     z], p = ResourceFunction[
     "HermiteGaussianBeam"][{"SignedPhase", {w0, zR, h, v}}][x, y, z]},
 Simplify[ca == a Exp[I p]]
 ]
Out[532]=

Signed profiles, unlike the unsigned ones, are smooth and thus better suited for computation:

In[533]:=
Plot[ResourceFunction["HermiteGaussianBeam"][{#, {1, 1, 2, 0}}][x, 0, 1], {x, -2, 2}, PlotLabel -> #, PlotRange -> {All, {-1, 1}}] & /@ {"SignedAmplitude", "Amplitude"}
Out[533]=
In[534]:=
Plot[ResourceFunction["HermiteGaussianBeam"][{#, {1, 1, 2, 0}}][x, 0, 1], {x, -2, 2}, PlotLabel -> #, PlotRange -> {All, {-2, 4}}] & /@ {"SignedPhase", "Phase"}
Out[534]=

Horizontal mode number corresponds to the number of horizontal lobes:

In[535]:=
Table[DensityPlot[
  ResourceFunction[
    "HermiteGaussianBeam"][{"Intensity", {1, 1, hm, 0}}][x, y, 0], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 30, PlotLabel -> TemplateApply["\!\(\*
StyleBox[\"h\",\nFontSlant->\"Italic\"]\) = ``", hm], PlotRange -> All, ImageSize -> Tiny], {hm, 0, 3}]
In[536]:=

Vertical mode number corresponds to the number of vertical lobes:

In[537]:=
Table[DensityPlot[
  ResourceFunction[
    "HermiteGaussianBeam"][{"Intensity", {1, 1, 0, vm}}][x, y, 0], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 30, PlotLabel -> TemplateApply["\!\(\*
StyleBox[\"v\",\nFontSlant->\"Italic\"]\) = ``", vm], PlotRange -> All, ImageSize -> Tiny], {vm, 0, 3}]
In[538]:=

Hermite-Gaussian beams for small mode numbers:

In[539]:=
tab = Table[
   DensityPlot[
    ResourceFunction[
      "HermiteGaussianBeam"][{"Intensity", {1, 1, hm, vm}}][x, y, 0], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 20, ImageSize -> Tiny, FrameTicks -> False, PlotRange -> All], {hm, 0, 2}, {vm, 0, 2}];
Grid[Transpose@Join[{{"", "\!\(\*
StyleBox[\"h\",\nFontSlant->\"Italic\"]\)=0", "\!\(\*
StyleBox[\"h\",\nFontSlant->\"Italic\"]\)=1", "\!\(\*
StyleBox[\"h\",\nFontSlant->\"Italic\"]\)=2"}}, Transpose[Join[{{"\!\(\*
StyleBox[\"v\",\nFontSlant->\"Italic\"]\)=0", "\!\(\*
StyleBox[\"v\",\nFontSlant->\"Italic\"]\)=1", "\!\(\*
StyleBox[\"v\",\nFontSlant->\"Italic\"]\)=2"}}, tab]]]]
Out[541]=

Possible Issues (2) 

For Gouy phase and profiles, both mode numbers have to be specified:

In[542]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"GouyPhase", <|"w0" -> w0, "zR" -> zR, "h" -> h|>, z}]
Out[542]=

Specify both numbers:

In[543]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"GouyPhase", <|"w0" -> w0, "zR" -> zR, "h" -> h, "v" -> v|>, z}]
Out[543]=

Some sets of input parameters are under- or overdetermined:

In[544]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"w0" -> w0, "\[Lambda]" -> \[Lambda]|>, z}]
Out[544]=
In[545]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"w0" -> w0, "\[Lambda]" -> \[Lambda], "n" -> n, "k" -> kv|>, z}]
Out[545]=

Supply all necessary parameters:

In[546]:=
ResourceFunction[
 "HermiteGaussianBeam"][{"BeamRadius", <|"w0" -> w0, "\[Lambda]" -> \[Lambda], "n" -> n|>, z}]
Out[546]=

Neat Examples (2) 

Plot the high-intensity region around the waist of a z-axis-aligned beam with four lobes:

In[547]:=
intensity = ResourceFunction["HermiteGaussianBeam"][{"Intensity", {1, 2, 1, 1}}];
DensityPlot3D[
 intensity[x, y, z], {x, -15, 15}, {y, -15, 15}, {z, -15, 15}, PlotLabel -> "Absolute intensity", PlotPoints -> 70, Axes -> False]
Out[548]=

Plot intensity relative to the maximum intensity:

In[549]:=
DensityPlot3D[
 intensity[x, y, z]/
  intensity[Sqrt[4 + z^2]/(2 Sqrt[2]), Sqrt[4 + z^2]/(2 Sqrt[2]), z], {x, -15, 15}, {y, -15, 15}, {z, -15, 15}, PlotLabel -> "Relative intensity", Axes -> False, OpacityFunction -> "Image3D"]
Out[550]=

Plot the wavefronts (this might several minutes to compute):

In[551]:=
{time, wavefronts} = AbsoluteTiming[
   ContourPlot3D[
      ResourceFunction[
        "HermiteGaussianBeam"][{"Phase", {1, 2, 1, 1}}][x, y, z], {x, -5, 5}, {y, -5, 5}, {z, -10, 10}, RegionFunction -> Function[{x, y, z, f}, (z^2 > 4 (x^2 + y^2 - 1)) && (#[
           ResourceFunction[
             "HermiteGaussianBeam"][{"SignedAmplitude", {1, 2, 1, 1}}][x, y, z]])], Sequence[
      Contours -> Subdivide[-32, 32, 10], ContourStyle -> Directive[
Specularity[20], 
Opacity[0.5, Purple]], Mesh -> None, RegionBoundaryStyle -> None]] & /@ {Positive, Negative}];
time
Out[289]=
In[552]:=
volume = ResourceFunction["ExtractGraphicsPrimitives"]@
   RevolutionPlot3D[0.6 Sqrt[4 + z^2], {z, -8, 8}, Sequence[
    RevolutionAxis -> {1, 0, 0}, Mesh -> None, PlotStyle -> Opacity[0.1, Blue], PlotPoints -> 20]];
Show[Graphics3D[{Rotate[
    volume, \[Pi]/2, {0, 1, 0}]}], wavefronts, Sequence[
 ViewPoint -> {-1.1, 0.65, 1.53}, ViewVertical -> {0, 1, 0}, ImageSize -> 800, Boxed -> False, PlotRange -> {5 {-1, 1}, 5 {-1, 1}, 10 {-1, 1}}]]
Out[553]=

Publisher

Jaroslav Kysela

Requirements

Wolfram Language 13.0 (December 2021) or above

Version History

  • 1.0.0 – 17 May 2024

Related Resources

Author Notes

One could also add properties LaguerreGaussianBeam["BeamWaist"] and LaguerreGaussianBeam["Wavenumber"] akin to LaguerreGaussianBeam["RayleighRange"].

License Information