mirror of https://github.com/phonopy/phono3py.git
Tests for bz grid address routine in C-gridsys library and python
This commit is contained in:
parent
a2e4db86be
commit
ece7d519a4
33
c/gridsys.c
33
c/gridsys.c
|
@ -40,10 +40,13 @@
|
|||
#include "bzgrid.h"
|
||||
#include "grgrid.h"
|
||||
#include "lagrid.h"
|
||||
#include "niggli.h"
|
||||
#include "tetrahedron_method.h"
|
||||
#include "triplet.h"
|
||||
#include "triplet_iw.h"
|
||||
|
||||
#define GRIDSYS_NIGGLI_TOLERANCE 1e-5
|
||||
|
||||
void gridsys_get_all_grid_addresses(long (*gr_grid_addresses)[3],
|
||||
const long D_diag[3]) {
|
||||
grg_get_all_grid_addresses(gr_grid_addresses, D_diag);
|
||||
|
@ -126,23 +129,45 @@ long gridsys_get_bz_grid_addresses(long (*bz_grid_addresses)[3], long *bz_map,
|
|||
const long type) {
|
||||
BZGrid *bzgrid;
|
||||
long i, j, size;
|
||||
long inv_Mpr_int[3][3];
|
||||
double inv_Lr[3][3], inv_Mpr[3][3];
|
||||
double niggli_lattice[9];
|
||||
|
||||
if ((bzgrid = (BZGrid *)malloc(sizeof(BZGrid))) == NULL) {
|
||||
warning_print("Memory could not be allocated.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (j = 0; j < 3; j++) {
|
||||
niggli_lattice[i * 3 + j] = rec_lattice[i][j];
|
||||
}
|
||||
}
|
||||
if (!niggli_reduce(niggli_lattice, GRIDSYS_NIGGLI_TOLERANCE)) {
|
||||
return 0;
|
||||
}
|
||||
if (!lagmat_inverse_matrix_d3(inv_Lr, (double(*)[3])niggli_lattice,
|
||||
GRIDSYS_NIGGLI_TOLERANCE)) {
|
||||
return 0;
|
||||
}
|
||||
lagmat_multiply_matrix_d3(inv_Mpr, inv_Lr, rec_lattice);
|
||||
lagmat_cast_matrix_3d_to_3l(inv_Mpr_int, inv_Mpr);
|
||||
// printf("%ld %ld %ld\n", inv_Mpr_int[0][0], inv_Mpr_int[0][1],
|
||||
// inv_Mpr_int[0][2]);
|
||||
// printf("%ld %ld %ld\n", inv_Mpr_int[1][0], inv_Mpr_int[1][1],
|
||||
// inv_Mpr_int[1][2]);
|
||||
// printf("%ld %ld %ld\n", inv_Mpr_int[2][0], inv_Mpr_int[2][1],
|
||||
// inv_Mpr_int[2][2]);
|
||||
|
||||
bzgrid->addresses = bz_grid_addresses;
|
||||
bzgrid->gp_map = bz_map;
|
||||
bzgrid->bzg2grg = bzg2grg;
|
||||
bzgrid->type = type;
|
||||
lagmat_multiply_matrix_l3(bzgrid->Q, inv_Mpr_int, Q);
|
||||
lagmat_copy_matrix_d3(bzgrid->reclat, (double(*)[3])niggli_lattice);
|
||||
for (i = 0; i < 3; i++) {
|
||||
bzgrid->D_diag[i] = D_diag[i];
|
||||
bzgrid->PS[i] = PS[i];
|
||||
for (j = 0; j < 3; j++) {
|
||||
bzgrid->Q[i][j] = Q[i][j];
|
||||
bzgrid->reclat[i][j] = rec_lattice[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
if (bzg_get_bz_grid_addresses(bzgrid)) {
|
||||
|
|
|
@ -604,3 +604,246 @@ TEST(test_gridsys, test_gridsys_get_ir_grid_map_wurtzite) {
|
|||
free(ir_grid_map);
|
||||
ir_grid_map = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief gridsys_get_bz_grid_addresses by FCC
|
||||
* Return BZ grid addresses
|
||||
*/
|
||||
TEST(test_gridsys, test_gridsys_get_bz_grid_addresses_FCC) {
|
||||
long D_diag[3] = {4, 4, 4};
|
||||
long ref_bz_addresses[89][3] = {
|
||||
{0, 0, 0}, {1, 0, 0}, {-2, 0, 0}, {2, 0, 0}, {-1, 0, 0},
|
||||
{0, 1, 0}, {1, 1, 0}, {2, 1, 0}, {-1, 1, 0}, {0, -2, 0},
|
||||
{0, 2, 0}, {1, 2, 0}, {-2, -2, 0}, {2, 2, 0}, {-1, -2, 0},
|
||||
{0, -1, 0}, {1, -1, 0}, {-2, -1, 0}, {-1, -1, 0}, {0, 0, 1},
|
||||
{1, 0, 1}, {2, 0, 1}, {-1, 0, 1}, {0, 1, 1}, {1, 1, 1},
|
||||
{2, 1, 1}, {-1, 1, 1}, {0, 2, 1}, {1, 2, 1}, {2, 2, 1},
|
||||
{-1, -2, 1}, {-1, -2, -3}, {-1, 2, 1}, {3, 2, 1}, {0, -1, 1},
|
||||
{1, -1, 1}, {-2, -1, 1}, {-2, -1, -3}, {2, -1, 1}, {2, 3, 1},
|
||||
{-1, -1, 1}, {0, 0, -2}, {0, 0, 2}, {1, 0, 2}, {-2, 0, -2},
|
||||
{2, 0, 2}, {-1, 0, -2}, {0, 1, 2}, {1, 1, 2}, {2, 1, 2},
|
||||
{-1, 1, -2}, {-1, 1, 2}, {-1, -3, -2}, {3, 1, 2}, {0, -2, -2},
|
||||
{0, 2, 2}, {1, 2, 2}, {-2, -2, -2}, {2, 2, 2}, {-1, -2, -2},
|
||||
{0, -1, -2}, {1, -1, -2}, {1, -1, 2}, {1, 3, 2}, {-3, -1, -2},
|
||||
{-2, -1, -2}, {-1, -1, -2}, {0, 0, -1}, {1, 0, -1}, {-2, 0, -1},
|
||||
{-1, 0, -1}, {0, 1, -1}, {1, 1, -1}, {-2, 1, -1}, {-2, -3, -1},
|
||||
{2, 1, -1}, {2, 1, 3}, {-1, 1, -1}, {0, -2, -1}, {1, -2, -1},
|
||||
{1, 2, -1}, {1, 2, 3}, {-3, -2, -1}, {-2, -2, -1}, {-1, -2, -1},
|
||||
{0, -1, -1}, {1, -1, -1}, {-2, -1, -1}, {-1, -1, -1},
|
||||
};
|
||||
long ref_bz_map[65] = {0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
|
||||
29, 30, 34, 35, 36, 40, 41, 43, 44, 46, 47, 48, 49,
|
||||
50, 54, 56, 57, 59, 60, 61, 65, 66, 67, 68, 69, 70,
|
||||
71, 72, 73, 77, 78, 79, 83, 84, 85, 86, 87, 88, 89};
|
||||
long ref_bzg2grg[89] = {
|
||||
0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27, 27, 27, 28, 29,
|
||||
30, 30, 30, 30, 31, 32, 32, 33, 34, 34, 35, 36, 37, 38, 39, 39, 39, 39,
|
||||
40, 40, 41, 42, 42, 43, 44, 45, 45, 45, 45, 46, 47, 48, 49, 50, 51, 52,
|
||||
53, 54, 54, 54, 54, 55, 56, 57, 57, 57, 57, 58, 59, 60, 61, 62, 63};
|
||||
double rec_lattice[3][3] = {{-1, 1, 1}, {1, -1, 1}, {1, 1, -1}};
|
||||
long PS[3] = {0, 0, 0};
|
||||
long Q[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
|
||||
long bz_grid_addresses[125][3];
|
||||
long bz_map[65];
|
||||
long bzg2grg[125];
|
||||
long bz_size, i, j;
|
||||
|
||||
bz_size = gridsys_get_bz_grid_addresses(bz_grid_addresses, bz_map, bzg2grg,
|
||||
D_diag, Q, PS, rec_lattice, 2);
|
||||
ASSERT_EQ(89, bz_size);
|
||||
for (i = 0; i < 89; i++) {
|
||||
for (j = 0; j < 3; j++) {
|
||||
ASSERT_EQ(ref_bz_addresses[i][j], bz_grid_addresses[i][j]);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 65; i++) {
|
||||
ASSERT_EQ(ref_bz_map[i], bz_map[i]);
|
||||
}
|
||||
for (i = 0; i < 89; i++) {
|
||||
ASSERT_EQ(ref_bzg2grg[i], bzg2grg[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief gridsys_get_bz_grid_addresses by wurtzite (angle 120)
|
||||
* @details Niggli reduction changes (swaps) basis vectors.
|
||||
* Return BZ grid addresses
|
||||
*/
|
||||
TEST(test_gridsys, test_gridsys_get_bz_grid_addresses_wurtzite1) {
|
||||
long ref_bz_addresses[155][3] = {
|
||||
{0, 0, 0}, {0, 1, 0}, {0, 2, 0}, {0, -2, 0},
|
||||
{0, -1, 0}, {0, 0, 1}, {0, 1, 1}, {0, 2, 1},
|
||||
{0, -3, 1}, {0, -2, 1}, {0, -1, 1}, {-4, 0, -18},
|
||||
{0, 0, 2}, {-4, 1, -18}, {0, 1, 2}, {1, 1, 2},
|
||||
{5, 1, 22}, {-4, -3, -18}, {0, -3, 2}, {1, 2, 2},
|
||||
{5, 2, 22}, {-4, -2, -18}, {0, -2, 2}, {-4, -1, -18},
|
||||
{0, -1, 2}, {1, 0, 3}, {1, 1, 3}, {1, 2, 3},
|
||||
{1, 3, 3}, {-4, -2, -17}, {1, -1, 3}, {-4, -1, -17},
|
||||
{1, 0, 4}, {1, 1, 4}, {1, 2, 4}, {1, -2, 4},
|
||||
{1, 3, 4}, {1, -1, 4}, {1, 0, 5}, {1, 1, 5},
|
||||
{1, 2, 5}, {1, -2, 5}, {1, -1, 5}, {-3, 0, -14},
|
||||
{1, 0, 6}, {-3, 1, -14}, {1, 1, 6}, {-3, 2, -14},
|
||||
{1, 2, 6}, {-3, -3, -14}, {1, -3, 6}, {-3, -2, -14},
|
||||
{1, -2, 6}, {-3, -1, -14}, {1, -1, 6}, {-3, 0, -13},
|
||||
{-3, 1, -13}, {2, 1, 7}, {-3, -3, -13}, {2, 2, 7},
|
||||
{-3, -2, -13}, {-3, -1, -13}, {2, 0, 8}, {2, 1, 8},
|
||||
{2, 2, 8}, {2, 3, 8}, {-3, -2, -12}, {2, -1, 8},
|
||||
{-3, -1, -12}, {2, 0, 9}, {2, 1, 9}, {2, 2, 9},
|
||||
{2, -2, 9}, {2, 3, 9}, {2, -1, 9}, {-2, 0, -10},
|
||||
{2, 0, 10}, {-2, 1, -10}, {2, 1, 10}, {-2, 2, -10},
|
||||
{2, 2, 10}, {-2, -2, -10}, {2, -2, 10}, {-2, -1, -10},
|
||||
{2, -1, 10}, {-2, 0, -9}, {-2, 1, -9}, {-2, 2, -9},
|
||||
{-2, -3, -9}, {-2, -2, -9}, {-2, -1, -9}, {-2, 0, -8},
|
||||
{-2, 1, -8}, {3, 1, 12}, {-2, -3, -8}, {3, 2, 12},
|
||||
{-2, -2, -8}, {-2, -1, -8}, {3, 0, 13}, {3, 1, 13},
|
||||
{3, 2, 13}, {3, 3, 13}, {-2, -2, -7}, {3, -1, 13},
|
||||
{-2, -1, -7}, {-1, 0, -6}, {3, 0, 14}, {-1, 1, -6},
|
||||
{3, 1, 14}, {-1, 2, -6}, {3, 2, 14}, {-1, -2, -6},
|
||||
{3, -2, 14}, {-1, 3, -6}, {3, 3, 14}, {-1, -1, -6},
|
||||
{3, -1, 14}, {-1, 0, -5}, {-1, 1, -5}, {-1, 2, -5},
|
||||
{-1, -2, -5}, {-1, -1, -5}, {-1, 0, -4}, {-1, 1, -4},
|
||||
{-1, 2, -4}, {-1, -3, -4}, {-1, -2, -4}, {-1, -1, -4},
|
||||
{-1, 0, -3}, {-1, 1, -3}, {4, 1, 17}, {-1, -3, -3},
|
||||
{4, 2, 17}, {-1, -2, -3}, {-1, -1, -3}, {0, 0, -2},
|
||||
{4, 0, 18}, {0, 1, -2}, {4, 1, 18}, {0, 2, -2},
|
||||
{4, 2, 18}, {0, 3, -2}, {4, 3, 18}, {-5, -2, -22},
|
||||
{-1, -2, -2}, {0, -1, -2}, {4, -1, 18}, {-5, -1, -22},
|
||||
{-1, -1, -2}, {0, 0, -1}, {0, 1, -1}, {0, 2, -1},
|
||||
{0, -2, -1}, {0, 3, -1}, {0, -1, -1}};
|
||||
long ref_bz_map[101] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 17,
|
||||
21, 23, 25, 26, 27, 28, 30, 32, 33, 34, 35, 37, 38,
|
||||
39, 40, 41, 42, 43, 45, 47, 51, 53, 55, 56, 58, 60,
|
||||
61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 74, 75, 77,
|
||||
79, 81, 83, 85, 86, 87, 89, 90, 91, 92, 94, 96, 97,
|
||||
98, 99, 100, 101, 103, 105, 107, 109, 111, 115, 117, 118, 119,
|
||||
120, 121, 122, 123, 124, 126, 127, 128, 129, 131, 133, 134, 135,
|
||||
137, 139, 141, 145, 149, 150, 151, 152, 154, 155};
|
||||
long ref_bzg2grg[155] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11, 11, 12,
|
||||
12, 12, 12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 19, 20, 21, 22, 23,
|
||||
23, 24, 25, 26, 27, 28, 29, 30, 30, 31, 31, 32, 32, 32, 32, 33, 33, 34,
|
||||
34, 35, 36, 36, 37, 37, 38, 39, 40, 41, 42, 43, 43, 44, 44, 45, 46, 47,
|
||||
48, 48, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 56, 57, 57, 58,
|
||||
59, 60, 61, 61, 62, 62, 63, 64, 65, 66, 67, 68, 68, 69, 69, 70, 70, 71,
|
||||
71, 72, 72, 73, 73, 73, 73, 74, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82,
|
||||
83, 84, 85, 86, 86, 87, 87, 88, 89, 90, 90, 91, 91, 92, 92, 93, 93, 93,
|
||||
93, 94, 94, 94, 94, 95, 96, 97, 98, 98, 99};
|
||||
double rec_lattice[3][3] = {
|
||||
{3.111, -1.5555, 0}, {0, 2.694205031173388, 0}, {0, 0, 4.978}};
|
||||
long PS[3] = {0, 0, 0};
|
||||
long D_diag[3] = {1, 5, 20}; // [5, 5, 4]
|
||||
long Q[3][3] = {{-1, 0, 4}, {0, -1, 0}, {-1, 0, 5}};
|
||||
long bz_grid_addresses[180][3];
|
||||
long bz_map[101];
|
||||
long bzg2grg[180];
|
||||
long bz_size, i, j;
|
||||
|
||||
bz_size = gridsys_get_bz_grid_addresses(bz_grid_addresses, bz_map, bzg2grg,
|
||||
D_diag, Q, PS, rec_lattice, 2);
|
||||
ASSERT_EQ(155, bz_size);
|
||||
for (i = 0; i < 155; i++) {
|
||||
for (j = 0; j < 3; j++) {
|
||||
ASSERT_EQ(ref_bz_addresses[i][j], bz_grid_addresses[i][j]);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 101; i++) {
|
||||
ASSERT_EQ(ref_bz_map[i], bz_map[i]);
|
||||
}
|
||||
for (i = 0; i < 155; i++) {
|
||||
ASSERT_EQ(ref_bzg2grg[i], bzg2grg[i]);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief gridsys_get_bz_grid_addresses by wurtzite (angle 60)
|
||||
* @details Niggli reduction doesn't change (swap) basis vectors.
|
||||
* Return BZ grid addresses
|
||||
*/
|
||||
TEST(test_gridsys, test_gridsys_get_bz_grid_addresses_zincblende2) {
|
||||
long ref_bz_addresses[155][3] = {
|
||||
{0, 0, 0}, {0, 1, 0}, {0, 2, 0}, {0, -2, 0},
|
||||
{0, -1, 0}, {0, 0, 1}, {0, 1, 1}, {0, 2, 1},
|
||||
{0, -2, 1}, {0, 3, 1}, {0, -1, 1}, {-4, 0, -18},
|
||||
{0, 0, 2}, {-4, 1, -18}, {0, 1, 2}, {-4, 2, -18},
|
||||
{0, 2, 2}, {-4, 3, -18}, {1, -2, 2}, {0, 3, 2},
|
||||
{5, -2, 22}, {-4, -1, -18}, {1, -1, 2}, {0, -1, 2},
|
||||
{5, -1, 22}, {1, 0, 3}, {1, 1, 3}, {-4, 1, -17},
|
||||
{1, -3, 3}, {-4, 2, -17}, {1, -2, 3}, {1, -1, 3},
|
||||
{1, 0, 4}, {1, 1, 4}, {1, 2, 4}, {1, -3, 4},
|
||||
{1, -2, 4}, {1, -1, 4}, {1, 0, 5}, {1, 1, 5},
|
||||
{1, 2, 5}, {1, -2, 5}, {1, -1, 5}, {-3, 0, -14},
|
||||
{1, 0, 6}, {-3, 1, -14}, {1, 1, 6}, {-3, 2, -14},
|
||||
{1, 2, 6}, {-3, -2, -14}, {-3, 3, -14}, {1, -2, 6},
|
||||
{1, 3, 6}, {-3, -1, -14}, {1, -1, 6}, {-3, 0, -13},
|
||||
{-3, 1, -13}, {-3, 2, -13}, {-3, 3, -13}, {2, -2, 7},
|
||||
{-3, -1, -13}, {2, -1, 7}, {2, 0, 8}, {2, 1, 8},
|
||||
{-3, 1, -12}, {2, -3, 8}, {-3, 2, -12}, {2, -2, 8},
|
||||
{2, -1, 8}, {2, 0, 9}, {2, 1, 9}, {2, 2, 9},
|
||||
{2, -3, 9}, {2, -2, 9}, {2, -1, 9}, {-2, 0, -10},
|
||||
{2, 0, 10}, {-2, 1, -10}, {2, 1, 10}, {-2, 2, -10},
|
||||
{2, 2, 10}, {-2, -2, -10}, {2, -2, 10}, {-2, -1, -10},
|
||||
{2, -1, 10}, {-2, 0, -9}, {-2, 1, -9}, {-2, 2, -9},
|
||||
{-2, -2, -9}, {-2, 3, -9}, {-2, -1, -9}, {-2, 0, -8},
|
||||
{-2, 1, -8}, {-2, 2, -8}, {-2, 3, -8}, {3, -2, 12},
|
||||
{-2, -1, -8}, {3, -1, 12}, {3, 0, 13}, {3, 1, 13},
|
||||
{-2, 1, -7}, {3, -3, 13}, {-2, 2, -7}, {3, -2, 13},
|
||||
{3, -1, 13}, {-1, 0, -6}, {3, 0, 14}, {-1, 1, -6},
|
||||
{3, 1, 14}, {-1, 2, -6}, {-1, -3, -6}, {3, 2, 14},
|
||||
{3, -3, 14}, {-1, -2, -6}, {3, -2, 14}, {-1, -1, -6},
|
||||
{3, -1, 14}, {-1, 0, -5}, {-1, 1, -5}, {-1, 2, -5},
|
||||
{-1, -2, -5}, {-1, -1, -5}, {-1, 0, -4}, {-1, 1, -4},
|
||||
{-1, 2, -4}, {-1, -2, -4}, {-1, 3, -4}, {-1, -1, -4},
|
||||
{-1, 0, -3}, {-1, 1, -3}, {-1, 2, -3}, {-1, 3, -3},
|
||||
{4, -2, 17}, {-1, -1, -3}, {4, -1, 17}, {0, 0, -2},
|
||||
{4, 0, 18}, {0, 1, -2}, {-5, 1, -22}, {4, 1, 18},
|
||||
{-1, 1, -2}, {0, -3, -2}, {-5, 2, -22}, {4, -3, 18},
|
||||
{-1, 2, -2}, {0, -2, -2}, {4, -2, 18}, {0, -1, -2},
|
||||
{4, -1, 18}, {0, 0, -1}, {0, 1, -1}, {0, 2, -1},
|
||||
{0, -3, -1}, {0, -2, -1}, {0, -1, -1}};
|
||||
long ref_bz_map[101] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 15,
|
||||
17, 21, 25, 26, 28, 30, 31, 32, 33, 34, 36, 37, 38,
|
||||
39, 40, 41, 42, 43, 45, 47, 49, 53, 55, 56, 57, 58,
|
||||
60, 62, 63, 65, 67, 68, 69, 70, 71, 73, 74, 75, 77,
|
||||
79, 81, 83, 85, 86, 87, 88, 90, 91, 92, 93, 94, 96,
|
||||
98, 99, 101, 103, 104, 105, 107, 109, 113, 115, 117, 118, 119,
|
||||
120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 133, 135,
|
||||
137, 141, 145, 147, 149, 150, 151, 153, 154, 155};
|
||||
long ref_bzg2grg[155] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 11, 12, 12, 13,
|
||||
13, 13, 13, 14, 14, 14, 14, 15, 16, 16, 17, 17, 18, 19, 20, 21, 22, 22,
|
||||
23, 24, 25, 26, 27, 28, 29, 30, 30, 31, 31, 32, 32, 33, 33, 33, 33, 34,
|
||||
34, 35, 36, 37, 38, 38, 39, 39, 40, 41, 41, 42, 42, 43, 44, 45, 46, 47,
|
||||
47, 48, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 56, 57, 58, 58,
|
||||
59, 60, 61, 62, 63, 63, 64, 64, 65, 66, 66, 67, 67, 68, 69, 70, 70, 71,
|
||||
71, 72, 72, 72, 72, 73, 73, 74, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
|
||||
83, 84, 85, 86, 87, 88, 88, 89, 89, 90, 90, 91, 91, 91, 91, 92, 92, 92,
|
||||
92, 93, 93, 94, 94, 95, 96, 97, 97, 98, 99};
|
||||
double rec_lattice[3][3] = {{0.3214400514304082, 0.0, 0.0},
|
||||
{0.1855835002216734, 0.3711670004433468, 0.0},
|
||||
{0.0, 0.0, 0.20088388911209323}};
|
||||
long PS[3] = {0, 0, 0};
|
||||
long D_diag[3] = {1, 5, 20}; // [5, 5, 4]
|
||||
long Q[3][3] = {{-1, 0, 4}, {0, -1, 0}, {-1, 0, 5}};
|
||||
long bz_grid_addresses[180][3];
|
||||
long bz_map[101];
|
||||
long bzg2grg[180];
|
||||
long bz_size, i, j;
|
||||
|
||||
bz_size = gridsys_get_bz_grid_addresses(bz_grid_addresses, bz_map, bzg2grg,
|
||||
D_diag, Q, PS, rec_lattice, 2);
|
||||
ASSERT_EQ(155, bz_size);
|
||||
for (i = 0; i < 155; i++) {
|
||||
for (j = 0; j < 3; j++) {
|
||||
ASSERT_EQ(ref_bz_addresses[i][j], bz_grid_addresses[i][j]);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 101; i++) {
|
||||
ASSERT_EQ(ref_bz_map[i], bz_map[i]);
|
||||
}
|
||||
for (i = 0; i < 155; i++) {
|
||||
ASSERT_EQ(ref_bzg2grg[i], bzg2grg[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1121,7 +1121,8 @@ def _relocate_BZ_grid_address(
|
|||
else:
|
||||
bz_map = np.zeros(np.prod(D_diag) * 9 + 1, dtype="int_")
|
||||
|
||||
reclat_T = np.array(reciprocal_lattice.T, dtype="double", order="C")
|
||||
# Mpr^-1 = Lr^-1 Lp
|
||||
reclat_T = np.array(np.transpose(reciprocal_lattice), dtype="double", order="C")
|
||||
reduced_basis = get_reduced_bases(reclat_T)
|
||||
tmat_inv = np.dot(np.linalg.inv(reduced_basis.T), reclat_T.T)
|
||||
tmat_inv_int = np.rint(tmat_inv).astype("int_")
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue