Load and Save FileΒΆ
[1]:
import mdapy as mp
import numpy as np
from time import time
mp.__version__
[1]:
'1.0.3'
[2]:
import ovito
ovito.version
[2]:
(3, 14, 0)
[3]:
def init():
system = mp.build_crystal('Cu', 'FCC', 3.615, nx=100, ny=100, nz=100)
N = system.N
print(f'Atom number is {N}.')
print('Saving to test.data.')
system.write_data('test.data', element_list=['Cu'])
print('Saving to test.dump')
system.write_dump('test.dump')
print('Saving to test.xyz')
system.write_xyz('test.xyz')
print('Saving to test.mp')
system.write_mp('test.mp')
init()
Atom number is 4000000.
Saving to test.data.
Saving to test.dump
Saving to test.xyz
Saving to test.mp
[4]:
def get_load_time(fmt:str):
start = time()
for _ in range(3):
_ = mp.System(f'test.{fmt}')
end = time()
mdapy_time = (end - start)/3
if fmt == 'mp':
ovito_time = -1
else:
start = time()
for _ in range(3):
pipeline = ovito.io.import_file(f'test.{fmt}')
pipeline.compute()
del pipeline
end = time()
ovito_time = (end - start)/3
return mdapy_time, ovito_time
[5]:
def get_save_time(fmt:str):
system = mp.System(f'test.{fmt}')
start = time()
for _ in range(1):
if fmt == 'dump':
system.write_dump(f'mdapy.{fmt}')
elif fmt == 'data':
system.write_data(f'mdapy.{fmt}')
elif fmt == 'xyz':
system.write_xyz(f'mdapy.{fmt}')
elif fmt == 'mp':
system.write_mp(f'mdapy.{fmt}')
end = time()
mdapy_time = (end - start)/3
if fmt == 'mp':
ovito_time = -1
else:
pipeline = ovito.io.import_file(f'test.{fmt}')
start = time()
for _ in range(1):
if fmt == 'dump':
ovito.io.export_file(pipeline, f'ovito.{fmt}', format='lammps/dump', columns=["Particle Identifier", "Particle Type", "Position.X", "Position.Y", "Position.Z"])
elif fmt == 'data':
ovito.io.export_file(pipeline, f'ovito.{fmt}', format='lammps/data', atom_style='atomic')
elif fmt == 'xyz':
ovito.io.export_file(pipeline, f'ovito.{fmt}', format='xyz', columns=["Particle Identifier", "Particle Type", "Position.X", "Position.Y", "Position.Z"])
end = time()
ovito_time = (end - start)/3
return mdapy_time, ovito_time
[6]:
load_time = []
for fmt in ['dump', 'data', 'xyz', 'mp']:
load_time.append([*get_load_time(fmt)])
load_time = np.array(load_time)
[7]:
save_time = []
for fmt in ['dump', 'data', 'xyz', 'mp']:
save_time.append([*get_save_time(fmt)])
save_time = np.array(save_time)
[8]:
fig, ax = mp.set_figure(figdpi=150)
x = np.arange(4)*2
ax.bar(x, load_time[:, 0], label = 'mdapy')
ax.bar(x[:-1]+1, load_time[:-1, 1], label='ovito')
ax.legend()
ax.set_xticks(x+0.5)
ax.set_xticklabels(['dump', 'data', 'xyz', 'mp'])
ax.set_ylabel('Time (s)')
ax.set_title('Load data')
[8]:
Text(0.5, 1.0, 'Load data')
[9]:
fig, ax = mp.set_figure(figdpi=150)
x = np.arange(4)*2
ax.bar(x, save_time[:, 0], label = 'mdapy')
ax.bar(x[:-1]+1, save_time[:-1, 1], label='ovito')
ax.legend()
ax.set_xticks(x+0.5)
ax.set_xticklabels(['dump', 'data', 'xyz', 'mp'])
ax.set_ylabel('Time (s)')
ax.set_title('Save data')
[9]:
Text(0.5, 1.0, 'Save data')
[10]:
import os
from glob import glob
for i in glob('mdapy*')+glob('ovito*')+glob('test*'):
os.remove(i)