Plotting Laser Pulses
Post
Cancel

# Plotting Laser Pulses

## Introduction

In this post, I will try to plot laser pulse using different methods. A laser pulse is often represented by a sine/cosine function multiplied by an envelope function, e.g. Gaussian

$$$f(t) = a \cdot \sin(\omega\cdot t) \cdot e^{-t^2/\tau^2}$$$

where $a$, $\omega$ and $\tau$ denotes the amplitude, frequency and duration of the laser pulse.

There are many tools that can be used to plot this function, e.g. gnuplot, matplotlib. However, these tools are not convenient if you want to add an arrow to the end of the laser pulse.

## 2D laser pulses using LaTeX TikZ

TikZ/LaTeX is convenient if you want to add arrows to the picture. Moreover, the resulting picture is in pdf format, which is one of the vector images formats. Below is the code that I used to generate the laser pulse.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 \documentclass[border=20pt]{standalone} \usepackage{tikz} \usetikzlibrary{ arrows, arrows.meta } \begin{document} \resizebox{4in}{!}{ \begin{tikzpicture} \draw[-{Stealth[length=20pt, open]}, line width=2.0pt, red] plot [samples=2000, domain=-6.5:6.5] (\x, {4*sin(\x r * 8) * exp(-\x*\x / 5.0)}) -- ++(0.5, 0); \end{tikzpicture} } \end{document} 

Here is the result:

## 3D laser pulse using Mayavi

A 3D laser pulse is often much fancier than a 2D one. Function of 3d laser pulse

\begin{align} x &= a \cdot sin(\omega\cdot t) \cdot e^{-t^2 /\tau^2} \\ y &= a \cdot sin(\omega\cdot t) \cdot e^{-t^2 /\tau^2} \\ z &= c\cdot t \end{align}

Mayavi can be used to plot a 3D one, as shown below.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #!/usr/bin/env python import numpy as np from mayavi import mlab fig = mlab.figure( fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(2000, 2000) ) fig.scene.parallel_projection = True u = np.linspace(0, 2*np.pi, 1000) v = np.linspace(-8, 8, 1000) x = 2.5 * np.exp(-v**2 / 10) * np.sin(20*u) y = 2.5 * np.exp(-v**2 / 10) * np.cos(20*u) z = v mlab.plot3d(x, y, z, tube_radius=0.09, color=(0, 0, 1)) u, v = np.mgrid[0:np.pi*2:1000j, -8:8:1000j] x = 2.48 * np.exp(-v**2 / 10) * np.sin(20*u) y = 2.48 * np.exp(-v**2 / 10) * np.cos(20*u) z = v mlab.mesh(x, y, z, # color=np.exp(-np.linspace(-8, 8, 1000)**2/10), colormap='Blues', resolution=20, representation='surface', line_width=0, # tube_radius=0, # tube_sides=10, opacity=0.9) # mlab.savefig('mlaser.png') mlab.show() 

After choosing the right view angle, one can get images like