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 __kpoint_H__ 36 #define __kpoint_H__ 37 38 #include "mathfunc.h" 39 40 int kpt_get_irreducible_reciprocal_mesh(int grid_address[][3], 41 int map[], 42 const int mesh[3], 43 const int is_shift[3], 44 const MatINT *rot_reciprocal); 45 int kpt_get_stabilized_reciprocal_mesh(int grid_address[][3], 46 int map[], 47 const int mesh[3], 48 const int is_shift[3], 49 const int is_time_reversal, 50 const MatINT * rotations, 51 const int num_q, 52 SPGCONST double qpoints[][3]); 53 void kpt_get_grid_points_by_rotations(int rot_grid_points[], 54 const int address_orig[3], 55 const MatINT * rot_reciprocal, 56 const int mesh[3], 57 const int is_shift[3]); 58 void kpt_get_BZ_grid_points_by_rotations(int rot_grid_points[], 59 const int address_orig[3], 60 const MatINT * rot_reciprocal, 61 const int mesh[3], 62 const int is_shift[3], 63 const int bz_map[]); 64 int kpt_relocate_BZ_grid_address(int bz_grid_address[][3], 65 int bz_map[], 66 SPGCONST int grid_address[][3], 67 const int mesh[3], 68 SPGCONST double rec_lattice[3][3], 69 const int is_shift[3]); 70 MatINT *kpt_get_point_group_reciprocal(const MatINT * rotations, 71 const int is_time_reversal); 72 MatINT *kpt_get_point_group_reciprocal_with_q(const MatINT * rot_reciprocal, 73 const double symprec, 74 const int num_q, 75 SPGCONST double qpoints[][3]); 76 77 #endif 78