Minor refactoring for positions and G_list

This commit is contained in:
Atsushi Togo 2018-02-10 12:49:29 +09:00
parent 236ba5a882
commit ce7cb0fd0f
3 changed files with 30 additions and 30 deletions

View File

@ -665,19 +665,19 @@ static PyObject * py_get_dipole_dipole(PyObject *self, PyObject *args)
PyArrayObject* q_direction_py;
PyArrayObject* py_born;
PyArrayObject* py_dielectric;
PyArrayObject* pos_py;
PyArrayObject* py_positions;
double factor;
double lambda;
double tolerance;
double* dd;
double* dd_q0;
double* G_list;
double (*G_list)[3];
double* q_vector;
double* q_direction;
double (*born)[3][3];
double (*dielectric)[3];
double *pos;
double (*pos)[3];
int num_patom, num_G;
if (!PyArg_ParseTuple(args, "OOOOOOOOddd",
@ -688,7 +688,7 @@ static PyObject * py_get_dipole_dipole(PyObject *self, PyObject *args)
&q_direction_py,
&py_born,
&py_dielectric,
&pos_py,
&py_positions,
&factor,
&lambda,
&tolerance))
@ -697,18 +697,18 @@ static PyObject * py_get_dipole_dipole(PyObject *self, PyObject *args)
dd = (double*)PyArray_DATA(dd_py);
dd_q0 = (double*)PyArray_DATA(dd_q0_py);
G_list = (double*)PyArray_DATA(G_list_py);
G_list = (double(*)[3])PyArray_DATA(G_list_py);
if ((PyObject*)q_direction_py == Py_None) {
q_direction = NULL;
} else {
q_direction = (double*)PyArray_DATA(q_direction_py);
}
q_vector = (double*)PyArray_DATA(q_vector_py);
born = (double*)PyArray_DATA(py_born);
born = (double(*)[3][3])PyArray_DATA(py_born);
dielectric = (double(*)[3])PyArray_DATA(py_dielectric);
pos = (double*)PyArray_DATA(pos_py);
pos = (double(*)[3])PyArray_DATA(py_positions);
num_G = PyArray_DIMS(G_list_py)[0];
num_patom = PyArray_DIMS(pos_py)[0];
num_patom = PyArray_DIMS(py_positions)[0];
dym_get_dipole_dipole(dd, /* [natom, 3, natom, 3, (real, imag)] */
dd_q0, /* [natom, 3, 3, (real, imag)] */
@ -732,32 +732,32 @@ static PyObject * py_get_dipole_dipole_q0(PyObject *self, PyObject *args)
PyArrayObject* dd_q0_py;
PyArrayObject* G_list_py;
PyArrayObject* py_dielectric;
PyArrayObject* pos_py;
PyArrayObject* py_positions;
double lambda;
double tolerance;
double* dd_q0;
double* G_list;
double (*G_list)[3];
double (*dielectric)[3];
double *pos;
double (*pos)[3];
int num_patom, num_G;
if (!PyArg_ParseTuple(args, "OOOOdd",
&dd_q0_py,
&G_list_py,
&py_dielectric,
&pos_py,
&py_positions,
&lambda,
&tolerance))
return NULL;
dd_q0 = (double*)PyArray_DATA(dd_q0_py);
G_list = (double*)PyArray_DATA(G_list_py);
G_list = (double(*)[3])PyArray_DATA(G_list_py);
dielectric = (double(*)[3])PyArray_DATA(py_dielectric);
pos = (double*)PyArray_DATA(pos_py);
pos = (double(*)[3])PyArray_DATA(py_positions);
num_G = PyArray_DIMS(G_list_py)[0];
num_patom = PyArray_DIMS(pos_py)[0];
num_patom = PyArray_DIMS(py_positions)[0];
dym_get_dipole_dipole_q0(dd_q0, /* [natom, 3, 3, (real, imag)] */
G_list, /* [num_kvec, 3] */

View File

@ -67,13 +67,13 @@ static void get_dm(double dm_real[3][3],
static double get_dielectric_part(const double q_cart[3],
PHPYCONST double dielectric[3][3]);
static void get_KK(double *dd_part, /* [natom, 3, natom, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
const double q_cart[3],
const double q_direction[3],
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [num_patom, 3] */
const double lambda,
const double tolerance);
@ -148,14 +148,14 @@ int dym_get_dynamical_matrix_at_q(double *dynamical_matrix,
void dym_get_dipole_dipole(double *dd, /* [natom, 3, natom, 3, (real, imag)] */
const double *dd_q0, /* [natom, 3, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
const double q_cart[3],
const double q_direction[3],
PHPYCONST double (*born)[3][3],
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [num_patom, 3] */
const double factor, /* 4pi/V*unit-conv */
const double lambda,
const double tolerance)
@ -221,11 +221,11 @@ void dym_get_dipole_dipole(double *dd, /* [natom, 3, natom, 3, (real, imag)] */
}
void dym_get_dipole_dipole_q0(double *dd_q0, /* [natom, 3, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [num_patom, 3] */
const double lambda,
const double tolerance)
{
@ -496,13 +496,13 @@ static double get_dielectric_part(const double q_cart[3],
}
static void get_KK(double *dd_part, /* [natom, 3, natom, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
const double q_cart[3],
const double q_direction[3],
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [num_patom, 3] */
const double lambda,
const double tolerance)
{
@ -519,7 +519,7 @@ static void get_KK(double *dd_part, /* [natom, 3, natom, 3, (real, imag)] */
for (g = 0; g < num_G; g++) {
norm = 0;
for (i = 0; i < 3; i++) {
q_K[i] = G_list[g * 3 + i] + q_cart[i];
q_K[i] = G_list[g][i] + q_cart[i];
norm += q_K[i] * q_K[i];
}
@ -549,9 +549,9 @@ static void get_KK(double *dd_part, /* [natom, 3, natom, 3, (real, imag)] */
phase = 0;
for (k = 0; k < 3; k++) {
/* For D-type dynamical matrix */
/* phase += (pos[i * 3 + k] - pos[j * 3 + k]) * q_K[k]; */
/* phase += (pos[i][k] - pos[j][k]) * q_K[k]; */
/* For C-type dynamical matrix */
phase += (pos[i * 3 + k] - pos[j * 3 + k]) * G_list[g * 3 + k];
phase += (pos[i][k] - pos[j][k]) * G_list[g][k];
}
phase *= 2 * PI;
cos_phase = cos(phase);

View File

@ -51,23 +51,23 @@ int dym_get_dynamical_matrix_at_q(double *dynamical_matrix,
const int with_openmp);
void dym_get_dipole_dipole(double *dd, /* [natom, 3, natom, 3, (real, imag)] */
const double *dd_q0, /* [natom, 3, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
const double q_cart[3],
const double q_direction[3],
PHPYCONST double (*born)[3][3],
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [num_patom, 3] */
const double factor, /* 4pi/V*unit-conv */
const double lambda,
const double tolerance);
void dym_get_dipole_dipole_q0(double *dd_q0, /* [natom, 3, 3, (real, imag)] */
const double *G_list, /* [num_G, 3] */
PHPYCONST double (*G_list)[3], /* [num_G, 3] */
const int num_G,
const int num_patom,
PHPYCONST double dielectric[3][3],
const double *pos, /* [natom, 3] */
PHPYCONST double (*pos)[3], /* [natom, 3] */
const double lambda,
const double tolerance);
void dym_get_charge_sum(double (*charge_sum)[3][3],