In [1]:
import numpy as np
from onsager import OnsagerCalc
from onsager import crystal
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
HCP = crystal.Crystal.HCP(1., chemistry="ideal HCP")
print(HCP)
In [3]:
sitelist = HCP.sitelist(0)
vacancyjumps = HCP.jumpnetwork(0, 1.01)
for jlist in vacancyjumps:
print('---')
for (i,j), dx in jlist:
print(i, '-', j, dx)
In [4]:
HCPdiffuser = OnsagerCalc.VacancyMediated(HCP, 0, sitelist, vacancyjumps, 1)
In [5]:
for state in HCPdiffuser.interactlist():
print(state)
In [6]:
nu0 = 1
dE0 = 1
HCPtracer = {'preV': np.ones(1), 'eneV': np.zeros(1),
'preT0': np.array([nu0, nu0]), 'eneT0': np.array([dE0, dE0])}
HCPtracer.update(HCPdiffuser.maketracerpreene(**HCPtracer))
for k,v in zip(HCPtracer.keys(), HCPtracer.values()): print(k,v)
In [7]:
Lvv, Lss, Lsv, L1vv = HCPdiffuser.Lij(*HCPdiffuser.preene2betafree(1, **HCPtracer))
Correlation coefficient = $L_\text{ss} / L_\text{sv}$ (as $L_\text{sv} = L_\text{vv}$). Should be very close to the FCC correlation coefficient of 0.78145, for this purely isotropic diffusion case.
In [8]:
np.dot(Lss, np.linalg.inv(Lsv))
Out[8]:
In [9]:
print(HCPdiffuser.GFvalues)
In [10]:
print(crystal.yaml.dump(HCPdiffuser.GFvalues))
In [11]:
diffcopy = crystal.yaml.load(crystal.yaml.dump(HCPdiffuser))
In [12]:
diffcopy.Lij(*diffcopy.preene2betafree(1, **HCPtracer))
Out[12]:
In [13]:
print(crystal.yaml.dump(HCPtracer))
In [ ]: