#include "dump2analysis.h" /* -m template */ /* lammpstrjから3原子の角度分布を計算する */ /* A原子(-a, -x, -s)とB原子(-c, -z, -u)で端の原子を指定する。 */ /* B原子(-b, -y, -t)で中心原子を指定する。 */ /* --rcut_abは角度を計算するA-B原子距離のカッとオフ。 default:2.3 */ /* --rcut_bcは角度を計算するB-C原子距離のカッとオフ。 default:2.3 */ void ErrorTemplate(){ printf("Required arguments atoms A, atoms B, and atom C\n"); printf("(-a, -x, -s) atom A\n"); printf("(-b, -y, -t) atom B\n"); printf("(-c, -z, -u) atom B\n"); printf("------------------------------------------------------------\n"); printf("Optional arguments for Gr analysis:\n"); printf("--rcut_ab cut-off for A-B bonds [2.3]\n"); printf("--rcut_bc cut-off for B-C bonds [2.3]\n"); printf("------------------------------------------------------------\n"); printf("Example:\n"); printf("dump2analysis -m angle -x Si -y O -z Si -i hoge.lammpstrj -o hoge.angle\n"); exit(0); } void OutputTemplate(PARAM *p){ FILE *fp; fp = fopen(p->outfile, "w"); fclose(fp); } void EstimateTemplate(PARAM *param){ FILE *f; HEAD head; ATOMS a, b, c; /* bが中心元素 */ int i, j, k; int s; if (ArgCheckInputOutput(param) != 0) ErrorTemplate(); SetAtomsSteps(param); if (CheckArgAtomSelect(param) != 7) ErrorTemplate(); Allocate(&a, param->atoms); Allocate(&b, param->atoms); Allocate(&c, param->atoms); f = fopen(param->infile, "r"); /* 距離の計算 */ for (s=0; ssteps; s++){ if (s%10 == 0) printf("Calculating angle step: %d...\n", s); /* 原子の選択 */ GetData(f, param, &head, &a, &b, &c); for(i=0; i