[ase-users] Find space group

Atz Togo atz.togo at gmail.com
Mon Feb 2 13:36:40 CET 2009


Thank you for your comment.
I made a web page for it.
http://spglib.sourceforge.net/pyspglibForASE/

Togo

On Wed, Jan 28, 2009 at 11:48 PM, Jens Jørgen Mortensen
<jensj at fysik.dtu.dk> wrote:
> On Sat, 2009-01-24 at 19:21 +0900, Atz Togo wrote:
>> Dear ASE users,
>>
>> I made the small code to find space group for ASE Atoms class. I send
>> this e-mail because I wonder if some developer may be interested in
>> space group or crysta symmetry search.
>
> Thanks for the tip!  It would be good to put this information somewhere
> in the ASE web-pages.  If you put the C-wrapper and the information on
> how compile the Python extension on sourceforge, then we can make a link
> to that and put an ASE example in the ASE documentation.
>
> In the example below, you give the positions in scaled coordinates
> (relative to the unit cell), so you must use:
>
> bulk = Atoms(symbols='Si8',
>            cell=[(4,0,0),
>                   (0,4,0),
>                   (0,0,4)],
>             scaled_positions=[(0, 0, 0),
>                        (0, 0.5, 0.5),
>                        (0.5, 0, 0.5),
>                        ...
>
> If your get_spacegroup() function needs scaled coordinates, then you
> should not use atoms.positions - use atoms.get_scaled_positions()
> instead.
>
> Jens Jørgen
>
>> The following example code requires the spglib library
>> (http://spglib.sourceforge.net/) that I made. The usage of an example
>> code is like this.
>>
>> % python example_ase.py
>> Fd -3 m (227)
>>
>> The codes and makefile are written below, and are found in svn
>> repository of spglib, too.
>>
>> ---------python example (example_ase.py)--------------
>> #!/usr/bin/evn python
>>
>> from ase import *
>> import _spglib as spg
>>
>> bulk = Atoms(symbols='Si8',
>>              cell=[(4,0,0),
>>                    (0,4,0),
>>                    (0,0,4)],
>>              positions=[(0, 0, 0),
>>                         (0, 0.5, 0.5),
>>                         (0.5, 0, 0.5),
>>                         (0.5, 0.5, 0),
>>                         (0.25, 0.25, 0.25),
>>                         (0.25, 0.75, 0.75),
>>                         (0.75, 0.25, 0.75),
>>                         (0.75, 0.75, 0.25)],
>>              pbc=True)
>>
>> spg.get_spacegroup(bulk.numbers.size, bulk.cell, bulk.positions,
>> array(bulk.numbers, dtype=int32), 1e-5)
>> ------------------------------
>>
>> --------c-wrapper-----------
>> #include <Python.h>
>> #include <stdio.h>
>> #include <numpy/arrayobject.h>
>> #include <spglib.h>
>>
>> static PyObject * get_spacegroup(PyObject *self, PyObject *args);
>>
>> static PyMethodDef functions[] = {
>>   {"get_spacegroup", get_spacegroup, METH_VARARGS, "Space group finder"},
>>   {NULL, NULL, 0, NULL}
>> };
>>
>> PyMODINIT_FUNC init_spglib(void)
>> {
>>   PyObject* m = Py_InitModule3("_spglib", functions,
>>              "C-extension for spglib\n\n...\n");
>> }
>>
>> static PyObject *get_spacegroup(PyObject *self, PyObject *args)
>> {
>>   int i, j;
>>   int size;
>>   double symprec;
>>   char symbol[21];
>>   PyArrayObject* lattice;
>>   PyArrayObject* position;
>>   PyArrayObject* atom_type;
>>   if (!PyArg_ParseTuple(args, "iOOOd", &size, &lattice, &position,
>> &atom_type, &symprec))
>>     return NULL;
>>
>>   double* lat = (double*)lattice->data;
>>   double* pos = (double*)position->data;
>>   int* typat = (int*)atom_type->data;
>>
>>   i = spg_get_international(symbol, lat, pos, typat, size, symprec);
>>   printf("%s (%d)\n", symbol, i);
>>
>>   Py_RETURN_NONE;
>> }
>> --------------------------
>>
>> -------makefile-----------
>> CC = gcc
>> PYINC = /usr/include/python2.5
>> NUMPYINC = /usr/lib/python2.5/site-packages/numpy/core/include
>>
>> _spglib.so: example.c
>>         $(CC) example.c -g -I$(PYINC) -I$(NUMPYINC) -I$(SPGLIBINC)
>> -L$(SPGLIB) -lsymspg -fpic -shared  -o _spglib.so
>>
>> clean:
>>         rm -f _spglib.so core
>> -------------------------------
>>
>> Best regards,
>>
>> --
>> Atsushi Togo
>> Department of Materials Science and Engineering
>> Kyoto University
>> Yoshida-Honmachi, Sakyo-ku, Kyoto 606-8501, Japan
>> E-mail: atz.togo at gmail.com
>> E-mail: atz.togo at gmail.com
>> _______________________________________________
>> ase-users mailing list
>> ase-users at listserv.fysik.dtu.dk
>> https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users
>
>



-- 
--
Atsushi Togo
Department of Materials Science and Engineering
Kyoto University
Yoshida-Honmachi, Sakyo-ku, Kyoto 606-8501, Japan
E-mail: atz.togo at gmail.com
E-mail: atz.togo at gmail.com




More information about the ase-users mailing list