Update tetrahedron method in C

This commit is contained in:
Atsushi Togo 2014-01-06 23:43:05 +09:00
parent a78c313c20
commit e65056c955
1 changed files with 201 additions and 121 deletions

View File

@ -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])