Ebsolve is a Fortran 2008 program to solve the matrix transport equation of radiant field theory [1, 2] in a rectilinear waveguide geometry. The solution of this equation provides the distribution function of transmission eigenvalues through a disordered waveguide.
The matrix transport equation reads [1, 2]
where
The matrix transport equation is similar to the Boltzmann equation in radiative transport theory but, in contrast to the latter, it is able to capture coherent effects described by the transmission matrix. This equation is also very similar to the Eilenberger equation for type-II superconductivity in presence of impurities [3, 4], hence the name of the program, a contraction of Eilenberger solver.
The matrix transport equation is supplemented by the boundary conditions at infinity (
where the indices 'in' and 'out' denote the incoming and outgoing directions
Here is a comprehensive list of symbols encountered in the matrix transport equation above:
-
$\mathsf{g}(\mathbf{\Omega},\mathbf{r})$ : The matrix radiance, a 2-by-2 complex matrix which is the central quantity and the main unknown of the transport equation. This quantity also implicitly depends on the transmission eigenvalue$T$ . It has the properties of being traceless,$\mathrm{Tr}\mathsf{g}=0$ , and normalized to 1 according to$\mathsf{g}^2=\mathsf{1}$ , due to the boundary conditions. However, this matrix is not Hermitian. -
$\tilde{\mathsf{Q}}(\mathbf{r})$ : The matrix field , a 2-by-2 complex matrix given by the directional integral of the matrix radiance. It is also traceless,$\mathrm{Tr}\tilde{\mathsf{Q}}=0$ , but not normalized as the radiance. This matrix is not Hermitian either. -
$\mathbf{\Omega}$ : Unit vector pointing in the direction of propagation, such that$\mathbf{\Omega}=(\Omega_x,\mathbf{\Omega}_{\perp})$ . -
$\Omega_x$ : Longitudinal component of the direction vector in the direction of the waveguide. -
$\mathbf{\Omega}_{\perp}$ : Transverse component of the direction vector with respect to the waveguide. -
$\mathbf{r}$ : Position vector in usual space, such that$\mathbf{r}=(x,\mathbf{y})$ . -
$x$ : Longitudinal component of the position$\mathbf{r}$ in the waveguide direction. -
$\nabla_{\mathbf{x}}$ : Gradient with respect to the generic variable$\mathbf{x}$ . -
$\mathrm{i}$ : The imaginary unit. -
$k$ : The central wavenumber. -
$\ell_{\rm s}$ : The scattering mean free path of the disordered region of the waveguide. -
$\varepsilon$ : Imaginary shift of the Green function wavenumber. This parameter can be used to simulate absorption with the relation$\varepsilon=\frac{k}{\ell_{\rm a}}$ where$\ell_{\rm a}$ is the absorption length. -
$[\cdot,\cdot]$ : Matrix commutator defined by$[\mathsf{A},\mathsf{B}]=\mathsf{A}\mathsf{B}-\mathsf{B}\mathsf{A}$ . -
$\delta(x)$ : Dirac delta distribution. -
$x_{\rm a}, x_{\rm b}$ : Positions of the contact interactions serving to measure the observables related to the transmission matrix.$x_{\rm a}$ is the start point, and$x_{\rm b}$ the end point. -
$\gamma_{\rm a}, \gamma_{\rm b}$ : Parameters of the contact interactions. They are related to the transmission eigenvalues by$\gamma_{\rm a}\gamma_{\rm b}=\gamma=\frac{1}{T}+\mathrm{i}\epsilon$ for arbitrarily small$\epsilon>0$ . In the numerical simulations, they are chosen as equal ($\gamma_{\rm a}=\gamma_{\rm b}$ ), but as explained in the paper [2], it is somehow arbitrary as long as they are related to$T$ by the previous expression. -
$\Theta_{\rm a}, \Theta_{\rm b}$ : Window functions limiting the numerical aperture of the contact interactions 'a' and 'b'. They are defined by$\Theta_{\rm a}=\Theta(m_{\rm a}-|\mathbf{\Omega}_\perp|)$ , where$\Theta(x)$ stands for the Heaviside unit-step function. -
$m_{\rm a}, m_{\rm b}$ : Numerical apertures of the contact interactions 'a' and 'b', respectively. -
$\Lambda_1,\Lambda_2,\Lambda_3$ : The standard 2-by-2 Pauli matrices. -
$\Lambda_+,\Lambda_-$ : The raising/lowering Pauli matrices defined by$\Lambda_\pm=(\Lambda_1\pm\mathrm{i}\Lambda_2)/2$ .
Once the matrix transport equation is solved for
where
The prime refers to derivative with respect to
for arbitrarily small
This program was developed by David Gaspard (Institut Langevin, ESPCI Paris, PSL University, CNRS) mainly in July 2024 for the preparation of the papers [1, 2]. This research has been supported by the ANR project MARS_light under reference ANR-19-CE30-0026 and by the program "Investissements d'Avenir" launched by the French Government.
The source files can be downloaded using the git clone command:
git clone https://github.com/<name_of_repository>.git
To compile the program, call the make utility in the root directory:
make all
The program has the following dependencies:
- The
gfortrancompiler, or any other compiler compliant with the Fortran 2008 standard and providing support for OpenMP. - The LAPACK Library.
- The
mkdircommand is called to create subdirectories to store the output data. - Python 3 scripts are called to generate the PGFPlots codes for the plots.
- The LaTeX compiler
pdflatexwith the PGFPlots package is called to compile the plots.
To call the program, enter the following command:
ebsolve settings.nml
The ebsolve executable reads and executes the instructions given by the configuration file settings.nml.
This file contains several Fortran namelists containing the simulations parameters.
These namelists are described in details below. See also the settings.nml file provided with the program.
The only entry in this namelist is task which specifies the task to be accomplished or the quantity to compute.
The available tasks are:
distrib: Computes the transmission eigenvalue distribution. See the namelists below.fields: Computes the matrix fields. See the namelists below.
This namelist specifies the physical parameters of the disordered waveguide. The disordered region is assumed to have length
-
modetype: Defines the transverse profile of the waveguide, the shape and the boundary conditions. Eitherperiodicorinfinite. See the namelists below. -
nxdiso: Number of 'x' points on the mesh in the bulk. Should be at least 2. Recommended value isnxdiso=100. -
nxfree: Number of 'x' points on the mesh at one edge. Should be at least 1. Recommended value isnxfree=1fordistribsimulations. -
dscat: Scattering thickness of the disordered region,$L/\ell_{\rm s}$ , where$\ell_{\rm s}$ is the scattering mean free path. -
dabso: Absorption thickness of the disordered region,$L/\ell_{\rm a}$ , where$\ell_{\rm a}$ is the absorption length. -
xa: Position of the contact point$x_{\rm a}$ on the x mesh in units of$L$ . The disordered region is for$x\in[0, 1]$ . -
xb: Position of the contact point$x_{\rm b}$ on the x mesh in units of$L$ . The disordered region is for$x\in[0, 1]$ . -
naper_a: Numerical aperture of the input lead,$m_{\rm a}$ . In 2D, fraction of excited modes. It must be in$[0, 1]$ . -
naper_b: Numerical aperture of the output lead,$m_{\rm b}$ . In 2D, fraction of observed modes. It must be in$[0, 1]$ .
This namelist specifies a waveguide with periodic boundary conditions in the transverse direction (and square cross section).
It must necessarily be defined if the option modetype=periodic is declared.
It is important to note that the finiteness of the waveguide width imposes a quantization of the wavefunction into transverse modes which modifies the matrix transport equation and the expressions of the matrix field and current. See the paper [2] for details about these modifications.
The parameters of this namelist are the following:
-
d: Total number of dimensions of the waveguide. Typically,d=2for a 2D system. -
wol: Width-to-wavelength ratio,$W/\lambda$ , defining the number of modes. In 2D, thresholds of opening of modes occur at integer values ofwol. Therefore, integer values ofwolare forbidden because of division by zero. The standard value of the short paper [1] iswol=50.5.
This namelist specifies an infinite slab (infinitely wide waveguide), and must be defined if the option modetype=infinite is declared.
The integral of the radiance over the direction cosine,
The parameters of this namelist are the following:
-
d: Total number of dimensions of the waveguide. Typically,d=2for a 2D system. -
nmu: Number of$\mu$ points, ideally very large. In the intervalnmu=50..200is generally enough. -
ash: Shift factor of the integration path in the complex$\mu$ plane. Recommended value isash=1.
This namelist specifies the distrib task ordered by the main_settings namelist.
Compute the probability density function of transmission eigenvalues,
The parameters of this namelist are the following:
-
ntm: Number of desired samples for the distribution$\rho(T)$ . Typically, a multiple of the thread number. Recommended value isntm=256. -
tmin: Minimum transmission eigenvalue. This bound is never reached exactly by the Chebyshev nodes. Recommended value istmin=0. -
tmax: Maximum transmission eigenvalue. This bound is never reached exactly by the Chebyshev nodes. Recommended value istmax=1. -
geps: Shift of the$\gamma$ values to avoid being exactly on the real gamma axis. In principle, this value can be very small but nevertheless positive. Recommended value isgeps=1.0e-15. -
nthreads: Number of threads used by OpenMP to parallelize the computations of the distribution points. Recommended value is the number of CPU cores.
This namelist specifies the fields task ordered by the main_settings namelist.
Compute the matrix field,
The parameters of this namelist are the following:
-
tm: Transmission eigenvalue at which the fields are desired. Should be between 0 and 1. -
geps: Shift of the$\gamma$ values to avoid being exactly on the branch cut of the distribution points. In principle, this value can be very small but nevertheless positive. Recommended value isgeps=1.0e-15.
This namelist specifies the settings of the solver of the matrix transport equation, and is thus mandatory.
The iterative procedure to solve the equation is the following:
- Let
$\tilde{\mathsf{Q}}(x)=0$ be the initial ansatz. - Compute the matrix radiance
$\mathsf{g}(\mathbf{\Omega},x)$ by solving the matrix transport equation for each direction$\mathbf{\Omega}$ (or for each waveguide mode). - Compute the new matrix field
$\tilde{\mathsf{Q}}(x)$ from the radiance using the integral over the directions (or the sum over the waveguide modes). The computed matrix field is then mixed with the previous one weighted by the relaxation factor$f_{\rm relax}$ . When$f_{\rm relax}=1$ , this step reduces to a simple fixed-point iteration (seemethod=fpi). - Iterate through steps 2-3 until the relative variations of the
$\tilde{\mathsf{Q}}(x)$ field are small. This iteration is controlled by themaxitandqtolparameters.
The parameters of the solver namelist are:
-
method: Type of iterative method used to solve the matrix transport equation. Eitherfpifor simple fixed-point iteration, orrelaxto use a relaxation factor. Recommended isrelax. -
maxit: Maximum number of iterations to solve the Eilenberger equation. In general,maxit=3000is enough. -
qtol: Tolerance on the relative variation of the$\tilde{\mathsf{Q}}(x)$ field. Typically between1e-14and1e-9. Larger than1e-5is not appropriate because the residual error on$\rho(T)$ will likely be too large. -
frelax: Relaxation factor of the solver, only used withmethod=relax. Generally, frelax is between 0.5 and 1 fordscat<10, but over-relaxation (frelax>1) is likely more appropriate in the far diffusive regime (dscat>10). -
verbose: Verbosity level of the solver (0=Quiet, 1=Verbose). This is useful only for debugging when something goes wrong.
[1] David Gaspard and Arthur Goetschy, Radiant Field Theory: A Transport Approach to Coherent Control of Transmission through Disordered Media, https://arxiv.org/abs/2411.10360.
[2] David Gaspard and Arthur Goetschy, Transmission eigenvalue distribution in disordered media from radiant field theory, https://arxiv.org/abs/2411.10355.
[3] Gert Eilenberger, Transformation of Gorkov's equation for type II superconductors into transport-like equations, Z. Phys. A 214, 195-213 (1968)
[4] Klaus D. Usadel, Generalized Diffusion Equation for Superconducting Alloys, Phys. Rev. Lett. 25, 507-509 (1970)