#include "dump2sq.h" void SetXRDCoeff(TYPE *type, DATASET *sq){ int i, j; int atoms = 220; char **elem=NULL; double **A=NULL, **B=NULL, *C=NULL; double q; /* メモリー確保 */ type->XRDcoeff = malloc(sq->n * sizeof(double*)); for (i=0; in; i++) type->XRDcoeff[i] = malloc(sizeof(double) * type->types); elem = (char **)malloc(atoms * sizeof(char*)); for (i=0; itypes * sizeof(int)); for (i=0; itypes; i++){ /* 散乱因子を検索してaとbにセット*/ for (j=0; jelem[i], elem[j])==0) a_id[i] = j; } } for (i=0; in; i++){ q = sq->x[i] * sq->x[i]/(16.0*M_PI*M_PI); for (j=0; jtypes; j++){ p = a_id[j]; type->XRDcoeff[i][j] = A[p][0]*exp(-B[p][0]*q) + A[p][1]*exp(-B[p][1]*q) + A[p][2]*exp(-B[p][2]*q) + A[p][3]*exp(-B[p][3]*q) + A[p][4]*exp(-B[p][4]*q) + C[p]; } } for (i=0; iNDcoeff = malloc(sizeof(double) * type->types); elem = (char **)malloc(atoms * sizeof(char*)); for (i=0; itypes; i++){ p = -1; for (j=0; jelem[i], elem[j])==0) { p = j; break; } } if (p == -1){ printf("%s is nothing in ND database!!!\n", type->elem[i]); exit(1); } type->NDcoeff[i] = b[p]; } }