-
Notifications
You must be signed in to change notification settings - Fork 33
/
index.html
172 lines (159 loc) · 15.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!DOCTYPE html>
<html>
<head>
<title>TSS Physics - Home</title>
<!-- META TAGS about the Website-->
<meta name="author" content="Henrique Miranda, Raoul Weber">
<meta name="copyright" content="2015 Theoretical Solid-State Physics Group of University of Luxembourg">
<meta http-equiv="content-language" content="en">
<meta name="title" content="Theoretical Solid-State Physics">
<meta name="description" content="Interactive website for the visualization of phonons (lattice vibrations).">
<meta name="keywords" content="University of Luxembourg, theoretical solid-state physics, phonons, lattice vibrations, visualization of phonons, phonon dispersion">
<meta name="date" content="2014-07-25">
<!-- CSS Design-->
<link href="css/style.css" type="text/css" rel="stylesheet">
<!-- Meta tags symbols -->
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!-- google analytics-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72979639-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<header>
<ul class="navigation">
<li><a href="index.html">Home</a></font></li>
<li><a href="phonon.html">Phonons</a></font></li>
</ul>
</header>
<section>
<h1 id="phonon-website">Phonon website</h1>
<h4 id="visualize-phonon-vibrational-modes">Visualize phonon vibrational modes</h4>
<p>This project aims to provide a simple way to visualize the lattice vibrations of different materials. The temperature of a material is related to the agitation of its atoms. The atoms can move in any of the three cartesian directions. Combining the different possible ways the atoms can vibrate we obtain the eigenvectors. Each mode has associated a frequency of vibration that is related with the forces between the atoms.</p>
<h1 id="how-to-use">How to use?</h1>
<p>In the phonon section you can click on any point in the phonon dispersion and see an animation of how the atoms vibrate according to that particular mode. By default you can visualize the phonon dispersion of a few selected materials we calculated plus the ones calculated by A. Togo for <a href="http://phonondb.mtl.kyoto-u.ac.jp/">phonodb</a>. If you want to see your own calculations, we currently support phonon calculations from <code>Abinit</code>, <code>Quantum Espresso</code> and <code>phononpy</code>.</p>
<h2 id="phonopy">phonopy</h2>
<p>You can visualize your own <code>phonopy</code> files by clicking on the <code>Choose files</code> button and selecting a <code>band.yaml</code> file. The following options should be present in the <code>band.conf</code> file:</p>
<pre><code>EIGENVECTORS = .TRUE.
BAND_CONNECTION = .TRUE.
BAND_LABELS = Gamma M K
BAND = (x1,y1,z1) (x2,y2,z2) (x3,y3,z3)</code></pre>
<p>This only works with the newer versions of phonopy as new tags were added to ‘band.yaml’ to have information about the atomic positions and the supercell.</p>
<h2 id="abinit">Abinit</h2>
<p>To read a phonon dispersion from <code>Abinit</code> you need python scripts to convert the phonon dispersion data to the internal <code>.json</code> format used by the website.</p>
<p>The recommended way to do so is to use <a href="https://github.com/abinit/abipy">abipy</a>. Once you have generated a <code>DDB</code> file, you can create a JSON file with:</p>
<pre><code>$ abiopen.py mp-149_DDB
In [1]: phbst, phdos = abifile.anaget_phbst_and_phdos_files()
In [2]: phbst.phbands.view_phononwebsite()</code></pre>
<p>If you already have a PHBST.nc netcdf file produced by anaddb you can visualize it with:</p>
<pre><code>$ abiview.py phbands example_PHBST.nc -web</code></pre>
<p>Alternatively you can use the scripts provided in the <a href="https://github.com/henriquemiranda/phononwebsite/">Github</a> page. To install them just do:</p>
<pre><code>$ python setup.py install --user</code></pre>
<p>In the folder where you ran <code>anaddb</code> you will find a netCDF file (if you compiled <code>Abinit</code> with netCDF support) with the name <code>anaddb.out_PHBST.nc</code>. To convert it to <code>.json</code> format just run:</p>
<pre><code>$ read_anaddb_phonon.py anaddb.out_PHBST.nc <name_of_your_material></code></pre>
<p>You can then select the resulting <code>.json</code> file with the <code>Choose files</code> button on the <code>phononwebsite</code>.</p>
<h2 id="quantum-espresso">Quantum Espresso</h2>
<p>To read a Quantum Espresso calculation you need two files <code><prefix>.scf</code> and <code><prefix>.modes</code>. The first one is the input file for <code>pw.x</code> the second one can be generated with <code>dynmat.x</code>. The file that should be used is the one set with the <code>'filout'</code> tag in the dynmat input file as in it the modes are normalized with the atomic masses. After installing the python scripts (same as in the case of an <code>Abinit</code> calculation) you can obtain the <code>.json</code> files:</p>
<pre><code>$ read_qe_phonon.py prefix <name_of_your_material></code></pre>
<p>You can then select the resulting <code>.json</code> file with the <code>Choose files</code> button.</p>
<h2 id="vasp">VASP</h2>
<p>To read a VASP calculation you need the <code>vaspout.h5</code> file containing a phonon dispersion calculation. You can find the instructions of how to compute the phonon dispersion from a supercell calculation in the <a href="https://www.vasp.at/wiki/index.php/Computing_the_phonon_dispersion">VASP wiki</a></p>
<pre><code>$ read_vasp_phonon.py vaspout.h5 <name_of_your_material></code></pre>
<p>You can then select the resulting <code>.json</code> file with the <code>Choose files</code> button.</p>
<h1 id="pages-using-this-visualization-tool">Pages using this visualization tool</h1>
<p>This visualization tool is currently being used in other websites:</p>
<ul>
<li><a href="https://materialsproject.org/" class="uri">https://materialsproject.org/</a></li>
<li><a href="https://www.materialscloud.org/" class="uri">https://www.materialscloud.org/</a></li>
</ul>
<h1 id="features">Features</h1>
<p>You can export a animated <code>.gif</code> with a particular mode using the <code>gif</code> button in the Export movie section.</p>
<p>If you want to share your own data with someone else you can add to the url tags with the following format:</p>
<pre><code>http://henriquemiranda.github.io/phononwebsite/phonon.html?tag1=a&tag2=b</code></pre>
<p>The available tags are:</p>
<pre><code>json = link to a json file
yaml = link to a yaml file
name = name of the material</code></pre>
<p>Here are some examples of what can be added to the website link:</p>
<ul>
<li><a href="http://henriquemiranda.github.io/phononwebsite/phonon.html?yaml=http://henriquemiranda.github.io/phononwebsite/tests/phonopy/band.yaml">?yaml=http://henriquemiranda.github.io/phononwebsite/tests/phonopy/band.yaml</a></li>
<li><a href="http://henriquemiranda.github.io/phononwebsite/phonon.html?json=http://henriquemiranda.github.io/phononwebsite/localdb/graphene/data.json">?json=http://henriquemiranda.github.io/phononwebsite/localdb/graphene/data.json</a></li>
</ul>
<p>You are free to use all the images generated with this website in your publications and presentations as long as you cite this work (a link to the website is enough). For the license terms of the data from <a href="http://phonondb.mtl.kyoto-u.ac.jp/">phonodb</a> please refer to their website.</p>
<p>In polar materials the LO-TO splitting is missing in the phonodb.</p>
<h1 id="modify-the-website">Modify the website</h1>
<p><strong>Change the colors</strong></p>
<p>The default colors of the atoms are the same ones used in <a href="http://jmol.sourceforge.net/">jmol</a>. Currently we don’t provide a web interface to change them. If you still would like to change the colors, you can checkout locally the git repository from <a href="https://github.com/henriquemiranda/phononwebsite/">Github</a>. The colors of the atoms can be changed in <code>atomic_data.js</code> file inside the <code>js/</code> folder. The colors of the bonds and arrows can be changed in <code>vibcrystal.js</code> in the variables <code>this.arrowcolor</code> and <code>this.bondscolor</code> respectively.</p>
<p><strong>Compile and run locally</strong></p>
<p>To bundle the code i.e. join all the javascript files in the src folder into a single javascript module run <code>rollup -c</code>. You can run a http server locally (Mac or Linux) with <code>python -m http.server</code> (python 3) and visit the page on your web browser in the address: <a href="http://localhost:8000">http://localhost:8000</a>.</p>
<h1 id="file-format">File Format</h1>
<p>Here you can find a short description of the internal .json format used to show the phonon dispersions and animations on the website.</p>
<pre><code>name: name of the material that will be displayed on the website (string)
natoms: number of atoms (integer)
lattice: lattice vectors (3x3 float array)
atom_types: atom type for each atom in the system (array strings)
atom_numbers: atom number for each atom in the system (array integers)
formula: chemical formula (string)
repetitions: default value for the repetititions (array 3 integers)
atom_pos_car: atomic positions in cartesian coordinates (Nx3 float array)
atom_pos_red: atomic positions in reduced coordinates (Nx3 float array)
highsym_qpts: list of high symmetry qpoints (Nx3 float arraay)
qpoints: list of q-point in the reciprocal space (Nx3 float array)
distances: list distances between the qpoints (Nq float array)
eigenvalues: eigenvalues in units of cm-1 (Nqx(N\*3))
vectors: eigenvectors (NqxN)
line_breaks: list of tuples with start and end of each segment (Optional)</code></pre>
<h1 id="authors">Authors</h1>
<p>This project is the continuation of the work of Raoul Weber during an internship in the University of Luxembourg for 2 months in the Theoretical Solid State Physics group under the supervision of Ludger Wirtz and technical help from me.</p>
<p>I decided to continue the project by optimizing the implementation, cleaning up the design and replacing JSmol by a self made applet using Three.js and WebGL called VibCrystal. Currently the website works also as a web application which means the user can visualize his own calculations made with <code>phonopy</code>.</p>
<p>My personal webpage:<br />
<a href="http://henriquemiranda.github.io" class="uri">http://henriquemiranda.github.io</a></p>
<p>Contact me:<br />
miranda.henrique at gmail.com</p>
<h1 id="aknowledgments-funding">Aknowledgments & Funding</h1>
<p><a href="http://wwwen.uni.lu/recherche/fstc/physics_and_materials_science_research_unit/research_areas/theoretical_solid_state_physics">Ludger Wirtz</a> for the original idea and important scientific advices. <a href="http://atztogo.github.io">Atsushi Togo</a> the creator of <a href="http://atztogo.github.io/phonopy/">phonopy</a> for providing phonon dispersion data from his <a href="http://phonondb.mtl.kyoto-u.ac.jp/">phonodb</a> phonon database. <a href="http://jpsfs.com/">José Pedro Silva</a> for very helpful advices on technical issues and the best web technologies to use. <a href="https://scholar.google.com/citations?user=EaD98BIAAAAJ&hl=en">Guido Petreto</a> and <a href="https://scholar.google.be/citations?user=kW8FQgkAAAAJ&hl=en">Matteo Giantomassi</a> for many insightful comments, debugging, feature suggestions and the interface with <a href="https://github.com/abinit/abipy">abipy</a>. <script type="text/javascript">
<!--
h='uantwerpen.be';a='@';n='nikolas.garofil';e=n+a+h;
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+'Nikolas Garofil'+'<\/'+'a'+'>');
// -->
</script><noscript>Nikolas Garofil (nikolas.garofil at uantwerpen dot be)</noscript> and <script type="text/javascript">
<!--
h='uantwerpen.be';a='@';n='annelinde.strobbe';e=n+a+h;
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+'Annelinde Strobbe'+'<\/'+'a'+'>');
// -->
</script><noscript>Annelinde Strobbe (annelinde.strobbe at uantwerpen dot be)</noscript> from the for the implementation of the Vesta mode. <a href="https://github.com/jmcastelo">José María Castelo</a> for adding the possibility to change the covalent radii of the atomic species which is used to draw the bonds between the atoms.</p>
<p>VASP Software GmbH (2019-present): <a href="http://www.vasp.at" class="uri">http://www.vasp.at</a></p>
<p><img src="figures/vasp.png" width="150px"></p>
<p>Fonds National de la Recherche Scientifique (2017-2019): <a href="http://www.fnrs.be/" class="uri">http://www.fnrs.be/</a></p>
<p><img src="figures/fnrs.png" width="150px"></p>
<p>Université Catholique de Louvain (2017-2019): <a href="https://uclouvain.be" class="uri">https://uclouvain.be</a></p>
<p><img src="figures/ucl.jpg" width="150px"></p>
<p>Fonds National de la Recherche Luxembourg (2013-2017): <a href="http://www.fnr.lu/" class="uri">http://www.fnr.lu/</a></p>
<p><img src="figures/fnr.jpg" width="300px"></p>
<p>University of Luxembourg (2013-2017): <a href="http://wwwen.uni.lu/" class="uri">http://wwwen.uni.lu/</a></p>
<p><img src="figures/unilu.png" width="150px"></p>
<h1 id="contribute">Contribute</h1>
<p>The project is under development!</p>
<p>You can leave your suggestions and feature requests here:<br />
<a href="https://github.com/henriquemiranda/phononwebsite/issues" class="uri">https://github.com/henriquemiranda/phononwebsite/issues</a></p>
<p>If you would like to see some of your calculations published on this website please contact me.</p>
<h1 id="software-used-for-this-project">Software used for this project</h1>
<ul>
<li>WebGL visualization using <code>Three.js</code>: <a href="http://threejs.org/" class="uri">http://threejs.org/</a></li>
<li>phonon dispersion using <code>highcharts</code>: <a href="http://www.highcharts.com/" class="uri">http://www.highcharts.com/</a></li>
<li>export animation using <code>CCapture.js</code>: <a href="https://github.com/spite/ccapture.js" class="uri">https://github.com/spite/ccapture.js</a></li>
<li>gif animation is uses <code>gif.js</code>: <a href="http://jnordberg.github.io/gif.js/" class="uri">http://jnordberg.github.io/gif.js/</a></li>
<li><code>Abinit</code>: <a href="http://www.abinit.org/" class="uri">http://www.abinit.org/</a></li>
<li><code>Abipy</code>: <a href="https://github.com/abinit/abipy" class="uri">https://github.com/abinit/abipy</a></li>
<li><code>Quantum Espresso</code>: <a href="http://www.quantum-espresso.org/" class="uri">http://www.quantum-espresso.org/</a></li>
<li><code>phonopy</code>: <a href="http://atztogo.github.io/phonopy/" class="uri">http://atztogo.github.io/phonopy/</a></li>
<li><code>VASP</code>: <a href="http://www.vasp.at" class="uri">http://www.vasp.at</a></li>
</ul>
</section>
</body>
</html>