[Advanced] Nanoparticle energy¶
This section contains advanced content. Those who wish to hurry to the next chapter may skip it and read it later.
In this section, we will try to calculate the excess energy of nanoparticles (cluster structures) and create adsorption structures on supports.
[1]:
import pfp_api_client
from pfp_api_client.pfp.calculators.ase_calculator import ASECalculator
from pfp_api_client.pfp.estimator import Estimator, EstimatorCalcMode
from pfcc_extras.visualize.view import view_ngl
print(f"pfp_api_client: {pfp_api_client.__version__}")
estimator = Estimator(calc_mode=EstimatorCalcMode.CRYSTAL_U0, model_version="v3.0.0")
calculator = ASECalculator(estimator)
pfp_api_client: 1.18.0
[2]:
from ase.cluster import Decahedron, Icosahedron, Octahedron, wulff_construction
from ase import Atoms
from ase.build import bulk
from ase.constraints import ExpCellFilter, StrainFilter
from ase.optimize import LBFGS
from ase.io import Trajectory
import numpy as np
import pandas as pd
Excess energy¶
A material that is a pure metal mixed with one or more other elements is called an alloy. The property of metals changes significantly when combining two or more elements.
For example, duralumin, a mixture of aluminum and copper or magnesium, is used in aerospace equipment because of its lightweight and hardness.
A mixture of two elements is called a binary alloy, while a mixture of three or more elements is called a multinary alloy.
Multinary alloys are expected to lead to the discovery of materials with new properties. As the types of elements increase, the combinations of their composition ratios increase, and this is an area that has not yet been analyzed. Matlantis can handle such systems, taking advantage of its versatility.
When considering the atomic structure of these alloys, it is necessary to know how they mix in reality and whether they are combinations that can be mixed in the first place.
Excess energy is a measure of the stability of such alloys. The excess energy of a binary alloy of element A and element B is calculated as follows and indicates how stable the energy of the alloy is compared to the case where elements A and B are not mixed together.
\(E_{\rm{alloy}}\) is the energy of the alloy, \(E_\rm{A}, E_\rm{B}\) is the energy when composed of single elements A or B, and \(N_{\rm{alloy}}, N_{\rm{alloyA}}, N_{\rm{alloyB}}\) are the total number of atoms in the alloy, the number of element A atoms, and the number of element B atoms, respectively.
The same definition can be used for the multinary alloy.
Let us evaluate its stability by evaluating the excess energy for a mixed Pt and Pd structure.
Reference paper:
Electronic Structure and Phase Stability of PdPt Nanoparticles
Electronic structure and phase stability of Pt3M (M = Co, Ni, and Cu) bimetallic nanoparticles
Calculations of Real-System Nanoparticles Using Universal Neural Network Potential PFP
We prepare Pt711 nanoparticle, and mix it with Pd. Even when considering binary nanoparticles, there are various possibilities of how they are mixed. This tutorial will create the following structure and evaluate its excess energy.
Structure in which Pt and Pd are evenly mixed
Structure with Pt in the inner shell and Pd in the outer shell
Structure with Pd in the inner shell and Pt in the outer shell
This is a method definition to create a core shell structure. Feel free to skip the details of this method.
[3]:
from typing import List, Tuple
from ase import Atoms, neighborlist
from ase.cluster import Cluster
import numpy as np
from ase.data import atomic_numbers
def cluster2atoms(cluster: Cluster) -> Atoms:
"""Convert ASE Cluster to ASE Atoms
Args:
cluster (Cluster): input cluster instance
Returns:
atoms (Atoms): converted output, atoms instance
"""
return Atoms(cluster.symbols, cluster.positions, cell=cluster.cell)
def calc_coordination_numbers(atoms: Atoms) -> Tuple[List[int], List[np.ndarray]]:
"""Calculates coordination number
Args:
atoms: input atoms
Returns:
cns (list): coordination number for each atom
bonds (list): bond destination indices for each atom
"""
nl = neighborlist.NeighborList(
neighborlist.natural_cutoffs(atoms), self_interaction=False, bothways=True
)
nl.update(atoms)
bonds = []
cns = []
for i, _ in enumerate(atoms):
indices, offsets = nl.get_neighbors(i)
bonds.append(indices)
cns.append(len(indices))
return cns, bonds
def substitute(scaffold: Atoms, sites: np.ndarray, elements: List[str]) -> Atoms:
"""Substibute `elements` to `sites` indices of `scaffold` atoms
Args:
scaffold (Atoms): Original input atoms
sites (np.ndarray): site indices to substitute `elements`
elements (list): elements to be substituted
Returns:
substituted (Atoms): substituted ase atoms
"""
substituted = scaffold.copy()
for site, element in zip(sites, elements):
substituted.numbers[site] = atomic_numbers[element]
return substituted
def make_core_shell(scaffold: Atoms, element: str) -> Atoms:
"""Make core shell structure
Input `scaffold` element is kept inside core shell,
and outside surface is replaced by `element`.
Note that it is not fully tested.
It was not guaranteed to work on all the cases.
Args:
scaffold (Atoms): input cluster structure
element (str): outside surface element to be replaced
Returns:
coreshell (Atoms): core shell structure
"""
# CN : vertex < edge < surface < core
cn = np.array(calc_coordination_numbers(scaffold)[0])
cn_set = np.unique(cn)
vertexes = None
surfaces = None
cores = None
if len(cn_set) == 1:
pass
elif len(cn_set) == 2:
cores = np.where(cn == cn_set[1])[0]
surfaces = np.where(cn == cn_set[0])[0]
elif len(cn_set) == 3 or len(cn_set) == 4:
cores = np.where(cn == cn_set[-1])[0]
surfaces = np.where(cn != cn_set[-1])[0]
vertexes = np.where(cn == cn_set[0])[0]
else:
cores = np.where(cn == cn_set[-1])[0]
surfaces = np.where(cn != cn_set[-1])[0]
vertexes = np.where(np.isin(cn, cn_set[:-3]))[0]
if surfaces is None:
core_shell = scaffold.copy()
else:
core_shell = substitute(scaffold, surfaces, [element] * len(surfaces))
return core_shell
First, a nanoparticle skeleton structure (scaffold) is created as a base structure.
[4]:
Pt711 = cluster2atoms(Octahedron("Pt", 11, cutoff=4))
view_ngl(Pt711)
Create a Pd306Pt405 structure in which only the inner shell of the base skeleton is replaced with “Pd” element using the make_core_shell
function.
[5]:
Pd306Pt405 = make_core_shell(Pt711, "Pd")
view_ngl(Pd306Pt405)
Similarly, create the Pd405Pt306 structure whose inner shell is Pt and outer shell is Pd.
[6]:
Pd711 = Octahedron("Pd", 11, cutoff=4)
Pd405Pt306 = make_core_shell(Pd711, "Pt")
view_ngl(Pd405Pt306)
[7]:
symbols, counts = np.unique(Pd405Pt306.symbols, return_counts=True)
print(f"Pd405Pt306 structure contains {symbols} with counts {counts}", )
symbols, counts = np.unique(Pd306Pt405.symbols, return_counts=True)
print(f"Pd306Pt405 structure contains {symbols} with counts {counts}", )
Pd405Pt306 structure contains ['Pd' 'Pt'] with counts [405 306]
Pd306Pt405 structure contains ['Pd' 'Pt'] with counts [306 405]
Let’s apply structural relaxation for each structure to obtain its energy.
[8]:
from ase.optimize import FIRE
def get_opt_energy(atoms, fmax=0.001):
opt = FIRE(atoms)
opt.run(fmax=fmax)
return atoms.get_total_energy()
[9]:
print("Optimizing Pt711")
Pt711.calc = calculator
E_pt711 = get_opt_energy(Pt711)
print("Optimizing Pd306Pt405")
Pd306Pt405.calc = calculator
E_pd306pt405 = get_opt_energy(Pd306Pt405)
print("Optimizing Pd405Pt306")
Pd405Pt306.calc = calculator
E_pd405pt306 = get_opt_energy(Pd405Pt306)
print("Optimizing Pd711")
Pd711.calc = calculator
E_pd711 = get_opt_energy(Pd711)
Optimizing Pt711
Step Time Energy fmax
FIRE: 0 14:25:30 -3603.041877 1.106293
FIRE: 1 14:25:30 -3604.082400 1.049765
FIRE: 2 14:25:30 -3605.848908 0.930611
FIRE: 3 14:25:31 -3607.346101 0.799823
FIRE: 4 14:25:31 -3608.623109 0.664005
FIRE: 5 14:25:31 -3609.736314 0.532733
FIRE: 6 14:25:31 -3610.729497 0.414364
FIRE: 7 14:25:31 -3611.628875 0.354905
FIRE: 8 14:25:31 -3612.448010 0.343606
FIRE: 9 14:25:31 -3613.188483 0.317494
FIRE: 10 14:25:31 -3613.846765 0.266917
FIRE: 11 14:25:31 -3614.426036 0.212701
FIRE: 12 14:25:31 -3614.932004 0.218558
FIRE: 13 14:25:31 -3615.370187 0.212221
FIRE: 14 14:25:31 -3615.739076 0.193992
FIRE: 15 14:25:31 -3616.044967 0.167131
FIRE: 16 14:25:32 -3616.294819 0.138940
FIRE: 17 14:25:32 -3616.482616 0.118548
FIRE: 18 14:25:32 -3616.616606 0.126510
FIRE: 19 14:25:32 -3616.718223 0.123149
FIRE: 20 14:25:32 -3616.799659 0.123320
FIRE: 21 14:25:32 -3616.856451 0.149213
FIRE: 22 14:25:32 -3616.886184 0.136264
FIRE: 23 14:25:32 -3616.960276 0.079333
FIRE: 24 14:25:32 -3617.037810 0.082584
FIRE: 25 14:25:32 -3617.108626 0.058447
FIRE: 26 14:25:32 -3617.152649 0.069872
FIRE: 27 14:25:32 -3617.175519 0.058664
FIRE: 28 14:25:32 -3617.185417 0.052176
FIRE: 29 14:25:33 -3617.189734 0.045037
FIRE: 30 14:25:33 -3617.197330 0.037567
FIRE: 31 14:25:33 -3617.206121 0.034813
FIRE: 32 14:25:33 -3617.214139 0.035938
FIRE: 33 14:25:33 -3617.221831 0.033390
FIRE: 34 14:25:33 -3617.228216 0.025663
FIRE: 35 14:25:33 -3617.233478 0.023158
FIRE: 36 14:25:33 -3617.238206 0.019954
FIRE: 37 14:25:33 -3617.240954 0.015322
FIRE: 38 14:25:33 -3617.242835 0.016681
FIRE: 39 14:25:33 -3617.242636 0.015962
FIRE: 40 14:25:33 -3617.243507 0.014847
FIRE: 41 14:25:34 -3617.244221 0.013744
FIRE: 42 14:25:34 -3617.245183 0.012737
FIRE: 43 14:25:34 -3617.246162 0.011964
FIRE: 44 14:25:34 -3617.247463 0.010721
FIRE: 45 14:25:34 -3617.248033 0.009881
FIRE: 46 14:25:34 -3617.248958 0.009811
FIRE: 47 14:25:34 -3617.250371 0.008724
FIRE: 48 14:25:34 -3617.251432 0.008885
FIRE: 49 14:25:34 -3617.252173 0.008483
FIRE: 50 14:25:34 -3617.253084 0.007743
FIRE: 51 14:25:34 -3617.253663 0.006933
FIRE: 52 14:25:34 -3617.254801 0.007572
FIRE: 53 14:25:35 -3617.255755 0.006551
FIRE: 54 14:25:35 -3617.257078 0.006670
FIRE: 55 14:25:35 -3617.258328 0.005623
FIRE: 56 14:25:35 -3617.258520 0.004660
FIRE: 57 14:25:35 -3617.258338 0.005419
FIRE: 58 14:25:35 -3617.258259 0.004716
FIRE: 59 14:25:35 -3617.258837 0.003457
FIRE: 60 14:25:35 -3617.258737 0.001949
FIRE: 61 14:25:35 -3617.258360 0.002321
FIRE: 62 14:25:35 -3617.258359 0.002217
FIRE: 63 14:25:36 -3617.258826 0.002021
FIRE: 64 14:25:36 -3617.258391 0.001418
FIRE: 65 14:25:36 -3617.258426 0.002427
FIRE: 66 14:25:36 -3617.258023 0.002294
FIRE: 67 14:25:36 -3617.258018 0.002035
FIRE: 68 14:25:36 -3617.258499 0.001678
FIRE: 69 14:25:36 -3617.258468 0.001255
FIRE: 70 14:25:36 -3617.258770 0.001222
FIRE: 71 14:25:36 -3617.258111 0.001241
FIRE: 72 14:25:36 -3617.258517 0.001201
FIRE: 73 14:25:36 -3617.258467 0.001056
FIRE: 74 14:25:36 -3617.258608 0.000792
Optimizing Pd306Pt405
Step Time Energy fmax
FIRE: 0 14:25:37 -3128.362422 0.554781
FIRE: 1 14:25:37 -3128.718133 0.519479
FIRE: 2 14:25:37 -3129.327287 0.448112
FIRE: 3 14:25:37 -3130.025151 0.342119
FIRE: 4 14:25:37 -3130.656600 0.213162
FIRE: 5 14:25:37 -3131.125038 0.239736
FIRE: 6 14:25:37 -3131.516222 0.300291
FIRE: 7 14:25:37 -3131.877282 0.281049
FIRE: 8 14:25:37 -3132.205099 0.190794
FIRE: 9 14:25:37 -3132.466972 0.137278
FIRE: 10 14:25:37 -3132.647158 0.160543
FIRE: 11 14:25:37 -3132.767802 0.139157
FIRE: 12 14:25:38 -3132.856732 0.138932
FIRE: 13 14:25:38 -3132.915044 0.116241
FIRE: 14 14:25:38 -3132.932396 0.107701
FIRE: 15 14:25:38 -3132.953113 0.096480
FIRE: 16 14:25:38 -3132.987904 0.080990
FIRE: 17 14:25:38 -3133.025092 0.068376
FIRE: 18 14:25:38 -3133.057638 0.056209
FIRE: 19 14:25:38 -3133.083733 0.060529
FIRE: 20 14:25:38 -3133.105666 0.063915
FIRE: 21 14:25:38 -3133.124318 0.066711
FIRE: 22 14:25:38 -3133.140353 0.067630
FIRE: 23 14:25:38 -3133.150510 0.053313
FIRE: 24 14:25:39 -3133.154367 0.034847
FIRE: 25 14:25:39 -3133.155419 0.033043
FIRE: 26 14:25:39 -3133.157375 0.029604
FIRE: 27 14:25:39 -3133.160142 0.024925
FIRE: 28 14:25:39 -3133.163324 0.023466
FIRE: 29 14:25:39 -3133.166159 0.022205
FIRE: 30 14:25:39 -3133.168810 0.020751
FIRE: 31 14:25:39 -3133.171326 0.021625
FIRE: 32 14:25:39 -3133.173944 0.022589
FIRE: 33 14:25:39 -3133.176931 0.022479
FIRE: 34 14:25:39 -3133.179845 0.021033
FIRE: 35 14:25:39 -3133.182463 0.018295
FIRE: 36 14:25:40 -3133.184520 0.014787
FIRE: 37 14:25:40 -3133.186816 0.013854
FIRE: 38 14:25:40 -3133.188659 0.014411
FIRE: 39 14:25:40 -3133.191965 0.013155
FIRE: 40 14:25:40 -3133.195140 0.013690
FIRE: 41 14:25:40 -3133.197633 0.014567
FIRE: 42 14:25:40 -3133.200278 0.016927
FIRE: 43 14:25:40 -3133.201178 0.012301
FIRE: 44 14:25:40 -3133.201493 0.010042
FIRE: 45 14:25:40 -3133.201860 0.009081
FIRE: 46 14:25:40 -3133.202039 0.007727
FIRE: 47 14:25:41 -3133.202015 0.006072
FIRE: 48 14:25:41 -3133.202341 0.006020
FIRE: 49 14:25:41 -3133.202135 0.005921
FIRE: 50 14:25:41 -3133.202026 0.005769
FIRE: 51 14:25:41 -3133.202030 0.005554
FIRE: 52 14:25:41 -3133.202192 0.005277
FIRE: 53 14:25:41 -3133.202097 0.004928
FIRE: 54 14:25:41 -3133.201711 0.004488
FIRE: 55 14:25:41 -3133.201993 0.003916
FIRE: 56 14:25:41 -3133.202221 0.003203
FIRE: 57 14:25:41 -3133.202351 0.002568
FIRE: 58 14:25:42 -3133.201891 0.002143
FIRE: 59 14:25:42 -3133.202030 0.001219
FIRE: 60 14:25:42 -3133.202281 0.000738
Optimizing Pd405Pt306
Step Time Energy fmax
FIRE: 0 14:25:42 -2921.182322 0.808428
FIRE: 1 14:25:42 -2922.173551 0.778165
FIRE: 2 14:25:42 -2923.798310 0.717436
FIRE: 3 14:25:42 -2925.164911 0.649386
FIRE: 4 14:25:42 -2926.294831 0.574657
FIRE: 5 14:25:42 -2927.257897 0.494829
FIRE: 6 14:25:42 -2928.103585 0.412738
FIRE: 7 14:25:42 -2928.859962 0.331024
FIRE: 8 14:25:43 -2929.541733 0.273011
FIRE: 9 14:25:43 -2930.148465 0.215194
FIRE: 10 14:25:43 -2930.679256 0.194757
FIRE: 11 14:25:43 -2931.135037 0.185401
FIRE: 12 14:25:43 -2931.522678 0.173530
FIRE: 13 14:25:43 -2931.850095 0.156303
FIRE: 14 14:25:43 -2932.122774 0.138360
FIRE: 15 14:25:43 -2932.342372 0.125447
FIRE: 16 14:25:43 -2932.513091 0.119323
FIRE: 17 14:25:43 -2932.643051 0.123406
FIRE: 18 14:25:43 -2932.741551 0.109909
FIRE: 19 14:25:43 -2932.812201 0.103340
FIRE: 20 14:25:43 -2932.859174 0.117370
FIRE: 21 14:25:44 -2932.887554 0.109580
FIRE: 22 14:25:44 -2932.943548 0.083614
FIRE: 23 14:25:44 -2933.016410 0.066704
FIRE: 24 14:25:44 -2933.083822 0.061939
FIRE: 25 14:25:44 -2933.140639 0.048594
FIRE: 26 14:25:44 -2933.176532 0.042659
FIRE: 27 14:25:44 -2933.193233 0.042365
FIRE: 28 14:25:44 -2933.196132 0.038131
FIRE: 29 14:25:44 -2933.200875 0.030508
FIRE: 30 14:25:44 -2933.206880 0.029938
FIRE: 31 14:25:44 -2933.212638 0.029914
FIRE: 32 14:25:44 -2933.218642 0.029287
FIRE: 33 14:25:45 -2933.223844 0.027860
FIRE: 34 14:25:45 -2933.228650 0.025587
FIRE: 35 14:25:45 -2933.233940 0.022231
FIRE: 36 14:25:45 -2933.238736 0.017898
FIRE: 37 14:25:45 -2933.242426 0.017854
FIRE: 38 14:25:45 -2933.247045 0.022313
FIRE: 39 14:25:45 -2933.251806 0.020310
FIRE: 40 14:25:45 -2933.257739 0.015348
FIRE: 41 14:25:45 -2933.262457 0.019001
FIRE: 42 14:25:45 -2933.266097 0.017250
FIRE: 43 14:25:45 -2933.267625 0.009698
FIRE: 44 14:25:45 -2933.267971 0.008436
FIRE: 45 14:25:46 -2933.268189 0.006457
FIRE: 46 14:25:46 -2933.268305 0.004922
FIRE: 47 14:25:46 -2933.268735 0.004740
FIRE: 48 14:25:46 -2933.268920 0.005340
FIRE: 49 14:25:46 -2933.268624 0.005050
FIRE: 50 14:25:46 -2933.268842 0.003217
FIRE: 51 14:25:46 -2933.268917 0.002606
FIRE: 52 14:25:46 -2933.268878 0.002534
FIRE: 53 14:25:46 -2933.268976 0.002397
FIRE: 54 14:25:46 -2933.268877 0.002198
FIRE: 55 14:25:46 -2933.269080 0.001950
FIRE: 56 14:25:46 -2933.269169 0.001671
FIRE: 57 14:25:46 -2933.269039 0.001550
FIRE: 58 14:25:47 -2933.269291 0.001497
FIRE: 59 14:25:47 -2933.268987 0.001398
FIRE: 60 14:25:47 -2933.269336 0.001188
FIRE: 61 14:25:47 -2933.268870 0.000877
Optimizing Pd711
Step Time Energy fmax
FIRE: 0 14:25:47 -2415.405054 0.344279
FIRE: 1 14:25:47 -2415.612591 0.321856
FIRE: 2 14:25:47 -2415.978145 0.280675
FIRE: 3 14:25:47 -2416.425082 0.226757
FIRE: 4 14:25:47 -2416.883060 0.175707
FIRE: 5 14:25:47 -2417.313508 0.185636
FIRE: 6 14:25:47 -2417.704039 0.198317
FIRE: 7 14:25:47 -2418.041955 0.182545
FIRE: 8 14:25:48 -2418.336226 0.144903
FIRE: 9 14:25:48 -2418.583558 0.119375
FIRE: 10 14:25:48 -2418.783487 0.127179
FIRE: 11 14:25:48 -2418.940574 0.127709
FIRE: 12 14:25:48 -2419.064533 0.106266
FIRE: 13 14:25:48 -2419.160496 0.095096
FIRE: 14 14:25:48 -2419.227396 0.089455
FIRE: 15 14:25:48 -2419.261333 0.061273
FIRE: 16 14:25:48 -2419.268015 0.080886
FIRE: 17 14:25:48 -2419.278864 0.074140
FIRE: 18 14:25:48 -2419.297003 0.061625
FIRE: 19 14:25:48 -2419.317263 0.052965
FIRE: 20 14:25:49 -2419.335995 0.046415
FIRE: 21 14:25:49 -2419.352427 0.039599
FIRE: 22 14:25:49 -2419.368013 0.039988
FIRE: 23 14:25:49 -2419.382131 0.032588
FIRE: 24 14:25:49 -2419.394424 0.022818
FIRE: 25 14:25:49 -2419.401560 0.027586
FIRE: 26 14:25:49 -2419.404850 0.032415
FIRE: 27 14:25:49 -2419.405462 0.030809
FIRE: 28 14:25:49 -2419.406825 0.027701
FIRE: 29 14:25:49 -2419.408605 0.023284
FIRE: 30 14:25:49 -2419.410039 0.017863
FIRE: 31 14:25:49 -2419.411662 0.011849
FIRE: 32 14:25:50 -2419.412526 0.012844
FIRE: 33 14:25:50 -2419.413746 0.013750
FIRE: 34 14:25:50 -2419.414922 0.013153
FIRE: 35 14:25:50 -2419.415954 0.010720
FIRE: 36 14:25:50 -2419.417527 0.009610
FIRE: 37 14:25:50 -2419.419019 0.008786
FIRE: 38 14:25:50 -2419.419910 0.011812
FIRE: 39 14:25:50 -2419.420802 0.014921
FIRE: 40 14:25:50 -2419.422039 0.014570
FIRE: 41 14:25:50 -2419.422992 0.010232
FIRE: 42 14:25:50 -2419.424597 0.010144
FIRE: 43 14:25:50 -2419.425413 0.013389
FIRE: 44 14:25:51 -2419.426064 0.008441
FIRE: 45 14:25:51 -2419.426573 0.006695
FIRE: 46 14:25:51 -2419.426851 0.005802
FIRE: 47 14:25:51 -2419.426737 0.004154
FIRE: 48 14:25:51 -2419.426926 0.002776
FIRE: 49 14:25:51 -2419.426802 0.003845
FIRE: 50 14:25:51 -2419.426893 0.004072
FIRE: 51 14:25:51 -2419.426808 0.003231
FIRE: 52 14:25:51 -2419.426638 0.002835
FIRE: 53 14:25:51 -2419.426816 0.002023
FIRE: 54 14:25:51 -2419.426782 0.001955
FIRE: 55 14:25:51 -2419.426839 0.001820
FIRE: 56 14:25:52 -2419.426599 0.001631
FIRE: 57 14:25:52 -2419.426650 0.001392
FIRE: 58 14:25:52 -2419.426818 0.001256
FIRE: 59 14:25:52 -2419.426641 0.001145
FIRE: 60 14:25:52 -2419.426832 0.000994
We can now calculate excess energy from these energies.
[10]:
E_exess_pd306pt405 = (E_pd306pt405 - 306 / 711 * E_pd711 - 405 / 711 * E_pt711) / 711
E_exess_pd405pt306 = (E_pd405pt306 - 405 / 711 * E_pd711 - 306 / 711 * E_pt711) / 711
print(f"Excess energy of Pd306Pt405 = {E_exess_pd306pt405 * 1000:.2f} meV")
print(f"Excess energy of Pd405Pt306 = {E_exess_pd405pt306 * 1000:.2f} meV")
Excess energy of Pd306Pt405 = -44.26 meV
Excess energy of Pd405Pt306 = 2.36 meV
It suggests that Pd306Pt405, which has a negative Excess energy, is more stable when mixed than when Pd and Pt nanoparticles exist alone. On the other hand, the Pd405Pt306 structure is more unstable than Pd306Pt405 since its excess energy is positive.
From this result, we can consider that in Pd-Pt alloy particles, a structure in which Pd is in the outer shell is likely to be stable in nature.
Finally, let us find the excess energy of a structure with 306 Pt and 405 Pd randomly arranged.
[11]:
Pd405Pt306_random = Pt711.copy()
# randomly choose 405 atoms to be replaced to Pd
pd_indices = np.random.choice(np.arange(711), 405, replace=False)
Pd405Pt306_random.numbers[pd_indices] = atomic_numbers["Pd"]
print(f"Replaced to Pd with indices {pd_indices}")
view_ngl(Pd405Pt306_random)
Replaced to Pd with indices [ 88 383 604 60 213 558 439 15 208 550 690 533 647 538 57 391 62 470
247 86 595 150 611 152 445 157 107 46 360 397 667 553 101 356 461 161
565 374 613 313 196 257 486 441 61 184 666 589 210 457 548 528 293 650
245 402 163 120 552 638 526 17 587 448 480 133 539 624 634 534 67 376
336 646 531 44 58 64 418 427 446 372 408 285 310 499 541 212 610 118
224 600 349 572 467 665 532 632 231 148 555 111 317 700 319 14 41 267
509 709 272 517 29 454 401 657 617 394 506 37 567 78 692 159 508 98
234 264 294 282 518 269 72 116 77 671 601 42 703 237 414 415 117 471
635 19 549 661 5 87 32 59 529 428 154 633 171 626 686 619 645 503
223 384 484 288 707 122 579 299 382 674 256 469 684 597 195 320 45 689
103 468 186 584 498 425 492 289 102 16 225 476 92 697 90 404 325 515
370 491 475 433 708 463 227 193 114 450 119 483 295 411 590 644 165 276
424 511 527 578 367 343 543 413 592 281 365 191 581 173 91 232 417 652
357 400 561 177 451 393 189 649 149 93 302 551 421 573 344 147 131 609
250 698 341 10 409 138 390 710 301 192 31 1 440 95 76 437 333 27
473 69 520 110 348 694 460 13 570 53 39 221 335 362 524 323 389 190
434 183 239 438 535 386 479 599 672 197 435 673 96 621 347 172 207 121
259 571 487 304 238 478 472 585 436 366 180 662 622 412 554 569 691 337
494 94 388 658 387 396 643 512 220 203 125 327 373 380 80 18 194 676
254 504 249 405 277 615 166 655 12 75 678 660 513 530 326 462 465 605
230 132 606 0 216 28 577 410 51 84 168 185 537 135 458 354 240 582
322 182 648 395 640 429 704 236 311 685 206 219 432 309 426 268 140 594
115 431 464 85 144 359 40 695 544]
[12]:
print("Optimizing Pd405Pt306_random")
Pd405Pt306_random.calc = calculator
E_pd405pt306_random = get_opt_energy(Pd405Pt306_random)
Optimizing Pd405Pt306_random
Step Time Energy fmax
FIRE: 0 14:25:52 -2951.506716 0.765766
FIRE: 1 14:25:52 -2951.937831 0.733224
FIRE: 2 14:25:52 -2952.682443 0.667993
FIRE: 3 14:25:52 -2953.554715 0.569734
FIRE: 4 14:25:52 -2954.299787 0.458146
FIRE: 5 14:25:53 -2954.871782 0.369099
FIRE: 6 14:25:53 -2955.320882 0.339895
FIRE: 7 14:25:53 -2955.682170 0.324078
FIRE: 8 14:25:53 -2955.974359 0.271887
FIRE: 9 14:25:53 -2956.200539 0.226704
FIRE: 10 14:25:53 -2956.364708 0.242435
FIRE: 11 14:25:53 -2956.480267 0.212748
FIRE: 12 14:25:53 -2956.566103 0.179629
FIRE: 13 14:25:53 -2956.634076 0.154079
FIRE: 14 14:25:53 -2956.685258 0.179475
FIRE: 15 14:25:53 -2956.714649 0.171600
FIRE: 16 14:25:54 -2956.765927 0.156315
FIRE: 17 14:25:54 -2956.826483 0.143411
FIRE: 18 14:25:54 -2956.885088 0.131068
FIRE: 19 14:25:54 -2956.934194 0.116116
FIRE: 20 14:25:54 -2956.971764 0.098397
FIRE: 21 14:25:54 -2956.998637 0.077978
FIRE: 22 14:25:54 -2957.016904 0.065541
FIRE: 23 14:25:54 -2957.025704 0.072795
FIRE: 24 14:25:54 -2957.027288 0.068062
FIRE: 25 14:25:54 -2957.029893 0.059009
FIRE: 26 14:25:54 -2957.033506 0.057342
FIRE: 27 14:25:54 -2957.037790 0.055508
FIRE: 28 14:25:54 -2957.042373 0.053160
FIRE: 29 14:25:55 -2957.046964 0.050259
FIRE: 30 14:25:55 -2957.051590 0.046763
FIRE: 31 14:25:55 -2957.056268 0.042200
FIRE: 32 14:25:55 -2957.060866 0.036376
FIRE: 33 14:25:55 -2957.065366 0.029223
FIRE: 34 14:25:55 -2957.069577 0.023238
FIRE: 35 14:25:55 -2957.073891 0.022994
FIRE: 36 14:25:55 -2957.077929 0.029810
FIRE: 37 14:25:55 -2957.083078 0.028504
FIRE: 38 14:25:55 -2957.088568 0.025424
FIRE: 39 14:25:55 -2957.094616 0.023899
FIRE: 40 14:25:55 -2957.100662 0.023016
FIRE: 41 14:25:56 -2957.106078 0.014227
FIRE: 42 14:25:56 -2957.109012 0.022076
FIRE: 43 14:25:56 -2957.109576 0.016555
FIRE: 44 14:25:56 -2957.109881 0.015553
FIRE: 45 14:25:56 -2957.110283 0.013603
FIRE: 46 14:25:56 -2957.110980 0.010819
FIRE: 47 14:25:56 -2957.111612 0.007799
FIRE: 48 14:25:56 -2957.111975 0.006767
FIRE: 49 14:25:56 -2957.112346 0.006141
FIRE: 50 14:25:56 -2957.112639 0.007015
FIRE: 51 14:25:56 -2957.112887 0.009040
FIRE: 52 14:25:57 -2957.113054 0.009885
FIRE: 53 14:25:57 -2957.113349 0.010308
FIRE: 54 14:25:57 -2957.113711 0.009055
FIRE: 55 14:25:57 -2957.114145 0.006029
FIRE: 56 14:25:57 -2957.114571 0.004789
FIRE: 57 14:25:57 -2957.114860 0.003731
FIRE: 58 14:25:57 -2957.114938 0.005924
FIRE: 59 14:25:57 -2957.114904 0.005552
FIRE: 60 14:25:57 -2957.114833 0.004836
FIRE: 61 14:25:57 -2957.115067 0.003832
FIRE: 62 14:25:57 -2957.115302 0.003199
FIRE: 63 14:25:57 -2957.115327 0.003109
FIRE: 64 14:25:58 -2957.115367 0.003030
FIRE: 65 14:25:58 -2957.115489 0.002909
FIRE: 66 14:25:58 -2957.115461 0.002807
FIRE: 67 14:25:58 -2957.115612 0.002987
FIRE: 68 14:25:58 -2957.115709 0.003293
FIRE: 69 14:25:58 -2957.115815 0.003012
FIRE: 70 14:25:58 -2957.115845 0.002345
FIRE: 71 14:25:58 -2957.116003 0.001799
FIRE: 72 14:25:58 -2957.116086 0.002503
FIRE: 73 14:25:58 -2957.116224 0.002297
FIRE: 74 14:25:58 -2957.116367 0.001981
FIRE: 75 14:25:59 -2957.116417 0.001914
FIRE: 76 14:25:59 -2957.116637 0.001993
FIRE: 77 14:25:59 -2957.116764 0.002053
FIRE: 78 14:25:59 -2957.116787 0.003677
FIRE: 79 14:25:59 -2957.116837 0.001182
FIRE: 80 14:25:59 -2957.116846 0.002599
FIRE: 81 14:25:59 -2957.116755 0.002064
FIRE: 82 14:25:59 -2957.116853 0.001125
FIRE: 83 14:25:59 -2957.116860 0.000959
[13]:
view_ngl(Pd405Pt306_random)
[14]:
E_exess_pd405pt306_random = (E_pd405pt306_random - 405 / 711 * E_pd711 - 306 / 711 * E_pt711) / 711
print(f"Excess energy of Pd306Pt405 random = {E_exess_pd405pt306_random * 1000:.2f} meV")
Excess energy of Pd306Pt405 random = -31.18 meV
Again, negative excess energy is obtained, indicating that this structure can be stable.
In this case, the structure was created using a completely random configuration, but in reality, when substances are mixed, it may be possible to create a more stable structure by taking a localized pattern. Monte Carlo methods are often used to optimize the placement patterns in this type of analysis, but it is omitted here. (A description of the Monte Carlo method and examples may be provided later in the future.)
Thus, by creating various structures and calculating their excess energy, it is possible to analyze what the stable structure of the alloy will be.
Adsorption structure of nanoparticles on the support¶
This tutorial will only present a simple computational example of modeling adsorption on a support, and will not attempt to validate this structure in reality.
In this tutorial, we will use SnO2 as noble metal support and Pt as a nanoparticle to create a structure in which a Pt nanoparticle is placed on the support.
[15]:
# bulk, support material
from ase.io import read
SnO2 = read("../input/SnO2_mp-856_conventional_standard.cif")
view_ngl(SnO2, representations=["ball+stick"])
Here we use pymatgen’s SlabGenerator
to create the slab structure (cut out specific mirror faces from the bulk). This is done by specifying the parameters of the slab structure to be created as initialization parameters when instantiating the SlabGenerator
. By calling the get_slabs
method, you will get a list of slab structures that match the specified initialization parameters.
More information is also available in the following Materials Project Workshop.
[16]:
# Generate slab
from ase.build import make_supercell
import numpy as np
from pymatgen.core.surface import SlabGenerator
from pymatgen.io.ase import AseAtomsAdaptor
slab_gen = SlabGenerator(
initial_structure=AseAtomsAdaptor.get_structure(SnO2),
miller_index=[1,1,0],
min_slab_size=5.0, # ここで層の出方が変わる
min_vacuum_size=15.0, # nanoparticleを載せるので大きめに
lll_reduce=False,
center_slab=True,
primitive=True,
max_normal_search=1,
)
slabs = slab_gen.get_slabs(tol=0.3, bonds=None, max_broken_bonds=0, symmetrize=False)
/home/jovyan/.py39/lib/python3.9/site-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['wyckoffs']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead
warnings.warn(
/home/jovyan/.py39/lib/python3.9/site-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['equivalent_atoms']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead
warnings.warn(
The resulting slabs
are pymatgen instances. It can be converted to an ASE Atoms
instance using AseAtomsAdaptor
.
The obtained structure is converted to ASE Atoms
and visualized.
[17]:
slab_atoms_list = [AseAtomsAdaptor.get_atoms(slab) for slab in slabs]
view_ngl(slab_atoms_list, representations=["ball+stick"])
Two structures were obtained.
In the following sections, we will use the second structure to create a slab. After creating the supercell in ASE, the height of the lowest atom (layer) is set to 0 by translating in the z-axis direction.
[18]:
slab = slab_atoms_list[1].copy()
# make supercell: expand to xy-plane
#slab = make_supercell(slab, [[4, 0, 0], [0, 2, 0], [0, 0, 1]]) # this is same with below.
slab = slab * (4, 2, 1)
# shift `slab` to bottom of cell
min_pos_z = np.min(slab.positions, axis=0)[2]
slab.set_positions(slab.positions - [0, 0, min_pos_z])
[19]:
view_ngl(slab, representations=["ball+stick"], replace_structure=True)
We created a slab structure for support.
Next, we create a nanoparticle cluster to be placed on this support.
[20]:
Pt55 = Octahedron("Pt", 5, cutoff=2)
# cut cluster to make half-sphere
cluster = Pt55.copy()
# Rotate cluster to make triangle surface comes to top.
cluster.rotate([0, 0, 1], [1, 1, 1], center=cluster.get_center_of_mass())
# Cut bottom 2 layers
for _ in range(2):
target = np.round(cluster.positions, decimals=0)
del cluster[np.where(target[:,2]==np.min(target[:,2]))[0]]
[21]:
view_ngl(cluster, representations=["ball+stick"])
Place the nanoparticle cluster on the support.
Here, the nanoparticle is placed on the middle of the support by a program, but you can also use the SurfaceEditor
introduced in chapter 5 to create the initial structure by moving the nanoparticle interactively on GUI.
[22]:
from ase.data import atomic_numbers, chemical_symbols, covalent_radii
# Put Pt37 on top of SnO2. Both perpendincular lines goes z-axis.
slab_xy_size = np.min(slab.cell.cellpar()[0:2])
cluster_xy_size = np.max(
(np.max(cluster.positions, axis=0) - np.min(cluster.positions, axis=0))[0:2]
)
# Vacuum size
min_slab_xy_size = cluster_xy_size + 15
for i in range(1, 5):
print(f"i={i}")
if slab_xy_size * i < min_slab_xy_size:
pass
else:
slab_sc = make_supercell(slab, [[i, 0, 0], [0, i, 0], [0, 0, 1]])
break
slab_surface_xy_center = np.append(
slab_sc.cell.cellpar()[0:2] / 2, np.max(slab_sc.positions, axis=0)[2]
)
cluster_surface_xy_center = np.append(
np.mean(cluster.positions, axis=0)[0:2], np.min(cluster.positions, axis=0)[2]
)
cluster = Atoms(cluster.get_chemical_symbols(), cluster.positions - cluster_surface_xy_center)
slab_surface_covalent_radii = covalent_radii[
slab_sc.get_atomic_numbers()[np.argmax(slab_sc.positions, axis=0)[2]]
]
cluster_surface_covalent_radii = covalent_radii[
cluster.get_atomic_numbers()[np.argmin(cluster.positions, axis=0)[2]]
]
cluster.translate(
slab_surface_xy_center + [0, 0, slab_surface_covalent_radii + cluster_surface_covalent_radii]
)
supported = slab_sc.copy()
supported += cluster
i=1
i=2
[23]:
view_ngl(supported, representations=["ball+stick"])
[24]:
import pfp_api_client
from pfp_api_client.pfp.calculators.ase_calculator import ASECalculator
from pfp_api_client.pfp.estimator import Estimator, EstimatorCalcMode
from ase.optimize import BFGS, LBFGS, FIRE
from ase.io import Trajectory
print(f"pfp_api_client: {pfp_api_client.__version__}")
estimator = Estimator(calc_mode=EstimatorCalcMode.CRYSTAL, model_version="v3.0.0")
calculator = ASECalculator(estimator)
supported.calc = calculator
traj = Trajectory("./SnO2_Pt119.traj", "w", supported)
opt = FIRE(supported)
opt.attach(traj.write, interval=1)
opt.run(fmax=0.005)
traj.close()
pfp_api_client: 1.18.0
Step Time Energy fmax
FIRE: 0 14:26:01 -1860.090908 2.772337
FIRE: 1 14:26:01 -1866.458219 2.345127
FIRE: 2 14:26:01 -1871.904491 2.087904
FIRE: 3 14:26:01 -1876.434687 2.025570
FIRE: 4 14:26:01 -1880.091711 1.950061
FIRE: 5 14:26:01 -1882.953197 1.859120
FIRE: 6 14:26:01 -1885.147574 1.750495
FIRE: 7 14:26:01 -1886.867187 1.622280
FIRE: 8 14:26:01 -1888.359161 1.473233
FIRE: 9 14:26:01 -1889.852359 1.404868
FIRE: 10 14:26:01 -1891.473633 1.297790
FIRE: 11 14:26:01 -1893.201802 1.075850
FIRE: 12 14:26:02 -1894.905019 0.942317
FIRE: 13 14:26:02 -1896.434131 0.936909
FIRE: 14 14:26:02 -1897.707659 0.910064
FIRE: 15 14:26:02 -1898.742466 0.862185
FIRE: 16 14:26:02 -1899.634861 0.861930
FIRE: 17 14:26:02 -1900.494820 0.963558
FIRE: 18 14:26:02 -1901.381262 1.061127
FIRE: 19 14:26:02 -1902.273342 1.143998
FIRE: 20 14:26:02 -1903.099028 1.204080
FIRE: 21 14:26:02 -1903.779864 1.239105
FIRE: 22 14:26:02 -1904.287930 1.252026
FIRE: 23 14:26:02 -1904.671582 1.193156
FIRE: 24 14:26:02 -1905.006241 0.933255
FIRE: 25 14:26:02 -1905.331652 0.708003
FIRE: 26 14:26:02 -1905.632003 0.396677
FIRE: 27 14:26:03 -1905.853795 0.348697
FIRE: 28 14:26:03 -1905.981652 0.574539
FIRE: 29 14:26:03 -1906.069442 0.972596
FIRE: 30 14:26:03 -1906.185097 1.158863
FIRE: 31 14:26:03 -1906.327633 1.032108
FIRE: 32 14:26:03 -1906.441743 0.595610
FIRE: 33 14:26:03 -1906.530182 0.583615
FIRE: 34 14:26:03 -1906.646216 0.651942
FIRE: 35 14:26:03 -1906.779208 0.521820
FIRE: 36 14:26:03 -1906.857278 0.516498
FIRE: 37 14:26:03 -1906.938751 0.604114
FIRE: 38 14:26:03 -1906.936108 0.499259
FIRE: 39 14:26:03 -1907.073790 0.219470
FIRE: 40 14:26:03 -1907.089149 0.265532
FIRE: 41 14:26:04 -1907.099471 0.222812
FIRE: 42 14:26:04 -1907.114717 0.148420
FIRE: 43 14:26:04 -1907.127346 0.094075
FIRE: 44 14:26:04 -1907.133720 0.126109
FIRE: 45 14:26:04 -1907.136501 0.181823
FIRE: 46 14:26:04 -1907.141530 0.190427
FIRE: 47 14:26:04 -1907.151441 0.153244
FIRE: 48 14:26:04 -1907.166613 0.089478
FIRE: 49 14:26:04 -1907.182458 0.082058
FIRE: 50 14:26:04 -1907.193680 0.125017
FIRE: 51 14:26:04 -1907.203037 0.123199
FIRE: 52 14:26:04 -1907.216517 0.098550
FIRE: 53 14:26:04 -1907.231361 0.102635
FIRE: 54 14:26:04 -1907.241632 0.098295
FIRE: 55 14:26:05 -1907.250636 0.081453
FIRE: 56 14:26:05 -1907.262811 0.117063
FIRE: 57 14:26:05 -1907.273459 0.085623
FIRE: 58 14:26:05 -1907.286581 0.108768
FIRE: 59 14:26:05 -1907.303755 0.094357
FIRE: 60 14:26:05 -1907.324385 0.084778
FIRE: 61 14:26:05 -1907.342073 0.129564
FIRE: 62 14:26:05 -1907.366775 0.210234
FIRE: 63 14:26:05 -1907.376727 0.090460
FIRE: 64 14:26:05 -1907.376925 0.144653
FIRE: 65 14:26:05 -1907.378877 0.113235
FIRE: 66 14:26:05 -1907.381615 0.090670
FIRE: 67 14:26:05 -1907.383712 0.090889
FIRE: 68 14:26:05 -1907.384903 0.091418
FIRE: 69 14:26:05 -1907.386135 0.103487
FIRE: 70 14:26:05 -1907.388422 0.104706
FIRE: 71 14:26:06 -1907.391927 0.096948
FIRE: 72 14:26:06 -1907.396307 0.099185
FIRE: 73 14:26:06 -1907.400288 0.101718
FIRE: 74 14:26:06 -1907.404823 0.104522
FIRE: 75 14:26:06 -1907.411394 0.107619
FIRE: 76 14:26:06 -1907.419970 0.112768
FIRE: 77 14:26:06 -1907.429382 0.120250
FIRE: 78 14:26:06 -1907.442357 0.130297
FIRE: 79 14:26:06 -1907.459655 0.146879
FIRE: 80 14:26:06 -1907.482519 0.169491
FIRE: 81 14:26:06 -1907.513447 0.199715
FIRE: 82 14:26:06 -1907.554035 0.204859
FIRE: 83 14:26:06 -1907.606618 0.217550
FIRE: 84 14:26:06 -1907.673030 0.236763
FIRE: 85 14:26:07 -1907.736135 0.176789
FIRE: 86 14:26:07 -1907.758316 0.306274
FIRE: 87 14:26:07 -1907.774721 0.207121
FIRE: 88 14:26:07 -1907.775201 0.244971
FIRE: 89 14:26:07 -1907.778715 0.189372
FIRE: 90 14:26:07 -1907.783262 0.121422
FIRE: 91 14:26:07 -1907.785674 0.106982
FIRE: 92 14:26:07 -1907.785796 0.123431
FIRE: 93 14:26:07 -1907.786062 0.116272
FIRE: 94 14:26:07 -1907.786673 0.102399
FIRE: 95 14:26:07 -1907.787429 0.094898
FIRE: 96 14:26:07 -1907.788325 0.093130
FIRE: 97 14:26:07 -1907.788986 0.090948
FIRE: 98 14:26:07 -1907.789644 0.088366
FIRE: 99 14:26:07 -1907.790372 0.085434
FIRE: 100 14:26:08 -1907.791011 0.081900
FIRE: 101 14:26:08 -1907.791864 0.077803
FIRE: 102 14:26:08 -1907.792767 0.073164
FIRE: 103 14:26:08 -1907.794271 0.068546
FIRE: 104 14:26:08 -1907.796062 0.069537
FIRE: 105 14:26:08 -1907.797949 0.070430
FIRE: 106 14:26:08 -1907.799956 0.071095
FIRE: 107 14:26:08 -1907.802252 0.071438
FIRE: 108 14:26:08 -1907.805033 0.071406
FIRE: 109 14:26:08 -1907.808316 0.071078
FIRE: 110 14:26:08 -1907.811780 0.072608
FIRE: 111 14:26:08 -1907.815622 0.073613
FIRE: 112 14:26:08 -1907.820346 0.073447
FIRE: 113 14:26:08 -1907.825377 0.071193
FIRE: 114 14:26:08 -1907.831511 0.071082
FIRE: 115 14:26:09 -1907.837697 0.069562
FIRE: 116 14:26:09 -1907.844960 0.070838
FIRE: 117 14:26:09 -1907.852505 0.070829
FIRE: 118 14:26:09 -1907.859782 0.068965
FIRE: 119 14:26:09 -1907.867469 0.068363
FIRE: 120 14:26:09 -1907.875251 0.102928
FIRE: 121 14:26:09 -1907.875899 0.209441
FIRE: 122 14:26:09 -1907.883415 0.081490
FIRE: 123 14:26:09 -1907.879635 0.182335
FIRE: 124 14:26:09 -1907.881894 0.139073
FIRE: 125 14:26:09 -1907.884525 0.062710
FIRE: 126 14:26:09 -1907.885234 0.044130
FIRE: 127 14:26:09 -1907.885276 0.044007
FIRE: 128 14:26:09 -1907.885346 0.043749
FIRE: 129 14:26:10 -1907.885507 0.043373
FIRE: 130 14:26:10 -1907.885693 0.042876
FIRE: 131 14:26:10 -1907.885731 0.042261
FIRE: 132 14:26:10 -1907.885877 0.041530
FIRE: 133 14:26:10 -1907.886004 0.040699
FIRE: 134 14:26:10 -1907.886228 0.039678
FIRE: 135 14:26:10 -1907.886437 0.038449
FIRE: 136 14:26:10 -1907.886713 0.036993
FIRE: 137 14:26:10 -1907.887086 0.035310
FIRE: 138 14:26:10 -1907.887549 0.033379
FIRE: 139 14:26:10 -1907.887874 0.031753
FIRE: 140 14:26:10 -1907.888540 0.031262
FIRE: 141 14:26:10 -1907.889055 0.031099
FIRE: 142 14:26:10 -1907.889898 0.031420
FIRE: 143 14:26:11 -1907.890641 0.032311
FIRE: 144 14:26:11 -1907.891645 0.033755
FIRE: 145 14:26:11 -1907.892700 0.035608
FIRE: 146 14:26:11 -1907.893768 0.037698
FIRE: 147 14:26:11 -1907.895272 0.039971
FIRE: 148 14:26:11 -1907.896732 0.042451
FIRE: 149 14:26:11 -1907.898633 0.044865
FIRE: 150 14:26:11 -1907.900626 0.046492
FIRE: 151 14:26:11 -1907.903095 0.046707
FIRE: 152 14:26:11 -1907.906185 0.045647
FIRE: 153 14:26:11 -1907.910242 0.044295
FIRE: 154 14:26:11 -1907.915321 0.043031
FIRE: 155 14:26:11 -1907.919890 0.111116
FIRE: 156 14:26:12 -1907.903339 0.351716
FIRE: 157 14:26:12 -1907.927347 0.092126
FIRE: 158 14:26:12 -1907.928799 0.062258
FIRE: 159 14:26:12 -1907.930066 0.034173
FIRE: 160 14:26:12 -1907.929884 0.039012
FIRE: 161 14:26:12 -1907.929892 0.035804
FIRE: 162 14:26:12 -1907.929993 0.034914
FIRE: 163 14:26:12 -1907.930285 0.034998
FIRE: 164 14:26:12 -1907.930382 0.035114
FIRE: 165 14:26:12 -1907.930585 0.035258
FIRE: 166 14:26:12 -1907.930683 0.035434
FIRE: 167 14:26:12 -1907.930846 0.035628
FIRE: 168 14:26:12 -1907.930976 0.035857
FIRE: 169 14:26:12 -1907.931140 0.036121
FIRE: 170 14:26:13 -1907.931521 0.036421
FIRE: 171 14:26:13 -1907.931827 0.036754
FIRE: 172 14:26:13 -1907.932157 0.037118
FIRE: 173 14:26:13 -1907.932683 0.037523
FIRE: 174 14:26:13 -1907.933124 0.037940
FIRE: 175 14:26:13 -1907.933843 0.038352
FIRE: 176 14:26:13 -1907.934741 0.038720
FIRE: 177 14:26:13 -1907.935671 0.038976
FIRE: 178 14:26:13 -1907.936900 0.039007
FIRE: 179 14:26:13 -1907.938319 0.038649
FIRE: 180 14:26:13 -1907.939988 0.037674
FIRE: 181 14:26:13 -1907.941833 0.035752
FIRE: 182 14:26:13 -1907.944019 0.032470
FIRE: 183 14:26:13 -1907.946171 0.027566
FIRE: 184 14:26:14 -1907.948482 0.030197
FIRE: 185 14:26:14 -1907.950556 0.021295
FIRE: 186 14:26:14 -1907.952201 0.032205
FIRE: 187 14:26:14 -1907.952747 0.073444
FIRE: 188 14:26:14 -1907.954268 0.021003
FIRE: 189 14:26:14 -1907.953358 0.063647
FIRE: 190 14:26:14 -1907.953756 0.049090
FIRE: 191 14:26:14 -1907.954271 0.023353
FIRE: 192 14:26:14 -1907.954434 0.019450
FIRE: 193 14:26:14 -1907.954569 0.019433
FIRE: 194 14:26:14 -1907.954504 0.019395
FIRE: 195 14:26:14 -1907.954539 0.019341
FIRE: 196 14:26:14 -1907.954503 0.019271
FIRE: 197 14:26:15 -1907.954638 0.019186
FIRE: 198 14:26:15 -1907.954523 0.019087
FIRE: 199 14:26:15 -1907.954515 0.018980
FIRE: 200 14:26:15 -1907.954513 0.018846
FIRE: 201 14:26:15 -1907.954575 0.018697
FIRE: 202 14:26:15 -1907.954645 0.018528
FIRE: 203 14:26:15 -1907.954701 0.018334
FIRE: 204 14:26:15 -1907.954763 0.018124
FIRE: 205 14:26:15 -1907.954869 0.017883
FIRE: 206 14:26:15 -1907.954999 0.017609
FIRE: 207 14:26:15 -1907.955124 0.017289
FIRE: 208 14:26:15 -1907.955341 0.016922
FIRE: 209 14:26:15 -1907.955377 0.016522
FIRE: 210 14:26:15 -1907.955634 0.016077
FIRE: 211 14:26:15 -1907.955862 0.015602
FIRE: 212 14:26:16 -1907.956026 0.015067
FIRE: 213 14:26:16 -1907.956399 0.014404
FIRE: 214 14:26:16 -1907.956721 0.013535
FIRE: 215 14:26:16 -1907.957169 0.012485
FIRE: 216 14:26:16 -1907.957650 0.011294
FIRE: 217 14:26:16 -1907.958229 0.011443
FIRE: 218 14:26:16 -1907.958860 0.011535
FIRE: 219 14:26:16 -1907.959676 0.011174
FIRE: 220 14:26:16 -1907.960616 0.013063
FIRE: 221 14:26:16 -1907.961210 0.039075
FIRE: 222 14:26:16 -1907.961636 0.009395
FIRE: 223 14:26:16 -1907.961405 0.034869
FIRE: 224 14:26:16 -1907.961548 0.026539
FIRE: 225 14:26:16 -1907.961745 0.011883
FIRE: 226 14:26:16 -1907.961790 0.009261
FIRE: 227 14:26:16 -1907.961785 0.009259
FIRE: 228 14:26:17 -1907.961750 0.009257
FIRE: 229 14:26:17 -1907.961771 0.009252
FIRE: 230 14:26:17 -1907.961726 0.009241
FIRE: 231 14:26:17 -1907.961767 0.009229
FIRE: 232 14:26:17 -1907.961764 0.009219
FIRE: 233 14:26:17 -1907.961763 0.009201
FIRE: 234 14:26:17 -1907.961742 0.009192
FIRE: 235 14:26:17 -1907.961817 0.009162
FIRE: 236 14:26:17 -1907.961857 0.009132
FIRE: 237 14:26:17 -1907.961880 0.009105
FIRE: 238 14:26:17 -1907.961873 0.009060
FIRE: 239 14:26:17 -1907.962030 0.009009
FIRE: 240 14:26:17 -1907.962037 0.008956
FIRE: 241 14:26:17 -1907.962013 0.008887
FIRE: 242 14:26:17 -1907.962106 0.008910
FIRE: 243 14:26:18 -1907.962219 0.008937
FIRE: 244 14:26:18 -1907.962325 0.008967
FIRE: 245 14:26:18 -1907.962489 0.009003
FIRE: 246 14:26:18 -1907.962760 0.009210
FIRE: 247 14:26:18 -1907.962874 0.009439
FIRE: 248 14:26:18 -1907.963133 0.009635
FIRE: 249 14:26:18 -1907.963391 0.009845
FIRE: 250 14:26:18 -1907.963868 0.010076
FIRE: 251 14:26:18 -1907.964118 0.010235
FIRE: 252 14:26:18 -1907.964788 0.010394
FIRE: 253 14:26:18 -1907.965359 0.010546
FIRE: 254 14:26:18 -1907.966102 0.010584
FIRE: 255 14:26:18 -1907.966770 0.032276
FIRE: 256 14:26:19 -1907.965554 0.106832
FIRE: 257 14:26:19 -1907.968037 0.021248
FIRE: 258 14:26:19 -1907.968100 0.014734
FIRE: 259 14:26:19 -1907.968221 0.010671
FIRE: 260 14:26:19 -1907.968162 0.010570
FIRE: 261 14:26:19 -1907.968148 0.010574
FIRE: 262 14:26:19 -1907.968180 0.010581
FIRE: 263 14:26:19 -1907.968214 0.010591
FIRE: 264 14:26:19 -1907.968247 0.010603
FIRE: 265 14:26:19 -1907.968283 0.010613
FIRE: 266 14:26:19 -1907.968288 0.010629
FIRE: 267 14:26:19 -1907.968246 0.010637
FIRE: 268 14:26:19 -1907.968260 0.010641
FIRE: 269 14:26:19 -1907.968378 0.010634
FIRE: 270 14:26:20 -1907.968299 0.010622
FIRE: 271 14:26:20 -1907.968359 0.010598
FIRE: 272 14:26:20 -1907.968361 0.010566
FIRE: 273 14:26:20 -1907.968438 0.010535
FIRE: 274 14:26:20 -1907.968500 0.010508
FIRE: 275 14:26:20 -1907.968538 0.010495
FIRE: 276 14:26:20 -1907.968627 0.010490
FIRE: 277 14:26:20 -1907.968849 0.010480
FIRE: 278 14:26:20 -1907.968925 0.010454
FIRE: 279 14:26:20 -1907.969011 0.010388
FIRE: 280 14:26:20 -1907.969343 0.010366
FIRE: 281 14:26:20 -1907.969564 0.010402
FIRE: 282 14:26:20 -1907.969937 0.010453
FIRE: 283 14:26:20 -1907.970304 0.010599
FIRE: 284 14:26:20 -1907.970768 0.010807
FIRE: 285 14:26:20 -1907.971429 0.011079
FIRE: 286 14:26:21 -1907.972258 0.011439
FIRE: 287 14:26:21 -1907.973033 0.013937
FIRE: 288 14:26:21 -1907.973885 0.047231
FIRE: 289 14:26:21 -1907.970801 0.153588
FIRE: 290 14:26:21 -1907.975432 0.038165
FIRE: 291 14:26:21 -1907.975606 0.026322
FIRE: 292 14:26:21 -1907.975901 0.013462
FIRE: 293 14:26:21 -1907.975759 0.014672
FIRE: 294 14:26:21 -1907.975786 0.013496
FIRE: 295 14:26:21 -1907.975843 0.013493
FIRE: 296 14:26:21 -1907.975792 0.013493
FIRE: 297 14:26:21 -1907.975917 0.013511
FIRE: 298 14:26:22 -1907.975897 0.013516
FIRE: 299 14:26:22 -1907.975984 0.013530
FIRE: 300 14:26:22 -1907.975962 0.013551
FIRE: 301 14:26:22 -1907.975902 0.013575
FIRE: 302 14:26:22 -1907.975934 0.013606
FIRE: 303 14:26:22 -1907.976034 0.013644
FIRE: 304 14:26:22 -1907.976024 0.013682
FIRE: 305 14:26:22 -1907.976115 0.013734
FIRE: 306 14:26:22 -1907.976240 0.013803
FIRE: 307 14:26:22 -1907.976387 0.013885
FIRE: 308 14:26:22 -1907.976557 0.013981
FIRE: 309 14:26:22 -1907.976569 0.014175
FIRE: 310 14:26:22 -1907.976746 0.014503
FIRE: 311 14:26:23 -1907.977103 0.014877
FIRE: 312 14:26:23 -1907.977466 0.015331
FIRE: 313 14:26:23 -1907.977719 0.015974
FIRE: 314 14:26:23 -1907.978271 0.016913
FIRE: 315 14:26:23 -1907.978816 0.018136
FIRE: 316 14:26:23 -1907.979584 0.019708
FIRE: 317 14:26:23 -1907.980664 0.022010
FIRE: 318 14:26:23 -1907.981946 0.025254
FIRE: 319 14:26:23 -1907.983866 0.029795
FIRE: 320 14:26:23 -1907.986205 0.036769
FIRE: 321 14:26:23 -1907.988527 0.084281
FIRE: 322 14:26:23 -1907.978339 0.283086
FIRE: 323 14:26:23 -1907.994095 0.082199
FIRE: 324 14:26:24 -1907.995068 0.055828
FIRE: 325 14:26:24 -1907.995934 0.056515
FIRE: 326 14:26:24 -1907.995846 0.057388
FIRE: 327 14:26:24 -1907.995934 0.057398
FIRE: 328 14:26:24 -1907.996138 0.057426
FIRE: 329 14:26:24 -1907.996158 0.057456
FIRE: 330 14:26:24 -1907.996377 0.057517
FIRE: 331 14:26:24 -1907.996554 0.057597
FIRE: 332 14:26:24 -1907.996534 0.057718
FIRE: 333 14:26:24 -1907.996706 0.057872
FIRE: 334 14:26:24 -1907.996888 0.058088
FIRE: 335 14:26:24 -1907.997189 0.058368
FIRE: 336 14:26:24 -1907.997486 0.058706
FIRE: 337 14:26:25 -1907.997822 0.059117
FIRE: 338 14:26:25 -1907.998392 0.059581
FIRE: 339 14:26:25 -1907.998924 0.060051
FIRE: 340 14:26:25 -1907.999774 0.060477
FIRE: 341 14:26:25 -1908.000681 0.060799
FIRE: 342 14:26:25 -1908.001945 0.061015
FIRE: 343 14:26:25 -1908.003300 0.061187
FIRE: 344 14:26:25 -1908.005223 0.061500
FIRE: 345 14:26:25 -1908.007627 0.062337
FIRE: 346 14:26:25 -1908.010490 0.063982
FIRE: 347 14:26:25 -1908.014161 0.065194
FIRE: 348 14:26:25 -1908.018822 0.065593
FIRE: 349 14:26:25 -1908.024674 0.065848
FIRE: 350 14:26:25 -1908.032383 0.071611
FIRE: 351 14:26:26 -1908.043108 0.081370
FIRE: 352 14:26:26 -1908.059229 0.099618
FIRE: 353 14:26:26 -1908.085400 0.125526
FIRE: 354 14:26:26 -1908.128298 0.182419
FIRE: 355 14:26:26 -1908.180454 0.373985
FIRE: 356 14:26:26 -1908.106736 1.274011
FIRE: 357 14:26:26 -1908.214616 0.751844
FIRE: 358 14:26:26 -1908.251758 0.457676
FIRE: 359 14:26:26 -1908.275850 0.205674
FIRE: 360 14:26:26 -1908.264247 0.440378
FIRE: 361 14:26:26 -1908.268350 0.396314
FIRE: 362 14:26:26 -1908.274890 0.312673
FIRE: 363 14:26:26 -1908.281906 0.199149
FIRE: 364 14:26:26 -1908.287214 0.198479
FIRE: 365 14:26:27 -1908.289617 0.197536
FIRE: 366 14:26:27 -1908.290219 0.196310
FIRE: 367 14:26:27 -1908.290522 0.196264
FIRE: 368 14:26:27 -1908.290937 0.196180
FIRE: 369 14:26:27 -1908.291633 0.196056
FIRE: 370 14:26:27 -1908.292485 0.195878
FIRE: 371 14:26:27 -1908.293428 0.195661
FIRE: 372 14:26:27 -1908.294490 0.195394
FIRE: 373 14:26:27 -1908.295602 0.195075
FIRE: 374 14:26:27 -1908.296881 0.194659
FIRE: 375 14:26:27 -1908.298290 0.194126
FIRE: 376 14:26:27 -1908.299787 0.193421
FIRE: 377 14:26:27 -1908.301511 0.192514
FIRE: 378 14:26:27 -1908.303609 0.191339
FIRE: 379 14:26:28 -1908.306390 0.189828
FIRE: 380 14:26:28 -1908.309897 0.187863
FIRE: 381 14:26:28 -1908.314358 0.185280
FIRE: 382 14:26:28 -1908.319800 0.181847
FIRE: 383 14:26:28 -1908.325967 0.177222
FIRE: 384 14:26:28 -1908.333061 0.170962
FIRE: 385 14:26:28 -1908.341416 0.162577
FIRE: 386 14:26:28 -1908.351414 0.151517
FIRE: 387 14:26:28 -1908.362455 0.137574
FIRE: 388 14:26:28 -1908.374294 0.122055
FIRE: 389 14:26:28 -1908.386829 0.108631
FIRE: 390 14:26:28 -1908.399539 0.089955
FIRE: 391 14:26:28 -1908.411355 0.103394
FIRE: 392 14:26:28 -1908.422532 0.104505
FIRE: 393 14:26:29 -1908.433075 0.125009
FIRE: 394 14:26:29 -1908.444087 0.126238
FIRE: 395 14:26:29 -1908.454284 0.113995
FIRE: 396 14:26:29 -1908.463360 0.146129
FIRE: 397 14:26:29 -1908.473144 0.132020
FIRE: 398 14:26:29 -1908.485213 0.119345
FIRE: 399 14:26:29 -1908.497222 0.089715
FIRE: 400 14:26:29 -1908.495685 0.189681
FIRE: 401 14:26:29 -1908.509126 0.075494
FIRE: 402 14:26:29 -1908.509626 0.074013
FIRE: 403 14:26:29 -1908.510447 0.071713
FIRE: 404 14:26:29 -1908.511593 0.068479
FIRE: 405 14:26:29 -1908.513175 0.064748
FIRE: 406 14:26:29 -1908.514782 0.064082
FIRE: 407 14:26:30 -1908.516520 0.063791
FIRE: 408 14:26:30 -1908.518416 0.063679
FIRE: 409 14:26:30 -1908.520556 0.063288
FIRE: 410 14:26:30 -1908.522729 0.061866
FIRE: 411 14:26:30 -1908.525179 0.058462
FIRE: 412 14:26:30 -1908.527859 0.052075
FIRE: 413 14:26:30 -1908.530710 0.046815
FIRE: 414 14:26:30 -1908.533575 0.045756
FIRE: 415 14:26:30 -1908.536343 0.050856
FIRE: 416 14:26:30 -1908.539401 0.056004
FIRE: 417 14:26:30 -1908.542811 0.057429
FIRE: 418 14:26:30 -1908.546494 0.053774
FIRE: 419 14:26:30 -1908.551103 0.056172
FIRE: 420 14:26:31 -1908.556759 0.062229
FIRE: 421 14:26:31 -1908.563898 0.072487
FIRE: 422 14:26:31 -1908.570240 0.122885
FIRE: 423 14:26:31 -1908.576926 0.088912
FIRE: 424 14:26:31 -1908.573540 0.109395
FIRE: 425 14:26:31 -1908.575864 0.088821
FIRE: 426 14:26:31 -1908.578494 0.088961
FIRE: 427 14:26:31 -1908.579285 0.089192
FIRE: 428 14:26:31 -1908.579332 0.089220
FIRE: 429 14:26:31 -1908.579549 0.089268
FIRE: 430 14:26:31 -1908.579616 0.089343
FIRE: 431 14:26:31 -1908.579873 0.089441
FIRE: 432 14:26:31 -1908.580108 0.089568
FIRE: 433 14:26:31 -1908.580386 0.089715
FIRE: 434 14:26:32 -1908.580640 0.089887
FIRE: 435 14:26:32 -1908.581140 0.090099
FIRE: 436 14:26:32 -1908.581478 0.090356
FIRE: 437 14:26:32 -1908.582087 0.090675
FIRE: 438 14:26:32 -1908.582848 0.091054
FIRE: 439 14:26:32 -1908.583857 0.091495
FIRE: 440 14:26:32 -1908.584861 0.092006
FIRE: 441 14:26:32 -1908.586272 0.092563
FIRE: 442 14:26:32 -1908.587908 0.093115
FIRE: 443 14:26:32 -1908.590173 0.093588
FIRE: 444 14:26:32 -1908.592910 0.093827
FIRE: 445 14:26:32 -1908.596140 0.093602
FIRE: 446 14:26:32 -1908.600154 0.092631
FIRE: 447 14:26:33 -1908.605071 0.090733
FIRE: 448 14:26:33 -1908.611275 0.088377
FIRE: 449 14:26:33 -1908.618847 0.087320
FIRE: 450 14:26:33 -1908.626566 0.086153
FIRE: 451 14:26:33 -1908.634591 0.072209
FIRE: 452 14:26:33 -1908.642012 0.093389
FIRE: 453 14:26:33 -1908.648773 0.084896
FIRE: 454 14:26:33 -1908.656050 0.097475
FIRE: 455 14:26:33 -1908.665150 0.074482
FIRE: 456 14:26:33 -1908.676304 0.065448
FIRE: 457 14:26:33 -1908.680114 0.138819
FIRE: 458 14:26:33 -1908.684630 0.077553
FIRE: 459 14:26:33 -1908.684990 0.072880
FIRE: 460 14:26:33 -1908.685529 0.063982
FIRE: 461 14:26:34 -1908.685962 0.051741
FIRE: 462 14:26:34 -1908.686385 0.047074
FIRE: 463 14:26:34 -1908.686924 0.046016
FIRE: 464 14:26:34 -1908.687564 0.044806
FIRE: 465 14:26:34 -1908.688107 0.043387
FIRE: 466 14:26:34 -1908.688691 0.041506
FIRE: 467 14:26:34 -1908.689294 0.039068
FIRE: 468 14:26:34 -1908.689951 0.035876
FIRE: 469 14:26:34 -1908.690712 0.031529
FIRE: 470 14:26:34 -1908.691537 0.029724
FIRE: 471 14:26:34 -1908.692464 0.024456
FIRE: 472 14:26:34 -1908.693347 0.022876
FIRE: 473 14:26:34 -1908.694072 0.022222
FIRE: 474 14:26:34 -1908.694992 0.024558
FIRE: 475 14:26:35 -1908.695936 0.024768
FIRE: 476 14:26:35 -1908.696931 0.027556
FIRE: 477 14:26:35 -1908.698152 0.035401
FIRE: 478 14:26:35 -1908.699027 0.060521
FIRE: 479 14:26:35 -1908.700084 0.032918
FIRE: 480 14:26:35 -1908.699768 0.050698
FIRE: 481 14:26:35 -1908.700056 0.038922
FIRE: 482 14:26:35 -1908.700411 0.028242
FIRE: 483 14:26:35 -1908.700504 0.027741
FIRE: 484 14:26:35 -1908.700482 0.027706
FIRE: 485 14:26:35 -1908.700628 0.027637
FIRE: 486 14:26:35 -1908.700594 0.027536
FIRE: 487 14:26:35 -1908.700687 0.027410
FIRE: 488 14:26:35 -1908.700560 0.027245
FIRE: 489 14:26:36 -1908.700652 0.027064
FIRE: 490 14:26:36 -1908.700668 0.026856
FIRE: 491 14:26:36 -1908.700673 0.026594
FIRE: 492 14:26:36 -1908.700764 0.026282
FIRE: 493 14:26:36 -1908.700902 0.025924
FIRE: 494 14:26:36 -1908.700900 0.025510
FIRE: 495 14:26:36 -1908.701139 0.025049
FIRE: 496 14:26:36 -1908.701211 0.024556
FIRE: 497 14:26:36 -1908.701374 0.024063
FIRE: 498 14:26:36 -1908.701577 0.023588
FIRE: 499 14:26:36 -1908.701869 0.023191
FIRE: 500 14:26:36 -1908.702209 0.022947
FIRE: 501 14:26:36 -1908.702658 0.022929
FIRE: 502 14:26:37 -1908.703010 0.023199
FIRE: 503 14:26:37 -1908.703624 0.023790
FIRE: 504 14:26:37 -1908.704288 0.024679
FIRE: 505 14:26:37 -1908.705014 0.025814
FIRE: 506 14:26:37 -1908.706084 0.027119
FIRE: 507 14:26:37 -1908.707476 0.028636
FIRE: 508 14:26:37 -1908.709267 0.030362
FIRE: 509 14:26:37 -1908.711647 0.032121
FIRE: 510 14:26:37 -1908.714641 0.033637
FIRE: 511 14:26:37 -1908.718775 0.034449
FIRE: 512 14:26:37 -1908.723771 0.033630
FIRE: 513 14:26:37 -1908.726074 0.111242
FIRE: 514 14:26:37 -1908.730693 0.034417
FIRE: 515 14:26:37 -1908.730951 0.034259
FIRE: 516 14:26:37 -1908.730982 0.033959
FIRE: 517 14:26:38 -1908.731140 0.033539
FIRE: 518 14:26:38 -1908.731449 0.033273
FIRE: 519 14:26:38 -1908.731705 0.033748
FIRE: 520 14:26:38 -1908.732003 0.034146
FIRE: 521 14:26:38 -1908.732525 0.034452
FIRE: 522 14:26:38 -1908.732926 0.034594
FIRE: 523 14:26:38 -1908.733572 0.034538
FIRE: 524 14:26:38 -1908.734374 0.034447
FIRE: 525 14:26:38 -1908.735452 0.035806
FIRE: 526 14:26:38 -1908.736724 0.037682
FIRE: 527 14:26:38 -1908.738355 0.040218
FIRE: 528 14:26:38 -1908.740382 0.043755
FIRE: 529 14:26:38 -1908.742864 0.048745
FIRE: 530 14:26:38 -1908.746187 0.055600
FIRE: 531 14:26:39 -1908.750613 0.063162
FIRE: 532 14:26:39 -1908.756597 0.068666
FIRE: 533 14:26:39 -1908.764814 0.077786
FIRE: 534 14:26:39 -1908.776781 0.092138
FIRE: 535 14:26:39 -1908.792466 0.110723
FIRE: 536 14:26:39 -1908.782621 0.305921
FIRE: 537 14:26:39 -1908.823143 0.129825
FIRE: 538 14:26:39 -1908.825252 0.129040
FIRE: 539 14:26:39 -1908.827705 0.127090
FIRE: 540 14:26:39 -1908.828965 0.123385
FIRE: 541 14:26:39 -1908.830038 0.118227
FIRE: 542 14:26:39 -1908.832687 0.112908
FIRE: 543 14:26:39 -1908.836650 0.108819
FIRE: 544 14:26:40 -1908.840435 0.110200
FIRE: 545 14:26:40 -1908.844176 0.111731
FIRE: 546 14:26:40 -1908.849288 0.112822
FIRE: 547 14:26:40 -1908.857171 0.119230
FIRE: 548 14:26:40 -1908.865699 0.127668
FIRE: 549 14:26:40 -1908.877264 0.133780
FIRE: 550 14:26:40 -1908.893155 0.142806
FIRE: 551 14:26:40 -1908.912650 0.158827
FIRE: 552 14:26:40 -1908.939365 0.176322
FIRE: 553 14:26:40 -1908.973295 0.191630
FIRE: 554 14:26:40 -1909.015848 0.222644
FIRE: 555 14:26:40 -1909.065900 0.188784
FIRE: 556 14:26:40 -1909.109560 0.159869
FIRE: 557 14:26:40 -1909.108238 0.410784
FIRE: 558 14:26:41 -1909.131835 0.330241
FIRE: 559 14:26:41 -1909.130883 0.195027
FIRE: 560 14:26:41 -1909.136904 0.189601
FIRE: 561 14:26:41 -1909.144041 0.178932
FIRE: 562 14:26:41 -1909.147665 0.162918
FIRE: 563 14:26:41 -1909.147364 0.142061
FIRE: 564 14:26:41 -1909.148040 0.141207
FIRE: 565 14:26:41 -1909.148888 0.139497
FIRE: 566 14:26:41 -1909.150128 0.136931
FIRE: 567 14:26:41 -1909.151465 0.133517
FIRE: 568 14:26:41 -1909.152833 0.129241
FIRE: 569 14:26:41 -1909.153904 0.124078
FIRE: 570 14:26:41 -1909.154717 0.118087
FIRE: 571 14:26:42 -1909.155598 0.110722
FIRE: 572 14:26:42 -1909.156716 0.103327
FIRE: 573 14:26:42 -1909.158246 0.101184
FIRE: 574 14:26:42 -1909.160598 0.098630
FIRE: 575 14:26:42 -1909.163340 0.095789
FIRE: 576 14:26:42 -1909.165919 0.094306
FIRE: 577 14:26:42 -1909.168518 0.091828
FIRE: 578 14:26:42 -1909.171393 0.088093
FIRE: 579 14:26:42 -1909.175036 0.083275
FIRE: 580 14:26:42 -1909.178821 0.078375
FIRE: 581 14:26:42 -1909.182339 0.077448
FIRE: 582 14:26:42 -1909.186376 0.082618
FIRE: 583 14:26:42 -1909.191082 0.086852
FIRE: 584 14:26:42 -1909.195693 0.087227
FIRE: 585 14:26:43 -1909.201293 0.082038
FIRE: 586 14:26:43 -1909.207032 0.071967
FIRE: 587 14:26:43 -1909.214190 0.075346
FIRE: 588 14:26:43 -1909.221574 0.090704
FIRE: 589 14:26:43 -1909.230259 0.088918
FIRE: 590 14:26:43 -1909.239730 0.069651
FIRE: 591 14:26:43 -1909.247007 0.078115
FIRE: 592 14:26:43 -1909.247020 0.107810
FIRE: 593 14:26:43 -1909.252657 0.061686
FIRE: 594 14:26:43 -1909.249881 0.095057
FIRE: 595 14:26:43 -1909.251759 0.071686
FIRE: 596 14:26:43 -1909.253778 0.054739
FIRE: 597 14:26:43 -1909.254357 0.053079
FIRE: 598 14:26:44 -1909.254406 0.052961
FIRE: 599 14:26:44 -1909.254511 0.052720
FIRE: 600 14:26:44 -1909.254608 0.052368
FIRE: 601 14:26:44 -1909.254624 0.051894
FIRE: 602 14:26:44 -1909.254772 0.051300
FIRE: 603 14:26:44 -1909.254987 0.050587
FIRE: 604 14:26:44 -1909.255139 0.049758
FIRE: 605 14:26:44 -1909.255188 0.048716
FIRE: 606 14:26:44 -1909.255334 0.047422
FIRE: 607 14:26:44 -1909.255668 0.045851
FIRE: 608 14:26:44 -1909.255965 0.043949
FIRE: 609 14:26:44 -1909.256352 0.041683
FIRE: 610 14:26:44 -1909.256764 0.038982
FIRE: 611 14:26:44 -1909.257135 0.035809
FIRE: 612 14:26:45 -1909.257641 0.032162
FIRE: 613 14:26:45 -1909.258257 0.028088
FIRE: 614 14:26:45 -1909.258756 0.023664
FIRE: 615 14:26:45 -1909.259346 0.020865
FIRE: 616 14:26:45 -1909.260062 0.021286
FIRE: 617 14:26:45 -1909.260701 0.021775
FIRE: 618 14:26:45 -1909.261477 0.022444
FIRE: 619 14:26:45 -1909.262288 0.023223
FIRE: 620 14:26:45 -1909.263406 0.023696
FIRE: 621 14:26:45 -1909.264471 0.023211
FIRE: 622 14:26:45 -1909.265777 0.021326
FIRE: 623 14:26:45 -1909.267241 0.017881
FIRE: 624 14:26:45 -1909.268956 0.014549
FIRE: 625 14:26:45 -1909.270531 0.013195
FIRE: 626 14:26:46 -1909.271855 0.040027
FIRE: 627 14:26:46 -1909.272439 0.017370
FIRE: 628 14:26:46 -1909.271963 0.036472
FIRE: 629 14:26:46 -1909.272224 0.027394
FIRE: 630 14:26:46 -1909.272669 0.015755
FIRE: 631 14:26:46 -1909.272765 0.015425
FIRE: 632 14:26:46 -1909.272761 0.015401
FIRE: 633 14:26:46 -1909.272713 0.015354
FIRE: 634 14:26:46 -1909.272666 0.015286
FIRE: 635 14:26:46 -1909.272686 0.015192
FIRE: 636 14:26:46 -1909.272653 0.015075
FIRE: 637 14:26:46 -1909.272705 0.014933
FIRE: 638 14:26:46 -1909.272753 0.014768
FIRE: 639 14:26:46 -1909.272772 0.014562
FIRE: 640 14:26:47 -1909.272821 0.014310
FIRE: 641 14:26:47 -1909.272937 0.014004
FIRE: 642 14:26:47 -1909.272951 0.013635
FIRE: 643 14:26:47 -1909.273063 0.013200
FIRE: 644 14:26:47 -1909.273049 0.012687
FIRE: 645 14:26:47 -1909.273187 0.012090
FIRE: 646 14:26:47 -1909.273205 0.011408
FIRE: 647 14:26:47 -1909.273360 0.010654
FIRE: 648 14:26:47 -1909.273493 0.009839
FIRE: 649 14:26:47 -1909.273645 0.009448
FIRE: 650 14:26:47 -1909.273774 0.009143
FIRE: 651 14:26:47 -1909.274060 0.009226
FIRE: 652 14:26:47 -1909.274511 0.009522
FIRE: 653 14:26:47 -1909.274690 0.009702
FIRE: 654 14:26:48 -1909.275137 0.009696
FIRE: 655 14:26:48 -1909.275554 0.009414
FIRE: 656 14:26:48 -1909.276118 0.008817
FIRE: 657 14:26:48 -1909.276683 0.007922
FIRE: 658 14:26:48 -1909.277459 0.007380
FIRE: 659 14:26:48 -1909.278042 0.018926
FIRE: 660 14:26:48 -1909.277901 0.050066
FIRE: 661 14:26:48 -1909.279029 0.008207
FIRE: 662 14:26:48 -1909.279199 0.008181
FIRE: 663 14:26:48 -1909.279092 0.008125
FIRE: 664 14:26:48 -1909.279149 0.008042
FIRE: 665 14:26:48 -1909.279203 0.007930
FIRE: 666 14:26:48 -1909.279201 0.007800
FIRE: 667 14:26:48 -1909.279200 0.007651
FIRE: 668 14:26:48 -1909.279282 0.007488
FIRE: 669 14:26:49 -1909.279400 0.007289
FIRE: 670 14:26:49 -1909.279303 0.007056
FIRE: 671 14:26:49 -1909.279451 0.006792
FIRE: 672 14:26:49 -1909.279457 0.006500
FIRE: 673 14:26:49 -1909.279639 0.006563
FIRE: 674 14:26:49 -1909.279764 0.006704
FIRE: 675 14:26:49 -1909.279777 0.006817
FIRE: 676 14:26:49 -1909.279915 0.006871
FIRE: 677 14:26:49 -1909.280137 0.006853
FIRE: 678 14:26:49 -1909.280386 0.006734
FIRE: 679 14:26:49 -1909.280773 0.006491
FIRE: 680 14:26:49 -1909.281046 0.006146
FIRE: 681 14:26:49 -1909.281335 0.005701
FIRE: 682 14:26:50 -1909.281759 0.016009
FIRE: 683 14:26:50 -1909.281137 0.048868
FIRE: 684 14:26:50 -1909.282201 0.007326
FIRE: 685 14:26:50 -1909.282181 0.005340
FIRE: 686 14:26:50 -1909.282206 0.005321
FIRE: 687 14:26:50 -1909.282202 0.005285
FIRE: 688 14:26:50 -1909.282254 0.005241
FIRE: 689 14:26:50 -1909.282235 0.005483
FIRE: 690 14:26:50 -1909.282289 0.005129
FIRE: 691 14:26:50 -1909.282408 0.005058
FIRE: 692 14:26:50 -1909.282298 0.004974
[25]:
SnO2_Pt119 = Trajectory("./SnO2_Pt119.traj")
view_ngl(SnO2_Pt119, representations=["ball+stick"])
[26]:
from ase.io import write
from IPython.display import Image
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
write("output/sno2_pt119_opt.png", SnO2_Pt119[-1], rotation="-90x,0y,0z")
fig, ax = plt.subplots(1, 1, figsize=(5, 5))
ax.imshow(mpimg.imread("output/sno2_pt119_opt.png"))
ax.set_axis_off()
ax.set_title("SnO2 - Pt119 optimized structure")
fig.show()
In this way, we were able to create a nanoparticle structure on the support.
Here we can also visualize charge as shown in the paper. We can see that the charge deviates from 0 only near the adsorption surface of the nanoparticle, and the outside of the shell is positive and the inside is negative.
[27]:
v = view_ngl(SnO2_Pt119[-1], show_charge=True)
v.show_charge_label()
v
Thus, we were able to create a structure in which Pt nanoparticles are adsorbed on a SnO2 support.
In practice, it is necessary to verify whether this structure is really correct (e.g., whether Pt nanoparticles are adsorbed as fine particles, or whether it is more stable to be adsorbed in a form that stretches homogeneously over the entire surface), but this is out of scope of this tutorial.
By creating such a structure, it is possible to further develop the simulation of
Reactions under catalysts with various surfaces exposed
Reactions at the interface between catalyst and substrate
etc., in combination with the reaction searches and MDs, which will be discussed later.
This allows us to simulate catalytic reactions in a more realistic condition.
Reference
Calculations of Real-System Nanoparticles Using Universal Neural Network Potential PFP
Structural Stability of Ruthenium Nanoparticles: A Density Functional Theory Study
Electronic Structure and Phase Stability of PdPt Nanoparticles
Electronic structure and phase stability of Pt3M (M = Co, Ni, and Cu) bimetallic nanoparticles