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."