Skip to main content

THz Time-domain modelling

Using a single Lorentz-Oscillator model we model the responce of a materials with a variable thickneses

Download original notebook

Evaluate initialization cells first

f[ω_, eps_, ω0_, ωp_, γ_] := eps + (*FB[*)(((*SpB[*)Power[ωp(*|*),(*|*)2](*]SpB*))(*,*)/(*,*)((*SpB[*)Power[ω0(*|*),(*|*)2](*]SpB*) - (*SpB[*)Power[ω(*|*),(*|*)2](*]SpB*) + I γ ω))(*]FB*)
n[ω_, params__] := (*SqB[*)Sqrt[f[ω, params]](*]SqB*)

e[ω_, L_, params__] := Exp[- (*FB[*)((I 2π (*SpB[*)Power[10(*|*),(*|*)12](*]SpB*) ω n[ω, params] L)(*,*)/(*,*)(c cm2THz))(*]FB*) ] /.{c -> 3.0 (*SpB[*)Power[10(*|*),(*|*)10](*]SpB*), cm2THz -> 33.4}

Material parameters (nn and κ\kappa)

Plot[n[x, 9.8, 28.66, 15, 1.5] // ReIm // Evaluate, {x,28.66 - 20, 28.66 + 20}, 
  FrameLabel->{"wavenumber (cm^{-1})"}, Frame->True
]
(*VB[*)(FrontEndRef["061e0ba5-ee09-492d-88fe-801fe1ab75b8"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKG5gZphokJZrqpqYaWOqaWBql6FpYpKXqWhgYpqUaJiaZmyZZAACFChXW"*)(*]VB*)

A responce of a material to a short pulse (δ\delta - function)

tds[params__] := (Join[#, Reverse[#]] &@ Table[e[ω, params], {ω, 0,100,0.1}]) // Fourier

Make it interactive

evaluate this after initialization cells

udata = {{0,0}, {500,0}};
thick = ToString[0.3]<>" mm";

Graphics[{
  ColorData[97][1],
  Line[udata // Offload], Black,
  Text[thick // Offload, {300, 2.5}]
  },
  
  PlotRange->{{0,400}, {-3,3}}, 
  
  TransitionDuration->30, 
  TransitionType->"Linear", 
  Axes->True, Frame->True, FrameLabel->{"time, ps", "Electric field, nA"}
]
(*VB[*)(FrontEndRef["d459ba2d-6287-4bcd-9a4e-56d06f5e22bc"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKp5iYWiYlGqXomhlZmOuaJCWn6FommqTqmpqlGJilmaYaGSUlAwCJgRYH"*)(*]VB*)

Try to drag this slider

EventHandler[InputRange[0.001, 0.1, 0.002, "Label"->"Thickness"], Function[thickness, 
  udata = {Range[Length[#]], #} &@ (Drop[#, -Length[#]/2//Ceiling] &@ tds[thickness, 9.8, 28., 15., 0.05] // Re) // Transpose;
  thick = ToString[thickness]<>" mm";
]]
(*VB[*)(EventObject[<|"Id" -> "fea4ffb9-fc11-4ed3-95b8-a35fad6e246e", "Initial" -> 0.05, "View" -> "865fc7e3-b3dc-407b-ada6-cac6dae7a3a4"|>])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKW5iZpiWbpxrrJhmnJOuaGJgn6SamJJrpJicmm6UkpponGieaAACTgBa6"*)(*]VB*)