グラフェンの原子模型

グラフェンシートの構造を生成するプログラムを作成し、VMDで表示させてみよう。

グラフェンとは、C(炭素)が下図のような2次元6角形格子をなしたものである。a は格子定数 でa=2.461Åである。単位格子には2つのC原子(A,B)が含まれる。それぞれの原子の座標はA: (0, 0), B: (2/3, 2/3)である。

図1のコピー
グラフェンの構造

 1. VC++で以下のプログラムを作成する。

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
  double a = 2.461;     // lattice constant
  double a1[2], a2[2];  // basis vectors
  double A[2], B[2];    // atom positions;
  int L1, L2;           // number of repitition
  double b[2], c[2];    // temporal memory
  int i,j;
  FILE *fp;

  a1[0] = a * 0.5 * 1.7320508;
  a1[1] = a * 0.5;
  a2[0] = a * 0.5 * 1.7320508;
  a2[1] = a * (-0.5);
  A[0] = 0.0; A[1] = 0.0;
  B[0] = 2.0/3.0; B[1] = 2.0/3.0;
  L1 = 10; L2 = 10;

  fopen_s(&fp,"graphen.xyz","wt");
  fprintf(fp,"%d\n", 2*L1*L2);
  fprintf(fp,"graphen sheet\n");

  for(i=0; i<L1; ++i){
    for(j=0; j<L2; ++j){
    // put atom A
    b[0] = (double)i + A[0];
    b[1] = (double)j + A[1];
    c[0] = a1[0] * b[0] + a2[0] * b[1];
    c[1] = a1[1] * b[0] + a2[1] * b[1];
    fprintf(fp,"C %f %f 0.0\n", c[0], c[1]);
    // put atom B
    b[0] = (double)i + B[0];
    b[1] = (double)j + B[1];
    c[0] = a1[0] * b[0] + a2[0] * b[1];
    c[1] = a1[1] * b[0] + a2[1] * b[1];
    fprintf(fp,"C %f %f 0.0\n", c[0], c[1]);
  }
}

fclose(fp);
return 0;
}

2. プログラムをビルド、実行

 

3. グラフェンの表示

  • プロジェクト・ディレクトリの中の、プロジェクト名と同じディレクトリの中に “graphen.xyz”というファイルが生成されている。
  • VMDでこの”graphen.xyz”を読み込み、分子構造を表示する。
  • 下図のような構造が表示されたら成功。
vmd4
VMDで表示したグラフェン