【伝播計算:第1回】レーザーはまっすぐ進むのか?──角スペクトル法とM²から見る光の広がり

Python

はじめに

初めて僕がレーザーを知ったのは、漫画『スプリガン』に登場する古代兵器でした。
レーザー光の攻撃を水蒸気によって減衰して主人公が切り抜ける、そんな描写だったと思います。

レーザー光は「広がらず、まっすぐ進む光」として描かれることが多いですが、実際には直進はするものの少しずつ広がっていきます。

これはレーザーが有限のサイズを持つ以上、回折を避けられないためです。

理想的なレーザー光は、強度分布がガウス関数になる「ガウシアンビーム」として扱われます。
ガウシアンビームは伝播後も解析的に扱いやすく、レーザー光学の多くはこの近似の上に成り立っています。

しかし現実のレーザー光は、様々な原因で理想的なガウシアンビームから少しずつ崩れていきます。

この記事では、

  • レーザーはどのように広がるのか
  • という指標がなぜ重要なのか
  • ガウシアン近似から外れた波面をどう扱うのか

について、角スペクトル法を用いて任意の強度分布のシミュレーションを交えながら説明します。

レーザー光の広がり方

レーザー光の半径を w で表します。
(waist の w です。後ほど説明します。)

レーザー光が z 方向に伝播するとき、ビーム半径 w(z) は以下の式で表されます。
$$
w(z)=w_0\sqrt{1+\left(\frac{\lambda z}{\pi w_0^2}\right)^2}
$$

文字が多く見えますが、ほとんどは定数です。
実際に変化するのは伝播距離 z だけです。

つまり、それぞれの位置でレーザー光の大きさを測定すれば、この式を確認できます。

定性的には、レーザー光は下図のように振る舞います。

gausiann_image.png

z=0 付近で最も細くなるそこから離れるにつれて広がり、
この最も細い位置を waist(ウェスト) と呼びます。
最も小さいウェストを特別に$w_0$と書きます。

人間の腰のように中央が細く見えるため、この名前が付いています。
そのためレーザー光の半径には r ではなく w がよく使われます。
伝播の式でzの係数が小さいほど、zが大きくなってもビームは広がりません。
つまり波長、$\lambda$が長い、$w_0$が大きい(レーザー光を広げる)と伝播しても広がりづらいと分かります。

ガウシアンビーム

次はXY面について考えます。
レーザーではXY面では、強度がガウス関数になっているとすることが多いです。
これをガウシアンビームと呼びます。
中心が一番強度が高く、周囲に行くほど弱くなっていきます。

なぜガウス関数を仮定するのか?

理由は簡単で、数学的な扱いがとても楽だからです。
あるz位置でガウス関数であれば、自由空間を伝播する際はずっとガウス関数になります。
ガウス関数以外では、各z位置で強度分布の関数形が変わるため扱いが大変なんです。

また、ガウス関数なので少数のパラメータで記述できるのも便利ポイントです。

ガウス関数を仮定していいの?

経験的にうまくいくので、あまり心配する必要はありません。
またレーザーは内部に共振器構造をもっていて光はこの中を何度も往復するのですが、その際にガウス関数に近くなっていくことが知られています。

gauss_3d.png

M²って何?

現実のビームを測定すると強度分布はガウス関数でも、下式を満たさないことがあります。
$$
w(z)=w_0\sqrt{1+\left(\frac{\lambda z}{\pi w_0^2}\right)^2}
$$

実際のレーザーでは、波面収差など様々な原因で、理想状態から少しずつ崩れていくのです。
そこで、理想からのずれを表す指標として (エムスクウェア)が導入されます。

$$
w(z)=w_0\sqrt{1+\left(\frac{M^2\lambda z}{\pi w_0^2}\right)^2}
$$
=1 のとき、理想的なガウシアンビームと一致します。

また、は必ず 1 以上となり、値が大きいほど理想状態から離れていることを表します。

M²の意味

意味合いを理解できるように、についてもう少し詳しく見てみます。
このセクションは飛ばしても大丈夫です。

$w(z)$の式で、zが十分大きい時は下式に近似できます。

$$
w(z)=\frac{\lambda z}{\pi w_0}
$$
遠方では、zに比例してウェストサイズが広がっていきます。
この時のzの比例係数を、ビームの広がり角$\theta$として定義します。
$$
\theta = \frac{\lambda }{\pi w_0}
$$

小さく絞るほど($w_0$:小)、広がりやすくなる($\theta$:大)ことが分かります。

さらに、広がり角$\theta$とビームウェスト$w_0$の積を取ると定数になります。

$$
\theta w_0 = \frac{\lambda }{\pi }
$$
これは、

「小さく絞るほど、必ず広がりやすくなる」

という回折限界を表しています。

現実のレーザーでは、これに M² を導入して、下式になります。
$$
\theta w_0 = \frac{\lambda M^2}{\pi }
$$

つまり M² が大きいほど、

  • 同じ大きさに絞っても広がりやすい
  • 同じ広がり角なら大きくしか絞れない

ことを意味しています。

また少し見方を変えると、広がり角とウェストがそれぞれM倍され、積の値がM²倍になったと考えることができます。
そのため、M²という名前が使われています。

