CasimirPolder potentials in dielectric nanostructures
In this example, we exploit scuffem's support for periodic geometries to compute CasimirPolder potentials for atoms inside dielectric waveguides. Our basic test example will be the 1D photonic crystal studied in this paper:
We will illustrate the use of scuffem's CasimirPolder
module scuffcaspol by reproducing the results of
Hung et al. for a 1D lattice, then extend the calculation
to the case of a 2D square lattice.
The files for this example may be found in the
share/scuffem/examples/NanobeamCasimirPolder
subdirectory
of your scuffem installation.
gmsh geometry and surface mesh for nanobeam unit cell
The gmsh geometry file UnitCell.geo
describes just the portion of the nanobeam surface that
lies within the unit cell, i.e. the cell that is
infinitely periodically replicated to yield the full
geometry. To produce a discretized surfacemesh
representation of this geometry, we run it through
gmsh:
% gmsh 2 UnitCell.geo
This produces a file named UnitCell.msh
, which
I rename to NanoBeamUnitCell_1006_.msh
because
(a) I will be using it as the unit cell of a beam
geometry, in contrast to a different use I will find
for the same unit cell below; and (b) the mesh has 1006
interior edges (this is the number that defines the
memory and computation time requirements for the
scuffem calculation; it may be found by running
scuffanalyze mesh UnitCell.msh
).
You can open the .msh
file in gmsh to visualize
the unitcell mesh:
% gmsh NanoBeamUnitCell_1006.msh
Note the following:

For 1D periodic geometries in scuffem, the direction of infinite extent must be the x direction.

The sidewalls normal to the and directions are meshed, but the sidewalls normal to the direction are not meshed for this structure, because those surfaces are not interfaces between different dielectrics.

For surfaces that straddle the unitcell boundaries (as is the case here), each triangle edge that lies on the unitcell boundary must have an identical image edge on the opposite side of the unit cell. An easy way to achieve this is to use extrusions in gmsh, as in the
.geo
file above. 
In this case the unit cell is 0.367 m long. This and other geometric parameters can be modified by editing the file
UnitCell.geo
or directly on the gmsh commmand line using thesetnumber
option.
scuffem geometry file for dielectric nanobeam
A scuffem [geometry file]scuffEMGeometries
describing an extended nanobeam consisting of infinitely
many repetitions of the above unit cell filled with
a dielectric material of constant relative permittivity
, is
NanoBeam_1006.scuffgeo
.
The file reads, in its entirety,
LATTICE VECTOR 0.367 0.0 ENDLATTICE OBJECT Nanobeam MESHFILE NanoBeamUnitCell_1006.msh MATERIAL CONST_EPS_4 ENDOBJECT
We can use scuffanalyze to visualize the geometry
described by this .scuffgeo
file:
% scuffanalyze geometry NanoBeam_1006.scuffgeo WriteGMSHFiles Neighbors 3
[The option Neighbors 3
requests that, in addition to the unitcell
geometry, the first 3 periodic images of the unit cell in both the
positive and negative directions (for a total of 5 copies of the
unit cell) be plotted as well. This helps to convey a slightly
better sense of the actual infinitelength structure being
simulated.] This produces the file NanoBeam_1006.pp
, which you
can view in gmsh:
% gmsh NanoBeam_1006.pp
Note that the visualization file produced by scuffanalyze includes extra triangles (visible at the left end of the structure) that are not present in the unitcell geometry. These are called straddlers, and they are added automatically by scuffem to account for surface currents that flow across the unitcell boundaries in periodic geometries.
gmsh geometry and surface mesh for nanoarray unit cell
It's easy to generalize all of this to a geometry
with twodimensional periodicity. The only modification
required to the unitcell mesh is that we have to
remove the sidewalls normal to the direction.
This can be done using the same gmsh geometry
we used above for the nanobeam unit cell, but with
the extra commandline option setnumber LDim 2
on the gmsh command line. (Here LDim
stands
for "lattice dimension".)
% gmsh 2 setnumber LDim 2 UnitCell.geo
This produces a file named UnitCell.msh
, which
I rename to NanoArrayUnitCell_800_.msh.
It looks like this
scuffem geometry file for dielectric nanoarray
A scuffem geometry file
describing a dielectric surface extended in two
dimensions and perforated with a square lattice
of the holes pictured above is
NanoArray_800.scuffgeo
.
The file reads
LATTICE VECTOR 0.367 0.0 VECTOR 0.000 0.845 ENDLATTICE OBJECT NanoArray MESHFILE NanoArrayUnitCell_800.msh MATERIAL CONST_EPS_4 ENDOBJECT
Again we use scuffanalyze to visualize the geometry
described by this .scuffgeo
file:
% scuffanalyze geometry NanoArray_800.scuffgeo WriteGMSHFiles Neighbors 3
Evaluation points for CasimirPolder potentials
For a CasimirPolder calculation we will want to evaluate
the CasimirPolder potential at range of points. We
put the Cartesian coordinates of these points into a
text file named EPFile
, which looks like
this:
0.1835 0.4225 0.500 0.1835 0.4225 0.480 0.1835 0.4225 0.460 ... 0.1835 0.4225 0.480 0.1835 0.4225 0.500
and defines a line of points running through the middle of the hole in the beam unit cell.
To doublecheck that the evaluation points we specify are actually where we expect them to be visavis the meshed surfaces in our problem, we can ask scuffanalyze to plot the evaluation points together with the unitcell geometry:
% scuffanalyze geometry NanoBeam_1006.scuffgeo EPFile EPFile WriteGMSHFiles
This confirms that our EPFile
describes a line of evaluation
points running through the middle of the hole in the beam
structure, as desired.
Setting up the CasimirPolder calculation
To compute the CasimirPolder potential on, say, a rubidium atom at the above evaluation points for the 1D and 2D extended structures, we now say simply
% scuffcaspol geometry NanoBeam_1006.scuffgeo EPFile EPFile Atom Rubidium
and/or
% scuffcaspol geometry NanoArray_800.scuffgeo EPFile EPFile Atom Rubidium
These calculations will produce files named NanoBeam_1006.out
and
NanoArray_800.out
tabulating the CasimirPolder potential
experience by the rubidium atom at each of the specified evaluation
points.
For more information on scuffcaspol, see the old scuffcaspol documentation, which is thorough and uptodate (though it does not cover CP calculations in extended geometries) despite having not yet been ported from its previous format.