Size-effectΒΆ

>>> import numpy as np
>>> from javelin.structure import Structure
>>> from javelin.energies import LennardJonesEnergy
>>> from javelin.modifier import SetDisplacementNormalXYZ
>>> from javelin.fourier import Fourier
>>> from javelin.mc import MC
>>> n = 128
>>>
>>> x = np.random.normal(0, 0.01, size=n**2)
>>> y = np.random.normal(0, 0.01, size=n**2)
>>> z = np.zeros(n**2)
>>>
>>> structure = Structure(symbols=np.random.choice(['Na','Cl'],n**2), positions=np.vstack((x,y,z)).T, unitcell=5)
>>> structure.reindex([n,n,1,1])
>>>
>>> nl = structure.get_neighbors()[0,1,-2,-1]
>>>
>>> e1 = LennardJonesEnergy(1, 1.05, atom_type1=11, atom_type2=11)
>>> e2 = LennardJonesEnergy(1, 1.0,  atom_type1=11, atom_type2=17)
>>> e3 = LennardJonesEnergy(1, 0.95, atom_type1=17, atom_type2=17)
>>>
>>> mc = MC()
>>> mc.add_modifier(SetDisplacementNormalXYZ(0, 0, 0.02, 0, 0.02, 0, 0))
>>> mc.temperature = 0.001
>>> mc.cycles = 50
>>> mc.add_target(nl, e1)
>>> mc.add_target(nl, e2)
>>> mc.add_target(nl, e3)
>>>
>>> out = mc.run(structure)  # doctest: +SKIP
>>>
>>> f=Fourier()  # doctest: +SKIP
>>> f.grid.bins = (201, 201, 1)  # doctest: +SKIP
>>> f.grid.r1 = -3, 3  # doctest: +SKIP
>>> f.grid.r2 = -3, 3  # doctest: +SKIP
>>> f.lots = 8, 8, 1  # doctest: +SKIP
>>> f.number_of_lots = 256  # doctest: +SKIP
>>> f.average = True  # doctest: +SKIP
>>>
>>> results1=f.calc(out)  # doctest: +SKIP
>>>
>>> out.replace_atom(11,42)  # doctest: +SKIP
>>> out.replace_atom(17,11)  # doctest: +SKIP
>>> out.replace_atom(42,17)  # doctest: +SKIP
>>> results2=f.calc(out)  # doctest: +SKIP
>>>
>>> out.replace_atom(17,11)  # doctest: +SKIP
>>> results3=f.calc(out)  # doctest: +SKIP
>>> fig, axs = plt.subplots(3, 1, figsize=(6.4,14.4))  # doctest: +SKIP
>>> results1.plot(ax=axs[0])  # doctest: +SKIP
>>> results2.plot(ax=axs[1])  # doctest: +SKIP
>>> results3.plot(ax=axs[2])  # doctest: +SKIP

(Source code, png, hires.png, pdf)

../_images/size_effect-1.png