Initial commit
This commit is contained in:
commit
0425ca5693
400
Costin_Costin_Jauslin_Lebowitz_2018.tex
Normal file
400
Costin_Costin_Jauslin_Lebowitz_2018.tex
Normal file
@ -0,0 +1,400 @@
|
||||
\documentclass{ian}
|
||||
|
||||
\usepackage{graphicx}
|
||||
\usepackage{array}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\hbox{}
|
||||
\hfil{\bf\LARGE
|
||||
Solution of the time dependent Schr\"odinger equation\par
|
||||
\vskip10pt
|
||||
\hfil leading to Fowler-Nordheim field emission\par
|
||||
}
|
||||
\vfill
|
||||
|
||||
\hfil{\bf\large Ovidiu Costin}\par
|
||||
\hfil{\it Department of Mathematics, The Ohio State University}\par
|
||||
\hfil{\tt\color{blue}\href{mailto:costin.9@osu.edu}{costin.9@osu.edu}}\par
|
||||
\vskip20pt
|
||||
|
||||
\hfil{\bf\large Rodica Costin}\par
|
||||
\hfil{\it Department of Mathematics, The Ohio State University}\par
|
||||
\hfil{\tt\color{blue}\href{mailto:costin.10@osu.edu}{costin.10@osu.edu}}\par
|
||||
\vskip20pt
|
||||
|
||||
\hfil{\bf\large Ian Jauslin}\par
|
||||
\hfil{\it Department of Physics, Princeton University}\par
|
||||
\hfil{\it School of Mathematics, Institute for Advanced Study}\par
|
||||
\hfil{\tt\color{blue}\href{mailto:ijauslin@princeton.edu}{ijauslin@princeton.edu}}\par
|
||||
\vskip20pt
|
||||
|
||||
\hfil{\bf\large Joel L. Lebowitz}\par
|
||||
\hfil{\it Department of Mathematics and Physics, Rutgers University}\par
|
||||
\hfil{\tt\color{blue}\href{mailto:lebowitz@math.rutgers.edu}{lebowitz@math.rutgers.edu}}\par
|
||||
\vskip20pt
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\hfil {\bf Abstract}\par
|
||||
\medskip
|
||||
We solve the time-dependent Schr\"odinger equation describing the emission of electrons from a metal surface by an external electric field $E$, turned on at $t=0$. Starting with a wave function $\psi(x,0)$, representing a generalized eigenfunction when $E=0$, we find $\psi(x,t)$ and show that it approaches, as $t\to\infty$, the Fowler-Nordheim tunneling wavefunction $\psi_E$. The deviation of $\psi$ from $\psi_E$ decays asymptotically as a power law $t^{-\frac32}$. The time scales involved for typical metals and fields of several V/nm are of the order of femtoseconds. We plot the short-time evolution of the current and density.
|
||||
|
||||
\vfill
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\vfill
|
||||
\eject
|
||||
|
||||
\setcounter{page}1
|
||||
\pagestyle{plain}
|
||||
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
\indent The emission of electrons from a cold metal surface subjected to a constant (or oscillating) electric field is a subject of great practical and theoretical interest\-~\cite{Je03,Fo16,Je17}. The microscopic theory of such emissions by a constant field was developed by Fowler and Nordheim (FN) in the early days of quantum mechanics\-~\cite{FN28} (referred to then as the ``new mechanics''). They considered an idealized situation in which the electrons in the conduction band are treated, a la Sommerfeld, as free independent particles. Their energies are described by a Fermi distribution with maximum energy $E_F=\hbar^2k_{\mathrm F}^2/2m$; the deviation from this zero-temperature distribution is negligible at room temperatures. In the absence of an external field the electrons are confined by an external potential (caused by the positive ions) of magnitude $U=E_F+W$, where $W$ is the work function, i.e. the energy necessary to extract an electron from the metal.
|
||||
\bigskip
|
||||
|
||||
\indent Considering emissions perpendicular to a flat surface at $x=0$, obtained when applying an external field $E$ for $x\geqslant 0$, assuming that the metal occupies all space $x<0$, leads to a one-dimensional tunneling problem in a triangular potential, see Fig.\-~\ref{fig:potential}. The one-dimensional Schr\"odinger equation describing an electron moving in this potential is then given by
|
||||
\begin{equation}
|
||||
\label{schrodinger}
|
||||
i\partial_t\psi(x,t)=(-{\textstyle\frac12}\partial_x^2+V(x))\psi(x,t)
|
||||
\end{equation}
|
||||
where
|
||||
\begin{equation}
|
||||
V(x)=\left\{ \begin{array}{ll} 0, & x<0\\
|
||||
U-E x, & x>0 \end{array}\right.
|
||||
\label{V}
|
||||
\end{equation}
|
||||
in atomic units $(\hbar=m=|e|=1)$.
|
||||
\bigskip
|
||||
|
||||
\begin{figure}
|
||||
\hfil\includegraphics[width=8cm]{potential.pdf}\hfil\hbox{}\par
|
||||
\caption{The shape of the potential $V(x)$.}
|
||||
\label{fig:potential}
|
||||
\end{figure}
|
||||
|
||||
\indent When $E=0$, the potential is, simply, a step function. The Schr\"odinger equation\-~(\ref{schrodinger}) with $E=0$ has stationary solutions with energies $k^2/2<U$, $\psi(x,t)=e^{-i\frac12k^2t}\psi_0(x)$, with $k>0$ and
|
||||
\begin{equation}
|
||||
\psi_0(x)=\left\{ \begin{array}{ll} e^{i k x} +R_0 e^{-i k x} & x<0\\
|
||||
T_0e^{-\sqrt{2U-k^2}x} & x>0 \end{array}\right.
|
||||
\label{psi0}
|
||||
\end{equation}
|
||||
in which $R_0$ and $T_0$ are the {\it reflection} and {\it transmission} coefficients (we use a normalization in which the amplitude of the incoming wave with $k>0$ is 1):
|
||||
\begin{equation}
|
||||
R_0=\frac{ik+\sqrt{2U-k^2}}{ik-\sqrt{2U-k^2}}
|
||||
,\quad
|
||||
T_0=\frac{2ik}{ik-\sqrt{2U-k^2}}
|
||||
.
|
||||
\label{R0T0}
|
||||
\end{equation}
|
||||
These constants ensure that $\psi_0(x)$ and $\partial\psi_0(x)$ are continuous at $x=0$. Note that, in this state, the current vanishes:
|
||||
\begin{equation}
|
||||
j_0(x)=i(\psi_0\partial_x\psi_0^*-\psi_0^*\partial_x\psi_0)=0
|
||||
.
|
||||
\end{equation}
|
||||
\bigskip
|
||||
|
||||
\indent When $E>0$, there is the possibility for an electron moving in the $+x$ direction, with kinetic energy $k^2/2<U$, to tunnel through the potential barrier and be emitted. This will then produce an electron current in the $+x$-direction. To obtain the probability of tunneling, FN computed the stationary solutions $\psi(x,t)=e^{-i\frac12k^2t}\psi_E(x)$ by solving
|
||||
\begin{equation}
|
||||
(-{\textstyle\frac12}\partial_x^2+\Theta(x)(U-Ex)-{\textstyle\frac12}k^2)\psi_E(x)=0
|
||||
\label{eqpsiE}
|
||||
\end{equation}
|
||||
($\Theta(x)$ is the Heaviside function, which is equal to 1 if $x\geqslant 0$ and $0$ otherwise) whose solution is
|
||||
\begin{equation}
|
||||
\psi_E(x)=
|
||||
\left\{ \begin{array}{ll}
|
||||
e^{i k x} +R_E e^{-i k x} & x<0\\
|
||||
T_E\Phi(x) & x>0.
|
||||
\end{array}\right.
|
||||
,\quad
|
||||
k>0
|
||||
\label{psiE}
|
||||
\end{equation}
|
||||
in which $\Phi(x)$ is proportional to the Airy function Ai$(x)$ (or the equivalent expression in terms of Hankel or Bessel functions), which decays when $x\to\infty$, and yet has a constant positive current for all $x$. This solution, see also\-~\cite{Ro11,Je03}, yielded the tunneling probability $D(k)=1-|R_E|^2$ of the electron as a function of $k,\,U$ and $E$. Integrating $kD(k)$ over the ``supply function'' corresponding to the density of electrons in the Fermi sea moving in the $+x$ direction with energy $k^2/2$, leads to an expression for the total steady state current $j_E$ in a static field $E$. An approximate expression for $j_E$ is~\-\cite{Fo08b,Je17}
|
||||
\begin{equation}
|
||||
j_E\approx c_1E^2e^{-\frac{c_2}E}
|
||||
.
|
||||
\end{equation}
|
||||
\bigskip
|
||||
|
||||
\indent The FN formula for $j_E$, with various corrections for the idealizations made, e.g. flat surface, independent electrons, neglecting the Schottky effect, {\it etc.}, serves as the backbone of cold electron emission theory and experiment. There is a vast literature on the subject (the original FN paper\-~\cite{FN28} has more than 6000 citations). We cite here only a few\-~\cite{Ro11,Fo08} and refer the reader for more information to the recent book by Jensen\-~\cite{Je17} and references therein.
|
||||
\bigskip
|
||||
|
||||
\indent In this note we shall be concerned with a different problem, which, as far as we know, has not been investigated fully before. As an initial condition, we take a stationary solution of the Schr\"odinger equation at $E=0$, $\psi_0(x)$ in\-~(\ref{psi0}), and, at $t=0$, we turn the field on, and study the time evolution. In particular, we will investigate how long it will take, if ever, for the initial state $\psi(x,0)$ to approach the stationary state $\psi_E(x)$ in\-~(\ref{psiE}). Of course, turning on $E$ instantaneously is an idealization, which we shall accept here. (In\-~\cite{YGR11}, this initial condition is considered, but the analysis then focuses mostly on the stationary solution.)
|
||||
\bigskip
|
||||
|
||||
\indent In what follows, we shall prove that, for $\psi(x,0)=\psi_0(x)$, $\psi (x,t)$ approaches, for long times, the $\psi_E(x)$ of\-~(\ref{psiE}), i.e.,
|
||||
\begin{equation}
|
||||
\label{psi_lim}
|
||||
\psi (x,t)\sim e^{-i\frac12k^2t}\psi_E(x)
|
||||
\end{equation}
|
||||
In fact, this holds for a wider class of initial conditions, in which the initial incident wave is $e^{ikx}$ and the initial reflected and transmitted waves are arbitrary. The deviation $\psi(x,t)-\psi_E(x)$ decays asymptotically as $t^{-\frac32}$. The actual time dependence, of course, depends on the exact form of $\psi(x,0)$. We shall calculate this for the $\psi(x,0)=\psi_0(x)$ given in\-~(\ref{psi0}) for different values of the parameters.
|
||||
\bigskip
|
||||
|
||||
\indent Roughly speaking we find that for $U\approx9\ \mathrm{eV}$, $\hbar^2k_{\mathrm F}^2/2m=E_{\mathrm F}\approx 4.5\ \mathrm{eV}$ and $E\approx 4$-$8\ \mathrm{V}\cdot\mathrm{nm}^{-1}$, the time for the density $|\psi|^2$ and the current $j(t)$ to approach its final FN value is of the order of femtoseconds. The exact value depends on the position $x$ where we measure the current: for larger $x$, the time it takes for the current to stabilize is larger, see Fig.\-~\ref{current_density}. Such time scales are of practical relevance for short pulses of the order of femtoseconds or less. These are now common for oscillating laser fields for which the initial value problem will be considered in a later paper. (The ``steady state'' solution for laser fields was investigated in detail by Faisal et al\-~\cite{FKS05}; see also \cite{ZL16}.)
|
||||
|
||||
\section{Solution of the initial value problem}
|
||||
|
||||
\indent In order to emphasize the role of each term in the initial condition, we will split $\psi(x,0)$ into three terms: an incoming, a reflected, and a transmitted wave.
|
||||
\begin{equation}
|
||||
\psi(x,0)=\psi^{(\mathrm I)}(x,0)+\psi^{(\mathrm R)}(x,0)+\psi^{(\mathrm T)}(x,0)
|
||||
\label{psi_sum}
|
||||
\end{equation}
|
||||
with
|
||||
\begin{equation}
|
||||
\psi^{(\mathrm I)}(x,0)=\Theta(-x)e^{ikx}
|
||||
,\quad
|
||||
\psi^{(\mathrm R)}(x,0)=R_0\Theta(-x)e^{-ikx}
|
||||
,\quad
|
||||
\psi^{(\mathrm T)}(x,0)=T_0\Theta(x)e^{-\sqrt{2U-k^2}x}
|
||||
,\quad
|
||||
k>0
|
||||
\end{equation}
|
||||
(recall that $\Theta(x)$ is the Heaviside function, which is equal to 1 if $x\geqslant 0$ and $0$ otherwise). Since the Schr\"odinger equation is linear, its solution will be the sum of the solutions for each term in $\psi(x,0)$.
|
||||
\bigskip
|
||||
|
||||
\indent To obtain $\psi(x,t)$ we solve for $\hat\psi_p(x)$, the Laplace transform of $\psi(x,t)$,
|
||||
\begin{equation}
|
||||
\hat\psi_p(x):=\int_0^\infty dt\ e^{-pt}\psi(x,t)
|
||||
\end{equation}
|
||||
which we obtain in closed form. We then compute, by inverting the Laplace transform, the long time asymptotics analytically, and the short time behavior numerically. This method provides an integral representation of the solution which can be evaluated numerically. It is thus better for our purposes than direct computations of the solution of\-~(\ref{schrodinger}). The latter requires cutoffs for the non-square integrable functions we are dealing with and cannot be used for long times. The Laplace transform of $\psi$ satisfies the equation
|
||||
\begin{equation}
|
||||
(-{\textstyle\frac12}\partial_x^2+\Theta(x)(U-Ex)-ip)\hat\psi_p(x)=-i\psi(x,0)
|
||||
.
|
||||
\label{schrodinger_laplace}
|
||||
\end{equation}
|
||||
The physical solution to this equation is
|
||||
\begin{equation} \label{sol11}
|
||||
\hat\psi_p(x)=
|
||||
\left\{\begin{array}{>\displaystyle ll}
|
||||
C_1(p)e^{\sqrt{-2ip}x}+F^{(\mathrm I)}_p(x)+R_0F^{(\mathrm R)}_p(x)
|
||||
&\mathrm{if\ }x<0\\[0.5cm]
|
||||
C_2(p)\varphi_p(x)+T_0F^{(\mathrm T)}_p(x)
|
||||
&\mathrm{if\ }x> 0
|
||||
\end{array}\right.
|
||||
\end{equation}
|
||||
where $R_0$ and $T_0$ are given in\-~(\ref{R0T0}),
|
||||
\begin{equation}\label{2p6}
|
||||
F^{(\mathrm I)}_p(x):=-\frac{2ie^{ikx}}{-2ip+k^2}
|
||||
,\quad
|
||||
F^{(\mathrm R)}_p(x):=-\frac{2ie^{-ikx}}{-2ip+k^2}
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
F^{(\mathrm T)}_p(x):=
|
||||
\frac{4\pi}{(2E)^{\frac13}}\left(\varphi_p(x)\int_0^x dy\ \eta_p(y)e^{-\sqrt{2U-k^2}y}
|
||||
+\eta_p(x)\int_x^\infty dy\ \varphi_p(y)e^{-\sqrt{2U-k^2}y}\right)
|
||||
\end{equation}
|
||||
and
|
||||
\begin{equation}
|
||||
\varphi_p(x)=\mathrm{Ai}\left(2^{\frac13}e^{-\frac{i\pi}3}\left(E^{\frac13}x-E^{-\frac23}(U-ip)\right)\right)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\eta_p(x)=e^{-\frac{i\pi}3}\mathrm{Ai}\left(-2^{\frac13}\left(E^{\frac13}x-E^{-\frac23}(U-ip)\right)\right)
|
||||
\label{varphi}
|
||||
\end{equation}
|
||||
are two independent solutions of $(-\frac12\partial_x^2+U-Ex-ip)f=0$. The phases $e^{-\frac{i\pi}3}$ and $-1$ are cube roots of $-1$. The constants $C_1(p)$ and $C_2(p)$ are set so that $\hat\psi_p$ and $\partial\hat\psi_p$ are continuous at $x=0$:
|
||||
\begin{equation}
|
||||
C_1(p)=-\frac{2iT_0}{\sqrt{-2ip}\varphi_p(0)-\partial\varphi_p(0)}\left(
|
||||
\frac{\sqrt{2U-k^2}\varphi_p(0)+\partial\varphi_p(0)}{-2ip+k^2}
|
||||
+\int_0^\infty dy\ \varphi_p(y)e^{-\sqrt{2U-k^2}y}
|
||||
\right)
|
||||
\end{equation}
|
||||
and
|
||||
\begin{equation}\label{formC2}
|
||||
\begin{array}{>\displaystyle r@{\ }>\displaystyle l}
|
||||
C_2(p)=-\frac{2iT_0}{\sqrt{-2ip}\varphi_p(0)-\partial\varphi_p(0)}&\Bigg(
|
||||
\frac{\sqrt{2U-k^2}+\sqrt{-2ip}}{-2ip+k^2}
|
||||
\\\hfill&\hskip10pt
|
||||
-\frac{2i\pi}{(2E)^{\frac13}}(\sqrt{-2ip}\eta_p(0)-\partial\eta_p(0))\int_0^\infty dy\ \varphi_p(y)e^{-\sqrt{2U-k^2}y}
|
||||
\Bigg)
|
||||
\end{array}
|
||||
\end{equation}
|
||||
where $\partial\varphi_p(0)\equiv\frac{\partial\varphi_p(x)}{\partial x}\big|_{x=0}$ and similarly for $\partial\eta_p(0)$. The square root is defined with a branch cut along the positive imaginary axis, in such a way that $\sqrt{-2ip}$ has a branch cut along the real negative axis.
|
||||
\bigskip
|
||||
|
||||
\indent A simple calculation shows that, as expected,
|
||||
\begin{equation}
|
||||
\lim_{\displaystyle\mathop{\scriptstyle|p|\to\infty}_{\mathcal Re(p)>0}}p\hat\psi_p(x)=\psi(x,0)
|
||||
\label{laplace_init}
|
||||
\end{equation}
|
||||
which confirms that $\hat\psi_p(x)$ is, indeed, the Laplace transform of a function whose initial condition is $\psi(x,0)$.
|
||||
\bigskip
|
||||
|
||||
\indent We then invert the Laplace transform:
|
||||
\begin{equation}
|
||||
\psi(x,t)=\frac1{2i\pi}\int_{\gamma-i\infty}^{\gamma+i\infty}dp\ e^{pt}\hat\psi_p(x)
|
||||
\label{inv_laplace}
|
||||
\end{equation}
|
||||
in which $\gamma>0$ is an arbitrary small parameter taken close to $0$.
|
||||
\bigskip
|
||||
|
||||
\indent As is well known the integral on the right hand side of\-~(\ref{inv_laplace}) can be computed deforming the integration contour as in Fig.\-~\ref{fig:contour}, and studying the singularities, poles and branch points of $\hat\psi_p(x)$, lying in the half plane $\mathcal Re(p)\leq 0$. In particular, the only terms which do not decay as $t\to\infty$ come from poles on the imaginary $p$-axis. Analyzing\-~(\ref{sol11})-(\ref{formC2}) we find that the singularities of $\hat\psi_p(x)$ are, for $k>0$,
|
||||
\begin{itemize}
|
||||
\item a pole on the imaginary axis, located at $-ik^2/2$, coming from (\ref{2p6}), (\ref{formC2}) and (\ref{laplace_init})
|
||||
\item poles with strictly negative real parts corresponding to the roots of $\sqrt{-2ip}\varphi_p(0)-\partial\varphi_p(0)$ appearing in the denominators of $C_1$ and $C_2$,
|
||||
\item a branch cut along the negative real axis coming from $\sqrt{-2ip}$.
|
||||
\end{itemize}
|
||||
\bigskip
|
||||
|
||||
\point{\bf Long time behavior.} The residue at $-ik^2/2$ yields the only term which does not decay in time: by an explicit computation, we find that the residue is equal to
|
||||
\begin{equation}
|
||||
e^{-i\frac12k^2t}\psi_E(x)
|
||||
\end{equation}
|
||||
where $\psi_E$ is the FN solution\-~(\ref{psiE}).
|
||||
\bigskip
|
||||
|
||||
\indent The residues of the poles with a negative real part decay exponentially in time (because of the factor $e^{pt}$ in~\-(\ref{inv_laplace})).
|
||||
\bigskip
|
||||
|
||||
\indent The integral along the branch cut decays algebraically, as $t^{-\frac32}$: we define, for $p-i\epsilon\in\mathbb R_-$,
|
||||
\begin{equation}
|
||||
\alpha:=e^{\frac{i\pi}4}\sqrt{-ip}
|
||||
,\quad
|
||||
f(\alpha):=\hat\psi_{\alpha^2}(x)
|
||||
\end{equation}
|
||||
and write the integral along the branch cut as
|
||||
\begin{equation}
|
||||
\psi^{(\mathrm{BC})}(x,t)
|
||||
:=
|
||||
\int_{-\infty-i\epsilon}^{-i\epsilon} dp\ e^{pt}\hat\psi_p(x)
|
||||
+
|
||||
\int_{i\epsilon}^{-\infty+i\epsilon} dp\ e^{pt}\hat\psi_p(x)
|
||||
=
|
||||
2\int_0^\infty d\alpha\ e^{-\alpha^2t}\alpha(f(\alpha)-f(-\alpha))
|
||||
.
|
||||
\end{equation}
|
||||
By Taylor expansion, (in this context, this technique is usually called Watson's lemma)
|
||||
\begin{equation}
|
||||
\psi^{(\mathrm{BC})}(x,t)
|
||||
=
|
||||
4\int_0^\infty d\alpha\ e^{-\alpha^2t}\alpha^2\partial f(0)
|
||||
+O(t^{-\frac52})
|
||||
=\left(\frac{t}{\tau_E(x)}\right)^{-\frac32}+O(t^{-\frac52})
|
||||
.
|
||||
\end{equation}
|
||||
with
|
||||
\begin{equation}
|
||||
\tau_E(x)=\left\{\begin{array}{>\displaystyle ll}
|
||||
\left(c_E(\varphi_0(0)+x\partial\varphi_0(0))\right)^{\frac23}
|
||||
&\mathrm{if\ }x<0
|
||||
\\[0.5cm]
|
||||
\left(c_E\varphi_0(x)\right)^{\frac23}
|
||||
&\mathrm{if\ }x>0
|
||||
\end{array}\right.
|
||||
\end{equation}
|
||||
and
|
||||
\begin{equation}
|
||||
c_E=
|
||||
-\frac{\sqrt2T_0e^{\frac{i\pi}4}}{\sqrt\pi(\partial\varphi_0(0))^2}
|
||||
\left(
|
||||
\frac{\sqrt{2U-k^2}\varphi_0(0)+\partial\varphi_0(0)}{k^2}
|
||||
+\int_0^\infty dy\ \varphi_0(y)e^{-\sqrt{2U-k^2}y}
|
||||
\right)
|
||||
.
|
||||
\end{equation}
|
||||
|
||||
\indent All in all, we find that
|
||||
\begin{equation}
|
||||
\psi(x,t)
|
||||
=e^{-i\frac12k^2t}\psi_E(x)+\left(\frac{t}{\tau_E(x)}\right)^{-\frac32}+O(t^{-\frac52})
|
||||
.
|
||||
\end{equation}
|
||||
Therefore, the wave function tends to the Fowler-Nordheim solution, with a rate $t^{-\frac32}$.
|
||||
\bigskip
|
||||
|
||||
\begin{figure}
|
||||
\hfil\includegraphics[width=8cm]{contour.pdf}\hfil\hbox{}\par
|
||||
\caption{The deformed integration contour goes around the poles (one of which is on the imaginary axis, at $-ik^2/2$, while the others are in the negative real half-plane) and goes along the branch cut on the real negative axis.}
|
||||
\label{fig:contour}
|
||||
\end{figure}
|
||||
|
||||
\point{\bf Short time behavior.} The behavior of $\psi(x,t)$ for small $t$ is more difficult to study analytically, but the inverse Laplace transform\-~(\ref{inv_laplace}) yields an integral formula that can be efficiently approximated numerically using fast Fourier transforms.
|
||||
\bigskip
|
||||
|
||||
In Fig.\-~\ref{current_density} we have plotted the density $|\psi(x,t)|^2$, current
|
||||
\begin{equation}
|
||||
j_k(x,t):=i(\psi\partial_x\psi^*-\psi^*\partial_x\psi)
|
||||
\end{equation}
|
||||
and integrated current (the current integrated over the supply function at 0 temperature)
|
||||
\begin{equation}
|
||||
J_{k_{\mathrm F}}(x,t):=\int_0^{k_{\mathrm F}}dk\ j_k(x,t)
|
||||
\end{equation}
|
||||
as a function of time at two different values of $x$: $x_0:=\frac{2U-k_{\mathrm F}^2}{2E}\approx 11\ \mathrm{nm}$ and $10x_0$ ($x_0$ is the point at which $V(x_0)=\frac{k_{\mathrm F}^2}2$), and at two different values of $E$: $4$ and $8\ \mathrm{V}\cdot\mathrm{nm}^{-1}$. We have normalized the current $j$ by $2k$, which is the current of the incoming wave $e^{ikx}$, and the integrated current $J$ by $k_{\mathrm F}^2$, which is the current of the incoming wave integrated over the supply function. We find that there is a transient regime that lasts a few femtoseconds before the system stabilizes to the FN value. There is a delay before the signal reaches $x_0$, and between $x_0$ and $10x_0$. As expected, the asymptotic value of the current is independent of $x$. Note that the current and density depend strongly on the field $E$.
|
||||
\bigskip
|
||||
|
||||
\begin{figure}
|
||||
\begin{tabular}{c|c}
|
||||
\includegraphics[width=7cm]{density-4.pdf} {\scriptsize({\bf a})}&
|
||||
\includegraphics[width=7cm]{density-8.pdf} {\scriptsize({\bf b})}\\
|
||||
\hline
|
||||
\includegraphics[width=7cm]{currents-4.pdf} {\scriptsize({\bf c})}&
|
||||
\includegraphics[width=7cm]{currents-8.pdf} {\scriptsize({\bf d})}\\
|
||||
\hline
|
||||
\includegraphics[width=7cm]{integrated_current-4.pdf}{\scriptsize({\bf e})}&
|
||||
\includegraphics[width=7cm]{integrated_current-8.pdf}{\scriptsize({\bf f})}
|
||||
\end{tabular}
|
||||
\caption{The density ({\bf a}),({\bf b}), current ({\bf c}),({\bf d}) and integrated current ({\bf e}),({\bf f}) as a function of time at $x=x_0\equiv\frac{2U-k_{\mathrm F}^2}{2E}$ and $x=10x_0$. We have taken $U=9\ \mathrm{eV}$ and $k^2/2=k_{\mathrm F}^2/2\equiv E_{\mathrm F}=4.5\ \mathrm{eV}$. In ({\bf a}),({\bf c}),({\bf e}), the field is $E=4\ \mathrm{V}\cdot \mathrm{nm}^{-1}$ and $x_0\approx11\ \mathrm{nm}$. In ({\bf b}),({\bf d}),({\bf f}), $E=8\ \mathrm{V}\cdot\mathrm{nm}^{-1}$ and $x_0\approx22\ \mathrm{nm}$. In ({\bf a}),({\bf c}),({\bf e}), the plots seem to indicate that the curves converge to 0, but they actually tend to small finite values.}
|
||||
\label{current_density}
|
||||
\end{figure}
|
||||
|
||||
\noindent{\bf Remark}: While the time scale of the approach to the FN solution is clearly of order of femtoseconds we have not attempted to compute a ``tunneling time''. This is, as is well known, a tricky business, with many possible definitions, see, e.g. \cite{LM94,LK15}. Defining such a time in terms of the approach of the initial state to some steady state was investigated by McDonald et al.\-~\cite{MOe13}. Pfeifer and Fr\"ohlich\-~\cite{PF95} have computed rigorous bounds on the lifetimes of spatially confined states.
|
||||
|
||||
\section{Possible generalizations}
|
||||
|
||||
\point{\bf Initial conditions.} As is shown by the computation described above, the long time asymptotic behavior of the wave function is independent of the initial reflected and transmitted waves. That is, the initial condition $\psi(x,0)=\psi^{(\mathrm I)}(x,0)=\Theta(-x)e^{ikx}$ leads to the same asymptotic formula:
|
||||
\begin{equation}
|
||||
\psi(x,t)\sim e^{-i\frac12 k^2t}\psi_E(x).
|
||||
\end{equation}
|
||||
Indeed, the reflected and transmitted initial conditions do not actually give rise to any poles on the imaginary axis and therefore their contributions decay in time.
|
||||
\bigskip
|
||||
|
||||
This leaves open the possibility to consider much more general initial conditions than\-~(\ref{psi_sum}): one can change the coefficients of the reflected and transmitted waves, add such waves with different wave vectors, or remove them altogether, without changing the asymptotic formula. Only the incoming wave $e^{ikx}$ affects it. In addition, one can add any square-integrable function to the initial condition without changing the long-time behavior. This is a consequence of the RAGE theorem \cite{Ru69,AG73,En78}, which states that whenever the Hamiltonian has absolutely continuous spectrum (as is the case here), the solution of the Schr\"odinger equation with a square-integrable initial condition vanishes point-wise as $t\to\infty$.
|
||||
\bigskip
|
||||
|
||||
With this fact in mind, one can make an easy argument why the asymptotic behavior of the wave function must coincide with the stationary solution. Indeed, once we drop the initial reflected and transmitted waves,
|
||||
the Laplace transform of the wave function is of the form
|
||||
\begin{equation}
|
||||
\hat\psi_p(x)=\frac{-2i}{-2ip+k^2}\left(\left(e^{ikx}+Re^{-\sqrt{-2ip}x}\right)\Theta(-x)+T\varphi_p(x)\Theta(x)\right)
|
||||
\end{equation}
|
||||
in which $\varphi_p$ is the solution of
|
||||
\begin{equation}
|
||||
\left(-\frac12\partial_x^2+V(x)-ip\right)\varphi_p(x)=0
|
||||
,\quad
|
||||
x>0
|
||||
.
|
||||
\label{eqvarphi}
|
||||
\end{equation}
|
||||
When $p=-ik^2/2$, (\ref{eqvarphi}) coincides with the equation\-~(\ref{eqpsiE}) for $\psi_E$. Assuming that $R$ and $T$ do not introduce any new poles on the imaginary axis (as we showed is the case), this implies that $\psi(x,t)$ converges to $e^{-i\frac12k^2t}\psi_E(x)$ as $t\to\infty$.
|
||||
\bigskip
|
||||
|
||||
\point{\bf Potentials.} The exact form of the potential $V(x)=U-Ex$ was not really used in much of the computation above, so it can be carried out in very much the same way for many other $V(x)$. For instance, one could round off the triangular barrier as occurs in the Schottky effect\-~\cite{Fo08}. We could also consider a square barrier. The only real constraint on the potential is that it not introduce bound states. To make this into a precise statement, one would also have to put constraints on the regularity and asymptotic properties of $V$, which we will not do here.
|
||||
\bigskip
|
||||
|
||||
This leaves open the possibility of studying trains of pulses, in which the field is turned on and off repeatedly. The regime in which the field is off corresponds to a potential $V(x)=U\Theta(x)$, which can be studied using the method described above. Provided the time between the pulses is long enough, the system would stabilize to the stationary state in the time between each field switching.
|
||||
\bigskip
|
||||
|
||||
\point{\bf Time-dependent fields.} It would be very interesting to consider a similar question in the case of an oscillating laser field $E=e_0\cos(\omega t)$. The stationary state of this problem was studied by Faisal et al.\-~\cite{FKS05}, and we are currently working on showing that the solutions of the initial value problem converge to this solution, and studying the short-time behavior.
|
||||
\bigskip
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\delimtitle{\bf Acknowledgements}
|
||||
\noindent This material is based upon work supported by the AFOSR under the award number FA9500-16-1-0037. OC was partially supported by the NSF-DMS grant 1515755. IJ was partially supported by the NSF-DMS grant 1128155. JLL thanks Kevin Jensen and Don Shiffler for useful discussions and the IAS for hospitality during part of this work.
|
||||
\enddelim
|
||||
|
||||
\vfill
|
||||
\eject
|
||||
|
||||
\begin{thebibliography}{WWW99}
|
||||
\small
|
||||
\IfFileExists{bibliography/bibliography.tex}{\input bibliography/bibliography.tex}{}
|
||||
\end{thebibliography}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
61
Makefile
Normal file
61
Makefile
Normal file
@ -0,0 +1,61 @@
|
||||
PROJECTNAME=$(basename $(wildcard *.tex))
|
||||
LIBS=$(notdir $(wildcard libs/*))
|
||||
FIGS=$(notdir $(wildcard figs/*.fig))
|
||||
|
||||
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
|
||||
SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME))
|
||||
|
||||
all: $(PROJECTNAME)
|
||||
|
||||
$(PROJECTNAME): $(LIBS) $(FIGS)
|
||||
pdflatex -file-line-error $@.tex
|
||||
pdflatex -file-line-error $@.tex
|
||||
pdflatex -synctex=1 $@.tex
|
||||
|
||||
$(PROJECTNAME).aux: $(LIBS) $(FIGS)
|
||||
pdflatex -file-line-error -draftmode $(PROJECTNAME).tex
|
||||
|
||||
|
||||
$(SYNCTEXS): $(LIBS) $(FIGS)
|
||||
pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@)
|
||||
|
||||
|
||||
libs: $(LIBS)
|
||||
|
||||
$(LIBS):
|
||||
ln -fs libs/$@ ./
|
||||
|
||||
bibliography/bibliography.tex: $(PROJECTNAME).aux
|
||||
BBlog -c bibliography/conf.BBlog -d $(BIBLIOGRAPHY) -b bibliography/bibliography.tex
|
||||
|
||||
figs: $(FIGS)
|
||||
|
||||
$(FIGS):
|
||||
make -C figs/$@
|
||||
for pdf in $$(find figs/$@/ -name '*.pdf'); do ln -fs "$$pdf" ./ ; done
|
||||
|
||||
|
||||
clean-aux: clean-figs-aux
|
||||
rm -f $(addsuffix .aux, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .log, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .out, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .toc, $(PROJECTNAME))
|
||||
|
||||
clean-libs:
|
||||
rm -f $(LIBS)
|
||||
|
||||
clean-figs:
|
||||
$(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean; )
|
||||
rm -f $(notdir $(wildcard figs/*.fig/*.pdf))
|
||||
|
||||
clean-figs-aux:
|
||||
$(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean-aux; )
|
||||
|
||||
|
||||
clean-tex:
|
||||
rm -f $(PDFS) $(SYNCTEXS)
|
||||
|
||||
clean-bibliography:
|
||||
rm -f bibliography/bibliography.tex
|
||||
|
||||
clean: clean-aux clean-tex clean-libs clean-figs
|
40
README
Normal file
40
README
Normal file
@ -0,0 +1,40 @@
|
||||
This directory contains the source files to typeset the article, and generate
|
||||
the figures. This can be accomplished by running
|
||||
make
|
||||
|
||||
This document uses a custom class file, located in the 'libs' directory, which
|
||||
defines a number of commands. Most of these are drop-in replacements for those
|
||||
defined in the 'article' class.
|
||||
|
||||
Some extra functionality is provided in custom style files, located in the
|
||||
'libs' directory.
|
||||
|
||||
|
||||
* Dependencies:
|
||||
|
||||
pdflatex
|
||||
TeXlive packages:
|
||||
amsfonts
|
||||
array
|
||||
color
|
||||
graphics
|
||||
hyperref
|
||||
latex
|
||||
marginnote
|
||||
pgf
|
||||
standalone
|
||||
GNU make
|
||||
python3
|
||||
julia
|
||||
|
||||
* Files:
|
||||
|
||||
Costin_Costin_Jauslin_Lebowitz_2018.tex:
|
||||
main LaTeX file
|
||||
|
||||
libs:
|
||||
custom LaTeX class file
|
||||
|
||||
figs:
|
||||
source code for the figures
|
||||
|
50
bibliography/bibliography.tex
Normal file
50
bibliography/bibliography.tex
Normal file
@ -0,0 +1,50 @@
|
||||
\bibitem[AG73]{AG73}W.O. Amrein, V. Georgescu - {\it On the characterization of bound states and scattering states in quantum mechanics}, Helvetica Physica Acta, volume~\-46, issue~\-5, pages~\-635-658, 1973,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.5169/seals-114499}{10.5169/seals-114499}}.\par\medskip
|
||||
|
||||
\bibitem[En78]{En78}V. Enss - {\it Asymptotic completeness for quantum mechanical potential scattering}, Communications in Mathematical Physics, volume~\-61, issue~\-3, pages~\-285-291, 1978,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF01940771}{10.1007/BF01940771}}.\par\medskip
|
||||
|
||||
\bibitem[FKS05]{FKS05}F.H.M. Faisal, J.Z. Kami\'nski, E. Saczuk - {\it Photoemission and high-order harmonic generation from solid surfaces in intense laser fields}, Physical Review A, volume~\-72, issue~\-2, number~\-023412, 2005,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/PhysRevA.72.023412}{10.1103/PhysRevA.72.023412}}.\par\medskip
|
||||
|
||||
\bibitem[Fo08]{Fo08}R.G. Forbes - {\it On the need for a tunneling pre-factor in Fowler–Nordheim tunneling theory}, Journal of Applied Physics, volume~\-103, issue~\-11, number~\-114911, 2008,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.2937077}{10.1063/1.2937077}}.\par\medskip
|
||||
|
||||
\bibitem[Fo08b]{Fo08b}R.G. Forbes - {\it Physics of generalized Fowler-Nordheim-type equations}, Journal of Vacuum Science and Technology B, volume~\-26, issue~\-2, pages~\-788-793, 2008,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1116/1.2827505}{10.1116/1.2827505}}.\par\medskip
|
||||
|
||||
\bibitem[Fo16]{Fo16}R.G. Forbes - {\it Field Electron Emission Theory}, Proceedings of Young Researchers in Vacuum Micro/Nano Electronics, IEEE, 2016,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1109/VMNEYR.2016.7880403}{10.1109/VMNEYR.2016.7880403}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/1801.08251}{1801.08251}}.\par\medskip
|
||||
|
||||
\bibitem[FN28]{FN28}R.H. Fowler, L. Nordheim - {\it Electron emission in intense electric fields}, Proceedings of the Royal Society of London A, volume~\-119, issue~\-781, pages~\-173-181, 1928,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1098/rspa.1928.0091}{10.1098/rspa.1928.0091}}.\par\medskip
|
||||
|
||||
\bibitem[Je03]{Je03}K.L. Jensen - {\it Electron emission theory and its application: Fowler-Nordheim equation and beyond}, Journal of Vacuum Science and Technology B: Microelectronnics and Nanometer Structures Processinf, Measurement and Phenomena, volume~\-21, issue~\-4, number~\-1528, 2003,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1116/1.1573664}{10.1116/1.1573664}}.\par\medskip
|
||||
|
||||
\bibitem[Je17]{Je17}K.L. Jensen - {\it Introduction to the Physics of Electron Emission}, Wiley, 2017.\par\medskip
|
||||
|
||||
\bibitem[LM94]{LM94}R. Landauer, T. Martin - {\it Barrier interaction time in tunneling}, Reviews of Modern Physics, volume~\-66, issue~\-1, pages~\-217-228, 1994,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/RevModPhys.66.217}{10.1103/RevModPhys.66.217}}.\par\medskip
|
||||
|
||||
\bibitem[LK15]{LK15}A.S. Landsman, U. Keller - {\it Attosecond science and the tunnelling time problem}, Physics Reports, volume~\-547, pages~\-1-24, 2015,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1016/j.physrep.2014.09.002}{10.1016/j.physrep.2014.09.002}}.\par\medskip
|
||||
|
||||
\bibitem[MOe13]{MOe13}C.R. McDonald, G. Orlando, G. Vampa, T. Brabec - {\it Tunnel Ionization Dynamics of Bound Systems in Laser Fields: How Long Does It Take for a Bound Electron to Tunnel?}, Physical Review Letters, volume~\-111, issue~\-9, number~\-090405, 2013,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/PhysRevLett.111.090405}{10.1103/PhysRevLett.111.090405}}.\par\medskip
|
||||
|
||||
\bibitem[PF95]{PF95}P. Pfeifer, J. Fröhlich - {\it Generalized time-energy uncertainty relations and bounds on lifetimes of resonances}, Reviews of Modern Physics, volume~\-67, issue~\-4, pages~\-759-779, 1995,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/RevModPhys.67.759}{10.1103/RevModPhys.67.759}}.\par\medskip
|
||||
|
||||
\bibitem[Ro11]{Ro11}A. Rokhlenko - {\it Strong field electron emission and the Fowler-Nordheim-Schottky theory}, Journal of Physics A: Mathematical and Theoretical, volume~\-44, issue~\-5, pages~\-1-10, 2011,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1088/1751-8113/44/5/055302}{10.1088/1751-8113/44/5/055302}}.\par\medskip
|
||||
|
||||
\bibitem[Ru69]{Ru69}D. Ruelle - {\it A remark on bound states in potential-scattering theory}, Il Nuovo Cimento, volume~\-61, issue~\-4, pages~\-655-662, 1969,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF02819607}{10.1007/BF02819607}}.\par\medskip
|
||||
|
||||
\bibitem[YGR11]{YGR11}S.V. Yalunin, M. Gulde, C. Ropers - {\it Strong-field photoemission from surfaces: Theoretical approaches}, Physical Review B, volume~\-84, issue~\-19, number~\-195426, 2011,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/PhysRevB.84.195426}{10.1103/PhysRevB.84.195426}}.\par\medskip
|
||||
|
||||
\bibitem[ZL16]{ZL16}P. Zhang, Y.Y. Lau - {\it Ultrafast strong-field photoelectron emission from biased metal surfaces: exact solution to time-dependent Schr\"odinger Equation}, Scientific Reports, volume~\-6, number~\-19894, 2016,\par\penalty10000
|
||||
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1038/srep19894}{10.1038/srep19894}}.\par\medskip
|
||||
|
30
figs/contour.fig/Makefile
Normal file
30
figs/contour.fig/Makefile
Normal file
@ -0,0 +1,30 @@
|
||||
PROJECTNAME=contour
|
||||
|
||||
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
|
||||
|
||||
all: $(PDFS)
|
||||
|
||||
$(PDFS): poles.tikz.tex
|
||||
pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
|
||||
poles.tikz.tex:
|
||||
python3 contour.py > poles.tikz.tex
|
||||
|
||||
install: $(PDFS)
|
||||
cp $^ $(INSTALLDIR)/
|
||||
|
||||
$(LIBS):
|
||||
ln -fs libs/$@ ./
|
||||
|
||||
clean-libs:
|
||||
rm -f $(LIBS)
|
||||
|
||||
clean-aux:
|
||||
rm -f $(addsuffix .aux, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .log, $(PROJECTNAME))
|
||||
rm -f poles.tikz.tex
|
||||
|
||||
clean-tex:
|
||||
rm -f $(PDFS)
|
||||
|
||||
clean: clean-libs clean-aux clean-tex
|
82
figs/contour.fig/contour.py
Normal file
82
figs/contour.fig/contour.py
Normal file
@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import cmath
|
||||
import math
|
||||
import scipy.special as sp
|
||||
from scipy import optimize as op
|
||||
import random
|
||||
import sys
|
||||
|
||||
# number of roots
|
||||
nr_roots=4
|
||||
|
||||
# size of plot
|
||||
plotsize_x=3
|
||||
plotsize_y=3
|
||||
# rescale plot (so roots are not too close together)
|
||||
plotsize_scale_x=1
|
||||
plotsize_scale_y=6
|
||||
|
||||
# numerical values
|
||||
hbar=6.58e-16 # eV.s
|
||||
m=9.11e-31 # kg
|
||||
Vn=9 # eV
|
||||
En=20e9 # V/m
|
||||
|
||||
V=1
|
||||
E=En*hbar/(Vn**1.5*m**0.5)*math.sqrt(1.60e-19)
|
||||
|
||||
# sqrt with branch cut along iR_+
|
||||
def sqrt_p(x):
|
||||
r,p=cmath.polar(x)
|
||||
if(p<cmath.pi/2):
|
||||
return(cmath.rect(math.sqrt(r),p/2))
|
||||
else:
|
||||
return(cmath.rect(math.sqrt(r),(p-2*math.pi)/2))
|
||||
|
||||
# solution of (-\Delta+V-ip)phi=0
|
||||
def phi(p,x,E,V):
|
||||
return(sp.airy(cmath.exp(-1j*math.pi/3)*(E**(1/3)*x-E**(-2/3)*(V-1j*p)))[0])
|
||||
# its derivative
|
||||
def dphi(p,x,E,V):
|
||||
return(cmath.exp(-1j*math.pi/3)*E**(1/3)*sp.airy(cmath.exp(-1j*math.pi/3)*(E**(1/3)*x-E**(-2/3)*(V-1j*p)))[1])
|
||||
|
||||
|
||||
# the function whose roots are to be computed and its derivative
|
||||
def f(p):
|
||||
return(sqrt_p(-1j*p)*phi(p,0,E,V)-dphi(p,0,E,V))
|
||||
def df(p):
|
||||
return(-1j/(2*sqrt_p(-1j*p))*phi(p,0,E,V)+sqrt_p(-1j*p)*dp_phi(p,0,E,V)-dp_dphi(p,0,E,V))
|
||||
|
||||
# derivatives of phi with respect to p
|
||||
def dp_phi(p,x,E,V):
|
||||
return(1j*cmath.exp(-1j*math.pi/3)*E**(-2/3)*sp.airy(cmath.exp(-1j*math.pi/3)*(E**(1/3)*x-E**(-2/3)*(V-1j*p)))[1])
|
||||
def dp_dphi(p,x,E,V):
|
||||
return(-1j*(x-(V-1j*p)/E)*phi(p,x,E,V))
|
||||
|
||||
# check whether the root was already found
|
||||
def check(root,roots):
|
||||
# reject if the root doesn't fit on the plot
|
||||
if(plotsize_scale_x*root.real<-plotsize_x or abs(plotsize_scale_y*root.imag)>plotsize_y):
|
||||
return(False)
|
||||
for x in roots:
|
||||
if(abs(root-x)<1e-12):
|
||||
return(False)
|
||||
return(True)
|
||||
|
||||
# find roots
|
||||
roots=[]
|
||||
while len(roots)<nr_roots:
|
||||
try:
|
||||
root=op.newton(f, -random.random()*plotsize_x/plotsize_scale_x+(2*random.random()-1)*plotsize_y/plotsize_scale_y*1j, fprime=df)
|
||||
if(check(root,roots)):
|
||||
roots.append(root)
|
||||
print("found "+str(len(roots))+" roots of "+str(nr_roots), file=sys.stderr)
|
||||
except RuntimeError:
|
||||
root=0
|
||||
except:
|
||||
break
|
||||
|
||||
# print result
|
||||
for root in roots:
|
||||
print("\\pole{(% .3f,% .3f)}" % (plotsize_scale_x*root.real,plotsize_scale_y*root.imag))
|
34
figs/contour.fig/contour.tikz.tex
Normal file
34
figs/contour.fig/contour.tikz.tex
Normal file
@ -0,0 +1,34 @@
|
||||
\documentclass{standalone}
|
||||
|
||||
\usepackage{tikz}
|
||||
|
||||
\def\pole#1{
|
||||
\draw#1++(0.1,0.1)--++(-0.2,-0.2);
|
||||
\draw#1++(-0.1,0.1)--++(0.2,-0.2);
|
||||
\draw[color=red, line width=1pt]#1circle(0.3);
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
\begin{tikzpicture}
|
||||
|
||||
% branch cut
|
||||
\fill[color=gray](-3.3,-0.1)--++(3.3,0)--++(0,0.2)--++(-3.3,0)--cycle;
|
||||
|
||||
% axes
|
||||
\draw(-3.3,0)--++(6.6,0);
|
||||
\draw(0,-3.3)--++(0,6.6);
|
||||
|
||||
% -ik0^2
|
||||
\pole{(0,-2)}
|
||||
|
||||
% other poles
|
||||
\input{poles.tikz}
|
||||
|
||||
% contour
|
||||
\draw[color=red, line width=1pt](-3.3,-0.3)--++(3.3,0);
|
||||
\draw[color=red, line width=1pt](0,-0.3)..controls(0.3,-0.3)and(0.3,0.3)..(0,0.3);
|
||||
\draw[color=red, line width=1pt](-3.3,0.3)--++(3.3,0);
|
||||
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{document}
|
28
figs/libs/Makefile
Normal file
28
figs/libs/Makefile
Normal file
@ -0,0 +1,28 @@
|
||||
PROJECTNAME=$(basename $(basename $(wildcard *.tikz.tex)))
|
||||
LIBS=$(notdir $(wildcard libs/*))
|
||||
|
||||
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
|
||||
|
||||
all: $(PDFS)
|
||||
|
||||
$(PDFS): $(LIBS)
|
||||
echo $(LIBS)
|
||||
pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
|
||||
install: $(PDFS)
|
||||
cp $^ $(INSTALLDIR)/
|
||||
|
||||
$(LIBS):
|
||||
ln -fs libs/$@ ./
|
||||
|
||||
clean-libs:
|
||||
rm -f $(LIBS)
|
||||
|
||||
clean-aux:
|
||||
rm -f $(addsuffix .aux, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .log, $(PROJECTNAME))
|
||||
|
||||
clean-tex:
|
||||
rm -f $(PDFS)
|
||||
|
||||
clean: clean-libs clean-aux clean-tex
|
170
figs/plots.fig/FN_base.jl
Normal file
170
figs/plots.fig/FN_base.jl
Normal file
@ -0,0 +1,170 @@
|
||||
# fractional power with an arbitrary branch cut
|
||||
function pow(x,a,cut)
|
||||
if(angle(x)/cut<=1)
|
||||
return(abs(x)^a*exp(1im*angle(x)*a))
|
||||
else
|
||||
return(abs(x)^a*exp(1im*(angle(x)-sign(cut)*2*pi)*a))
|
||||
end
|
||||
end
|
||||
|
||||
# asymptotic airy functions
|
||||
# specify a branch cut for the fractional power
|
||||
function airyai_asym(x,cut)
|
||||
if(abs(real(pow(x,3/2,cut)))<airy_threshold)
|
||||
return(exp(2/3*pow(x,3/2,cut))*airyai(x))
|
||||
else
|
||||
ret=0
|
||||
for n in 0:airy_order
|
||||
ret+=gamma(n+5/6)*gamma(n+1/6)*(-3/4)^n/(4*pi^(3/2)*factorial(n)*pow(x,3*n/2+1/4,cut))
|
||||
end
|
||||
return ret
|
||||
end
|
||||
end
|
||||
function airyaiprime_asym(x,cut)
|
||||
if(abs(real(pow(x,3/2,cut)))<airy_threshold)
|
||||
return(exp(2/3*pow(x,3/2,cut))*airyaiprime(x))
|
||||
else
|
||||
ret=0
|
||||
for n in 0:airy_order
|
||||
ret+=gamma(n+5/6)*gamma(n+1/6)*(-3/4)^n/(4*pi^(3/2)*factorial(n))*(-1/pow(x,3*n/2-1/4,cut)-(3/2*n+1/4)/pow(x,3*n/2+5/4,cut))
|
||||
end
|
||||
return ret
|
||||
end
|
||||
end
|
||||
|
||||
# solutions of (-\Delta+U-ip)phi=0
|
||||
# assume that p has an infinitesimal real part (and adjust the branch cuts appropriately)
|
||||
function phi(p,x,E,U)
|
||||
return(airyai_asym(2^(1/3)*exp(-1im*pi/3)*(E^(1/3)*x-E^(-2/3)*(U-1im*p)),pi))
|
||||
end
|
||||
function dphi(p,x,E,U)
|
||||
return(2^(1/3)*exp(-1im*pi/3)*E^(1/3)*airyaiprime_asym(2^(1/3)*exp(-1im*pi/3)*(E^(1/3)*x-E^(-2/3)*(U-1im*p)),pi))
|
||||
end
|
||||
function eta(p,x,E,U)
|
||||
return(exp(-1im*pi/3)*airyai_asym(-2^(1/3)*(E^(1/3)*x-E^(-2/3)*(U-1im*p)),pi/2))
|
||||
end
|
||||
function deta(p,x,E,U)
|
||||
return(-2^(1/3)*exp(-1im*pi/3)*E^(1/3)*airyaiprime_asym(-2^(1/3)*(E^(1/3)*x-E^(-2/3)*(U-1im*p)),pi/2))
|
||||
end
|
||||
|
||||
# Laplace transform of psi
|
||||
# assume that p has an infinitesimal real part (and adjust the branch cuts appropriately)
|
||||
# for example, (1im*p-U)^(3/2) becomes pow(1im*p-U,3/2,-pi/2) because when 1im*p is real negative, its square root should be imaginary positive
|
||||
function f(p,x,k0,E,U)
|
||||
T=2im*k0/(1im*k0-sqrt(2*U-k0*k0))
|
||||
R=T-1
|
||||
|
||||
if x>=0
|
||||
C2=-2im*T/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))*((sqrt(2*U-k0*k0)+pow(-2im*p,1/2,pi/2))/(-2im*p+k0*k0)-2im*(2*E)^(-1/3)*pi*quadgk(y -> (pow(-2im*p,1/2,pi/2)*eta(p,0,E,U)-deta(p,0,E,U))*phi(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2))),0,Inf)[1])
|
||||
FT=4*(2*E)^(-1/3)*pi*(quadgk(y -> phi(p,x,E,U)*eta(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2)-pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2))),0,x)[1]+quadgk(y -> eta(p,x,E,U)*phi(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2))),x,Inf)[1])
|
||||
main=C2*phi(p,x,E,U)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2)))+T*FT
|
||||
|
||||
# subtract the contribution of the pole, which will be added back in after the integration
|
||||
pole=psi_pole(x,k0,E,U)/(p+1im*k0*k0/2)
|
||||
return(main-pole)
|
||||
else
|
||||
C1=-2im*T*((sqrt(2*U-k0*k0)*phi(p,0,E,U)+dphi(p,0,E,U))/(-2im*p+k0*k0)/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))+quadgk(y -> phi(p,y,E,U)/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2))),0,Inf)[1])
|
||||
FI=-2im*exp(1im*k0*x)/(-2im*p+k0*k0)
|
||||
FR=-2im*exp(-1im*k0*x)/(-2im*p+k0*k0)
|
||||
main=C1*exp(pow(-2im*p,1/2,pi/2)*x)+FI+R*FR
|
||||
|
||||
# subtract the contribution of the pole, which will be added back in after the integration
|
||||
pole=psi_pole(x,k0,E,U)/(p+1im*k0*k0/2)
|
||||
return(main-pole)
|
||||
end
|
||||
end
|
||||
# its derivative
|
||||
function df(p,x,k0,E,U)
|
||||
T=2im*k0/(1im*k0-sqrt(2*U-k0*k0))
|
||||
R=T-1
|
||||
|
||||
if x>=0
|
||||
C2=-2im*T/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))*((sqrt(2*U-k0*k0)+pow(-2im*p,1/2,pi/2))/(-2im*p+k0*k0)-2im*(2*E)^(-1/3)*pi*quadgk(y -> (pow(-2im*p,1/2,pi/2)*eta(p,0,E,U)-deta(p,0,E,U))*phi(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2))),0,Inf)[1])
|
||||
dFT=4*(2*E)^(-1/3)*pi*(quadgk(y -> dphi(p,x,E,U)*eta(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2)-pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2))),0,x)[1]+quadgk(y -> deta(p,x,E,U)*phi(p,y,E,U)*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2))),x,Inf)[1])
|
||||
main=C2*dphi(p,x,E,U)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2)))+T*dFT
|
||||
|
||||
# subtract the contribution of the pole, which will be added back in after the integration
|
||||
pole=dpsi_pole(x,k0,E,U)/(p+1im*k0*k0/2)
|
||||
return(main-pole)
|
||||
else
|
||||
C1=-2im*T*((sqrt(2*U-k0*k0)*phi(p,0,E,U)+dphi(p,0,E,U))/(-2im*p+k0*k0)/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))+quadgk(y -> phi(p,y,E,U)/(pow(-2im*p,1/2,pi/2)*phi(p,0,E,U)-dphi(p,0,E,U))*exp(-sqrt(2*U-k0*k0)*y)*exp(sqrt(2)*2im/3*(pow(E^(1/3)*y+E^(-2/3)*(1im*p-U),3/2,-pi/2)-E^(-1)*pow(1im*p-U,3/2,-pi/2))),0,Inf)[1])
|
||||
dFI=2*k0*exp(1im*k0*x)/(-2im*p+k0*k0)
|
||||
dFR=-2*k0*exp(-1im*k0*x)/(-2im*p+k0*k0)
|
||||
main=C1*pow(-2im*p,1/2,pi/2)*exp(pow(-2im*p,1/2,pi/2)*x)+dFI+R*dFR
|
||||
|
||||
# subtract the contribution of the pole, which will be added back in after the integration
|
||||
pole=dpsi_pole(x,k0,E,U)/(p+1im*k0*k0/2)
|
||||
return(main-pole)
|
||||
end
|
||||
end
|
||||
|
||||
# psi (returns t,psi(x,t))
|
||||
function psi(x,k0,E,U,p_npoints,p_cutoff)
|
||||
fft=fourier_fft(f,x,k0,E,U,p_npoints,p_cutoff)
|
||||
# add the contribution of the pole
|
||||
for i in 1:p_npoints
|
||||
fft[2][i]=fft[2][i]+psi_pole(x,k0,E,U)*exp(-1im*k0*k0/2*fft[1][i])
|
||||
end
|
||||
return(fft)
|
||||
end
|
||||
# its derivative
|
||||
function dpsi(x,k0,E,U,p_npoints,p_cutoff)
|
||||
fft=fourier_fft(df,x,k0,E,U,p_npoints,p_cutoff)
|
||||
# add the contribution of the pole
|
||||
for i in 1:p_npoints
|
||||
fft[2][i]=fft[2][i]+dpsi_pole(x,k0,E,U)*exp(-1im*k0*k0/2*fft[1][i])
|
||||
end
|
||||
return(fft)
|
||||
end
|
||||
|
||||
# compute Fourier transform by sampling and fft
|
||||
function fourier_fft(A,x,k0,E,U,p_npoints,p_cutoff)
|
||||
fun=zeros(Complex{Float64},p_npoints)
|
||||
times=zeros(p_npoints)
|
||||
|
||||
# prepare fft
|
||||
for i in 1:p_npoints
|
||||
fun[i]=p_cutoff/pi*A(1im*(-p_cutoff+2*p_cutoff*(i-1)/p_npoints),x,k0,E,U)
|
||||
times[i]=(i-1)*pi/p_cutoff
|
||||
end
|
||||
|
||||
ifft!(fun)
|
||||
|
||||
# correct the phase
|
||||
for i in 2:2:p_npoints
|
||||
fun[i]=-fun[i]
|
||||
end
|
||||
return([times,fun])
|
||||
end
|
||||
|
||||
# asymptotic value of psi
|
||||
function psi_pole(x,k0,E,U)
|
||||
if x>=0
|
||||
return(1im*phi(-1im*k0*k0/2,x,E,U)*2*k0/(1im*k0*phi(-1im*k0*k0/2,0,E,U)+dphi(-1im*k0*k0/2,0,E,U))*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(k0*k0/2-U),3/2,-pi/2)-E^(-1)*pow(k0*k0/2-U,3/2,-pi/2))))
|
||||
else
|
||||
return((1im*k0*phi(-1im*k0*k0/2,0,E,U)-dphi(-1im*k0*k0/2,0,E,U))/(1im*k0*phi(-1im*k0*k0/2,0,E,U)+dphi(-1im*k0*k0/2,0,E,U))*exp(-1im*k0*x)+exp(1im*k0*x))
|
||||
end
|
||||
end
|
||||
function dpsi_pole(x,k0,E,U)
|
||||
if x>=0
|
||||
return(1im*dphi(-1im*k0*k0/2,x,E,U)*2*k0/(1im*k0*phi(-1im*k0*k0/2,0,E,U)+dphi(-1im*k0*k0/2,0,E,U))*exp(sqrt(2)*2im/3*(pow(E^(1/3)*x+E^(-2/3)*(k0*k0/2-U),3/2,-pi/2)-E^(-1)*pow(k0*k0/2-U,3/2,-pi/2))))
|
||||
else
|
||||
return(-1im*k0*(1im*k0*phi(-1im*k0*k0/2,0,E,U)-dphi(-1im*k0*k0/2,0,E,U))/(1im*k0*phi(-1im*k0*k0/2,0,E,U)+dphi(-1im*k0*k0/2,0,E,U))*exp(-1im*k0*x)+1im*k0*exp(1im*k0*x))
|
||||
end
|
||||
end
|
||||
|
||||
# current
|
||||
function J(ps,dps)
|
||||
return(2*imag(conj(ps)*dps))
|
||||
end
|
||||
|
||||
# complete computation of the current
|
||||
function current(x,k0,E,U,p_npoints,p_cutoff)
|
||||
ps=psi(x,k0,E,U,p_npoints,p_cutoff)
|
||||
dps=dpsi(x,k0,E,U,p_npoints,p_cutoff)
|
||||
Js=zeros(Complex{Float64},p_npoints)
|
||||
for i in 1:p_npoints
|
||||
Js[i]=J(ps[2][i],dps[2][i])
|
||||
end
|
||||
return(Js)
|
||||
end
|
36
figs/plots.fig/Makefile
Normal file
36
figs/plots.fig/Makefile
Normal file
@ -0,0 +1,36 @@
|
||||
PROJECTNAME=currents-4 currents-8 density-4 density-8 integrated_current-4 integrated_current-8
|
||||
|
||||
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
|
||||
TEXS=$(addsuffix .tikz.tex, $(PROJECTNAME))
|
||||
|
||||
all: $(PDFS)
|
||||
|
||||
currents-4.pdf density-4.pdf integrated_current-4.pdf: current_density-4.dat
|
||||
gnuplot $(patsubst %.pdf, %.gnuplot, $@) > $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
|
||||
currents-8.pdf density-8.pdf integrated_current-8.pdf: current_density-8.dat
|
||||
gnuplot $(patsubst %.pdf, %.gnuplot, $@) > $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@)
|
||||
|
||||
current_density-4.dat:
|
||||
julia current_density.jl 4 > $@
|
||||
current_density-8.dat:
|
||||
julia current_density.jl 8 > $@
|
||||
|
||||
install: $(PDFS)
|
||||
cp $^ $(INSTALLDIR)/
|
||||
|
||||
clean-aux:
|
||||
rm -f $(addsuffix .tikz.tex, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .aux, $(PROJECTNAME))
|
||||
rm -f $(addsuffix .log, $(PROJECTNAME))
|
||||
|
||||
clean-dat:
|
||||
rm -f current_density-4.dat
|
||||
rm -f current_density-8.dat
|
||||
|
||||
clean-tex:
|
||||
rm -f $(PDFS)
|
||||
|
||||
clean: clean-dat clean-aux clean-tex
|
60
figs/plots.fig/current_density.jl
Normal file
60
figs/plots.fig/current_density.jl
Normal file
@ -0,0 +1,60 @@
|
||||
using QuadGK
|
||||
using FastGaussQuadrature
|
||||
using SpecialFunctions
|
||||
using FFTW
|
||||
|
||||
# numerical values
|
||||
hbar=6.58e-16 # eV.s
|
||||
m=9.11e-31 # kg
|
||||
Un=9 # eV
|
||||
En=parse(Float64,ARGS[1])*1e9 # V/m
|
||||
Kn=4.5 # eV
|
||||
|
||||
# dimensionless quantities
|
||||
U=1
|
||||
E=En*hbar/(Un^1.5*m^0.5)*sqrt(1.60e-19)
|
||||
k0=sqrt(2*Kn/Un)
|
||||
|
||||
# cutoffs
|
||||
p_cutoff=20*k0
|
||||
p_npoints=4096
|
||||
|
||||
# airy approximations
|
||||
airy_threshold=30
|
||||
airy_order=5
|
||||
|
||||
# order for Gauss-Legendre quadrature
|
||||
order=10
|
||||
|
||||
# compute at these points
|
||||
X=[(2*U-k0*k0)/(2*E),10*(2*U-k0*k0)/(2*E)]
|
||||
|
||||
include("FN_base.jl")
|
||||
|
||||
# compute the weights and abcissa for gauss-legendre quadratures
|
||||
gl_data=gausslegendre(order)
|
||||
|
||||
ps=Array{Array{Array{Complex{Float64}}}}(undef,length(X))
|
||||
dps=Array{Array{Array{Complex{Float64}}}}(undef,length(X))
|
||||
intJ=Array{Array{Complex{Float64}}}(undef,length(X))
|
||||
for i in 1:length(X)
|
||||
# wave function
|
||||
ps[i]=psi(X[i],k0,E,U,p_npoints,p_cutoff)
|
||||
dps[i]=dpsi(X[i],k0,E,U,p_npoints,p_cutoff)
|
||||
|
||||
# integrated current
|
||||
intJ[i]=zeros(Complex{Float64},p_npoints)
|
||||
for l in 1:order
|
||||
eval=current(X[i],k0/2*(gl_data[1][l]+1),E,U,p_npoints,p_cutoff)
|
||||
for j in 1:length(eval)
|
||||
intJ[i][j]=intJ[i][j]+k0/2*gl_data[2][l]*eval[j]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for j in 1:p_npoints
|
||||
for i in 1:length(X)
|
||||
print(real(ps[i][1][j])*hbar/Un*1e15,' ',abs(ps[i][2][j])^2,' ',J(ps[i][2][j],dps[i][2][j])/(2*k0),' ',real(intJ[i][j]/k0^2),' ')
|
||||
end
|
||||
print('\n')
|
||||
end
|
43
figs/plots.fig/currents-4.gnuplot
Normal file
43
figs/plots.fig/currents-4.gnuplot
Normal file
@ -0,0 +1,43 @@
|
||||
## can also set the following options
|
||||
set title "$E=4\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$\\displaystyle\\frac j{2k}$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot "current_density-4.dat" using 1:3 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-4.dat" using 5:7 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
43
figs/plots.fig/currents-8.gnuplot
Normal file
43
figs/plots.fig/currents-8.gnuplot
Normal file
@ -0,0 +1,43 @@
|
||||
## can also set the following options
|
||||
set title "$E=8\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$\\displaystyle\\frac j{2k}$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot "current_density-8.dat" using 1:3 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-8.dat" using 5:7 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
44
figs/plots.fig/density-4.gnuplot
Normal file
44
figs/plots.fig/density-4.gnuplot
Normal file
@ -0,0 +1,44 @@
|
||||
## can also set the following options
|
||||
set title "$E=4\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$|\\psi|^2$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot \
|
||||
"current_density-4.dat" using 1:2 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-4.dat" using 5:6 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
44
figs/plots.fig/density-8.gnuplot
Normal file
44
figs/plots.fig/density-8.gnuplot
Normal file
@ -0,0 +1,44 @@
|
||||
## can also set the following options
|
||||
set title "$E=8\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$|\\psi|^2$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot \
|
||||
"current_density-8.dat" using 1:2 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-8.dat" using 5:6 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
43
figs/plots.fig/integrated_current-4.gnuplot
Normal file
43
figs/plots.fig/integrated_current-4.gnuplot
Normal file
@ -0,0 +1,43 @@
|
||||
## can also set the following options
|
||||
set title "$E=4\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$\\displaystyle\\frac J{k^2}$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot "current_density-4.dat" using 1:4 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-4.dat" using 5:8 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
43
figs/plots.fig/integrated_current-8.gnuplot
Normal file
43
figs/plots.fig/integrated_current-8.gnuplot
Normal file
@ -0,0 +1,43 @@
|
||||
## can also set the following options
|
||||
set title "$E=4\\ \\mathrm{V}\\cdot\\mathrm{nm}^{-1}$"
|
||||
set ylabel "$\\displaystyle\\frac J{k^2}$" norotate
|
||||
set xlabel "$t$ (fs)"
|
||||
#
|
||||
## start ticks at 0, then every x
|
||||
#set xtics 0,x
|
||||
#set ytics 0,x
|
||||
## puts 4 minor tics between tics (5 intervals, i.e. every 0.01)
|
||||
set mxtics 5
|
||||
set mytics 5
|
||||
|
||||
# default output canvas size: 12.5cm x 8.75cm
|
||||
set term lua tikz size 12.5,8.75 standalone
|
||||
|
||||
set key spacing 1.5
|
||||
|
||||
# 3=1+2 draw bottom and left sides of the box
|
||||
set border 3
|
||||
# don't show tics on opposite sides
|
||||
set xtics nomirror
|
||||
set ytics nomirror
|
||||
|
||||
# My colors
|
||||
## 4169E1 (pastel blue)
|
||||
## DC143C (bright red)
|
||||
## 32CD32 (bright green)
|
||||
## 4B0082 (deep purple)
|
||||
## DAA520 (ochre)
|
||||
|
||||
# set linestyle
|
||||
set style line 1 linetype rgbcolor "#4169E1" linewidth 3
|
||||
set style line 2 linetype rgbcolor "#DC143C" linewidth 3
|
||||
set style line 3 linetype rgbcolor "#32CD32" linewidth 3
|
||||
set style line 4 linetype rgbcolor "#4B0082" linewidth 3
|
||||
set style line 5 linetype rgbcolor "#DAA520" linewidth 3
|
||||
|
||||
set pointsize 0.6
|
||||
|
||||
set xrange [:12]
|
||||
|
||||
plot "current_density-8.dat" using 1:4 every ::1 with lines linestyle 1 title "$x=x_0$",\
|
||||
"current_density-8.dat" using 5:8 every ::1 with lines linestyle 2 title "$x=10x_0$"
|
1
figs/potential.fig/Makefile
Symbolic link
1
figs/potential.fig/Makefile
Symbolic link
@ -0,0 +1 @@
|
||||
../libs/Makefile
|
22
figs/potential.fig/potential.tikz.tex
Normal file
22
figs/potential.fig/potential.tikz.tex
Normal file
@ -0,0 +1,22 @@
|
||||
\documentclass{standalone}
|
||||
|
||||
\usepackage{tikz}
|
||||
|
||||
\begin{document}
|
||||
\begin{tikzpicture}
|
||||
|
||||
\draw(-3,0)--(3,0);
|
||||
\draw(0,-1.5)--(0,3);
|
||||
|
||||
\draw[line width=1.5pt](-2.5,0)--(0,0)--(0,2.5)--(1.975,-1.25);
|
||||
\draw(1.5,1.5)node{\small$U-Ex$};
|
||||
|
||||
\draw[line width=1pt, densely dotted](-2.5,1)--(0,1);
|
||||
\draw(-2.8,1)node{\small$E_F$};
|
||||
|
||||
\draw(0,3.3)node{\small$V$};
|
||||
\draw(3.3,0)node{\small$x$};
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{document}
|
||||
|
673
libs/ian.cls
Normal file
673
libs/ian.cls
Normal file
@ -0,0 +1,673 @@
|
||||
%%
|
||||
%% Ian's class file
|
||||
%%
|
||||
|
||||
%% TeX format
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
|
||||
%% class name
|
||||
\ProvidesClass{ian}[2017/09/29]
|
||||
|
||||
%% boolean to signal that this class is being used
|
||||
\newif\ifianclass
|
||||
|
||||
%% options
|
||||
% no section numbering in equations
|
||||
\DeclareOption{section_in_eq}{\sectionsineqtrue}
|
||||
\DeclareOption{section_in_fig}{\sectionsinfigtrue}
|
||||
\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
|
||||
\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}}
|
||||
\DeclareOption{subsection_in_eq}{\subsectionsineqtrue}
|
||||
\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue}
|
||||
\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
|
||||
\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}}
|
||||
\DeclareOption{no_section_in_eq}{\sectionsineqfalse}
|
||||
\DeclareOption{no_section_in_fig}{\sectionsinfigfalse}
|
||||
\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
|
||||
\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}}
|
||||
\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse}
|
||||
\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse}
|
||||
\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
|
||||
\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}}
|
||||
% reset point
|
||||
\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}}
|
||||
\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}}
|
||||
\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}}
|
||||
\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}}
|
||||
|
||||
\def\ian@defaultoptions{
|
||||
\ExecuteOptions{section_in_all, no_subsection_in_all}
|
||||
\ProcessOptions
|
||||
|
||||
%% required packages
|
||||
\RequirePackage{iantheo}
|
||||
\RequirePackage{point}
|
||||
\RequirePackage{color}
|
||||
\RequirePackage{marginnote}
|
||||
\RequirePackage{amssymb}
|
||||
\PassOptionsToPackage{hidelinks}{hyperref}
|
||||
\RequirePackage{hyperref}
|
||||
}
|
||||
|
||||
%% paper dimensions
|
||||
\setlength\paperheight{297mm}
|
||||
\setlength\paperwidth{210mm}
|
||||
|
||||
%% fonts
|
||||
\input{size11.clo}
|
||||
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
|
||||
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
|
||||
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
|
||||
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
|
||||
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
|
||||
|
||||
%% text dimensions
|
||||
\hoffset=-50pt
|
||||
\voffset=-72pt
|
||||
\textwidth=460pt
|
||||
\textheight=704pt
|
||||
|
||||
|
||||
%% remove default indentation
|
||||
\parindent=0pt
|
||||
%% indent command
|
||||
\def\indent{\hskip20pt}
|
||||
|
||||
%% something is wrong with \thepage, redefine it
|
||||
\gdef\thepage{\the\c@page}
|
||||
|
||||
%% array lines (to use the array environment)
|
||||
\setlength\arraycolsep{5\p@}
|
||||
\setlength\arrayrulewidth{.4\p@}
|
||||
|
||||
|
||||
%% correct vertical alignment at the end of a document
|
||||
\AtEndDocument{
|
||||
\vfill
|
||||
\eject
|
||||
}
|
||||
|
||||
|
||||
%% hyperlinks
|
||||
% hyperlinkcounter
|
||||
\newcounter{lncount}
|
||||
% hyperref anchor
|
||||
\def\hrefanchor{%
|
||||
\stepcounter{lncount}%
|
||||
\hypertarget{ln.\thelncount}{}%
|
||||
}
|
||||
|
||||
%% define a command and write it to aux file
|
||||
\def\outdef#1#2{%
|
||||
% define command%
|
||||
\expandafter\xdef\csname #1\endcsname{#2}%
|
||||
% hyperlink number%
|
||||
\expandafter\xdef\csname #1@hl\endcsname{\thelncount}%
|
||||
% write command to aux%
|
||||
\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}%
|
||||
\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}%
|
||||
}
|
||||
|
||||
%% can call commands even when they are not defined
|
||||
\def\safe#1{%
|
||||
\ifdefined#1%
|
||||
#1%
|
||||
\else%
|
||||
{\color{red}\bf?}%
|
||||
\fi%
|
||||
}
|
||||
|
||||
%% define a label for the latest tag
|
||||
%% label defines a command containing the string stored in \tag
|
||||
\def\deflabel{
|
||||
\def\label##1{\expandafter\outdef{label@##1}{\safe\tag}}
|
||||
|
||||
\def\ref##1{%
|
||||
% check whether the label is defined (hyperlink runs into errors if this check is omitted)
|
||||
\ifcsname label@##1@hl\endcsname%
|
||||
\hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}%
|
||||
\else%
|
||||
\ifcsname label@##1\endcsname%
|
||||
{\color{blue}\csname ##1\endcsname}%
|
||||
\else%
|
||||
{\bf ??}%
|
||||
\fi%
|
||||
\fi%
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
%% make a custom link at any given location in the document
|
||||
\def\makelink#1#2{%
|
||||
\hrefanchor%
|
||||
\outdef{label@#1}{#2}%
|
||||
}
|
||||
|
||||
|
||||
%% section command
|
||||
% counter
|
||||
\newcounter{sectioncount}
|
||||
% space before section
|
||||
\newlength\secskip
|
||||
\setlength\secskip{40pt}
|
||||
% a prefix to put before the section number, e.g. A for appendices
|
||||
\def\sectionprefix{}
|
||||
% define some lengths
|
||||
\newlength\secnumwidth
|
||||
\newlength\sectitlewidth
|
||||
\def\section#1{
|
||||
% reset counters
|
||||
\stepcounter{sectioncount}
|
||||
\setcounter{subsectioncount}{0}
|
||||
\ifsectionsineq
|
||||
\setcounter{seqcount}0
|
||||
\fi
|
||||
\ifsectionsinfig
|
||||
\setcounter{figcount}0
|
||||
\fi
|
||||
|
||||
% space before section (if not first)
|
||||
\ifnum\thesectioncount>1
|
||||
\vskip\secskip
|
||||
\penalty-1000
|
||||
\fi
|
||||
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\sectionprefix\thesectioncount}
|
||||
|
||||
% get widths
|
||||
\def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}}
|
||||
\settowidth\secnumwidth{\@secnum}
|
||||
\setlength\sectitlewidth\textwidth
|
||||
\addtolength\sectitlewidth{-\secnumwidth}
|
||||
|
||||
% print name
|
||||
\parbox{\textwidth}{
|
||||
\@secnum
|
||||
\parbox[t]{\sectitlewidth}{\Large\bf #1}}
|
||||
|
||||
% write to table of contents
|
||||
\iftoc
|
||||
% save lncount in aux variable which is written to toc
|
||||
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}}
|
||||
\write\tocoutput{\noexpand\tocsection{#1}{\thepage}}
|
||||
\fi
|
||||
|
||||
%space
|
||||
\par\penalty10000
|
||||
\bigskip\penalty10000
|
||||
}
|
||||
|
||||
%% subsection
|
||||
% counter
|
||||
\newcounter{subsectioncount}
|
||||
% space before subsection
|
||||
\newlength\subsecskip
|
||||
\setlength\subsecskip{30pt}
|
||||
\def\subsection#1{
|
||||
% counters
|
||||
\stepcounter{subsectioncount}
|
||||
\setcounter{subsubsectioncount}{0}
|
||||
\ifsubsectionsineq
|
||||
\setcounter{seqcount}0
|
||||
\fi
|
||||
\ifsubsectionsinfig
|
||||
\setcounter{figcount}0
|
||||
\fi
|
||||
|
||||
% space before subsection (if not first)
|
||||
\ifnum\thesubsectioncount>1
|
||||
\vskip\subsecskip
|
||||
\penalty-500
|
||||
\fi
|
||||
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount}
|
||||
|
||||
% get widths
|
||||
\def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}}
|
||||
\settowidth\secnumwidth{\@secnum}
|
||||
\setlength\sectitlewidth\textwidth
|
||||
\addtolength\sectitlewidth{-\secnumwidth}
|
||||
% print name
|
||||
\parbox{\textwidth}{
|
||||
\@secnum
|
||||
\parbox[t]{\sectitlewidth}{\large\bf #1}}
|
||||
|
||||
% write to table of contents
|
||||
\iftoc
|
||||
% save lncount in aux variable which is written to toc
|
||||
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}}
|
||||
\write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}}
|
||||
\fi
|
||||
|
||||
% space
|
||||
\par\penalty10000
|
||||
\medskip\penalty10000
|
||||
}
|
||||
|
||||
%% subsubsection
|
||||
% counter
|
||||
\newcounter{subsubsectioncount}
|
||||
% space before subsubsection
|
||||
\newlength\subsubsecskip
|
||||
\setlength\subsubsecskip{20pt}
|
||||
\def\subsubsection#1{
|
||||
% counters
|
||||
\stepcounter{subsubsectioncount}
|
||||
|
||||
% space before subsubsection (if not first)
|
||||
\ifnum\thesubsubsectioncount>1
|
||||
\vskip\subsubsecskip
|
||||
\penalty-500
|
||||
\fi
|
||||
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount}
|
||||
|
||||
% get widths
|
||||
\def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}}
|
||||
\settowidth\secnumwidth{\@secnum}
|
||||
\setlength\sectitlewidth\textwidth
|
||||
\addtolength\sectitlewidth{-\secnumwidth}
|
||||
% print name
|
||||
\parbox{\textwidth}{
|
||||
\@secnum
|
||||
\parbox[t]{\sectitlewidth}{\large\bf #1}}
|
||||
|
||||
% write to table of contents
|
||||
\iftoc
|
||||
% save lncount in aux variable which is written to toc
|
||||
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}}
|
||||
\write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}}
|
||||
\fi
|
||||
|
||||
% space
|
||||
\par\penalty10000
|
||||
\medskip\penalty10000
|
||||
}
|
||||
|
||||
%% itemize
|
||||
\newlength\itemizeskip
|
||||
% left margin for items
|
||||
\setlength\itemizeskip{20pt}
|
||||
\newlength\itemizeseparator
|
||||
% space between the item symbol and the text
|
||||
\setlength\itemizeseparator{5pt}
|
||||
% penalty preceding an itemize
|
||||
\newcount\itemizepenalty
|
||||
\itemizepenalty=0
|
||||
% counter counting the itemize level
|
||||
\newcounter{itemizecount}
|
||||
|
||||
% item symbol
|
||||
\def\itemizept#1{
|
||||
\ifnum#1=1
|
||||
\textbullet
|
||||
\else
|
||||
$\scriptstyle\blacktriangleright$
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
\newlength\current@itemizeskip
|
||||
\setlength\current@itemizeskip{0pt}
|
||||
\def\itemize{%
|
||||
\par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty%
|
||||
\addtocounter{itemizecount}{1}%
|
||||
\addtolength\current@itemizeskip{\itemizeskip}%
|
||||
\leftskip\current@itemizeskip%
|
||||
}
|
||||
\def\enditemize{%
|
||||
\addtocounter{itemizecount}{-1}%
|
||||
\addtolength\current@itemizeskip{-\itemizeskip}%
|
||||
\par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip%
|
||||
\medskip\expandafter\penalty\the\itemizepenalty%
|
||||
}
|
||||
|
||||
% item, with optional argument to specify the item point
|
||||
% @itemarg is set to true when there is an optional argument
|
||||
\newif\if@itemarg
|
||||
\def\item{%
|
||||
% check whether there is an optional argument (if there is none, add on empty '[]')
|
||||
\@ifnextchar [{\@itemargtrue\@itemx}{\@itemargfalse\@itemx[]}%
|
||||
}
|
||||
\newlength\itempt@total
|
||||
\def\@itemx[#1]{
|
||||
\if@itemarg
|
||||
\settowidth\itempt@total{#1}
|
||||
\else
|
||||
\settowidth\itempt@total{\itemizept\theitemizecount}
|
||||
\fi
|
||||
\addtolength\itempt@total{\itemizeseparator}
|
||||
\par
|
||||
\medskip
|
||||
\if@itemarg
|
||||
\hskip-\itempt@total#1\hskip\itemizeseparator
|
||||
\else
|
||||
\hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator
|
||||
\fi
|
||||
}
|
||||
|
||||
%% prevent page breaks after itemize
|
||||
\newcount\previtemizepenalty
|
||||
\def\nopagebreakafteritemize{
|
||||
\previtemizepenalty=\itemizepenalty
|
||||
\itemizepenalty=10000
|
||||
}
|
||||
%% back to previous value
|
||||
\def\restorepagebreakafteritemize{
|
||||
\itemizepenalty=\previtemizepenalty
|
||||
}
|
||||
|
||||
%% enumerate
|
||||
\newcounter{enumerate@count}
|
||||
\def\enumerate{
|
||||
\setcounter{enumerate@count}0
|
||||
\let\olditem\item
|
||||
\let\olditemizept\itemizept
|
||||
\def\item{
|
||||
% counter
|
||||
\stepcounter{enumerate@count}
|
||||
% set header
|
||||
\def\itemizept{\theenumerate@count.}
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\theenumerate@count}
|
||||
\olditem
|
||||
}
|
||||
\itemize
|
||||
}
|
||||
\def\endenumerate{
|
||||
\enditemize
|
||||
\let\item\olditem
|
||||
\let\itemizept\olditemizept
|
||||
}
|
||||
|
||||
|
||||
%% equation numbering
|
||||
% counter
|
||||
\newcounter{seqcount}
|
||||
% booleans (write section or subsection in equation number)
|
||||
\newif\ifsectionsineq
|
||||
\newif\ifsubsectionsineq
|
||||
\def\seqcount{
|
||||
\stepcounter{seqcount}
|
||||
% the output
|
||||
\edef\seqformat{\theseqcount}
|
||||
% add subsection number
|
||||
\ifsubsectionsineq
|
||||
\let\tmp\seqformat
|
||||
\edef\seqformat{\thesubsectioncount.\tmp}
|
||||
\fi
|
||||
% add section number
|
||||
\ifsectionsineq
|
||||
\let\tmp\seqformat
|
||||
\edef\seqformat{\sectionprefix\thesectioncount.\tmp}
|
||||
\fi
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\seqformat}
|
||||
% write number
|
||||
\marginnote{\hfill(\seqformat)}
|
||||
}
|
||||
%% equation environment compatibility
|
||||
\def\equation{\hrefanchor$$\seqcount}
|
||||
\def\endequation{$$\@ignoretrue}
|
||||
|
||||
|
||||
%% figures
|
||||
% counter
|
||||
\newcounter{figcount}
|
||||
% booleans (write section or subsection in equation number)
|
||||
\newif\ifsectionsinfig
|
||||
\newif\ifsubsectionsinfig
|
||||
% width of figures
|
||||
\newlength\figwidth
|
||||
\setlength\figwidth\textwidth
|
||||
\addtolength\figwidth{-2.5cm}
|
||||
% caption
|
||||
\def\defcaption{
|
||||
\long\def\caption##1{
|
||||
\stepcounter{figcount}
|
||||
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
|
||||
% the number of the figure
|
||||
\edef\figformat{\thefigcount}
|
||||
% add subsection number
|
||||
\ifsubsectionsinfig
|
||||
\let\tmp\figformat
|
||||
\edef\figformat{\thesubsectioncount.\tmp}
|
||||
\fi
|
||||
% add section number
|
||||
\ifsectionsinfig
|
||||
\let\tmp\figformat
|
||||
\edef\figformat{\sectionprefix\thesectioncount.\tmp}
|
||||
\fi
|
||||
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\figformat}
|
||||
|
||||
% write
|
||||
\hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1}
|
||||
|
||||
% space
|
||||
\par\bigskip
|
||||
}
|
||||
}
|
||||
%% short caption: centered
|
||||
\def\captionshort#1{
|
||||
\stepcounter{figcount}
|
||||
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
|
||||
% the number of the figure
|
||||
\edef\figformat{\thefigcount}
|
||||
% add section number
|
||||
\ifsectionsinfig
|
||||
\let\tmp\figformat
|
||||
\edef\figformat{\sectionprefix\thesectioncount.\tmp}
|
||||
\fi
|
||||
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\figformat}
|
||||
|
||||
% write
|
||||
\hfil fig \figformat: {\small#1}
|
||||
|
||||
%space
|
||||
\par\bigskip
|
||||
}
|
||||
|
||||
%% environment
|
||||
\def\figure{
|
||||
\par
|
||||
\vfil\penalty100\vfilneg
|
||||
\bigskip
|
||||
}
|
||||
\def\endfigure{
|
||||
\par
|
||||
\bigskip
|
||||
}
|
||||
|
||||
|
||||
%% start appendices
|
||||
\def\appendix{
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
% counter
|
||||
\setcounter{sectioncount}0
|
||||
|
||||
% prefix
|
||||
\def\sectionprefix{A}
|
||||
|
||||
% write
|
||||
{\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000
|
||||
|
||||
% add a mention in the table of contents
|
||||
\iftoc
|
||||
\immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000
|
||||
\fi
|
||||
|
||||
%% uncomment for new page for each appendix
|
||||
%\def\seqskip{\vfill\pagebreak}
|
||||
}
|
||||
|
||||
|
||||
%% bibliography
|
||||
% size of header
|
||||
\newlength\bibheader
|
||||
\def\thebibliography#1{
|
||||
\hrefanchor
|
||||
|
||||
% add a mention in the table of contents
|
||||
\iftoc
|
||||
% save lncount in aux variable which is written to toc
|
||||
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}}
|
||||
\write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000
|
||||
\fi
|
||||
|
||||
% write
|
||||
{\bf \LARGE References}\par\penalty10000\bigskip\penalty10000
|
||||
% width of header
|
||||
\settowidth\bibheader{[#1]}
|
||||
\leftskip\bibheader
|
||||
}
|
||||
% end environment
|
||||
\def\endthebibliography{
|
||||
\par\leftskip0pt
|
||||
}
|
||||
|
||||
%% bibitem command
|
||||
\def\bibitem[#1]#2{%
|
||||
\hrefanchor%
|
||||
\outdef{label@cite#2}{#1}%
|
||||
\hskip-\bibheader%
|
||||
\makebox[\bibheader]{\cite{#2}\hfill}%
|
||||
}
|
||||
|
||||
%% cite command (adapted from latex.ltx)
|
||||
% @tempswa is set to true when there is an optional argument
|
||||
\newif\@tempswa
|
||||
\def\cite{%
|
||||
% check whether there is an optional argument (if there is none, add on empty '[]')
|
||||
\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}%
|
||||
}
|
||||
% command with optional argument
|
||||
\def\@citex[#1]#2{\leavevmode%
|
||||
% initialize loop
|
||||
\let\@citea\@empty%
|
||||
% format
|
||||
\@cite{%
|
||||
% loop over ',' separated list
|
||||
\@for\@citeb:=#2\do{%
|
||||
% text to add at each iteration of the loop (separator between citations)
|
||||
\@citea\def\@citea{,\ }%
|
||||
% add entry to citelist
|
||||
\@writecitation{\@citeb}%
|
||||
\ref{cite\@citeb}%
|
||||
}%
|
||||
}%
|
||||
% add optional argument text (as an argument to '\@cite')
|
||||
{#1}%
|
||||
}
|
||||
\def\@cite#1#2{%
|
||||
[#1\if@tempswa , #2\fi]%
|
||||
}
|
||||
%% add entry to citelist after checking it has not already been added
|
||||
\def\@writecitation#1{%
|
||||
\ifcsname if#1cited\endcsname%
|
||||
\else%
|
||||
\expandafter\newif\csname if#1cited\endcsname%
|
||||
\immediate\write\@auxout{\string\citation{#1}}%
|
||||
\fi%
|
||||
}
|
||||
|
||||
%% table of contents
|
||||
% boolean
|
||||
\newif\iftoc
|
||||
\def\tableofcontents{
|
||||
{\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000
|
||||
|
||||
% copy content from file
|
||||
\IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}}
|
||||
|
||||
% open new toc
|
||||
\newwrite\tocoutput
|
||||
\immediate\openout\tocoutput=\jobname.toc
|
||||
|
||||
\toctrue
|
||||
}
|
||||
%% close file
|
||||
\AtEndDocument{
|
||||
% close toc
|
||||
\iftoc
|
||||
\immediate\closeout\tocoutput
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
%% fill line with dots
|
||||
\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill}
|
||||
|
||||
%% same as sectionprefix
|
||||
\def\tocsectionprefix{}
|
||||
|
||||
%% toc formats
|
||||
\newcounter{tocsectioncount}
|
||||
\def\tocsection #1#2{
|
||||
\stepcounter{tocsectioncount}
|
||||
\setcounter{tocsubsectioncount}{0}
|
||||
\setcounter{tocsubsubsectioncount}{0}
|
||||
% write
|
||||
\smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par
|
||||
}
|
||||
\newcounter{tocsubsectioncount}
|
||||
\def\tocsubsection #1#2{
|
||||
\stepcounter{tocsubsectioncount}
|
||||
\setcounter{tocsubsubsectioncount}{0}
|
||||
% write
|
||||
{\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
|
||||
}
|
||||
\newcounter{tocsubsubsectioncount}
|
||||
\def\tocsubsubsection #1#2{
|
||||
\stepcounter{tocsubsubsectioncount}
|
||||
% write
|
||||
{\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
|
||||
}
|
||||
\def\tocappendices{
|
||||
\medskip
|
||||
\setcounter{tocsectioncount}0
|
||||
{\bf Appendices}\par
|
||||
\smallskip
|
||||
\def\tocsectionprefix{A}
|
||||
}
|
||||
\def\tocreferences#1{
|
||||
\medskip
|
||||
{\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par
|
||||
\smallskip
|
||||
}
|
||||
|
||||
|
||||
%% definitions that must be loaded at begin document
|
||||
\let\ian@olddocument\document
|
||||
\def\document{
|
||||
\ian@olddocument
|
||||
|
||||
\deflabel
|
||||
\defcaption
|
||||
}
|
||||
|
||||
%% end
|
||||
\ian@defaultoptions
|
||||
\endinput
|
162
libs/iantheo.sty
Normal file
162
libs/iantheo.sty
Normal file
@ -0,0 +1,162 @@
|
||||
%%
|
||||
%% iantheorem package:
|
||||
%% Ian's customized theorem command
|
||||
%%
|
||||
|
||||
%% boolean to signal that this package was loaded
|
||||
\newif\ifiantheo
|
||||
|
||||
%% TeX format
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
|
||||
%% package name
|
||||
\ProvidesPackage{iantheo}[2016/11/10]
|
||||
|
||||
%% options
|
||||
\newif\ifsectionintheo
|
||||
\DeclareOption{section_in_theo}{\sectionintheotrue}
|
||||
\DeclareOption{no_section_in_theo}{\sectionintheofalse}
|
||||
\newif\ifsubsectionintheo
|
||||
\DeclareOption{subsection_in_theo}{\subsectionintheotrue}
|
||||
\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse}
|
||||
|
||||
\def\iantheo@defaultoptions{
|
||||
\ExecuteOptions{section_in_theo, no_subsection_in_theo}
|
||||
\ProcessOptions
|
||||
|
||||
%%% reset at every new section
|
||||
\ifsectionintheo
|
||||
\let\iantheo@oldsection\section
|
||||
\gdef\section{\setcounter{theocount}{0}\iantheo@oldsection}
|
||||
\fi
|
||||
|
||||
%% reset at every new subsection
|
||||
\ifsubsectionintheo
|
||||
\let\iantheo@oldsubsection\subsection
|
||||
\gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection}
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
%% delimiters
|
||||
\def\delimtitle#1{
|
||||
\par%
|
||||
\leavevmode%
|
||||
\raise.3em\hbox to\hsize{%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
\hrulefill%
|
||||
\ \lower.3em\hbox{#1}\ %
|
||||
\hrulefill%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
}%
|
||||
\par\penalty10000%
|
||||
}
|
||||
|
||||
%% callable by ref
|
||||
\def\delimtitleref#1{
|
||||
\par%
|
||||
%
|
||||
\ifdefined\ianclass%
|
||||
% hyperref anchor%
|
||||
\hrefanchor%
|
||||
% define tag (for \label)%
|
||||
\xdef\tag{#1}%
|
||||
\fi%
|
||||
%
|
||||
\leavevmode%
|
||||
\raise.3em\hbox to\hsize{%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
\hrulefill%
|
||||
\ \lower.3em\hbox{\bf #1}\ %
|
||||
\hrulefill%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
}%
|
||||
\par\penalty10000%
|
||||
}
|
||||
|
||||
%% no title
|
||||
\def\delim{
|
||||
\par%
|
||||
\leavevmode\raise.3em\hbox to\hsize{%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
\hrulefill%
|
||||
\lower0.3em\hbox{\vrule height0.3em}%
|
||||
}%
|
||||
\par\penalty10000%
|
||||
}
|
||||
|
||||
%% end delim
|
||||
\def\enddelim{
|
||||
\par\penalty10000%
|
||||
\leavevmode%
|
||||
\raise.3em\hbox to\hsize{%
|
||||
\vrule height0.3em\hrulefill\vrule height0.3em%
|
||||
}%
|
||||
\par%
|
||||
}
|
||||
|
||||
|
||||
%% theorem
|
||||
% counter
|
||||
\newcounter{theocount}
|
||||
% booleans (write section or subsection in equation number)
|
||||
\def\theo#1{
|
||||
\stepcounter{theocount}
|
||||
\ifdefined\ianclass
|
||||
% hyperref anchor
|
||||
\hrefanchor
|
||||
\fi
|
||||
% the number
|
||||
\def\formattheo{\thetheocount}
|
||||
% add subsection number
|
||||
\ifsubsectionintheo
|
||||
\let\tmp\formattheo
|
||||
\edef\formattheo{\thesubsectioncount.\tmp}
|
||||
\fi
|
||||
% add section number
|
||||
\ifsectionintheo
|
||||
\let\tmp\formattheo
|
||||
\edef\formattheo{\sectionprefix\thesectioncount.\tmp}
|
||||
\fi
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\formattheo}
|
||||
% write
|
||||
\delimtitle{\bf #1 \formattheo}
|
||||
}
|
||||
\let\endtheo\enddelim
|
||||
%% theorem headers with name
|
||||
\def\theoname#1#2{
|
||||
\theo{#1}\hfil({\it #2})\par\penalty10000\medskip%
|
||||
}
|
||||
|
||||
|
||||
%% qed symbol
|
||||
\def\qedsymbol{$\square$}
|
||||
\def\qed{\penalty10000\hfill\penalty10000\qedsymbol}
|
||||
|
||||
|
||||
%% compatibility with article class
|
||||
\ifdefined\ianclasstrue
|
||||
\relax
|
||||
\else
|
||||
\def\thesectioncount{\thesection}
|
||||
\def\thesubsectioncount{\thesubsection}
|
||||
\def\sectionprefix{}
|
||||
\fi
|
||||
|
||||
|
||||
%% prevent page breaks after displayed equations
|
||||
\newcount\prevpostdisplaypenalty
|
||||
\def\nopagebreakaftereq{
|
||||
\prevpostdisplaypenalty=\postdisplaypenalty
|
||||
\postdisplaypenalty=10000
|
||||
}
|
||||
%% back to previous value
|
||||
\def\restorepagebreakaftereq{
|
||||
\postdisplaypenalty=\prevpostdisplaypenalty
|
||||
}
|
||||
|
||||
|
||||
%% end
|
||||
\iantheo@defaultoptions
|
||||
\endinput
|
106
libs/point.sty
Normal file
106
libs/point.sty
Normal file
@ -0,0 +1,106 @@
|
||||
%%
|
||||
%% Points package:
|
||||
%% \point commands
|
||||
%%
|
||||
|
||||
%% TeX format
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
|
||||
%% package name
|
||||
\ProvidesPackage{point}[2017/06/13]
|
||||
|
||||
%% options
|
||||
\newif\ifresetatsection
|
||||
\DeclareOption{reset_at_section}{\resetatsectiontrue}
|
||||
\DeclareOption{no_reset_at_section}{\resetatsectionfalse}
|
||||
\newif\ifresetatsubsection
|
||||
\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue}
|
||||
\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse}
|
||||
\newif\ifresetattheo
|
||||
\DeclareOption{reset_at_theo}{\resetattheotrue}
|
||||
\DeclareOption{no_reset_at_theo}{\resetattheofalse}
|
||||
|
||||
\def\point@defaultoptions{
|
||||
\ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo}
|
||||
\ProcessOptions
|
||||
|
||||
%% reset at every new section
|
||||
\ifresetatsection
|
||||
\let\point@oldsection\section
|
||||
\gdef\section{\resetpointcounter\point@oldsection}
|
||||
\fi
|
||||
%% reset at every new subsection
|
||||
\ifresetatsubsection
|
||||
\let\point@oldsubsection\subsection
|
||||
\gdef\subsection{\resetpointcounter\point@oldsubsection}
|
||||
\fi
|
||||
|
||||
%% reset at every new theorem
|
||||
\ifresetattheo
|
||||
\ifdefined\iantheotrue
|
||||
\let\point@oldtheo\theo
|
||||
\gdef\theo{\resetpointcounter\point@oldtheo}
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
%% point
|
||||
% counter
|
||||
\newcounter{pointcount}
|
||||
\def\point{
|
||||
\stepcounter{pointcount}
|
||||
\setcounter{subpointcount}{0}
|
||||
% hyperref anchor (only if the class is 'ian')
|
||||
\ifdefined\ifianclass
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\thepointcount}
|
||||
\fi
|
||||
% header
|
||||
\indent{\bf \thepointcount\ - }
|
||||
}
|
||||
|
||||
%% subpoint
|
||||
% counter
|
||||
\newcounter{subpointcount}
|
||||
\def\subpoint{
|
||||
\stepcounter{subpointcount}
|
||||
\setcounter{subsubpointcount}0
|
||||
% hyperref anchor (only if the class is 'ian')
|
||||
\ifdefined\ifianclass
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\thepointcount-\thesubpointcount}
|
||||
\fi
|
||||
% header
|
||||
\indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - }
|
||||
}
|
||||
|
||||
%% subsubpoint
|
||||
% counter
|
||||
\newcounter{subsubpointcount}
|
||||
\def\subsubpoint{
|
||||
\stepcounter{subsubpointcount}
|
||||
% hyperref anchor (only if the class is 'ian')
|
||||
\ifdefined\ifianclass
|
||||
\hrefanchor
|
||||
% define tag (for \label)
|
||||
\xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount}
|
||||
\fi
|
||||
\indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - }
|
||||
}
|
||||
|
||||
|
||||
%% reset point counters
|
||||
\def\resetpointcounter{
|
||||
\setcounter{pointcount}{0}
|
||||
\setcounter{subpointcount}{0}
|
||||
\setcounter{subsubpointcount}{0}
|
||||
}
|
||||
|
||||
|
||||
|
||||
%% end
|
||||
\point@defaultoptions
|
||||
\endinput
|
Loading…
Reference in New Issue
Block a user