Untitled
unknown
c_cpp
a year ago
3.1 kB
18
Indexable
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<cmath>
#include<ctime>
using namespace std;
const int x_unit = 10;
const int y_unit = 10;
const int z_unit = 1;
const int N = 100;
string folder = "substrate/random_move(single_atom)/";
string folder_cl = folder;
int cubic[x_unit+2][y_unit+2][z_unit] = {};
string trans(int num)
{
string s_inversed="";
string s="";
while((num/10)!=0)
{
s_inversed+=char(num%10+48);
num/=10;
}
s_inversed+=char(num%10+48);
for(int i=s_inversed.size()-1;i>=0;i--)
s+=s_inversed[i];
return s;
}
int counter()
{
int atoms=0;
int p[x_unit*y_unit*z_unit][3]={};
for(int i=1;i<=x_unit;i++)
for(int j=1;j<=y_unit;j++)
for(int k=0;k<z_unit;k++)
if(cubic[i][j][k]==1) atoms++;
return atoms;
}
void clean()
{
for(int i=0;i<=x_unit+1;i++)
for(int j=0;j<=y_unit+1;j++)
for(int k=0;k<z_unit;k++)
if(i>x_unit||i<1||j>y_unit||j<1) cubic[i][j][k]=0;
}
void replica()
{
for(int i=0;i<=x_unit+1;i++)
for(int j=0;j<=y_unit+1;j++)
for(int k=0;k<z_unit;k++)
{
if(i<=1&&cubic[i][j][k]==1) cubic[i+x_unit][j][k]=1;
else if(i>=x_unit&&cubic[i][j][k]==1) cubic[i-x_unit][j][k]=1;
if(j<=1&&cubic[i][j][k]==1) cubic[i][j+y_unit][k]=1;
else if(j>=y_unit&&cubic[i][j][k]==1) cubic[i][j-y_unit][k]=1;
}
}
void output(int c)
{
int a=0;
int p[x_unit*y_unit*z_unit][3]={};
for(int i=1;i<=x_unit;i++)
for(int j=1;j<=y_unit;j++)
for(int k=0;k<z_unit;k++)
if(cubic[i][j][k]==1)
{
p[a][0]=i-1;
p[a][1]=j-1;
p[a][2]=k;
a++;
}
folder=folder_cl;
string file="model_consequences_";
file+=trans(c);
file+=".txt";
folder+=file;
ofstream outputFile(folder.c_str());
outputFile << "LAMMPS data file via write_data, version 23 Jun 2022, timestep = 0" << endl << endl;
outputFile << counter() << " atoms" << endl << "1 atom types" << endl << endl;
outputFile << "0 " << x_unit-1 << " xlo xhi" << endl;
outputFile << "0 " << y_unit-1 << " ylo yhi" << endl;
outputFile << "0 " << z_unit-1 << " zlo zhi" << endl << endl;
outputFile << "Masses" << endl << endl << "1 12.011" << endl << endl;
outputFile << "Atoms # molecular" << endl << endl;
for(int i=0;i<a;i++)
outputFile << i+1 << " 1 " << p[i][0] << " " << p[i][1] << " " << p[i][2] << endl;
outputFile.close();
}
int main()
{
srand(time(NULL));
int r_x = rand()%(x_unit)+1;
int r_y = rand()%(y_unit)+1;
cubic[r_x][r_y][0]=1;
replica();
for(int count=0;count<N;count++)
{
for(int i=1;i<=x_unit;i++)
for(int j=1;j<=y_unit;j++)
for(int k=0;k<z_unit;k++)
if(cubic[i][j][k]==1)
{
r_x = i;
r_y = j;
}
cubic[r_x][r_y][0]=0;
int move;
move = rand()%100;
if(move<20) r_x++;
else if(move>=20&&move<40) r_x--;
else if(move>=40&&move<60) r_y--;
else r_y++;
clean();
cubic[r_x][r_y][0]=1;
replica();
output(count);
}
return 0;
}
Editor is loading...
Leave a Comment