first commit, Readme.html更新して、git管理することにした。
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#include "dump2analysis.h"
|
||||
/* -m template_msd */
|
||||
/* lammpstrjから指定した原子の平均二乗変位(MSD)を時間シフトしながら計算する */
|
||||
/* 原子タイプで指定しても最初のステップのidで原子を選択する */
|
||||
/* --shfitと--tauを小さくすればMSDの統計が稼げる。ただしシフトが小さすぎるMSDが変化する。 */
|
||||
/* --shiftでMSDが変わらないようパラメータを調整する。 */
|
||||
/* 教科書Pを参照 */
|
||||
/* A原子(-a, -x, -s)を指定する。 */
|
||||
/* --shiftはMSDを計算する時にシフトさせるステップ default:1 */
|
||||
/* --tauはMSDを計算する時間ステップ範囲。-1でMDの全ステップでMSDを計算する default:-1 */
|
||||
/* --dtはMDの時間ステップでの時間(fs単位) default:1.0 */
|
||||
|
||||
void ErrorTemplateMSD(){
|
||||
printf("Required arguments atoms A\n");
|
||||
printf("(-a, -x, -s) atom A\n");
|
||||
printf("------------------------------------------------------------\n");
|
||||
printf("Optional arguments for TemplateMSD analysis:\n");
|
||||
printf("--shift time shift for TemplateMSD [1]\n");
|
||||
printf("--tau time period for TemplateMSD (-1: all steps [-1]\n");
|
||||
printf("--dt time period for one step (fs) [1.0]\n");
|
||||
printf("------------------------------------------------------------\n");
|
||||
printf("Example:\n");
|
||||
printf("dump2analysis -m msd -x Li --dt 1.2 --tau 2500 --shift 100 -i hoge.lammpstrj -o hoge.msd\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void OutputTemplateMSD(PARAM *p){
|
||||
FILE *f;
|
||||
|
||||
f = fopen(p->outfile, "w");
|
||||
fclose(f);
|
||||
|
||||
}
|
||||
|
||||
void EstimateTemplateMSD(PARAM *param){
|
||||
int i, j, p, step_counter=0;
|
||||
FILE *f;
|
||||
HEAD head;
|
||||
ATOMS a;
|
||||
|
||||
if (ArgCheckInputOutput(param) != 0) ErrorTemplateMSD();
|
||||
SetAtomsSteps(param);
|
||||
if (CheckArgAtomSelect(param) != 1) ErrorTemplateMSD();
|
||||
|
||||
/* 選択元素が変わるとおかしくなるので元素選択は全てid */
|
||||
SetIDfromElemTtype(param);
|
||||
Allocate(&a, param->Aid[0]-1);
|
||||
f = fopen(param->infile, "r");
|
||||
|
||||
/* -1の場合は全ステップでMSDを計算する */
|
||||
if (TAU == -1) {
|
||||
TAU = param->steps;
|
||||
TAU_SHIFT = param->steps;
|
||||
}
|
||||
|
||||
/* 分率座標のデータを全ステップで取得する */
|
||||
printf("Loading data...\n");
|
||||
for (i=0; i<param->steps; i++){
|
||||
GetData(f, param, &head, &a, NULL, NULL);
|
||||
}
|
||||
|
||||
/* msdの計算 r, a, b, c*/
|
||||
for (p=0; p+TAU <= param->steps; p=p+TAU_SHIFT){
|
||||
printf("TemplateMSD step range: from %d to %d\n", p, p+TAU);
|
||||
for (i=0; i<TAU; i++){
|
||||
for (j=0; j<a.atoms; j++){
|
||||
}
|
||||
}
|
||||
step_counter++;
|
||||
}
|
||||
if (step_counter == 0){
|
||||
printf("--tau is too long, can not calculate TemplateMSD!!!\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
OutputTemplateMSD(param);
|
||||
}
|
||||
Reference in New Issue
Block a user