• R/O
  • HTTP
  • SSH
  • HTTPS

fermisurfer: Commit

fermisurfer Git


Commit MetaInfo

Revisionb182c68f096bba66ddb956463db6ad43a2f42660 (tree)
Zeit2015-09-29 23:04:08
Autormitsuaki1987 <kawamitsuaki@gmai...>
Commitermitsuaki1987

Log Message

Add html manuals

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/doc/manual_en.html
@@ -0,0 +1,477 @@
1+<html>
2+ <head>
3+ <meta http-equiv="Content-Type"
4+ content="text/html; charset=utf-8">
5+ <script type="text/x-mathjax-config">
6+ MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } });
7+ </script>
8+ <script type="text/javascript"
9+ src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
10+ </script>
11+ <meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />
12+
13+ <title>Manual for FermiSurfer</title>
14+
15+ <meta name="description" content="Manual for FermiSurfer">
16+
17+ </head>
18+ <body bgcolor="CCFFCC">
19+
20+ <center><h1>Manual for FermiSurfer</h1></center>
21+ <center><h2>Version 1.4</h2></center>
22+ <center><h2>Mitsuaki Kawamura</h2></center>
23+
24+ <hr>
25+
26+ <h1>Contents</h1>
27+ <p><a href="#introduction">1, Introduction</a></p>
28+ <p><a href="#mit-license">2, MIT License</a></p>
29+ <p><a href="#files-in-this-package">3, Files in this package</a></p>
30+ <p><a href="#install">4, Install</a></p>
31+ <p><a href="#input-file">5, Input file</a></p>
32+ <p><a href="#control-fermisurfer">6, Control FermiSurfer</a></p>
33+ <p><a href="#gallery">7, Gallery</a></p>
34+ <p><a href="#acknowledgment">8, Acknowledgment</a></p>
35+ <p><a href="#contact">9, Contact</a></p>
36+
37+ <hr>
38+
39+ <h1><a name="introduction">1, Introduction</a></h1>
40+
41+ <p>This document is a manual for the Fermi surface drawing program ``Fermi Surfer&quot;.
42+ Fermi Surfer have been developed since 2012 by Mitsuaki Kawamura
43+ (ISSP, The University of Tokyo); it is opened on web at November, 2014.
44+ It draws Fermi surfaces, and plot $k$-depend matrix elements such as
45+ the superconducting gap and orbital character with colors.</p>
46+
47+ <hr><h1><a name="mit-license">2, MIT License</a></h1>
48+
49+ <p>Copyright (c) 2014 Mitsuaki Kawamura</p>
50+ <p>Permission is hereby granted, free of charge,
51+ to any person obtaining a copy of this software and associated documentation files
52+ (the “Software”), to deal in the Software without restriction,
53+ including without limitation the rights to use, copy, modify, merge, publish,
54+ distribute, sublicense, and/or sell copies of the Software,
55+ and to permit persons to whom the Software is furnished to do so,
56+ subject to the following conditions:</p>
57+ <p>The above copyright notice and this permission notice shall be included
58+ in all copies or substantial portions of the Software.</p>
59+ <p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
60+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
61+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
62+ OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
63+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
64+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
65+ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
66+
67+ <hr><h1><a name="files-in-this-package">3, Files in this package</a></h1>
68+
69+ <dl>
70+ <p><code>bin/fermisurfer.exe</code> : Executable for Windows</p>
71+ <p><code>doc/manual_en.pdf</code> : Manual (English)</p>
72+ <p><code>doc/manual_ja.pdf</code> : Manual (Japanese)</p>
73+ <p><code>examples/mgb2_vfz.frmsf</code> : Sample input file</p>
74+ <p><code>src/fermisurfer.c</code> : Source file</p>
75+ <p><code>src/mac.diff</code> : Patch for Mac OSX</p>
76+ <p><code>src/Makefile</code> : Makefile for Linux</p>
77+ <p><code>src/Makefile-mac</code> : Makefile for Mac OSX</p>
78+ </dl>
79+
80+ <hr><h1><a name="install">4, Install</a></h1>
81+
82+ <hr><h2 id="installation-in-linux">4.1, Installation in Linux</h2>
83+
84+ <ol>
85+ <li><p>Install the required package</p>
86+ <ul>
87+ <li><p>For Debian/Ubuntu</p>
88+ <pre><code> $ sudo aptitude install freeglut3-dev
89+ </code></pre></li>
90+ <li><p>For Red Hat Enterprise Linux/CentOS</p>
91+ <pre><code> $ sudo yum install freeglut-devel.x86_64
92+ </code></pre></li>
93+ </ul></li>
94+ <li><p>Make</p>
95+ <pre><code>
96+$ cd ./src
97+$ make fermisurfer
98+$ make install
99+ </code></pre>
100+ </li>
101+ </ol>
102+ <p>Then a binary file <code>fermisurfer</code> is generated and put
103+ in <code>/usr/local/bin/</code>.</p>
104+
105+ <hr><h2 id="mac-osx-の場合">4.2, For Mac OSX</h2>
106+
107+ <ol>
108+ <li><p>Install Xcode.</p></li>
109+ <li><p>Patch the source code.</p>
110+ <pre><code>
111+$ cd ./src
112+$ patch -p1 &lt; mac.diff
113+ </code></pre>
114+ </li>
115+ <li><p>Make.</p>
116+ <pre><code>
117+$ make -f Makefile-mac fermisurfer
118+$ make -f Makefile-mac install
119+ </code></pre>
120+ <p>Then a binary file <code>fermisurfer</code> is generated and put
121+ in <code>/usr/local/bin/</code>.</p></li>
122+ </ol>
123+
124+ <hr><h2 id="installation-in-windows">4.3, Installation in Windows</h2>
125+
126+ <ol>
127+ <li><p>Download the <code>zip</code> file which contains <code>freeglut.dll</code>
128+ from “freeglut Windows Development Library” site</p>
129+ <pre><code>
130+http://www.transmissionzero.co.uk/software/freeglut-devel/
131+ </code></pre>
132+ <p>(in “freeglut MSVC package” item). Then, <code>unzip</code> it.</p></li>
133+ <li><p>copy <code>.\bin\freeglut.dll</code> to the folder
134+ which contains <code>fermisurfer.exe</code> (<code>bin</code>).
135+ (You should not use <code>.\bin\x64\freeglut.dll</code>)</p></li>
136+ </ol>
137+
138+ <hr><h1><a name="input-file">5, Input file</a></h1>
139+
140+ <hr><h2 id="input-file-format">5.1, input-file format</h2>
141+
142+ <p>You have to prepare following data:</p>
143+ <ul>
144+ <li><p>The number of $k$ grid (three direction)</p></li>
145+ <li><p>Reciprocal lattice vectors</p></li>
146+ <li><p>The number of bands</p></li>
147+ <li><p>The orbital energy at each band and $k$ (We call it “energy”) .</p></li>
148+ <li><p>Variables that you want to plot with color (We call it “matrix elements”).</p></li>
149+ </ul>
150+ <p>This program supports two kind of uniform $k$ grid,
151+ a grid (${\rm \Gamma}$ centered) and grid with a half-grid shift.
152+ The latter is used when the matrix element becomes singular at ${\rm \Gamma}$.</p>
153+ <p>The input file is as follows (<code>mgb2_vfz.fs</code>):</p>
154+ <pre><code>
155+40 40 36 (1)
156+0 (2)
157+3 (3)
158+1.0000000 0.57735026 -0.0000000 (4)
159+0.0000000 1.1547005 0.0000000 (5)
160+0.0000000 -0.0000000 0.87206507 (6)
161+2.91340202E-02 (7)
162+2.93242838E-02
163+2.98905596E-02
164+3.08193434E-02
165+:
166+:
167+0.14393796
168+0.12800488
169+0.0000000 (8)
170+0.36269817
171+0.71675694
172+1.0535113
173+1.3644149
174+:
175+:
176+-26.409407
177+-19.318560
178+-10.315671
179+ </code></pre>
180+ <ol>
181+ <li><p>The $k$ point grid</p></li>
182+ <li><p>0 for ${\rm \Gamma}$ centered grid. 1 for shifted grid.</p></li>
183+ <li><p>The number of bands</p></li>
184+ <li><p>Reciprocal lattice vector 1 (arbitrary unit)</p></li>
185+ <li><p>Reciprocal lattice vector 2</p></li>
186+ <li><p>Reciprocal lattice vector 3</p></li>
187+ <li><p>Energy</p></li>
188+ <li><p>Matrix elements</p></li>
189+ </ol>
190+
191+ <hr><h2 id="how-to-produce-the-input-file-in-c-and-fortran-programs">
192+ 5.2, How to produce the input file in C and fortran programs</h2>
193+
194+ <p>fortran</p>
195+ <pre><code>
196+ real(4) :: bvec1(3), bvec2(3), bvec3(3) ! Resiplocal lattice vector
197+ integer :: nk1, nk2, nk3 ! k-grid of each direction
198+ integer :: ishift ! 1 for shifted grid, 0 for unshifted grid.
199+ integer :: nbnd ! The number of bands
200+ real(4) :: eig(nk3,nk2,nk1,nbnd) ! energy
201+ real(4) :: x(nk3,nk2,nk1,nbnd) ! matrix element
202+
203+ integer :: ik1, ik2, ik3, ibnd, fo
204+
205+ open(fo, file = &quot;sample.fs&quot;)
206+ write(fo,*) nk1, nk2, nk3
207+ write(fo,*) ishift
208+ write(fo,*) nbnd
209+ write(fo,*) real(bvec1(1:3))
210+ write(fo,*) real(bvec2(1:3))
211+ write(fo,*) real(bvec3(1:3))
212+ do ibnd = 1, nbnd
213+ do ik1 = 1, nk1
214+ do ik2 = 1, nk2
215+ do ik3 = 1, nk3
216+ write(fo,*) real(eig(ik3,ik2,ik1,ibnd))
217+ end do
218+ end do
219+ end do
220+ end do
221+ do ibnd = 1, nbnd
222+ do ik1 = 1, nk1
223+ do ik2 = 1, nk2
224+ do ik3 = 1, nk3
225+ write(fo,*) real(x(ik3,ik2,ik1,ibnd))
226+ end do
227+ end do
228+ end do
229+ end do
230+ close(fo)
231+ </code></pre>
232+ <p>C</p>
233+ <pre><code>
234+ float bvec1[3], bvec2[3], bvec3[3]; /*Resiplocal lattice vector*/
235+ int nk1, nk2, nk3; /*k-grid of each direction*/
236+ int ishift; /*1 for shifted grid, 0 for unshifted grid.*/
237+ int nbnd; /*The number of bands*/
238+ float eig[nbnd][nk1][nk2][nk3]; /*Energy*/
239+ float x[nbnd][nk1][nk2][nk3]; /*Matrix element*/
240+
241+ FILE* fo;
242+ int ibnd, ik1, ik2, ik3;
243+
244+ fo = fopen(&quot;sample.fs&quot;, &quot;w&quot;);
245+ ierr = fprintf(fo, &quot;%d %d %d&quot;, nk1, nk2, nk3);
246+ ierr = fprintf(fo, &quot;%d, iswitch);
247+ ierr = fprintf(fo, &quot;%d, nbnd);
248+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec1[0], bvec1[1], bvec1[2]);
249+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec2[0], bvec2[1], bvec2[2]);
250+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec3[0], bvec3[1], bvec3[2]);
251+ for (ibnd = 0; ibnd &lt; nbnd; ++ibnd) {
252+ for (ik1 = 0; ik1 &lt; nk1; ++ik1) {
253+ for (ik2 = 0; ik2 &lt; nk2; ++ik2) {
254+ for (ik3 = 0; ik3 &lt; nk3; ++ik3) {
255+ ierr = fprintf(fo, &quot;%e&quot;, eig[ibnd][ik1][ik2][ik3]);
256+ }
257+ }
258+ }
259+ }
260+ for (ibnd = 0; ibnd &lt; nbnd; ++ibnd) {
261+ for (ik1 = 0; ik1 &lt; nk1; ++ik1) {
262+ for (ik2 = 0; ik2 &lt; nk2; ++ik2) {
263+ for (ik3 = 0; ik3 &lt; nk3; ++ik3) {
264+ ierr = fprintf(fo, &quot;%e&quot;, x[ibnd][ik1][ik2][ik3]);
265+ }
266+ }
267+ }
268+ }
269+ fclose(fo);
270+ </code></pre>
271+
272+ <hr><h1><a name="control-fermisurfer">6, Control FermiSurfer</a></h1>
273+
274+ <hr><h2 id="for-linux">6.1, For Linux</h2>
275+
276+ <p>You can launch generated executable as follows:</p>
277+ <pre><code>
278+$ ./fermisurfer mgb2_vfz.fs
279+ </code></pre>
280+ <p>You need a space between the command and input-file name.
281+ (The sample input file <code>mgb2_vfz.fs</code> contains $z$ element
282+ of the Fermi velocity in MgB$_2$.)</p>
283+
284+ <hr><h2 id="for-windows">6.2, For Windows</h2>
285+
286+ <p>Click mouse right button on the input file.
287+ Choose “Open With ...” menu, then choose <code>fermisurfer.exe</code>.</p>
288+ <p>After that, <code>fermisurfer</code> runs as the same whether you use Linux or Windows.
289+ The information from the input file is printed.</p>
290+ <pre><code>
291+##### Brillouin zone informations #####
292+
293+k point grid : 40 40 36
294+k point grid is not shifted
295+# of bands : 3
296+bvec 1 : 1.000000 0.577350 -0.000000
297+bvec 2 : 0.000000 1.154701 0.000000
298+bvec 3 : 0.000000 -0.000000 0.872065
299+
300+# of lines for BZ : 84 (1)
301+
302+##### Max. and Min. of each bands #####
303+
304+Band Eig_Min. Eig_Max Mat_Min Mat_Max
305+1 -0.428153 0.056262 -24.048639 24.048639 (2)
306+2 -0.289572 0.121181 -23.320309 23.320309 (2)
307+3 -0.133566 0.497620 -43.651634 43.651634 (2)
308+
309+##### First Brillouin zone mode #####
310+
311+band # of patchs
312+1 8824 (3)
313+2 29469 (3)
314+3 28315 (3)
315+
316+band # of nodeline
317+1 632 (4)
318+2 1524 (4)
319+3 2268 (4)
320+
321+##### Full color scale #####
322+
323+Max. value : 22.283419 (5)
324+Min. value : -22.283419 (5)
325+ </code></pre>
326+ <ol>
327+ <li><p>The number of lines on the edge of the Brillouin zone.</p></li>
328+ <li><p>The maximum/minimum value of energies and matrix elements in each bands.</p></li>
329+ <li><p>The number of patches (planes that makes Fermi surfaces) in each bands.</p></li>
330+ <li><p>The number of node lines in each band.</p></li>
331+ <li><p>The maximum and the minimum of matrix elements on Fermi surface.
332+ These correspond to the red and the blue; in this case,
333+ the matrix element is -22.283419 in the blue region, and that is 22.283419
334+ in the red region.
335+ [(2) is Max./Min. in whole Brillouin zone.]</p></li>
336+ </ol>
337+ <p>Then, Operations are printed, and Fermi surfaces are drawn (Fig. 1).</p>
338+ <p><img src="figs/start.jpg" align="middle" width="800" alt="" />
339+ Fig. 1: Main view.</p>
340+ <p>The following operations are available:</p>
341+ <ul>
342+ <li><p>Rotation of objects with mouse drag</p></li>
343+ <li><p>Expand and shrink with mouse wheel</p></li>
344+ <li><p>Window re-sizing</p></li>
345+ <li><p>Moving objects with cursor keys</p></li>
346+ <li><p>Opening the menu with mouse right button</p></li>
347+ </ul>
348+ <p>Here, I will explain all menus.</p>
349+
350+ <hr><h2 id="band">6.3, Band</h2>
351+
352+ <p>It makes each band enable/disable (Fig. 2).</p>
353+ <p><img src="figs/band.jpg" align="middle" width="800" alt="" />
354+ Fig. 2: You make each band enable/disable with <code>Band</code> menu.</p>
355+
356+ <hr><h2 id="mouse-drag">6.4, Mouse Drag</h2>
357+
358+ <p>It turns the event of the mouse-left-drag.</p>
359+ <dl>
360+ <p>Rotate(default) : Rotate the figure along the mouse drag.</p>
361+ <p>Scale : Expand/shrink the figure in upward/downward drag.</p>
362+ <p>Translate : Translate the figure along the mouse drag.</p>
363+ </dl>
364+
365+ <hr><h2 id="shift-fermi-energy">6.5, Shift Fermi energy</h2>
366+
367+ <p>It shifts the Fermi energy (= 0 in default) to arbitrary value.
368+ When you use this menu, first, it displays minimum and maximum energy
369+ in the input file and the current Fermi energy;</p>
370+ <pre><code>
371+Min Max E_F
372+-0.428153 0.497620 0.000000
373+Fermi energy shift :
374+ </code></pre>
375+ <p>Then, you should type the new Fermi energy; finally,
376+ the new Fermi surfaces are depicted (Fig. 3).</p>
377+ <p><img src="figs/shift.jpg" align="middle" width="800" alt="" />
378+ Fig. 3: The Fermi energy is set from 0 Ry to 0.1 Ry
379+ with <code>Shift Fermi energy</code> menu</p>
380+
381+ <hr><h2 id="background-color">6.6, Background color</h2>
382+
383+ <p>The background color is toggled between black and white;
384+ the edge of the Brillouin Zone is also toggled between white and black
385+ (Fig. 4).</p>
386+ <p><img src="figs/background.jpg" align="middle" width="800" alt="" />
387+ Fig. 4: The background color is toggled with <code>Background color</code> menu.</p>
388+
389+ <hr><h2 id="color-scale-mode">6.7, Color scale mode</h2>
390+
391+ <p>It turns color pattern on Fermi surfaces (Fig. 5).</p>
392+ <dl>
393+ <p>Auto(default) : It makes blue as the minimum on Fermi surfaces
394+ and red as the maximum on them.</p>
395+ <p>Manual : You can set manually (from standard input)
396+ values corresponding to blue and red.</p>
397+ <p>Uni-color : Fermi surfaces of each band are depicted
398+ with uni-color without relation to the matrix element.</p>
399+ <p>Periodic : It makes periodic color plot enable. When the matrix element varies as
400+ $0$ $\rightarrow$ $\pi/ 3$ $\rightarrow$ $2\pi/ 3$ $\rightarrow$ $\pi$
401+  $\rightarrow$ $4\pi/ 3$ $\rightarrow$ $5\pi/ 3$ $\rightarrow$ $2\pi$,
402+ the color varies as red $\rightarrow$ yellow $\rightarrow$ green
403+ $\rightarrow$ cyan $\rightarrow$ blue $\rightarrow$ magenta $\rightarrow$ red.</p>
404+ </dl>
405+ <p><img src="figs/colorscale.jpg" align="middle" width="800" alt="" />
406+ Fig. 5: <code>Color scale mode</code> menu.</p>
407+
408+ <hr><h2 id="brillouin-zone">6.8, Brillouin zone</h2>
409+
410+ <p>You choose Brillouin-zone type as follows (Fig. 6):</p>
411+ <dl>
412+ <p>First Brillouin Zone : The region surrounded by Bragg’s planes
413+ the nearest to ${\rm \Gamma}$ point.</p>
414+ <p>Primitive Brillouin Zone : A hexahedron whose corner is the reciprocal lattice point.</p>
415+ </dl>
416+ <p><img src="figs/brillouinzone.jpg" align="middle" width="800" alt="" />
417+ Fig. 6: You can change the type of the Brillouin zone
418+ with <code>Brillouin zone</code> menu.</p>
419+
420+ <hr><h2 id="node-line">6.9, Node line</h2>
421+
422+ <p>The line on which the matrix element becomes 0 (we call it node line)
423+ becomes enable/disable (Fig. 7).</p>
424+ <p><img src="figs/nodeline.jpg" align="middle" width="800" alt="" />
425+ Fig. 7: Toggling the node line with <code>Node line</code> menu.</p>
426+
427+ <hr><h2 id="color-bar-onoff">6.10, Color bar On/Off</h2>
428+
429+ <p>The color bar becomes enable/disable (Fig. 8).</p>
430+ <p><img src="figs/colorbar.jpg" align="middle" width="800" alt="" />
431+ Fig. 8: Toggling the color bar with <code>Color bar On/Off</code> menu.</p>
432+
433+ <hr><h2 id="stereogram">6.11, Stereogram</h2>
434+
435+ <p>The stereogram (parallel eyes and cross eyes) becomes enabled/disabled
436+ (Fig. 9).</p>
437+ <dl>
438+ <p>None (Default)</p>
439+ <p>Parallel : Parallel-eyes stereogram</p>
440+ <p>Cross : Cross-eyes stereogram</p>
441+ </dl>
442+ <p><img src="figs/stereogram.jpg" align="middle" width="800" alt="" />
443+ Fig. 9: The stereogram becomes enabled/disabled with <code>Stereogram</code> menu.</p>
444+
445+ <hr><h2 id="tetrahedron">6.12, Tetrahedron</h2>
446+
447+ <p>You change the scheme to divide into tetrahedra (<code>tetra # 1</code> as default).
448+ It is experimental.</p>
449+
450+ <hr><h2 id="exit">6.13, Exit</h2>
451+
452+ <p>This finishes <code>fermisurfer</code>.</p>
453+
454+ <hr><h1><a name="gallery">7, Gallery</a></h1>
455+
456+ <p>Contributions of each Fermi surfaces to the Hall effect in IrO$_2$
457+ (Fig. 10. Provided by Mr. Wataru Sano in Arita group, RIKEN)</p>
458+ <p><img src="figs/iro2.jpg" align="middle" width="800" alt="" />
459+ Fig. 10: Contributions of each Fermi surfaces to the Hall effect</p>
460+
461+ <hr><h1><a name="acknowledgment">8, Acknowledgment</a></h1>
462+
463+ <p>I thank Dr. Yusuke Konishi in ISSP; he performed a test in Mac OSX,
464+ and proposed Makefiles and a patch.</p>
465+
466+ <hr><h1><a name="contact">9, Contact</a></h1>
467+
468+ <p>Please post bag reports and questions to the forum</p>
469+ <pre><code>
470+http://sourceforge.jp/projects/fermisurfer/forums/
471+ </code></pre>
472+ <p>When you want to join us, please contact me as follows.</p>
473+ <p>The Institute of Solid State Physics</p>
474+ <p>Mitsuaki Kawamura</p>
475+ <p><code>mkawamura@issp.u-tokyo.ac.jp</code></p>
476+ </body>
477+</html>
--- /dev/null
+++ b/doc/manual_ja.html
@@ -0,0 +1,517 @@
1+<html>
2+ <head>
3+ <meta http-equiv="Content-Type"
4+ content="text/html; charset=utf-8">
5+ <script type="text/x-mathjax-config">
6+ MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } });
7+ </script>
8+ <script type="text/javascript"
9+ src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
10+ </script>
11+ <meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />
12+
13+ <title>FermiSurfer日本語マニュアル</title>
14+
15+ <meta name="description" content="FermiSurfer日本語マニュアル">
16+
17+ </head>
18+ <body bgcolor="CCFFCC">
19+
20+ <center><h1>FermiSurferマニュアル</h1></center>
21+ <center><h2>バージョン1.4</h2></center>
22+ <center><h2>河村光晶</h2></center>
23+
24+ <hr>
25+
26+ <h1>目次</h1>
27+ <p><a href="#hajimeni">1, はじめに</a></p>
28+ <p><a href="#mitlicense">2, MIT ライセンス</a></p>
29+ <p><a href="#filesinthispackage">3, このパッケージに含まれているファイル</a></p>
30+ <p><a href="#instlation">4, インストール手順</a></p>
31+ <p><a href="#inputfile">5, Input file</a></p>
32+ <p><a href="#controlling">6, 操作方法</a></p>
33+ <p><a href="#garally">7, ギャラリー</a></p>
34+ <p><a href="#acknoledge">8, 謝辞</a></p>
35+ <p><a href="#contacts">9, 問い合わせ先</a></p>
36+
37+ <hr><a name="hajimeni"><h1>1, はじめに</h1></a>
38+
39+ <p>この文書ではFermi面描画ソフト「Fermi Surfer」についての解説を行っています.
40+ Fermi Surferは東京大学の河村光晶 が2012年頃から開発を行っていたもので,
41+ 2014年11月に公開されました.
42+ Fermi面を描画しその上に各種物理量(超伝導ギャップ関数や軌道キャラクターなど)
43+ をカラープロットするソフトウェアです.</p>
44+
45+ <hr>
46+ <a name="mitlicense"><h1>2, MIT ライセンス</h1></a>
47+
48+ <p>Copyright (c) 2014 Mitsuaki Kawamura</p>
49+ <p>以下に定める条件に従い, 本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)
50+ の複製を取得するすべての人に対し, ソフトウェアを無制限に扱うことを無償で許可します.
51+ これには, ソフトウェアの複製を使用, 複写, 変更, 結合, 掲載, 頒布, サブライセンス,
52+ および/または販売する権利,
53+ およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます. </p>
54+ <p>上記の著作権表示および本許諾表示を,
55+ ソフトウェアのすべての複製または重要な部分に記載するものとします. </p>
56+ <p>ソフトウェアは「現状のまま」で, 明示であるか暗黙であるかを問わず,
57+ 何らの保証もなく提供されます.
58+ ここでいう保証とは, 商品性, 特定の目的への適合性,
59+ および権利非侵害についての保証も含みますが, それに限定されるものではありません.
60+ 作者または著作権者は, 契約行為, 不法行為, またはそれ以外であろうと,
61+ ソフトウェアに起因または関連し,
62+ あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求, 損害,
63+ その他の義務について何らの責任も負わないものとします. </p>
64+
65+ <hr>
66+ <a name="filesinthispackage"><h1>3, このパッケージに含まれているファイル</h1></a>
67+
68+ <dl>
69+ <p><code>bin/fermisurfer.exe</code> : Windows用実行ファイル</p>
70+ <p><code>doc/manual_en.pdf</code> : マニュアル(英語)</p>
71+ <p><code>doc/manual_ja.pdf</code> : マニュアル(日本語)</p>
72+ <p><code>examples/mgb2_vfz.frmsf</code> : サンプル入力ファイル</p>
73+ <p><code>src/fermisurfer.c</code> : ソースファイル</p>
74+ <p><code>src/mac.diff</code> : Mac OSX用 パッチ</p>
75+ <p><code>src/Makefile</code> : Linux用 Makefile</p>
76+ <p><code>src/Makefile-mac</code> : Mac OSX用 Makefile</p>
77+ </dl>
78+
79+ <hr><a name="instlation"><h1>4, インストール手順</h1></a>
80+
81+ <hr><h2>4.1, Linuxの場合</h2>
82+
83+ <ol>
84+ <li><p>必要なパッケージをインストール(既にパッケージが入っている場合は何も起こりません. )</p>
85+ <ul>
86+ <li><p>Debian/Ubuntu 等</p>
87+ <pre><code>
88+$ sudo aptitude install freeglut3-dev
89+ </code></pre>
90+ </li>
91+ <li><p>Red Hat Enterprise Linux/CentOS 等</p>
92+ <pre><code>
93+$ sudo yum install freeglut-devel.x86_64
94+ </code></pre>
95+ </li>
96+ </ul></li>
97+ <li><p>メイク</p>
98+ <pre><code>
99+$ cd ./src
100+$ make fermisurfer
101+$ make install
102+ </code></pre>
103+ </li>
104+ </ol>
105+ <p>以上で実行可能ファイル <code>fermisurfer</code> が作られ,
106+ <code>/usr/local/bin/</code>にコピーされます.</p>
107+
108+ <hr><h2>4.2, Mac OSX の場合</h2>
109+
110+ <ol>
111+ <li><p>Xcodeをあらかじめインストールしておく</p></li>
112+ <li><p>ソースコードにパッチを当てる</p>
113+ <pre><code>
114+$ cd ./src
115+$ patch -p1 &lt; mac.diff
116+ </code></pre>
117+ </li>
118+ <li><p>メイク</p>
119+ <pre><code>
120+$ make -f Makefile-mac fermisurfer
121+$ make -f Makefile-mac install
122+ </code></pre>
123+ </li>
124+ </ol>
125+ <p>以上で実行可能ファイル <code>fermisurfer</code> が作られ,
126+ <code>/usr/local/bin/</code>にコピーされます.</p>
127+
128+ <hr><h2>4.3, Windowsの場合</h2>
129+
130+ <ol>
131+ <li><p>freeglutWindows Development Libraryのサイト</p>
132+ <pre><code>
133+http://www.transmissionzero.co.uk/software/freeglut-devel/
134+ </code></pre>
135+ <p>内の「freeglut MSVC package」という項目から <code>freeglut.dll</code>を含む
136+ <code>zip</code>ファイルを ダウンロードし, 展開する.</p></li>
137+ <li><p>展開したフォルダ内の<code>bin</code>というフォルダに入っている,
138+ <code>freeglut.dll</code>を<code>fermisurfer.exe</code>
139+ のあるフォルダ(<code>bin</code>)にコピーする.</p>
140+ <p>(注) <code>bin\x64\</code>にも<code>freeglut.dll</code>があるが,
141+ そちらは使わない.</p></li>
142+ <li><p><code>fermisurfer.exe</code>と<code>freeglut.dll</code>は
143+ 常に同じフォルダにおいておくこと.</p></li>
144+ </ol>
145+
146+ <hr><a name="inputfile"><h1>5, Input file</h1></a>
147+
148+
149+ <hr><h2>5.1, input fileの書式</h2>
150+
151+ <p>用意するデータは,</p>
152+ <ul>
153+ <li><p>Brillouin領域分割数(3方向)</p></li>
154+ <li><p>逆格子ベクトル</p></li>
155+ <li><p>バンド本数</p></li>
156+ <li><p>軌道固有値(以下エネルギーと呼びます)の各バンド,
157+ $k$グリッド点での値</p></li>
158+ <li><p>カラープロットしたい物理量(以下物理量と呼びます)の各バンド,
159+ $k$グリッド点での値</p></li>
160+ </ul>
161+ <p>です.</p>
162+ <p>※ $k$グリッドの取り方
163+ $k$点の取り方として,
164+ ${\rm \Gamma}$点を含むグリッドと,
165+ ${\rm \Gamma}$点から半グリッド分だけずらしたグリッド
166+ の二つに対応しています.
167+ 後者はプロットしたい物理量が${\rm \Gamma}$点で特異的になっている
168+ 場合等に使われる事を想定しています.</p>
169+ <p>上記データを次のとおりの書式で並べます(サンプルファイル
170+ <code>mgb2_vfz.frmsf</code>の中身).</p>
171+ <pre><code>
172+40 40 36 (1)
173+0 (2)
174+3 (3)
175+1.0000000 0.57735026 -0.0000000 (4)
176+0.0000000 1.1547005 0.0000000 (5)
177+0.0000000 -0.0000000 0.87206507 (6)
178+2.91340202E-02 (7)
179+2.93242838E-02
180+2.98905596E-02
181+3.08193434E-02
182+:
183+:
184+0.14393796
185+0.12800488
186+0.0000000 (8)
187+0.36269817
188+0.71675694
189+1.0535113
190+1.3644149
191+:
192+:
193+-26.409407
194+-19.318560
195+-10.315671
196+ </code></pre>
197+ <ol>
198+ <li><p>$k$グリッド数</p></li>
199+ <li><p>${\rm \Gamma}$点を含むグリッド
200+ (含まないグリッドでは1とする)</p></li>
201+ <li><p>バンド本数</p></li>
202+ <li><p>逆格子ベクトル1 (任意単位)</p></li>
203+ <li><p>逆格子ベクトル2</p></li>
204+ <li><p>逆格子ベクトル3</p></li>
205+ <li><p>エネルギー (並び順は下記参照)</p></li>
206+ <li><p>物理量 (並び順は下記参照)</p></li>
207+ </ol>
208+
209+ <hr><h2>5.2, C/fortranでの入力ファイルの書き出し方</h2>
210+
211+ <p>・fortran</p>
212+ <pre><code>
213+ real(4) :: bvec1(3), bvec2(3), bvec3(3) !逆格子ベクトル
214+ integer :: nk1, nk2, nk3 !各逆格子ベクトルの方向の分割数
215+ integer :: ishift !グリットをシフトさせるか(=1)否か(=0)
216+ integer :: nbnd !バンド数
217+ real(4) :: eig(nk3,nk2,nk1,nbnd) !エネルギー
218+ real(4) :: x(nk3,nk2,nk1,nbnd) !物理量
219+
220+ integer :: ik1, ik2, ik3, ibnd, fo
221+
222+ open(fo, file = “sample.frmsf”)
223+ write(fo,*) nk1, nk2, nk3
224+ write(fo,*) ishift
225+ write(fo,*) nbnd
226+ write(fo,*) real(bvec1(1:3))
227+ write(fo,*) real(bvec2(1:3))
228+ write(fo,*) real(bvec3(1:3))
229+ do ibnd = 1, nbnd
230+ do ik1 = 1, nk1
231+ do ik2 = 1, nk2
232+ do ik3 = 1, nk3
233+ write(fo,*) real(eig(ik3,ik2,ik1,ibnd))
234+ end do
235+ end do
236+ end do
237+ end do
238+ do ibnd = 1, nbnd
239+ do ik1 = 1, nk1
240+ do ik2 = 1, nk2
241+ do ik3 = 1, nk3
242+ write(fo,*) real(x(ik3,ik2,ik1,ibnd))
243+ end do
244+ end do
245+ end do
246+ end do
247+ close(fo)
248+ </code></pre>
249+ <p>・C言語</p>
250+ <pre><code>
251+ float bvec1[3], bvec2[3], bvec3[3]; /*逆格子ベクトル*/
252+ int nk1, nk2, nk3; /*各逆格子ベクトルの方向の分割数*/
253+ int ishift; /*グリットをシフトさせるか(=1)否か(=0)*/
254+ int nbnd; /*バンド数*/
255+ float eig[nbnd][nk1][nk2][nk3]; /*エネルギー*/
256+ float x[nbnd][nk1][nk2][nk3]; /*物理量*/
257+
258+ FILE* fo;
259+ int ibnd, ik1, ik2, ik3;
260+
261+ fo = fopen(“sample.frmsf”, “w”);
262+ ierr = fprintf(fo, &quot;%d %d %d&quot;, nk1, nk2, nk3);
263+ ierr = fprintf(fo, &quot;%d, iswitch);
264+ ierr = fprintf(fo, &quot;%d, nbnd);
265+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec1[0], bvec1[1], bvec1[2]);
266+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec2[0], bvec2[1], bvec2[2]);
267+ ierr = fprintf(fp, &quot;%e %e %e&quot;, bvec3[0], bvec3[1], bvec3[2]);
268+ for (ibnd = 0; ibnd &lt; nbnd; ++ibnd) {
269+ for (ik1 = 0; ik1 &lt; nk1; ++ik1) {
270+ for (ik2 = 0; ik2 &lt; nk2; ++ik2) {
271+ for (ik3 = 0; ik3 &lt; nk3; ++ik3) {
272+ ierr = fprintf(fo, &quot;%e&quot;, eig[ibnd][ik1][ik2][ik3]);
273+ }
274+ }
275+ }
276+ }
277+ for (ibnd = 0; ibnd &lt; nbnd; ++ibnd) {
278+ for (ik1 = 0; ik1 &lt; nk1; ++ik1) {
279+ for (ik2 = 0; ik2 &lt; nk2; ++ik2) {
280+ for (ik3 = 0; ik3 &lt; nk3; ++ik3) {
281+ ierr = fprintf(fo, &quot;%e&quot;, x[ibnd][ik1][ik2][ik3]);
282+ }
283+ }
284+ }
285+ }
286+ fclose(fo);
287+ </code></pre>
288+
289+ <hr><a name="controlling"><h1>6, 操作方法</h1></a>
290+
291+ <hr><h2>6.1, Linuxの場合</h2>
292+
293+ <p>作成した実行可能ファイル<code>fermisurfer</code>にパスが通っている状態で</p>
294+ <pre><code>
295+$ fermisurfer mgb2_vfz.frmsf
296+ </code></pre>
297+ <p>とコマンド, スペース, 入力ファイル名とタイプします.
298+ (サンプルファイルの中身はMgB$_2$
299+ のFermi速度の$z$方向成分です. )</p>
300+
301+ <hr><h2>6.2, Windowsの場合</h2>
302+
303+ <p>入力ファイル(この場合は<code>mgb2_vfz.frmsf</code>)を右クリックし,
304+ メニューから「プログラムから開く」を選択し,
305+ 実行ファイルを<code>fermisurfer.exe</code>に設定してください.</p>
306+ <p>このあとはLinux, Windows共通です. <code>fermisurfer</code>が起動すると,
307+ まずファイルから読み取った情報が出力されます.</p>
308+ <pre><code>
309+##### Brillouin zone informations #####
310+
311+k point grid : 40 40 36
312+k point grid is not shifted
313+# of bands : 3
314+bvec 1 : 1.000000 0.577350 -0.000000
315+bvec 2 : 0.000000 1.154701 0.000000
316+bvec 3 : 0.000000 -0.000000 0.872065
317+
318+# of lines for BZ : 84 (1)
319+
320+##### Max. and Min. of each bands #####
321+
322+Band Eig_Min. Eig_Max Mat_Min Mat_Max
323+1 -0.428153 0.056262 -24.048639 24.048639 (2)
324+2 -0.289572 0.121181 -23.320309 23.320309 (2)
325+3 -0.133566 0.497620 -43.651634 43.651634 (2)
326+
327+##### First Brillouin zone mode #####
328+
329+band # of patchs
330+1 8824 (3)
331+2 29469 (3)
332+3 28315 (3)
333+
334+band # of nodeline
335+1 632 (4)
336+2 1524 (4)
337+3 2268 (4)
338+
339+##### Full color scale #####
340+
341+Max. value : 22.283419 (5)
342+Min. value : -22.283419 (5)
343+ </code></pre>
344+ <ol>
345+ <li><p>Brillouin領域の境界を表示する線の数.</p></li>
346+ <li><p>それぞれのバンドにおけるエネルギーと物理量の最小値・最大値.</p></li>
347+ <li><p>それぞれのバンドにおけるパッチ(Fermi面を構成する平面)の数.</p></li>
348+ <li><p>それぞれのバンドにおけるnode line (後述)の本数.</p></li>
349+ <li><p>物理量のFermi面における最大値と最小値. この数字がカラーバーの最大・最小に対応します.
350+ 下の例では一番青いところが-22.283419, 一番赤いところが22.283419となります.
351+ (2)で表示されているのはBrillouin領域全体のものです.</p></li>
352+ </ol>
353+ <p>次に操作方法が出力され, Fermi面が描画されます(図1).</p>
354+ <p><img src="figs/start.jpg" align="middle" width="800" alt="初期画面"/>
355+ 図1: Fermisurferを起動した直後の画面.</p>
356+ <ul>
357+ <li><p>マウスのドラッグによる回転が出来ます.</p></li>
358+ <li><p>マウスのホイールを使っての拡大・縮小が出来ます.</p></li>
359+ <li><p>ウィンドウの大きさを変えることもできます.</p></li>
360+ <li><p>カーソルキーを使ってウィンドウ内で上下左右に図を動かせます.</p></li>
361+ <li><p>ウィンドウ内でマウスの右クリックをするとメニューが表示されます.</p></li>
362+ </ul>
363+ <p>次から右クリックで表示されるメニューを説明します.</p>
364+
365+ <hr><h2>6.3, Band</h2>
366+
367+ <p>バンド毎の表示on/offを切り替えます(図2).</p>
368+ <p><img src="figs/band.jpg" align="middle" width="800" alt="" />
369+ 図2: <code>Band</code>メニューで3番目のバンドの表示/非表示を切り替える.</p>
370+
371+ <hr><h2>6.4, Mouse Drag</h2>
372+
373+ <p>マウスの左ボタンドラッグを行った時の動作を変更します.</p>
374+ <dl>
375+ <dt>Rotate(デフォルト)</dt>
376+ <dd><p>ドラッグをした方向に図形を回転させます.</p>
377+ </dd>
378+ <dt>Scale</dt>
379+ <dd><p>上方にドラッグすると図形を拡大, 下方にドラッグすると図形を縮小します.</p>
380+ </dd>
381+ <dt>Translate</dt>
382+ <dd><p>ドラッグした方向に図形を動かします.</p>
383+ </dd>
384+ </dl>
385+
386+ <hr><h2>6.5, Shift Fermi energy</h2>
387+
388+ <p>Fermiエネルギー(デフォルトでは0)を任意の値にずらします.
389+ このメニューを選択すると次のようにインプット中の最小のエネルギー,
390+ 最大のエネルギー, 現在のFermiエネルギーが標準出力として表示されます.</p>
391+ <pre><code>
392+Min Max E_F
393+-0.428153 0.497620 0.000000
394+Fermi energy shift :
395+ </code></pre>
396+ <p>次に新しいFermiエネルギーを入力すると,
397+ Fermi面が再描画されます (図3).</p>
398+ <p><img src="figs/shift.jpg" align="middle" width="800" alt="" />
399+ 図3: <code>Shift Fermi energy</code>メニューで
400+ Fermi エネルギーを0 Ryから0.1 Ryに変える.</p>
401+
402+ <hr><h2>6.6, Background color</h2>
403+
404+ <p>背景色を黒または白に切り替えます.
405+ Brillouin Zoneの枠線も白/黒と切り替わります (図4).</p>
406+ <p><img src="figs/background.jpg" align="middle" width="800" alt="" />
407+ 図4: <code>Background color</code>メニューで背景色を白/黒に切り替える.</p>
408+
409+ <hr><h2>6.7, Color scale mode</h2>
410+
411+ <p>Fermi面の色表示のさせ方を変更します(図5).</p>
412+ <dl>
413+ <dt>Auto(デフォルト)</dt>
414+ <dd><p>カラースケールの範囲をFermi面上での物理量の最小値から最大値までとします.</p>
415+ </dd>
416+ <dt>Manual</dt>
417+ <dd><p>カラースケールの範囲を標準入力から設定します.</p>
418+ </dd>
419+ <dt>Unicolor</dt>
420+ <dd><p>物理量に関係なく, 各バンド毎に単色でFermi面を塗ります.</p>
421+ </dd>
422+ <dt>Periodic</dt>
423+ <dd><p>周期的な量のプロットに用います.
424+ 物理量が 0 $\rightarrow$
425+ $\pi/3$ $\rightarrow$
426+ $2\pi/3$ $\rightarrow$
427+ $\pi$ $\rightarrow$
428+ $4\pi/3$ $\rightarrow$
429+ $5\pi/3$ $\rightarrow$
430+ $2\pi$ と変化するに連れて
431+ 色が赤$\rightarrow$黄$\rightarrow$
432+ 緑$\rightarrow$シアン$\rightarrow$
433+ 青$\rightarrow$ マゼンタ$\rightarrow$
434+ 赤と変わります.</p>
435+ </dd>
436+ </dl>
437+ <p><img src="figs/colorscale.jpg" align="middle" width="800" alt="" />
438+ 図5: <code>Color scale mode</code>メニュー.</p>
439+
440+ <hr><h2>6.8, Brillouin zone</h2>
441+
442+ <p>描画範囲をFirst Brillouin Zone/Primitive Brillouin Zoneと
443+ 切り替える事が出来ます (図6).</p>
444+ <dl>
445+ <dt>Fisrst Brillouin Zone</dt>
446+ <dd><p><span class="math">${\rm \Gamma}$</span>
447+ 点から一番近いBragg面で囲まれた領域</p>
448+ </dd>
449+ <dt>Primitive Brillouine Zone</dt>
450+ <dd><p>逆格子ベクトルを辺とする平行6面体領域</p>
451+ </dd>
452+ </dl>
453+ <p><img src="figs/brillouinzone.jpg" align="middle" width="800" alt="" />
454+ 図6: <code>Brillouin zone</code>メニューでBrillouin領域のとり方を変更する.</p>
455+
456+ <hr><h2>6.9, Node line</h2>
457+
458+ <p>物理量が0となるところに引く線(node line)のOn/Offを切り替えます(図7).</p>
459+ <p><img src="figs/nodeline.jpg" align="middle" width="800" alt="" />
460+ 図7: <code>Node line</code>メニューでnode lineの表示/非表示を切り替える.</p>
461+
462+ <hr><h2>6.10, Color bar On/Off</h2>
463+
464+ <p>カラーバーの表示/非表示を切り替えます(図8).</p>
465+ <p><img src="figs/colorbar.jpg" align="middle" width="800" alt="" />
466+ 図8: <code>Color bar On/Off</code>メニューでカラーバーの表示/非表示を切り替える.</p>
467+
468+ <hr><h2>6.11, Stereogram</h2>
469+
470+ <p>裸眼立体視用の図の表示/非表示を切り替えます(図9).</p>
471+ <dl>
472+ <dt>None (デフォルト)</dt>
473+ <dd><p>立体視を無効にします.</p>
474+ </dd>
475+ <dt>Parallel</dt>
476+ <dd><p>平行法用の図を表示します.</p>
477+ </dd>
478+ <dt>Cross</dt>
479+ <dd><p>交差法用の図を表示します.</p>
480+ </dd>
481+ </dl>
482+ <p><img src="figs/stereogram.jpg" align="middle" width="800" alt="" />
483+ 図9: <code>Stereogram</code>メニューで立体視用画像を表示する.</p>
484+
485+ <hr><h2>6.12, Tetrahedron</h2>
486+
487+ <p>四面体の切り方を変えます(デフォルトは<code>tetra # 1</code>).
488+ 図が綺麗になる可能性がありますが,
489+ 多くの場合は逆に図がギザギザして汚くなるようです.</p>
490+
491+ <hr><h2>6.13, Exit</h2>
492+
493+ <p>Fermi Surferを終了します.</p>
494+
495+ <hr><a name="garally"><h1>7, ギャラリー</h1></a>
496+
497+ <p>IrO$_2$のHall係数に対するFermi面上の各軌道からの寄与 (図10).
498+ 理化学研究所 有田グループ 佐野航氏提供).</p>
499+ <p><img src="figs/iro2.jpg" align="middle" width="800" alt="" />
500+ 図10: IrO$_2$のHall係数に対するFermi面上の各軌道からの寄与.</p>
501+
502+ <hr><a name="acknoledge"><h1>8, 謝辞</h1></a>
503+
504+ <p>東京大学物性研究所 小西優祐氏には,
505+ Mac OSXでの動作チェックおよびMakefile,
506+ パッチの提供をしていただいたことに感謝する.</p>
507+
508+ <hr><a name="contacts"><h1>9, 問い合わせ先</h1></a>
509+
510+ <p>プログラムのバグや質問は以下のフォーラムへご投稿ください.</p>
511+ <pre><code>http://sourceforge.jp/projects/fermisurfer/forums/</code></pre>
512+ <p>開発に参加したい方は以下の連絡先にて受け付けております.</p>
513+ <p>東京大学物性研究所</p>
514+ <p>河村光晶</p>
515+ <p><code>mkawamura@issp.u-tokyo.ac.jp</code></p>
516+ </body>
517+</html>
Show on old repository browser