27.12.2012 Views

Wave Propagation in Linear Media | re-examined

Wave Propagation in Linear Media | re-examined

Wave Propagation in Linear Media | re-examined

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

PhiFro::usage =<br />

"PhiFro[x,t,w,k,n,l,(opts)] <strong>re</strong>turns the left-go<strong>in</strong>g part <strong>in</strong> the barrier.<br />

For further <strong>in</strong>formation see Phi"<br />

PhiTun::usage =<br />

"PhiTun[x,t,w,k,n,l,(opts)] <strong>re</strong>turns the wave <strong>in</strong>side the barrier. For<br />

further <strong>in</strong>formation see Phi"<br />

Beg<strong>in</strong>["`Private`"]<br />

(*-- Functions <strong>in</strong>dependent of the waveform --*)<br />

RefCoeffPos[xi_,l_] := -I S<strong>in</strong>[l Sqrt[xi^2-1]]/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] - I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]]);<br />

RefCoeffNeg[xi_,l_] := I S<strong>in</strong>[l Sqrt[xi^2-1]]/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] + I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]]);<br />

ToCoeffPos[xi_,l_] := (xi Sqrt[xi^2-1] + xi^2)/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] - I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

ToCoeffNeg[xi_,l_] := (xi Sqrt[xi^2-1] + xi^2)/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] + I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

FroCoeffPos[xi_,l_] := (xi Sqrt[xi^2-1] - xi^2)/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] - I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

FroCoeffNeg[xi_,l_] := (xi Sqrt[xi^2-1] - xi^2)/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] + I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

TransCoeffPos[xi_,l_] := 2 xi Sqrt[xi^2-1]/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] - I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

TransCoeffNeg[xi_,l_] := 2 xi Sqrt[xi^2-1]/<br />

(2 xi Sqrt[xi^2-1] Cos[l Sqrt[xi^2-1]] + I (2 xi^2-1) S<strong>in</strong>[l Sqrt[xi^2-1]])<br />

TunOsc[a_,b_,c_,d_,xi_] := Exp[I (a xi^2 + b xi + c Sqrt[xi^2 - 1] + d)];<br />

OutOsc[a_,b_,c_,d_,xi_] := Exp[I (a xi^2 + (b+c) xi + d)];<br />

GaussTruncLims[w_,k_,n_,wp_] :=<br />

{N[Sqrt[w] (1-n/(Pi k) *<br />

Sqrt[Log[Sqrt[2 Pi] k/Sqrt[n w Sqrt[2 Pi]]/10^-(wp+1)]]), wp+2],<br />

N[Sqrt[w] (1+n/(Pi k) *<br />

Sqrt[Log[Sqrt[2 Pi] k/Sqrt[n w Sqrt[2 Pi]]/10^-(wp+1)]]), wp+2]};<br />

(*-- <strong>Wave</strong> packet shape --*)<br />

GaussConst[w_,k_,n_] := k Sqrt[2 Pi / (w n Sqrt[2 Pi])];<br />

GaussShapePos[w_,k_,n_,xi_] := Exp[-(Pi k (xi/Sqrt[w] - 1)/n)^2];<br />

GaussShapeNeg[w_,k_,n_,xi_] := Exp[-(Pi k (-xi/Sqrt[w] - 1)/n)^2];<br />

GaussIncPos[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

GaussShapePos[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

GaussIncNeg[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

GaussShapeNeg[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

GaussRefPos[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

RefCoeffPos[xi,l] * GaussShapePos[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

GaussRefNeg[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

RefCoeffNeg[xi,l] * GaussShapeNeg[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

GaussToPos[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

ToCoeffPos[xi,l] * GaussShapePos[w,k,n,xi] * TunOsc[a,b,c,d,xi];<br />

GaussToNeg[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

ToCoeffNeg[xi,l] * GaussShapeNeg[w,k,n,xi] * TunOsc[a,b,c,d,xi];<br />

GaussFroPos[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

FroCoeffPos[xi,l] * GaussShapePos[w,k,n,xi] * TunOsc[a,b,c,d,xi];<br />

GaussFroNeg[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

FroCoeffNeg[xi,l] * GaussShapeNeg[w,k,n,xi] * TunOsc[a,b,c,d,xi];<br />

GaussTransPos[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

TransCoeffPos[xi,l] * GaussShapePos[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

GaussTransNeg[a_,b_,c_,d_,w_,k_,n_,l_][xi_] :=<br />

TransCoeffNeg[xi,l] * GaussShapeNeg[w,k,n,xi] * OutOsc[a,b,c,d,xi];<br />

(*-- Templates for wave computations --*)<br />

GaussPassTruncTemp[fpos_, fneg_, x_, t_, w_, k_, n_, l_, opts___Rule] :=<br />

Module[{wp = Work<strong>in</strong>gP<strong>re</strong>cision/.{opts}/.Options[OscInt],<br />

ag = AccuracyGoal/. {opts}/.Options[OscInt],<br />

pg = P<strong>re</strong>cisionGoal/. {opts}/.Options[OscInt],<br />

mi = M<strong>in</strong>Recursion/. {opts}/.Options[OscInt],<br />

230<br />

A Mathematica packages

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!