ガウシアンビームから外れたビームについて

僕の感覚的には、M²の値が1.5以下くらいであれば綺麗なガウシアン、
2を超えてくるとピークが複数現れ始めてガウス関数を当てはめること自体が難しくなってきます。

またM²が1近くとも理想状態からのずれはある訳で、その小さなずれの影響が重要になる場面があります。

そのような場合はどのように方法で伝播を計算できるでしょうか?
角スペクトル法が有用です。

角スペクトル法について

角スペクトル法は、光を平面波の重ね合わせとして扱い、それぞれの平面波を自由空間中で伝播させることで波面伝播を計算する方法です。

角スペクトル法の大きな利点は、以下です。

  • FFTだけで計算できる
  • 実装が比較的簡単
  • Fresnel近似より制約が少ない
  • 任意の波面を扱える

個人的にはかなり強力な回折計算手法と思っています。

試しにレンズで集光した際に焦点位置での、ビーム形状を計算してみます。
条件

  • 波長 : 532 nm
  • ビーム径 : 3 mm(waist:1.5mm)
  • レンズ焦点距離 : 1 m
import numpy as np
import matplotlib.pyplot as plt

# パラメータ設定
wavelength = 532e-9        # 波長 [m]
k = 2 * np.pi / wavelength
beam_radius = 1.5e-3       # 半径1.5mmのビーム
N = 2048                   # グリッド点数(大きめが安定)
L = 10e-3                  # グリッド物理サイズ(10mm)
focal_length = 1        #レンズ焦点距離1m
dx = L / N
x = np.linspace(-L/2, L/2, N)
X, Y = np.meshgrid(x, x)

# 初期ビーム
r2 = X**2 + Y**2
U0_amp = np.exp(-r2 / (beam_radius**2))

# 位相変調
phase = -k * r2/(2*focal_length) #レンズで集光

#電場分布
U0 = U0_amp * np.exp(1j * phase)  # 振幅 × 位相

# アンギュラー・スペクトル法で伝播
kx = 2 * np.pi * np.fft.fftfreq(N, dx)
ky = kx.copy()
KX, KY = np.meshgrid(kx, ky)
KZ = np.sqrt(k**2 - KX**2 - KY**2 + 0j)

U0_ft = np.fft.fft2(U0)
Uz_ft = U0_ft * np.exp(1j * KZ * focal_length)
Uz = np.fft.ifft2(Uz_ft)
Pz = np.abs(Uz)**2

#図示
plt.figure(figsize=(6,5))
c = N//2
s = 50

plt.contourf(
    X[c-s:c+s, c-s:c+s] * 1e3,
    Y[c-s:c+s, c-s:c+s] * 1e3,
    Pz[c-s:c+s, c-s:c+s],
    levels=100
)

plt.xlabel("x [mm]")
plt.ylabel("y [mm]")
plt.title("Beam Profile at Focus")

plt.colorbar(label="Intensity")
plt.axis("equal")

plt.tight_layout()
plt.show()
asm_focused.png

もとのビーム径を3mmとしましたが、レンズにより集光されて0.2 mmくらいに集光されています。

もう少し派手に変わるものを考えてみましょう。ビームの右半分の位相を180度進めた時の1m先のプロファイルを計算してみます。これは例えば、厚さを調整したガラス板をビームの右半分に挿入したような状況です。

位相変調の部分を下記で置き換えて、図示範囲を調整します。

# 位相変調のブロックを下記で置き換え
# 右半分だけ位相を進める
phase = np.zeros_like(X)

# 右側領域
mask = X > 0

# π/2だけ位相を進める
phase[mask] = np.pi / 2
phase_added.png

初期強度分布はほぼ同じでも、位相分布が異なるだけで伝播後のビーム形状は大きく変化します。

つまり、レーザー光を考える際には「強度」だけでなく「位相」も重要になるのです。

実はガウシアンビームに限らず任意のビーム、位相付加を計算できますし、ゼルニケ多項式を使って収差を入れるなど、角スペクトル法はかなり万能な計算方法と分かる思います。

また、光線に位相を付加することで所望のビーム形状を形成する素子を回折光学素子(DOE : Diffractive Optical Element)と呼びます。普通のレンズでは作れない形に光を形成出来たり、レンズが用意できないような波長であってもDOEなら作れたりします。

DOEを設計しようとすると、欲しい強度分布から付加する位相分布を逆算する必要があるのですが、いつか解説出来たらと思います。

今回あまり触れなかった理論を押さえたい方はこちらを参照ください。

最後に

ガウシアンビーム近似は非常に強力ですが、
現実のレーザーでは「少しだけ理想からずれる」場面が多く存在します。

はそれを定量的に測定、表現できる重要な指標であり、角スペクトル法は、その小さなずれを直接扱える強力な方法です。

ガウシアン近似だけでは見えない現象も、位相を含めてシミュレーションすることで理解できるようになります。

次回記事

角スペクトル法を使ってレーザー光の伝播を考えています。

角スペクトル法は自由空間の伝播を考える時は非常に強力ですが、光学系による結像を考えたい時は少しパワー不足で、フラウンフォーファー回折に基づいて考える必要があります。以下の記事で解説しています。

コメント

タイトルとURLをコピーしました