初始构型

//
// create_conf.C
//
// Create an initial lattice configuration and save to a file.
//
// Written by: Yanting Wang                 October 24, 2009
//

#include <iostream>
#include <fstream>
using namespace std;

#include <stdlib.h>
#include <libgen.h>
#include <string.h>

#include "vector.h"

int main( int argc, char *argv[] )
{
  if( argc != 4 )
  {
    cerr << "Usage: " << basename( argv[0] ) << " MC/MD L np" << endl;
    exit( -1 );
  }

  bool md = false;
  if( !strcmp( argv[1], "MD" ) ) md = true;

  double L  = atof( argv[2] );           // simulation box size
  int np = atoi( argv[3] );              // number of particles

  Vector *r = new Vector[np];            // create position array

  ofstream fc;

  if( md ) fc.open( "md_init.xyz" );
  else     fc.open( "mc_init.xyz" );

  fc << np << endl << L << endl;

  int n1 = int( pow( np, 1.0/3.0 ) ) + 1;    // number of paricle in 1-d

  double x = L / n1;             // distance between two particles in 1-d

  int count = 0;

  for( int i=0; i<n1; ++i )
  {
    for( int j=0; j<n1; ++j )
    {
      for( int k=0; k<n1; ++k )
      {
	r[ count ] = Vector( x*i, x*j, x*k );

	++ count;

	if( count >= np ) break;
      }
      if( count >= np ) break;
    }
    if( count >= np ) break;
  }

  Vector zero;                // zero vector

  for( int i=0; i<np; ++i )
  {
    fc << "He " << r[i];
    if( md ) fc << " " << zero << " " << zero << " " << zero; 
    fc << endl;
  }

  fc.close();

  delete []r;

  return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值