Diffusion
file_path='Files/'
fig_path = 'Figures/'
file_name= 'Diffusion_Validation'
nsteps = 30001
stride = 300
obs_stride = 1
box_lengths = [150.0,150.0,150.0]
Temp=293.15
eta=1e-21
dt = 0.01
Simulation = prd.Simulation(box_lengths = box_lengths,
dt = dt,
Temp = Temp,
eta = eta,
stride = stride,
write_trajectory = True,
file_path = file_path,
file_name = file_name,
fig_path = fig_path,
boundary_condition = 'periodic',
nsteps = nsteps,
seed = 0,
length_unit = 'nanometer',
time_unit = 'ns')
Simulation.register_particle_type('Core_1', 2.5) # (Name, Radius)
A_pos = [[0.0,0.0,0]]
A_types = ['Core_1']
Simulation.register_molecule_type('A', A_pos, A_types)
D_rr = [[0.005,0,0],[0,0.04,0],[0,0,0.1]]
D_tt = [[0.5,0,0],[0,0.4,0],[0,0,0.1]]
Simulation.set_diffusion_tensor('A', D_tt, D_rr)
prd.plot.plot_mobility_matrix('A', Simulation, save_fig = False)
import numpy as np
from pyrid.system.distribute_vol_util import random_quaternion
N = 1000
position = np.zeros((N,3), dtype = np.float64)
quaternion = np.zeros((N,4), dtype = np.float64)
for i in range(N):
quaternion[i][:] = random_quaternion()
mol_type_idx = np.zeros(N, dtype = np.int64)
Simulation.add_molecules('Volume',0, position, quaternion, mol_type_idx)
Simulation.observe('Orientation', ['A'], obs_stride = obs_stride)
Simulation.observe('Position', ['A'], obs_stride = obs_stride)
Timer = Simulation.run(progress_stride = 1000, out_linebreak = False)
Simulation.print_timer()
Evaluation = prd.Evaluation()
Evaluation.load_file(file_name)
#%%
Evaluation.MSD(100, 2, Simulation, 'A')
Evaluation.plot_MSD(Simulation, 'A', save_fig = True)
#%%
Evaluation.P2(3100, 100, Simulation, 'A')
Evaluation.plot_P2(Simulation, 'A', save_fig = True, limits = [[0.0,30],[1e-3,1e0]])

Fig. 35 Mean squared displacement and rotational relaxation.