1 /* Copyright (C) 2008 Atsushi Togo */ 2 /* All rights reserved. */ 3 4 /* This file is part of spglib. */ 5 6 /* Redistribution and use in source and binary forms, with or without */ 7 /* modification, are permitted provided that the following conditions */ 8 /* are met: */ 9 10 /* * Redistributions of source code must retain the above copyright */ 11 /* notice, this list of conditions and the following disclaimer. */ 12 13 /* * Redistributions in binary form must reproduce the above copyright */ 14 /* notice, this list of conditions and the following disclaimer in */ 15 /* the documentation and/or other materials provided with the */ 16 /* distribution. */ 17 18 /* * Neither the name of the phonopy project nor the names of its */ 19 /* contributors may be used to endorse or promote products derived */ 20 /* from this software without specific prior written permission. */ 21 22 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ 23 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ 24 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ 25 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE */ 26 /* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ 27 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, */ 28 /* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ 29 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER */ 30 /* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT */ 31 /* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN */ 32 /* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ 33 /* POSSIBILITY OF SUCH DAMAGE. */ 34 35 #ifndef __primitive_H__ 36 #define __primitive_H__ 37 38 #include "cell.h" 39 #include "mathfunc.h" 40 #include "symmetry.h" 41 42 typedef struct { 43 Cell *cell; 44 int *mapping_table; 45 int size; 46 double tolerance; 47 double angle_tolerance; 48 } Primitive; 49 50 Primitive * prm_alloc_primitive(const int size); 51 void prm_free_primitive(Primitive * primitive); 52 Primitive * prm_get_primitive(const Cell * cell, 53 const double symprec, 54 const double angle_tolerance); 55 Symmetry * prm_get_primitive_symmetry(const Symmetry *symmetry, 56 const double symprec); 57 #endif 58