//
// 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;
}
初始构型
最新推荐文章于 2021-03-05 14:04:56 发布