Imports
/- Copyright (c) 2025 Zhi Kai Pong. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Zhi Kai Pong -/ module public import Physlib.ClassicalMechanics.WaveEquation.Basic

Harmonic Wave

Time-harmonic waves.

Note TODO EGU3E may require considerable effort to be made rigorous and may heavily depend on the status of Fourier theory in Mathlib.

@[expose] public section

The wavevector which indicates a direction and has magnitude 2π/λ.

abbrev WaveVector (d : ℕ := 3) := EuclideanSpace ℝ (Fin d)
TODO "Show that the wave equation is invariant under rotations and any direction `s` can be rotated to `EuclideanSpace.single 2 1` if only one wave is concerned."

Transverse monochromatic time-harmonic plane wave where the direction of propagation is taken to be EuclideanSpace.single 2 1. f₀x and f₀y are the respective amplitudes, ω is the angular frequency, δx and δy are the respective phases for fx and fy.

set_option linter.unusedVariables false in@[nolint unusedArguments] noncomputable def transverseHarmonicPlaneWave (k : WaveVector) (f₀x f₀y ω δx δy : ℝ) (hk : k = EuclideanSpace.single 2 (ω/c)) : Time → Space → EuclideanSpace ℝ (Fin 3) := let fx := harmonicWave (fun _ _ => f₀x) (fun _ r => ⟪k, basis.repr r⟫_ℝ - δx) (fun _ => ω) k let fy := harmonicWave (fun _ _ => f₀y) (fun _ r => ⟪k, basis.repr r⟫_ℝ - δy) (fun _ => ω) k fun t r => fx t r • EuclideanSpace.single 0 1 + fy t r • EuclideanSpace.single 1 1

The transverse harmonic planewave representation is equivalent to the general planewave expression with ‖k‖ = ω/c.

c:ℝk:WaveVectorf₀x:ℝf₀y:ℝω:ℝδx:ℝδy:ℝhc_ge_zero:0 < chω_ge_zero:0 < ωhk:k = EuclideanSpace.single 2 (ω / c)t:Timer:Spacenormk:‖k‖ = ω / c⊢ (f₀x * Real.cos (ω * t.val - (⟪basis.repr r, k⟫_ℝ - δx))) • EuclideanSpace.single 0 1 + (f₀y * Real.cos (ω * t.val - (⟪basis.repr r, k⟫_ℝ - δy))) • EuclideanSpace.single 1 1 = (f₀x * Real.cos (-(ω / c * (ω / c)⁻¹ * ⟪r, basis.repr.symm k⟫_ℝ - ω / c * (c * t.val)) + δx)) • EuclideanSpace.single 0 1 + (f₀y * Real.cos (-(ω / c * (ω / c)⁻¹ * ⟪r, basis.repr.symm k⟫_ℝ - ω / c * (c * t.val)) + δy)) • EuclideanSpace.single 1 1 c:ℝk:WaveVectorf₀x:ℝf₀y:ℝω:ℝδx:ℝδy:ℝhc_ge_zero:0 < chω_ge_zero:0 < ωhk:k = EuclideanSpace.single 2 (ω / c)t:Timer:Spacenormk:‖k‖ = ω / c⊢ (f₀x * Real.cos (ω * t.val - ⟪basis.repr r, k⟫_ℝ + δx)) • EuclideanSpace.single 0 1 + (f₀y * Real.cos (ω * t.val - ⟪basis.repr r, k⟫_ℝ + δy)) • EuclideanSpace.single 1 1 = (f₀x * Real.cos (ω * t.val * c * c⁻¹ - ω * c⁻¹ * ω⁻¹ * c⁻¹⁻¹ * ⟪r, basis.repr.symm k⟫_ℝ + δx)) • EuclideanSpace.single 0 1 + (f₀y * Real.cos (ω * t.val * c * c⁻¹ - ω * c⁻¹ * ω⁻¹ * c⁻¹⁻¹ * ⟪r, basis.repr.symm k⟫_ℝ + δy)) • EuclideanSpace.single 1 1 All goals completed! 🐙
TODO "Show that any disturbance (subject to certain conditions) can be expressed as a superposition of harmonic plane waves via Fourier integral."