This commit is contained in:
Atsushi Togo 2017-09-09 16:09:19 +02:00
commit 2472f2d1aa
6 changed files with 99 additions and 2 deletions

View File

@ -412,6 +412,8 @@ No log is shown.
Crystal symmetry
-----------------
.. _tolerance_option:
``--tolerance``
~~~~~~~~~~~~~~~
@ -422,6 +424,8 @@ crystal structure. The default value is 1e-5.
% phonopy --tolerance=1e-3
.. _symmetry_option:
``--symmetry``
~~~~~~~~~~~~~~

View File

@ -6,6 +6,7 @@ Documentation
:maxdepth: 1
install
symmetry
Tutorial <procedure>
workflow
examples

View File

@ -69,6 +69,7 @@ Documentation
:maxdepth: 1
install
symmetry
Tutorial <procedure>
workflow
examples

46
doc/symmetry.rst Normal file
View File

@ -0,0 +1,46 @@
Crystal symmetry
=================
Tolerance used in crystal symmetry search
------------------------------------------
Phonon calculation is based on the assumption that atoms have thier
own equilibrium positions where forces on these atoms are zero. In
addition, there is a unit cell that contains these atoms and the unit
cell are repeated in the direct space, i.e., it forms a lattice. The
lattice vectors (or basis vectors) and points of atoms in this unit
cell give the information of the crystal structure.
The crystal structure may have a specific symmetry. The categorization
of the crystal symmetried is achieved by the group theory about
symmetry operations, and there are the 230 different space group
types. In phonopy, the crystal symmetry is automatically analyzed from
the input unit cell structure file that doesn't contain the symmetry
information. Symmetries are searched by attemping possible symmetry
operations to the crsytal structure and cheking if the crystal
structure after the symmetry operation is overlapping to the original
crystal structures. In this analysis, a tolerance of distance is
used to tolerate small deviation of overlapping. This tolerance is
the user's choice. The default value is ``1e-5``.
Often we know the space group type of our crystal. Therefore it is
recommended to check whether the space group type of the input unit
cell is the correct one or not with very tight value such as
``--tolerance=1e-8`` using :ref:`tolerance_option` option. If an input
unit cell structure is naively distorted for which the distortion is
about the same order of the chosen tolerance, inconsistency in
symmetry handling may occur and it can result in a crash of the
calculation or induce a strange calculation result. This can be
checked by changing the tolerance value variously and watching the
obtained space group type. If an input unit cell structure is
distorted, different space group types are found with respect to the
different tolerance values.
The detailed space group information is obtained by
:ref:`symmetry_option` option. As a result of using this option and
the chosen tolerance value, ``BPOSCAR`` file is obtained. This is a
standardized conventional unit cell (see
https://atztogo.github.io/spglib/definition.html#conventions-of-standardized-unit-cell),
and its distortion against the crystal symmetry is very small. It is
recommended to used this structure as the starting point of phonopy
calculation.

View File

@ -131,7 +131,7 @@ def read_aims_output(filename):
N = 0
while l < len(lines):
line = lines[l]
if "Number of atoms" in line:
if "| Number of atoms" in line:
N = int(line.split()[5])
elif "| Unit cell:" in line:
cell = []

View File

@ -559,7 +559,52 @@ character_table = {
'-6': None,
# C6h (23)
'6/m': None,
'6/m':
[{'rotation_list': ('E', 'C6', 'C3', 'C2', 'i', 'S3', 'S6', 'sgh'),
'character_table': {'Ag': ( 1, 1, 1, 1, 1, 1, 1, 1 ),
'Bg': ( 1,-1, 1,-1, 1,-1, 1,-1 ),
'E1g': ( 2, 1,-1,-2, 2, 1,-1,-2 ),
'E2g': ( 2,-1,-1, 2, 2,-1,-1, 2 ),
'Au': ( 1, 1, 1, 1,-1,-1,-1,-1 ),
'Bu': ( 1,-1, 1,-1,-1, 1,-1, 1 ),
'E1u': ( 2, 1,-1,-2,-2,-1, 1, 2 ),
'E2u': ( 2,-1,-1, 2,-2, 1, 1,-2 )},
'mapping_table': {'E' : ((( 1, 0, 0 ),
( 0, 1, 0 ),
( 0, 0, 1 )),),
'C6' : ((( 1,-1, 0 ),
( 1, 0, 0 ),
( 0, 0, 1 )),
(( 0, 1, 0 ),
(-1, 1, 0 ),
( 0, 0, 1 )),),
'C3' : ((( 0,-1, 0 ),
( 1,-1, 0 ),
( 0, 0, 1 )),
((-1, 1, 0 ),
(-1, 0, 0 ),
( 0, 0, 1 )),),
'C2' : (((-1, 0, 0 ),
( 0,-1, 0 ),
( 0, 0, 1 )),),
'i' : (((-1, 0, 0 ),
( 0,-1, 0 ),
( 0, 0,-1 )),),
'S3' : (((-1, 1, 0 ),
(-1, 0, 0 ),
( 0, 0,-1 )),
(( 0,-1, 0 ),
( 1,-1, 0 ),
( 0, 0,-1 )),),
'S6' : ((( 0, 1, 0 ),
(-1, 1, 0 ),
( 0, 0,-1 )),
(( 1,-1, 0 ),
( 1, 0, 0 ),
( 0, 0,-1 )),),
'sgh' : ((( 1, 0, 0 ),
( 0, 1, 0 ),
( 0, 0,-1 )),)}}],
# D6 (24)
'622': None,