Wave Propagation in Linear Media | re-examined
Wave Propagation in Linear Media | re-examined
Wave Propagation in Linear Media | re-examined
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
8 Application of the quadratu<strong>re</strong> rout<strong>in</strong>e<br />
OscInt[fneg[a, 0,-c,0,w,k],<br />
QuadZero[a, -c,0,o12],1,FunctionType->ZeroList,opts]) +<br />
(OscInt[fpos[a, b, c,d,w,k],<br />
QuadZero[a, b +c,d,o21],1,FunctionType->ZeroList,opts] +<br />
OscInt[fneg[a,-b,-c,d,w,k],<br />
QuadZero[a,-b -c,d,o22],1,FunctionType->ZeroList,opts])<br />
) RectConst[w,k]<br />
];<br />
The second possibility to compute this <strong>in</strong>tegral is not to use the approximate partition<strong>in</strong>g<br />
strategy but employ the exact zeros for this purpose. S<strong>in</strong>ce we do not need this module for<br />
any other function than the one <strong>in</strong>side the tunnel, we need not write it as a template. So we<br />
pass only the parameters of the wave to the module but keep the names of the <strong>in</strong>tegrands<br />
xed. This time we call the quadratu<strong>re</strong> rout<strong>in</strong>e without a value for the option FunctionType<br />
because it defaults to Argument which is exactly what we want <strong>in</strong> order to compute the zeros<br />
numerically. The <strong>re</strong>st of the module is the same as the p<strong>re</strong>viously discussed version.<br />
RectTransExact[x_, t_, w_, k_, opts___Rule] :=<br />
Module[fa,b,c,d,<br />
wp = Work<strong>in</strong>gP<strong>re</strong>cision/.foptsg/.Options[OscInt]g,<br />
a = -t;<br />
b = N[2 Pi k/Sqrt[w],wp+2];<br />
c = x;<br />
d = N[-2 Pi k,wp+2];<br />
(-(OscInt[RectTransPos[a, 0, c,0,w,k],<br />
PhiArg[a, 0, c,0],1,opts] +<br />
OscInt[RectTransNeg[a, 0,-c,0,w,k],<br />
PhiArg[a, 0,-c,0],1,opts]) +<br />
(OscInt[RectTransPos[a, b, c,d,w,k],<br />
PhiArg[a, b, c,d],1,opts] +<br />
OscInt[RectTransNeg[a,-b,-c,d,w,k],<br />
PhiArg[a,-b,-c,d],1,opts])<br />
) RectConst[w,k]<br />
];<br />
The template for the calculation of the evanescent part of the wave is di e<strong>re</strong>nt. First, we<br />
do not split the <strong>in</strong>tegrand and thus have only one call of the <strong>in</strong>tegration rout<strong>in</strong>e. Second,<br />
as we use the built-<strong>in</strong> Mathematica function NIntegrate, we must set a number of options<br />
accord<strong>in</strong>g to the values given by the user. As method for the evaluation of this de nite <strong>in</strong>tegral<br />
we choose aga<strong>in</strong> DoubleExponential. A third di e<strong>re</strong>nce is that this module can be used for<br />
all waveforms and the<strong>re</strong>fo<strong>re</strong> the waveform-dependent constant must be passed to the module<br />
as an argument.<br />
EvanTemp[f_, const_, opts___Rule] :=<br />
Module[fwp = Work<strong>in</strong>gP<strong>re</strong>cision/.foptsg/.Options[OscInt],<br />
ag = AccuracyGoal/. foptsg/.Options[OscInt],<br />
202