mirror of https://github.com/phonopy/phonopy.git
Update tetrahedron method in C
This commit is contained in:
parent
a78c313c20
commit
e65056c955
|
@ -1,24 +1,19 @@
|
|||
/* tetrahedron_method.c */
|
||||
/* Copyright (C) 2014 Atsushi Togo */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "mathfunc.h"
|
||||
#include "symmetry.h"
|
||||
#include "kpoint.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
/* 6-------7 */
|
||||
/* /| /| */
|
||||
/* / | / | */
|
||||
/* 4-------5 | */
|
||||
/* | 2----|--3 */
|
||||
/* | / | / */
|
||||
/* |/ |/ */
|
||||
/* 0-------1 */
|
||||
/* */
|
||||
/* /| /| */
|
||||
/* / | / | */
|
||||
/* 4-------5 | */
|
||||
/* | 2----|--3 */
|
||||
/* | / | / */
|
||||
/* |/ |/ */
|
||||
/* 0-------1 */
|
||||
/* */
|
||||
/* i: vec neighbours */
|
||||
/* 0: O 1, 2, 4 */
|
||||
/* 1: a 0, 3, 5 */
|
||||
|
@ -37,117 +32,111 @@ static int main_diagonals[4][3] = {{ 1, 1, 1}, /* 0-7 */
|
|||
|
||||
static int relative_grid_address[4][24][4][3] = {
|
||||
{
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, { 1, 0, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { 0, 0, 1}, { 1, 0, 1}, },
|
||||
{ { -1, -1, 0}, { 0, -1, 0}, { 0, 0, 0}, { 0, 0, 1}, },
|
||||
{ { -1, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, -1}, { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, },
|
||||
{ { 0, 0, -1}, { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, },
|
||||
{ { -1, 0, -1}, { 0, 0, -1}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { -1, 0, -1}, { -1, 0, 0}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { 0, -1, -1}, { 0, 0, -1}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 0, -1, -1}, { 0, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { -1, -1, -1}, { 0, -1, -1}, { 0, 0, -1}, { 0, 0, 0}, },
|
||||
{ { -1, -1, -1}, { 0, -1, -1}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { -1, -1, -1}, { -1, 0, -1}, { 0, 0, -1}, { 0, 0, 0}, },
|
||||
{ { -1, -1, -1}, { -1, 0, -1}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { -1, -1, -1}, { -1, -1, 0}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { -1, -1, -1}, { -1, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 0, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 1, 0, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, {-1, -1, 0}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, {-1, -1, 0}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 0, -1}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 0, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, -1, -1}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, -1, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, { 0, -1, -1}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, { 0, -1, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, {-1, 0, -1}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, {-1, 0, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, {-1, -1, 0}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, -1}, {-1, -1, 0}, {-1, 0, 0}, },
|
||||
},
|
||||
{
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { -1, 1, 0}, { -1, 1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { -1, 0, 1}, { -1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { -1, 1, 0}, { 0, 1, 0}, { -1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { -1, 1, 1}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, { -1, 0, 1}, { 0, 0, 1}, { -1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { -1, 1, 1}, { 0, 1, 1}, },
|
||||
{ { 0, -1, 0}, { 1, -1, 0}, { 0, 0, 0}, { 0, 0, 1}, },
|
||||
{ { 1, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, { 0, 0, 1}, },
|
||||
{ { 0, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, { -1, 0, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { -1, 0, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, -1}, { 1, 0, -1}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { 1, 0, -1}, { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, },
|
||||
{ { 0, 0, -1}, { -1, 0, 0}, { 0, 0, 0}, { -1, 1, 0}, },
|
||||
{ { 0, 0, -1}, { 0, 0, 0}, { -1, 1, 0}, { 0, 1, 0}, },
|
||||
{ { 0, -1, -1}, { 1, -1, -1}, { 0, 0, -1}, { 0, 0, 0}, },
|
||||
{ { 0, -1, -1}, { 1, -1, -1}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { 1, -1, -1}, { 0, 0, -1}, { 1, 0, -1}, { 0, 0, 0}, },
|
||||
{ { 1, -1, -1}, { 1, 0, -1}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 1, -1, -1}, { 0, -1, 0}, { 1, -1, 0}, { 0, 0, 0}, },
|
||||
{ { 1, -1, -1}, { 1, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 0, -1, -1}, { 0, 0, -1}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, -1, -1}, { 0, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 0, 1}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, {-1, 1, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 0, 1}, {-1, 1, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 1, 0}, {-1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 1, 1}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, {-1, 0, 1}, { 0, 0, 1}, {-1, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, {-1, 1, 1}, { 0, 1, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, 1}, { 0, -1, 0}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 0, 1}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 0, 1}, { 0, -1, 0}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 0, 1}, { 0, 0, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 0, -1}, { 1, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 1, 0, -1}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 0, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 1, 0}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 0, -1, -1}, { 1, -1, -1}, { 0, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 0, -1, -1}, { 1, -1, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, -1, -1}, { 0, 0, -1}, { 1, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, -1, -1}, { 1, 0, -1}, },
|
||||
{ { 0, 0, 0}, { 1, -1, -1}, { 0, -1, 0}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, -1, -1}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, -1, -1}, { 0, 0, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, -1, -1}, { 0, -1, 0}, {-1, 0, 0}, },
|
||||
},
|
||||
{
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 0, 1}, { 1, 0, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { -1, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { -1, 1, 0}, { 0, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, -1, 0}, { 1, -1, 0}, { 0, 0, 0}, { 1, -1, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { 0, -1, 1}, { 1, -1, 1}, },
|
||||
{ { 1, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, { 1, -1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, -1, 1}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, -1, 1}, { 1, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 1, -1, 1}, { 0, 0, 1}, { 1, 0, 1}, },
|
||||
{ { 0, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, { 0, -1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { 0, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, -1}, { 0, 1, -1}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 0, 1, -1}, { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, },
|
||||
{ { -1, 0, -1}, { 0, 0, -1}, { -1, 1, -1}, { 0, 0, 0}, },
|
||||
{ { -1, 0, -1}, { -1, 1, -1}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, -1}, { -1, 1, -1}, { 0, 1, -1}, { 0, 0, 0}, },
|
||||
{ { -1, 1, -1}, { 0, 1, -1}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { -1, 1, -1}, { -1, 0, 0}, { 0, 0, 0}, { -1, 1, 0}, },
|
||||
{ { -1, 1, -1}, { 0, 0, 0}, { -1, 1, 0}, { 0, 1, 0}, },
|
||||
{ { 0, 0, -1}, { 0, -1, 0}, { 1, -1, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, -1}, { 1, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { -1, 0, -1}, { 0, 0, -1}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { -1, 0, -1}, { 0, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 0, 1}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 0, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 1, -1, 1}, { 0, -1, 0}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, -1, 1}, { 1, -1, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, -1, 1}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, -1, 1}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, -1, 1}, { 1, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 1, -1, 1}, { 0, 0, 1}, { 1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, -1, 1}, { 0, -1, 0}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, -1, 1}, { 0, 0, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 0, -1}, { 0, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 1, 0}, { 0, 1, -1}, },
|
||||
{ { 0, 0, 0}, {-1, 0, -1}, { 0, 0, -1}, {-1, 1, -1}, },
|
||||
{ { 0, 0, 0}, {-1, 0, -1}, {-1, 1, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, {-1, 1, -1}, { 0, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 1, -1}, { 0, 1, -1}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, {-1, 1, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 1, 0}, { 0, 1, 0}, {-1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, { 0, -1, 0}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, 0, -1}, { 1, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 0, -1}, { 0, 0, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, 0, -1}, { 0, -1, 0}, {-1, 0, 0}, },
|
||||
},
|
||||
{
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { 0, 1, 0}, { -1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { -1, 0, 1}, { 0, 0, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, { 0, -1, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, -1, 1}, { 0, 0, 1}, },
|
||||
{ { -1, -1, 0}, { 0, -1, 0}, { 0, 0, 0}, { -1, -1, 1}, },
|
||||
{ { -1, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, { -1, -1, 1}, },
|
||||
{ { 0, -1, 0}, { 0, 0, 0}, { -1, -1, 1}, { 0, -1, 1}, },
|
||||
{ { -1, 0, 0}, { 0, 0, 0}, { -1, -1, 1}, { -1, 0, 1}, },
|
||||
{ { 0, 0, 0}, { -1, -1, 1}, { 0, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { -1, -1, 1}, { -1, 0, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, -1}, { 1, 0, -1}, { 1, 1, -1}, { 0, 0, 0}, },
|
||||
{ { 0, 0, -1}, { 0, 1, -1}, { 1, 1, -1}, { 0, 0, 0}, },
|
||||
{ { 1, 0, -1}, { 1, 1, -1}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 0, 1, -1}, { 1, 1, -1}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { 1, 1, -1}, { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, },
|
||||
{ { 1, 1, -1}, { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, },
|
||||
{ { 0, 0, -1}, { 0, 1, -1}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 1, -1}, { -1, 0, 0}, { 0, 0, 0}, { 0, 1, 0}, },
|
||||
{ { 0, 0, -1}, { 1, 0, -1}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { 1, 0, -1}, { 0, -1, 0}, { 0, 0, 0}, { 1, 0, 0}, },
|
||||
{ { 0, 0, -1}, { -1, -1, 0}, { 0, -1, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, -1}, { -1, -1, 0}, { -1, 0, 0}, { 0, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 0, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, {-1, 0, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, -1, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 0, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, {-1, -1, 0}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, {-1, -1, 0}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, { 0, -1, 1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, {-1, 0, 1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, { 0, -1, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, {-1, -1, 1}, {-1, 0, 1}, { 0, 0, 1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, { 1, 0, -1}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, { 0, 1, -1}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 0, -1}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 1, -1}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, -1}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, { 0, 1, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 1, 0}, { 0, 1, -1}, {-1, 0, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, { 1, 0, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 1, 0, 0}, { 1, 0, -1}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, {-1, -1, 0}, { 0, -1, 0}, },
|
||||
{ { 0, 0, 0}, { 0, 0, -1}, {-1, -1, 0}, {-1, 0, 0}, },
|
||||
},
|
||||
};
|
||||
|
||||
static int central_indices[4][24] = {
|
||||
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, },
|
||||
{ 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 3, 3, 3, 2, 3, 2, 3, 3, },
|
||||
{ 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 2, 1, 2, 1, 3, 3, 3, 2, 2, 1, 3, 2, 3, 3, },
|
||||
{ 0, 0, 1, 0, 1, 0, 2, 2, 1, 1, 0, 0, 3, 3, 2, 2, 1, 1, 3, 2, 3, 2, 3, 3, },
|
||||
};
|
||||
|
||||
static double _f(const int n,
|
||||
const int m,
|
||||
|
@ -254,19 +243,110 @@ void thm_get_relative_grid_address(int relative_grid_address[24][4][3],
|
|||
}
|
||||
}
|
||||
|
||||
void thm_get_integrated_weight(const double omega,
|
||||
SPGCONST double tetrahedra_omegas[24][4],
|
||||
SPGCONST double rec_lattice[3][3])
|
||||
void thm_get_integration_weight(const double omega,
|
||||
SPGCONST double tetrahedra_omegas[24][4])
|
||||
{
|
||||
int i, j, k, main_diag_index;
|
||||
int i, j, k, ci;
|
||||
double v[4];
|
||||
double sum;
|
||||
|
||||
main_diag_index = get_main_diagonal(rec_lattice);
|
||||
sum = 0;
|
||||
|
||||
for (i = 0; i < 24; i++) {
|
||||
;
|
||||
for (j = 0; j < 4; j++) {
|
||||
v[j] = tetrahedra_omegas[i][j];
|
||||
}
|
||||
ci = sort_omegas(v);
|
||||
if (omega < v[0]) {
|
||||
sum += _J(0, ci, omega, v);
|
||||
} else {
|
||||
if (omega < v[1]) {
|
||||
sum += _J(1, ci, omega, v);
|
||||
} else {
|
||||
if (omega < v[2]) {
|
||||
sum += _J(2, ci, omega, v);
|
||||
} else {
|
||||
if (omega < v[3]) {
|
||||
sum += _J(3, ci, omega, v);
|
||||
} else {
|
||||
sum += _J(4, ci, omega, v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sum / 6;
|
||||
}
|
||||
|
||||
static int sort_omegas(double v[4])
|
||||
{
|
||||
int i;
|
||||
double w[4];
|
||||
|
||||
i = 0;
|
||||
|
||||
if (v[0] > v[1]) {
|
||||
w[0] = v[1];
|
||||
w[1] = v[0];
|
||||
i = 1;
|
||||
} else {
|
||||
w[0] = v[0];
|
||||
w[1] = v[1];
|
||||
}
|
||||
|
||||
if (v[2] > v[3]) {
|
||||
w[2] = v[3];
|
||||
w[3] = v[2];
|
||||
} else {
|
||||
w[2] = v[2];
|
||||
w[3] = w[3];
|
||||
}
|
||||
|
||||
if (w[0] > w[2]) {
|
||||
v[0] = w[2];
|
||||
v[1] = w[0];
|
||||
if (i == 0) {
|
||||
i = 4;
|
||||
}
|
||||
} else {
|
||||
v[0] = w[0];
|
||||
v[1] = w[2];
|
||||
}
|
||||
|
||||
if (w[1] > w[3]) {
|
||||
v[3] = w[1];
|
||||
v[2] = w[3];
|
||||
if (i == 1) {
|
||||
i = 3;
|
||||
}
|
||||
} else {
|
||||
v[3] = w[3];
|
||||
v[2] = w[1];
|
||||
if (i == 1) {
|
||||
i = 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (v[1] > v[2]) {
|
||||
w[1] = v[1];
|
||||
v[1] = v[2];
|
||||
v[2] = v[1];
|
||||
if (i == 4) {
|
||||
i = 2;
|
||||
}
|
||||
if (i == 5) {
|
||||
i = 1;
|
||||
}
|
||||
} else {
|
||||
if (i == 4) {
|
||||
i = 1;
|
||||
}
|
||||
if (i == 5) {
|
||||
i = 2;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
static int get_main_diagonal(SPGCONST double rec_lattice[3][3])
|
||||
|
|
Loading…
Reference in New Issue