(*^
::[ Information =
"This is a Mathematica Notebook file. It contains ASCII text, and can be
transferred by email, ftp, or other text-file transfer utility. It should
be read or edited using a copy of Mathematica or MathReader. If you
received this as email, use your mail application or copy/paste to save
everything from the line containing (*^ down to the line containing ^*)
into a plain text file. On some systems you may have to give the file a
name ending with ".ma" to allow Mathematica to recognize it as a Notebook.
The line below identifies what version of Mathematica created this file,
but it can be opened using any other version as well.";
FrontEndVersion = "NeXT Mathematica Notebook Front End Version 2.2";
NeXTStandardFontEncoding;
fontset = title, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ;
fontset = subtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ;
fontset = subsubtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, L1, e6, 14, "Times"; ;
fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, L1, a20, 18, "Times"; ;
fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, L1, a15, 14, "Times"; ;
fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, L1, a12, 12, "Times"; ;
fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ;
fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L1, 12, "Courier"; ;
fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ;
fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, L1, 12, "Courier"; ;
fontset = name, inactive, noPageBreakInGroup, nohscroll, preserveAspect, M7, italic, B65535, L1, 10, "Times"; ;
fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, L1, 12, "Times"; ;
fontset = leftheader, 12;
fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, italic, L1, 12, "Times"; ;
fontset = leftfooter, 12;
fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Courier"; ;
fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
paletteColors = 128; automaticGrouping; currentKernel;
]
:[font = title; inactive; preserveAspect; startGroup]
Code for article:
Fermi Surfaces Coloured with the Group Speed to Reveal Critical Points for Singularities of the Density of States
;[s]
2:0,0;18,1;132,-1;
2:1,21,16,Times,0,24,0,0,0;1,21,16,Times,1,24,0,0,0;
:[font = subtitle; inactive; preserveAspect]
by
E.G. Emberly and P.D. Loly
Department of Physics
University of Manitoba
Winnipeg, Manitoba
Canada R3T 2N2
loly@cc.umanitoba.ca
:[font = subsubtitle; inactive; preserveAspect; plain; bold; fontName = "Times"]
Published in
Mathematica in Education and Research
Vol.4 No.1
;[s]
3:0,0;13,1;51,2;62,-1;
3:1,12,9,Times,1,14,0,0,0;1,13,10,Times,3,14,0,0,0;1,12,9,Times,1,14,0,0,0;
:[font = subsubtitle; inactive; preserveAspect]
Copyright 1995 TELOS/Springer-Verlag
:[font = text; inactive; preserveAspect]
The first three commands of this code simply define the necessary equations for generating the fermi surface, with the last command defining a list of the desired energies to be plotted. In order for the surface to be colored with a separate function (i.e. the group speed), a Plot3D command must be used. Because of this, the equation for the fermi surface was solved for z, which yielded an inverse cosine. Mathematica only provides one solution for ArcCos, so only the top of the surface can be plotted.
:[font = text; inactive; preserveAspect]
The following defines the surface function, which depends on kx, ky and also the energy, n.
:[font = input; preserveAspect; fontName = "Times"]
f[n_, kx_, ky_]:=
ArcCos[3 - n - Cos[kx] - Cos[ky]]
:[font = text; inactive; preserveAspect]
This command defines the colour function, with which the surface is to be coloured.
:[font = input; preserveAspect; fontName = "Times"]
colour[n_,kx_,ky_]:=
(Sin[kx]^2 + Sin[ky]^2 + Sin[ f[n, kx, ky] ]^2)^(1/2)
:[font = text; inactive; preserveAspect]
Here is the list of the energies to be plotted.
:[font = input; preserveAspect]
energy={1.5,2,2.5,3.5,4,4.5};
:[font = text; inactive; preserveAspect]
The next section of code generates the graphics array of the six previously defined energies. A Table command is used to generate a list of six plots, one for each energy in the list. In regards to the Hue command, it only takes an arguement which ranges between 0 and 1 (with 0 being red, then going to blue at around .75, and then back to red at 1). It was desired to have the zeros of the group speed being represented by blue and the maximum value of the group speed being represented by red. The function within the Hue command achieves this.
The options that follow are fairly standard, except for perhaps ClipFill. This option causes Mathematica not to render any part of the surface which goes outside the bounding box, or any imaginary result that might be produced by the equation for the surface. By using Partition the graphs are organized into two columns. These are then displayed in a GraphicsArray with the Show command. It was desired to achieve high resolution output for each of the surfaces. This however takes a lot of computation time, and for everyday use, a lower PlotPoint specification may be more practical.
:[font = input; preserveAspect]
graphs1=Table[
Plot3D[
{f[energy[[i]], kx, ky],
Hue[.75(1 - colour[energy[[i]], kx, ky]/Sqrt[3])]},
{kx, -Pi, Pi},{ky, -Pi, Pi},
PlotRange -> {{-Pi,Pi},{-Pi,Pi},{0,Pi}},
Mesh -> False,
PlotPoints -> 250,
ClipFill -> None,
DisplayFunction -> Identity],
{i, 1, 6}];
:[font = input; preserveAspect]
$DefaultFont={"Helvetica",7};
:[font = input; preserveAspect; startGroup]
Show[GraphicsArray[ Partition[graphs1,2] ],
DisplayFunction -> $DisplayFunction]
:[font = output; output; inactive; preserveAspect; endGroup]
The Unformatted text for this cell was not generated.
Use options in the Actions Preferences dialog box to
control when Unformatted text is generated.
;[o]
-GraphicsArray-
:[font = subsection; inactive; preserveAspect; startGroup]
fermi3 code
:[font = input; preserveAspect]
f[energy_,kx_,ky_]:=ArcCos[3-energy-Cos[kx]-Cos[ky]]
:[font = input; preserveAspect]
colour[energy_,kx_,ky_]:=
Sqrt[Sin[kx]^2+Sin[ky]^2+Sin[f[energy,kx,ky]]^2]
:[font = input; preserveAspect; endGroup; endGroup]
Plot3D[{f[3,kx,ky],
Hue[.75(1-colour[3,kx,ky]/Sqrt[3])]},
{kx,-Pi,Pi},{ky,-Pi,Pi},
ClipFill -> None,
Mesh -> False,
PlotPoints -> 180];
^*)