[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, model_version="latest")
estimator = Estimator(calc_mode=EstimatorCalcMode.CRYSTAL_U0, model_version="v3.0.0")
calculator = ASECalculator(estimator)
pfp_api_client: 1.5.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{excess}} = \frac{1}{N_{\rm{alloy}}} \left( E_{\rm{alloy}} - \frac{N_{\rm{alloyA}}}{N_{\rm{alloy}}} E_{\rm{A}} - \frac{N_{\rm{alloyB}}}{N_{\rm{alloy}}} E_{\rm{B}} \right)\]

\(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:

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
*Force-consistent energies used in optimization.
FIRE:    0 06:54:54    -3603.041770*       1.1063
FIRE:    1 06:54:54    -3604.081779*       1.0498
FIRE:    2 06:54:54    -3605.848377*       0.9306
FIRE:    3 06:54:55    -3607.344865*       0.7998
FIRE:    4 06:54:55    -3608.622478*       0.6640
FIRE:    5 06:54:55    -3609.735569*       0.5327
FIRE:    6 06:54:55    -3610.728639*       0.4144
FIRE:    7 06:54:56    -3611.628229*       0.3549
FIRE:    8 06:54:56    -3612.447484*       0.3436
FIRE:    9 06:54:56    -3613.187570*       0.3175
FIRE:   10 06:54:56    -3613.846037*       0.2669
FIRE:   11 06:54:57    -3614.425194*       0.2127
FIRE:   12 06:54:57    -3614.931713*       0.2186
FIRE:   13 06:54:57    -3615.369616*       0.2122
FIRE:   14 06:54:57    -3615.738931*       0.1940
FIRE:   15 06:54:58    -3616.044471*       0.1671
FIRE:   16 06:54:58    -3616.293988*       0.1389
FIRE:   17 06:54:58    -3616.481608*       0.1185
FIRE:   18 06:54:58    -3616.616016*       0.1265
FIRE:   19 06:54:59    -3616.717579*       0.1232
FIRE:   20 06:54:59    -3616.798756*       0.1233
FIRE:   21 06:54:59    -3616.855684*       0.1492
FIRE:   22 06:54:59    -3616.885267*       0.1363
FIRE:   23 06:54:59    -3616.959217*       0.0793
FIRE:   24 06:55:00    -3617.036669*       0.0826
FIRE:   25 06:55:00    -3617.107673*       0.0584
FIRE:   26 06:55:00    -3617.151703*       0.0699
FIRE:   27 06:55:00    -3617.174603*       0.0587
FIRE:   28 06:55:01    -3617.184372*       0.0522
FIRE:   29 06:55:01    -3617.188934*       0.0450
FIRE:   30 06:55:01    -3617.196528*       0.0376
FIRE:   31 06:55:01    -3617.205299*       0.0348
FIRE:   32 06:55:02    -3617.213477*       0.0359
FIRE:   33 06:55:02    -3617.220633*       0.0334
FIRE:   34 06:55:02    -3617.227574*       0.0257
FIRE:   35 06:55:02    -3617.232732*       0.0232
FIRE:   36 06:55:03    -3617.237323*       0.0200
FIRE:   37 06:55:03    -3617.240054*       0.0153
FIRE:   38 06:55:03    -3617.241792*       0.0167
FIRE:   39 06:55:03    -3617.241965*       0.0160
FIRE:   40 06:55:04    -3617.242585*       0.0148
FIRE:   41 06:55:04    -3617.243465*       0.0137
FIRE:   42 06:55:04    -3617.244501*       0.0127
FIRE:   43 06:55:04    -3617.245454*       0.0120
FIRE:   44 06:55:04    -3617.246485*       0.0107
FIRE:   45 06:55:05    -3617.247410*       0.0099
FIRE:   46 06:55:05    -3617.248225*       0.0098
FIRE:   47 06:55:05    -3617.249551*       0.0087
FIRE:   48 06:55:05    -3617.250300*       0.0089
FIRE:   49 06:55:06    -3617.251227*       0.0085
FIRE:   50 06:55:06    -3617.252279*       0.0077
FIRE:   51 06:55:06    -3617.253040*       0.0069
FIRE:   52 06:55:06    -3617.254019*       0.0076
FIRE:   53 06:55:07    -3617.254870*       0.0066
FIRE:   54 06:55:07    -3617.256088*       0.0067
FIRE:   55 06:55:07    -3617.257146*       0.0056
FIRE:   56 06:55:07    -3617.257436*       0.0047
FIRE:   57 06:55:08    -3617.257554*       0.0054
FIRE:   58 06:55:08    -3617.257386*       0.0047
FIRE:   59 06:55:08    -3617.257621*       0.0035
FIRE:   60 06:55:08    -3617.257506*       0.0019
FIRE:   61 06:55:09    -3617.257658*       0.0023
FIRE:   62 06:55:09    -3617.257822*       0.0022
FIRE:   63 06:55:09    -3617.257604*       0.0020
FIRE:   64 06:55:09    -3617.257618*       0.0014
FIRE:   65 06:55:09    -3617.257748*       0.0024
FIRE:   66 06:55:10    -3617.257801*       0.0023
FIRE:   67 06:55:10    -3617.257863*       0.0020
FIRE:   68 06:55:10    -3617.257761*       0.0017
FIRE:   69 06:55:10    -3617.257774*       0.0013
FIRE:   70 06:55:11    -3617.257747*       0.0012
FIRE:   71 06:55:11    -3617.257610*       0.0012
FIRE:   72 06:55:11    -3617.257715*       0.0012
FIRE:   73 06:55:11    -3617.257872*       0.0011
FIRE:   74 06:55:12    -3617.257762*       0.0008
Optimizing Pd306Pt405
      Step     Time          Energy         fmax
*Force-consistent energies used in optimization.
FIRE:    0 06:55:12    -3128.362078*       0.5548
FIRE:    1 06:55:12    -3128.717762*       0.5195
FIRE:    2 06:55:12    -3129.326822*       0.4481
FIRE:    3 06:55:13    -3130.024355*       0.3421
FIRE:    4 06:55:13    -3130.656050*       0.2132
FIRE:    5 06:55:13    -3131.124641*       0.2397
FIRE:    6 06:55:13    -3131.515908*       0.3003
FIRE:    7 06:55:14    -3131.876732*       0.2811
FIRE:    8 06:55:14    -3132.204783*       0.1908
FIRE:    9 06:55:14    -3132.466579*       0.1373
FIRE:   10 06:55:14    -3132.646607*       0.1605
FIRE:   11 06:55:14    -3132.767194*       0.1392
FIRE:   12 06:55:15    -3132.856234*       0.1389
FIRE:   13 06:55:15    -3132.914484*       0.1162
FIRE:   14 06:55:15    -3132.932024*       0.1077
FIRE:   15 06:55:15    -3132.952750*       0.0965
FIRE:   16 06:55:16    -3132.987167*       0.0810
FIRE:   17 06:55:16    -3133.024548*       0.0684
FIRE:   18 06:55:16    -3133.056768*       0.0562
FIRE:   19 06:55:16    -3133.082869*       0.0605
FIRE:   20 06:55:17    -3133.105048*       0.0639
FIRE:   21 06:55:17    -3133.123677*       0.0667
FIRE:   22 06:55:17    -3133.140000*       0.0676
FIRE:   23 06:55:17    -3133.149982*       0.0533
FIRE:   24 06:55:18    -3133.153655*       0.0348
FIRE:   25 06:55:18    -3133.154709*       0.0330
FIRE:   26 06:55:18    -3133.157169*       0.0296
FIRE:   27 06:55:18    -3133.159644*       0.0249
FIRE:   28 06:55:19    -3133.162778*       0.0235
FIRE:   29 06:55:19    -3133.165806*       0.0222
FIRE:   30 06:55:19    -3133.168270*       0.0207
FIRE:   31 06:55:19    -3133.170877*       0.0216
FIRE:   32 06:55:19    -3133.173332*       0.0226
FIRE:   33 06:55:20    -3133.176405*       0.0225
FIRE:   34 06:55:20    -3133.179414*       0.0210
FIRE:   35 06:55:20    -3133.182049*       0.0183
FIRE:   36 06:55:20    -3133.184061*       0.0148
FIRE:   37 06:55:21    -3133.186380*       0.0139
FIRE:   38 06:55:21    -3133.188631*       0.0144
FIRE:   39 06:55:21    -3133.191543*       0.0132
FIRE:   40 06:55:21    -3133.194218*       0.0137
FIRE:   41 06:55:22    -3133.197142*       0.0146
FIRE:   42 06:55:22    -3133.199853*       0.0169
FIRE:   43 06:55:22    -3133.200693*       0.0123
FIRE:   44 06:55:22    -3133.200954*       0.0100
FIRE:   45 06:55:23    -3133.201204*       0.0091
FIRE:   46 06:55:23    -3133.201377*       0.0077
FIRE:   47 06:55:23    -3133.201237*       0.0061
FIRE:   48 06:55:23    -3133.201438*       0.0060
FIRE:   49 06:55:23    -3133.201492*       0.0059
FIRE:   50 06:55:24    -3133.201275*       0.0058
FIRE:   51 06:55:24    -3133.201387*       0.0056
FIRE:   52 06:55:24    -3133.201623*       0.0053
FIRE:   53 06:55:24    -3133.201515*       0.0049
FIRE:   54 06:55:25    -3133.201358*       0.0045
FIRE:   55 06:55:25    -3133.201637*       0.0039
FIRE:   56 06:55:25    -3133.201615*       0.0032
FIRE:   57 06:55:25    -3133.201658*       0.0026
FIRE:   58 06:55:26    -3133.201508*       0.0021
FIRE:   59 06:55:26    -3133.201398*       0.0012
FIRE:   60 06:55:26    -3133.201442*       0.0007
Optimizing Pd405Pt306
      Step     Time          Energy         fmax
*Force-consistent energies used in optimization.
FIRE:    0 06:55:26    -2921.182334*       0.8084
FIRE:    1 06:55:27    -2922.173634*       0.7782
FIRE:    2 06:55:27    -2923.798336*       0.7174
FIRE:    3 06:55:27    -2925.164742*       0.6494
FIRE:    4 06:55:27    -2926.294749*       0.5747
FIRE:    5 06:55:28    -2927.257778*       0.4948
FIRE:    6 06:55:28    -2928.103283*       0.4127
FIRE:    7 06:55:28    -2928.859668*       0.3310
FIRE:    8 06:55:28    -2929.541302*       0.2730
FIRE:    9 06:55:29    -2930.148359*       0.2152
FIRE:   10 06:55:29    -2930.679060*       0.1948
FIRE:   11 06:55:29    -2931.134719*       0.1854
FIRE:   12 06:55:29    -2931.522542*       0.1735
FIRE:   13 06:55:29    -2931.850052*       0.1563
FIRE:   14 06:55:30    -2932.122565*       0.1384
FIRE:   15 06:55:30    -2932.342232*       0.1254
FIRE:   16 06:55:30    -2932.512740*       0.1193
FIRE:   17 06:55:30    -2932.643065*       0.1234
FIRE:   18 06:55:31    -2932.741324*       0.1099
FIRE:   19 06:55:31    -2932.811902*       0.1033
FIRE:   20 06:55:31    -2932.859388*       0.1174
FIRE:   21 06:55:31    -2932.887646*       0.1096
FIRE:   22 06:55:32    -2932.943773*       0.0836
FIRE:   23 06:55:32    -2933.016130*       0.0667
FIRE:   24 06:55:32    -2933.083493*       0.0619
FIRE:   25 06:55:32    -2933.140449*       0.0486
FIRE:   26 06:55:33    -2933.176317*       0.0427
FIRE:   27 06:55:33    -2933.193285*       0.0424
FIRE:   28 06:55:33    -2933.196087*       0.0381
FIRE:   29 06:55:33    -2933.201024*       0.0305
FIRE:   30 06:55:34    -2933.206477*       0.0299
FIRE:   31 06:55:34    -2933.212568*       0.0299
FIRE:   32 06:55:34    -2933.218423*       0.0293
FIRE:   33 06:55:34    -2933.223804*       0.0279
FIRE:   34 06:55:34    -2933.228556*       0.0256
FIRE:   35 06:55:35    -2933.233788*       0.0222
FIRE:   36 06:55:35    -2933.238048*       0.0179
FIRE:   37 06:55:35    -2933.242471*       0.0179
FIRE:   38 06:55:35    -2933.246656*       0.0223
FIRE:   39 06:55:36    -2933.251570*       0.0203
FIRE:   40 06:55:36    -2933.257329*       0.0153
FIRE:   41 06:55:36    -2933.262312*       0.0190
FIRE:   42 06:55:36    -2933.265847*       0.0172
FIRE:   43 06:55:37    -2933.267247*       0.0097
FIRE:   44 06:55:37    -2933.267624*       0.0084
FIRE:   45 06:55:37    -2933.267822*       0.0065
FIRE:   46 06:55:37    -2933.268071*       0.0049
FIRE:   47 06:55:38    -2933.268362*       0.0047
FIRE:   48 06:55:38    -2933.268514*       0.0053
FIRE:   49 06:55:38    -2933.268724*       0.0051
FIRE:   50 06:55:38    -2933.268781*       0.0032
FIRE:   51 06:55:39    -2933.268824*       0.0026
FIRE:   52 06:55:39    -2933.268775*       0.0025
FIRE:   53 06:55:39    -2933.268761*       0.0024
FIRE:   54 06:55:39    -2933.268763*       0.0022
FIRE:   55 06:55:40    -2933.268797*       0.0020
FIRE:   56 06:55:40    -2933.268858*       0.0017
FIRE:   57 06:55:40    -2933.269053*       0.0016
FIRE:   58 06:55:40    -2933.268941*       0.0015
FIRE:   59 06:55:41    -2933.268795*       0.0014
FIRE:   60 06:55:41    -2933.269019*       0.0012
FIRE:   61 06:55:41    -2933.268959*       0.0009
Optimizing Pd711
      Step     Time          Energy         fmax
*Force-consistent energies used in optimization.
FIRE:    0 06:55:41    -2415.404839*       0.3443
FIRE:    1 06:55:42    -2415.612567*       0.3219
FIRE:    2 06:55:42    -2415.978111*       0.2807
FIRE:    3 06:55:42    -2416.425075*       0.2268
FIRE:    4 06:55:43    -2416.882951*       0.1757
FIRE:    5 06:55:43    -2417.313176*       0.1856
FIRE:    6 06:55:43    -2417.704316*       0.1983
FIRE:    7 06:55:43    -2418.042082*       0.1825
FIRE:    8 06:55:44    -2418.336027*       0.1449
FIRE:    9 06:55:44    -2418.583665*       0.1194
FIRE:   10 06:55:44    -2418.783262*       0.1272
FIRE:   11 06:55:44    -2418.940327*       0.1277
FIRE:   12 06:55:45    -2419.064507*       0.1063
FIRE:   13 06:55:45    -2419.160729*       0.0951
FIRE:   14 06:55:45    -2419.227246*       0.0895
FIRE:   15 06:55:45    -2419.261509*       0.0613
FIRE:   16 06:55:46    -2419.268033*       0.0809
FIRE:   17 06:55:46    -2419.278819*       0.0741
FIRE:   18 06:55:46    -2419.296931*       0.0616
FIRE:   19 06:55:46    -2419.317336*       0.0530
FIRE:   20 06:55:47    -2419.336185*       0.0464
FIRE:   21 06:55:47    -2419.352537*       0.0396
FIRE:   22 06:55:47    -2419.367761*       0.0400
FIRE:   23 06:55:47    -2419.381849*       0.0326
FIRE:   24 06:55:48    -2419.394014*       0.0228
FIRE:   25 06:55:48    -2419.401561*       0.0276
FIRE:   26 06:55:48    -2419.405173*       0.0324
FIRE:   27 06:55:48    -2419.405838*       0.0308
FIRE:   28 06:55:49    -2419.406837*       0.0277
FIRE:   29 06:55:49    -2419.408552*       0.0233
FIRE:   30 06:55:49    -2419.410071*       0.0179
FIRE:   31 06:55:49    -2419.411548*       0.0118
FIRE:   32 06:55:50    -2419.412595*       0.0128
FIRE:   33 06:55:50    -2419.413697*       0.0138
FIRE:   34 06:55:50    -2419.414823*       0.0132
FIRE:   35 06:55:50    -2419.416163*       0.0107
FIRE:   36 06:55:51    -2419.417414*       0.0096
FIRE:   37 06:55:51    -2419.418938*       0.0088
FIRE:   38 06:55:51    -2419.419777*       0.0118
FIRE:   39 06:55:51    -2419.420586*       0.0149
FIRE:   40 06:55:52    -2419.421830*       0.0146
FIRE:   41 06:55:52    -2419.423231*       0.0102
FIRE:   42 06:55:52    -2419.424453*       0.0101
FIRE:   43 06:55:52    -2419.425412*       0.0134
FIRE:   44 06:55:53    -2419.426300*       0.0084
FIRE:   45 06:55:53    -2419.426488*       0.0067
FIRE:   46 06:55:53    -2419.426516*       0.0058
FIRE:   47 06:55:53    -2419.426643*       0.0042
FIRE:   48 06:55:54    -2419.426744*       0.0028
FIRE:   49 06:55:54    -2419.426760*       0.0038
FIRE:   50 06:55:54    -2419.426823*       0.0041
FIRE:   51 06:55:54    -2419.426850*       0.0032
FIRE:   52 06:55:55    -2419.426919*       0.0028
FIRE:   53 06:55:55    -2419.426806*       0.0020
FIRE:   54 06:55:55    -2419.426866*       0.0020
FIRE:   55 06:55:55    -2419.426900*       0.0018
FIRE:   56 06:55:56    -2419.426932*       0.0016
FIRE:   57 06:55:56    -2419.426878*       0.0014
FIRE:   58 06:55:56    -2419.426941*       0.0013
FIRE:   59 06:55:56    -2419.426897*       0.0011
FIRE:   60 06:55:57    -2419.426934*       0.0010

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 [196 552  99 568 368 382 471 105 599 212 637 142 432 304 663  49 680 302
 493 104 232 102 487 433 273 420 314 185  61 435 132 576 561 374 350  85
 581 240  13 699 666 359 616 571 600 110 327 201   8 347 146  55 593 351
 391 157 658 244 463 236 288 691 166  90 118 528  72 686 562 591 437 135
 690   4 702 225 137 223 404 138  98 145 623 676 525 621  64 466 328 221
 330 626 281 529 208 269 548 647 150 527 377 313 672 206 507   5 203 256
 584 375 317 614 100 602 510 217 394 315 649 414 312 661  27 467 673 540
 704 425 358 551 239 385 250  28 205 122 373 264 413 565 267 286 343 456
 601 230 386 532 307 153 556 679 172  91 655 569 202 268 181  95 484 173
 707  19 514 509 277 537 638  11 311 390 700  33 458 405 555  29 511 168
 684 363 428 590 444 371 303  65 594 366 361 450 566 657 520 550 338 154
 246  18 334 464 336 275  20 633 176 160 620 697 558  80  83 195 335 325
 305   0 278 117 597 615 131 671 322 674 128 438 596 133 254 197 439  47
  23 140 191 296 403  73  82 107  66  37 474   7 226   6 360 187 651 234
 344 418   3 249 213  96 227 557  39  31 628 417 136 346 475  42 534 504
 441 364  52 245   2  50  46 426 209 498 688 480  40  43 632 272 258  93
 397 194 606 144  34 560 353 559 126 253 283 642 321 276 291  67 648 580
 627 329 694  58   1 170 478 207 705  88 370 395 549 573 592 396 139 629
 675 610 481 123 618 219 411 120 667 224 310 400 423 640 103 526 654 348
 308 409 407 119  81  54 365 469 656  84 659 644 677 536 164 452  78 612
 115 200 639 546 297 214 515 635 326  76 379 290 483 678 564 554 553 339
 499  51 369 429 220 392 681 162 151 174 218 443 542 210 270 698 177 419
 399 624 708 582 706 355 563 545 257]
[12]:
print("Optimizing Pd405Pt306_random")
Pd405Pt306_random.calc = calculator
E_pd405pt306_random = get_opt_energy(Pd405Pt306_random)
Optimizing Pd405Pt306_random
      Step     Time          Energy         fmax
*Force-consistent energies used in optimization.
FIRE:    0 06:55:57    -2951.634114*       0.7943
FIRE:    1 06:55:58    -2952.049965*       0.7585
FIRE:    2 06:55:58    -2952.770701*       0.6876
FIRE:    3 06:55:58    -2953.619475*       0.5777
FIRE:    4 06:55:58    -2954.359894*       0.4618
FIRE:    5 06:55:58    -2954.930649*       0.3488
FIRE:    6 06:55:59    -2955.380034*       0.3323
FIRE:    7 06:55:59    -2955.741782*       0.2891
FIRE:    8 06:55:59    -2956.033248*       0.2633
FIRE:    9 06:55:59    -2956.257166*       0.2117
FIRE:   10 06:56:00    -2956.416871*       0.2094
FIRE:   11 06:56:00    -2956.526379*       0.1835
FIRE:   12 06:56:00    -2956.604745*       0.1840
FIRE:   13 06:56:00    -2956.665961*       0.1816
FIRE:   14 06:56:01    -2956.716348*       0.1827
FIRE:   15 06:56:01    -2956.747297*       0.1770
FIRE:   16 06:56:01    -2956.800838*       0.1661
FIRE:   17 06:56:01    -2956.863802*       0.1508
FIRE:   18 06:56:02    -2956.923657*       0.1316
FIRE:   19 06:56:02    -2956.973257*       0.1091
FIRE:   20 06:56:02    -2957.010412*       0.0848
FIRE:   21 06:56:02    -2957.036208*       0.0725
FIRE:   22 06:56:03    -2957.052796*       0.0641
FIRE:   23 06:56:03    -2957.059193*       0.0881
FIRE:   24 06:56:03    -2957.060665*       0.0824
FIRE:   25 06:56:03    -2957.063410*       0.0714
FIRE:   26 06:56:04    -2957.067207*       0.0563
FIRE:   27 06:56:04    -2957.071634*       0.0525
FIRE:   28 06:56:04    -2957.076364*       0.0490
FIRE:   29 06:56:05    -2957.081169*       0.0447
FIRE:   30 06:56:05    -2957.085771*       0.0398
FIRE:   31 06:56:05    -2957.090457*       0.0345
FIRE:   32 06:56:05    -2957.095123*       0.0304
FIRE:   33 06:56:06    -2957.099647*       0.0258
FIRE:   34 06:56:06    -2957.103869*       0.0232
FIRE:   35 06:56:06    -2957.107772*       0.0231
FIRE:   36 06:56:06    -2957.111816*       0.0323
FIRE:   37 06:56:07    -2957.116451*       0.0284
FIRE:   38 06:56:07    -2957.121823*       0.0296
FIRE:   39 06:56:07    -2957.127640*       0.0272
FIRE:   40 06:56:07    -2957.133752*       0.0266
FIRE:   41 06:56:08    -2957.139396*       0.0144
FIRE:   42 06:56:08    -2957.142666*       0.0255
FIRE:   43 06:56:08    -2957.143234*       0.0215
FIRE:   44 06:56:08    -2957.143503*       0.0199
FIRE:   45 06:56:09    -2957.144038*       0.0169
FIRE:   46 06:56:09    -2957.144598*       0.0126
FIRE:   47 06:56:09    -2957.145193*       0.0086
FIRE:   48 06:56:09    -2957.145683*       0.0064
FIRE:   49 06:56:10    -2957.146011*       0.0062
FIRE:   50 06:56:10    -2957.146141*       0.0072
FIRE:   51 06:56:10    -2957.146298*       0.0100
FIRE:   52 06:56:10    -2957.146495*       0.0109
FIRE:   53 06:56:11    -2957.146689*       0.0105
FIRE:   54 06:56:11    -2957.147045*       0.0092
FIRE:   55 06:56:11    -2957.147453*       0.0061
FIRE:   56 06:56:11    -2957.147860*       0.0046
FIRE:   57 06:56:12    -2957.148160*       0.0034
FIRE:   58 06:56:12    -2957.148237*       0.0061
FIRE:   59 06:56:12    -2957.148304*       0.0058
FIRE:   60 06:56:12    -2957.148361*       0.0053
FIRE:   61 06:56:13    -2957.148444*       0.0045
FIRE:   62 06:56:13    -2957.148528*       0.0035
FIRE:   63 06:56:13    -2957.148574*       0.0030
FIRE:   64 06:56:13    -2957.148677*       0.0025
FIRE:   65 06:56:14    -2957.148703*       0.0025
FIRE:   66 06:56:14    -2957.148775*       0.0028
FIRE:   67 06:56:14    -2957.148754*       0.0034
FIRE:   68 06:56:14    -2957.148923*       0.0032
FIRE:   69 06:56:15    -2957.149008*       0.0028
FIRE:   70 06:56:15    -2957.149121*       0.0022
FIRE:   71 06:56:15    -2957.149235*       0.0016
FIRE:   72 06:56:15    -2957.149309*       0.0021
FIRE:   73 06:56:16    -2957.149395*       0.0027
FIRE:   74 06:56:16    -2957.149500*       0.0020
FIRE:   75 06:56:16    -2957.149619*       0.0016
FIRE:   76 06:56:16    -2957.149768*       0.0020
FIRE:   77 06:56:17    -2957.149799*       0.0027
FIRE:   78 06:56:17    -2957.149842*       0.0049
FIRE:   79 06:56:17    -2957.149897*       0.0014
FIRE:   80 06:56:17    -2957.149829*       0.0028
FIRE:   81 06:56:18    -2957.149892*       0.0023
FIRE:   82 06:56:18    -2957.149865*       0.0013
FIRE:   83 06:56:18    -2957.149865*       0.0005
[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.22 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)

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.5.0
      Step     Time          Energy         fmax
*Force-consistent energies used in optimization.
FIRE:    0 06:58:31    -1860.090772*       2.7723
FIRE:    1 06:58:31    -1866.458047*       2.3451
FIRE:    2 06:58:31    -1871.904323*       2.0879
FIRE:    3 06:58:31    -1876.434307*       2.0256
FIRE:    4 06:58:32    -1880.091439*       1.9501
FIRE:    5 06:58:32    -1882.952912*       1.8591
FIRE:    6 06:58:32    -1885.147381*       1.7505
FIRE:    7 06:58:32    -1886.867019*       1.6223
FIRE:    8 06:58:32    -1888.358989*       1.4732
FIRE:    9 06:58:33    -1889.852164*       1.4049
FIRE:   10 06:58:33    -1891.473457*       1.2978
FIRE:   11 06:58:33    -1893.201623*       1.0758
FIRE:   12 06:58:33    -1894.904770*       0.9423
FIRE:   13 06:58:33    -1896.433910*       0.9369
FIRE:   14 06:58:33    -1897.707551*       0.9101
FIRE:   15 06:58:34    -1898.742282*       0.8622
FIRE:   16 06:58:34    -1899.634513*       0.8619
FIRE:   17 06:58:34    -1900.494577*       0.9636
FIRE:   18 06:58:34    -1901.380985*       1.0611
FIRE:   19 06:58:34    -1902.273167*       1.1440
FIRE:   20 06:58:35    -1903.098770*       1.2041
FIRE:   21 06:58:35    -1903.779610*       1.2391
FIRE:   22 06:58:35    -1904.287751*       1.2520
FIRE:   23 06:58:35    -1904.671516*       1.1932
FIRE:   24 06:58:35    -1905.006171*       0.9333
FIRE:   25 06:58:35    -1905.331511*       0.7080
FIRE:   26 06:58:36    -1905.631789*       0.3967
FIRE:   27 06:58:36    -1905.853587*       0.3487
FIRE:   28 06:58:36    -1905.981356*       0.5745
FIRE:   29 06:58:36    -1906.069182*       0.9726
FIRE:   30 06:58:36    -1906.184962*       1.1589
FIRE:   31 06:58:37    -1906.327430*       1.0321
FIRE:   32 06:58:37    -1906.441560*       0.5956
FIRE:   33 06:58:37    -1906.530019*       0.5836
FIRE:   34 06:58:37    -1906.645967*       0.6519
FIRE:   35 06:58:37    -1906.778954*       0.5218
FIRE:   36 06:58:38    -1906.857004*       0.5165
FIRE:   37 06:58:38    -1906.938558*       0.6041
FIRE:   38 06:58:38    -1906.935862*       0.4992
FIRE:   39 06:58:38    -1907.073519*       0.2194
FIRE:   40 06:58:38    -1907.089033*       0.2654
FIRE:   41 06:58:38    -1907.099305*       0.2227
FIRE:   42 06:58:39    -1907.114434*       0.1484
FIRE:   43 06:58:39    -1907.127182*       0.0941
FIRE:   44 06:58:39    -1907.133570*       0.1261
FIRE:   45 06:58:39    -1907.136339*       0.1818
FIRE:   46 06:58:39    -1907.141304*       0.1904
FIRE:   47 06:58:40    -1907.151191*       0.1533
FIRE:   48 06:58:40    -1907.166380*       0.0895
FIRE:   49 06:58:40    -1907.182247*       0.0821
FIRE:   50 06:58:40    -1907.193445*       0.1250
FIRE:   51 06:58:40    -1907.202915*       0.1232
FIRE:   52 06:58:41    -1907.216335*       0.0986
FIRE:   53 06:58:41    -1907.231155*       0.1026
FIRE:   54 06:58:41    -1907.241449*       0.0983
FIRE:   55 06:58:41    -1907.250398*       0.0815
FIRE:   56 06:58:41    -1907.262611*       0.1171
FIRE:   57 06:58:41    -1907.273228*       0.0856
FIRE:   58 06:58:42    -1907.286393*       0.1087
FIRE:   59 06:58:42    -1907.303588*       0.0944
FIRE:   60 06:58:42    -1907.324283*       0.0848
FIRE:   61 06:58:42    -1907.341892*       0.1294
FIRE:   62 06:58:42    -1907.366470*       0.2103
FIRE:   63 06:58:43    -1907.376558*       0.0905
FIRE:   64 06:58:43    -1907.376744*       0.1445
FIRE:   65 06:58:43    -1907.378749*       0.1131
FIRE:   66 06:58:43    -1907.381442*       0.0907
FIRE:   67 06:58:43    -1907.383602*       0.0909
FIRE:   68 06:58:43    -1907.384749*       0.0914
FIRE:   69 06:58:44    -1907.385938*       0.1034
FIRE:   70 06:58:44    -1907.388170*       0.1048
FIRE:   71 06:58:44    -1907.391782*       0.0969
FIRE:   72 06:58:44    -1907.396161*       0.0992
FIRE:   73 06:58:44    -1907.400149*       0.1017
FIRE:   74 06:58:45    -1907.404630*       0.1045
FIRE:   75 06:58:45    -1907.411236*       0.1076
FIRE:   76 06:58:45    -1907.419713*       0.1128
FIRE:   77 06:58:45    -1907.429156*       0.1202
FIRE:   78 06:58:45    -1907.442226*       0.1303
FIRE:   79 06:58:45    -1907.459426*       0.1469
FIRE:   80 06:58:46    -1907.482334*       0.1695
FIRE:   81 06:58:46    -1907.513214*       0.1997
FIRE:   82 06:58:46    -1907.553925*       0.2049
FIRE:   83 06:58:46    -1907.606483*       0.2176
FIRE:   84 06:58:46    -1907.672910*       0.2368
FIRE:   85 06:58:47    -1907.736053*       0.1768
FIRE:   86 06:58:47    -1907.758212*       0.3063
FIRE:   87 06:58:47    -1907.774582*       0.2071
FIRE:   88 06:58:47    -1907.775030*       0.2446
FIRE:   89 06:58:47    -1907.778554*       0.1891
FIRE:   90 06:58:48    -1907.783050*       0.1214
FIRE:   91 06:58:48    -1907.785487*       0.1070
FIRE:   92 06:58:48    -1907.785702*       0.1232
FIRE:   93 06:58:48    -1907.785959*       0.1161
FIRE:   94 06:58:48    -1907.786526*       0.1023
FIRE:   95 06:58:49    -1907.787278*       0.0949
FIRE:   96 06:58:49    -1907.788106*       0.0931
FIRE:   97 06:58:49    -1907.788830*       0.0909
FIRE:   98 06:58:49    -1907.789506*       0.0884
FIRE:   99 06:58:49    -1907.790147*       0.0854
FIRE:  100 06:58:50    -1907.790779*       0.0819
FIRE:  101 06:58:50    -1907.791550*       0.0778
FIRE:  102 06:58:50    -1907.792600*       0.0732
FIRE:  103 06:58:50    -1907.794079*       0.0685
FIRE:  104 06:58:50    -1907.795912*       0.0695
FIRE:  105 06:58:51    -1907.797794*       0.0704
FIRE:  106 06:58:51    -1907.799814*       0.0711
FIRE:  107 06:58:51    -1907.802043*       0.0714
FIRE:  108 06:58:51    -1907.804774*       0.0714
FIRE:  109 06:58:51    -1907.808127*       0.0711
FIRE:  110 06:58:52    -1907.811485*       0.0726
FIRE:  111 06:58:52    -1907.815417*       0.0736
FIRE:  112 06:58:52    -1907.820169*       0.0734
FIRE:  113 06:58:52    -1907.825160*       0.0712
FIRE:  114 06:58:52    -1907.831222*       0.0711
FIRE:  115 06:58:53    -1907.837461*       0.0696
FIRE:  116 06:58:53    -1907.844796*       0.0708
FIRE:  117 06:58:53    -1907.852221*       0.0708
FIRE:  118 06:58:53    -1907.859615*       0.0690
FIRE:  119 06:58:53    -1907.867319*       0.0682
FIRE:  120 06:58:54    -1907.875094*       0.1026
FIRE:  121 06:58:54    -1907.875724*       0.2086
FIRE:  122 06:58:54    -1907.883200*       0.0815
FIRE:  123 06:58:54    -1907.879359*       0.1816
FIRE:  124 06:58:54    -1907.881774*       0.1385
FIRE:  125 06:58:55    -1907.884353*       0.0625
FIRE:  126 06:58:55    -1907.885107*       0.0441
FIRE:  127 06:58:55    -1907.885200*       0.0440
FIRE:  128 06:58:55    -1907.885220*       0.0437
FIRE:  129 06:58:55    -1907.885352*       0.0434
FIRE:  130 06:58:56    -1907.885446*       0.0429
FIRE:  131 06:58:56    -1907.885572*       0.0423
FIRE:  132 06:58:56    -1907.885701*       0.0415
FIRE:  133 06:58:56    -1907.885934*       0.0407
FIRE:  134 06:58:56    -1907.886069*       0.0397
FIRE:  135 06:58:57    -1907.886288*       0.0384
FIRE:  136 06:58:57    -1907.886604*       0.0370
FIRE:  137 06:58:57    -1907.886890*       0.0353
FIRE:  138 06:58:57    -1907.887318*       0.0334
FIRE:  139 06:58:57    -1907.887778*       0.0318
FIRE:  140 06:58:58    -1907.888362*       0.0313
FIRE:  141 06:58:58    -1907.888896*       0.0311
FIRE:  142 06:58:58    -1907.889654*       0.0314
FIRE:  143 06:58:58    -1907.890424*       0.0323
FIRE:  144 06:58:58    -1907.891411*       0.0338
FIRE:  145 06:58:58    -1907.892465*       0.0356
FIRE:  146 06:58:59    -1907.893631*       0.0377
FIRE:  147 06:58:59    -1907.895053*       0.0400
FIRE:  148 06:58:59    -1907.896611*       0.0425
FIRE:  149 06:58:59    -1907.898407*       0.0449
FIRE:  150 06:58:59    -1907.900509*       0.0465
FIRE:  151 06:59:00    -1907.903043*       0.0467
FIRE:  152 06:59:00    -1907.906133*       0.0456
FIRE:  153 06:59:00    -1907.910029*       0.0443
FIRE:  154 06:59:00    -1907.915187*       0.0430
FIRE:  155 06:59:00    -1907.919669*       0.1105
FIRE:  156 06:59:01    -1907.902606*       0.3494
FIRE:  157 06:59:01    -1907.927193*       0.0930
FIRE:  158 06:59:01    -1907.928588*       0.0628
FIRE:  159 06:59:01    -1907.929865*       0.0342
FIRE:  160 06:59:01    -1907.929690*       0.0394
FIRE:  161 06:59:02    -1907.929698*       0.0362
FIRE:  162 06:59:02    -1907.929856*       0.0349
FIRE:  163 06:59:02    -1907.930101*       0.0350
FIRE:  164 06:59:02    -1907.930245*       0.0351
FIRE:  165 06:59:02    -1907.930453*       0.0353
FIRE:  166 06:59:03    -1907.930523*       0.0354
FIRE:  167 06:59:03    -1907.930641*       0.0356
FIRE:  168 06:59:03    -1907.930769*       0.0359
FIRE:  169 06:59:03    -1907.930940*       0.0361
FIRE:  170 06:59:03    -1907.931249*       0.0364
FIRE:  171 06:59:04    -1907.931647*       0.0368
FIRE:  172 06:59:04    -1907.932036*       0.0371
FIRE:  173 06:59:04    -1907.932472*       0.0375
FIRE:  174 06:59:04    -1907.933051*       0.0380
FIRE:  175 06:59:04    -1907.933731*       0.0384
FIRE:  176 06:59:05    -1907.934556*       0.0387
FIRE:  177 06:59:05    -1907.935510*       0.0390
FIRE:  178 06:59:05    -1907.936705*       0.0390
FIRE:  179 06:59:05    -1907.938129*       0.0387
FIRE:  180 06:59:05    -1907.939722*       0.0377
FIRE:  181 06:59:06    -1907.941664*       0.0358
FIRE:  182 06:59:06    -1907.943839*       0.0325
FIRE:  183 06:59:06    -1907.946002*       0.0276
FIRE:  184 06:59:06    -1907.948200*       0.0302
FIRE:  185 06:59:06    -1907.950298*       0.0213
FIRE:  186 06:59:07    -1907.952116*       0.0324
FIRE:  187 06:59:07    -1907.952596*       0.0745
FIRE:  188 06:59:07    -1907.953985*       0.0210
FIRE:  189 06:59:07    -1907.953191*       0.0644
FIRE:  190 06:59:07    -1907.953664*       0.0497
FIRE:  191 06:59:08    -1907.954142*       0.0237
FIRE:  192 06:59:08    -1907.954278*       0.0194
FIRE:  193 06:59:08    -1907.954293*       0.0194
FIRE:  194 06:59:08    -1907.954308*       0.0194
FIRE:  195 06:59:08    -1907.954272*       0.0193
FIRE:  196 06:59:09    -1907.954307*       0.0193
FIRE:  197 06:59:09    -1907.954321*       0.0192
FIRE:  198 06:59:09    -1907.954366*       0.0191
FIRE:  199 06:59:09    -1907.954393*       0.0190
FIRE:  200 06:59:09    -1907.954364*       0.0188
FIRE:  201 06:59:09    -1907.954418*       0.0187
FIRE:  202 06:59:10    -1907.954468*       0.0185
FIRE:  203 06:59:10    -1907.954558*       0.0183
FIRE:  204 06:59:10    -1907.954625*       0.0181
FIRE:  205 06:59:10    -1907.954701*       0.0179
FIRE:  206 06:59:10    -1907.954761*       0.0176
FIRE:  207 06:59:11    -1907.954935*       0.0173
FIRE:  208 06:59:11    -1907.955016*       0.0169
FIRE:  209 06:59:11    -1907.955254*       0.0165
FIRE:  210 06:59:11    -1907.955423*       0.0161
FIRE:  211 06:59:11    -1907.955620*       0.0156
FIRE:  212 06:59:12    -1907.955905*       0.0151
FIRE:  213 06:59:12    -1907.956211*       0.0144
FIRE:  214 06:59:12    -1907.956588*       0.0135
FIRE:  215 06:59:12    -1907.957038*       0.0125
FIRE:  216 06:59:12    -1907.957498*       0.0113
FIRE:  217 06:59:13    -1907.958088*       0.0114
FIRE:  218 06:59:13    -1907.958731*       0.0115
FIRE:  219 06:59:13    -1907.959512*       0.0112
FIRE:  220 06:59:13    -1907.960439*       0.0131
FIRE:  221 06:59:13    -1907.961104*       0.0400
FIRE:  222 06:59:14    -1907.961498*       0.0094
FIRE:  223 06:59:14    -1907.961248*       0.0355
FIRE:  224 06:59:14    -1907.961406*       0.0271
FIRE:  225 06:59:14    -1907.961533*       0.0122
FIRE:  226 06:59:14    -1907.961617*       0.0092
FIRE:  227 06:59:15    -1907.961575*       0.0092
FIRE:  228 06:59:15    -1907.961602*       0.0092
FIRE:  229 06:59:15    -1907.961615*       0.0092
FIRE:  230 06:59:15    -1907.961614*       0.0092
FIRE:  231 06:59:15    -1907.961627*       0.0092
FIRE:  232 06:59:16    -1907.961632*       0.0092
FIRE:  233 06:59:16    -1907.961624*       0.0092
FIRE:  234 06:59:16    -1907.961615*       0.0092
FIRE:  235 06:59:16    -1907.961637*       0.0091
FIRE:  236 06:59:16    -1907.961676*       0.0091
FIRE:  237 06:59:17    -1907.961695*       0.0091
FIRE:  238 06:59:17    -1907.961745*       0.0090
FIRE:  239 06:59:17    -1907.961769*       0.0090
FIRE:  240 06:59:17    -1907.961824*       0.0089
FIRE:  241 06:59:17    -1907.961906*       0.0089
FIRE:  242 06:59:17    -1907.961952*       0.0089
FIRE:  243 06:59:18    -1907.962091*       0.0089
FIRE:  244 06:59:18    -1907.962236*       0.0090
FIRE:  245 06:59:18    -1907.962291*       0.0090
FIRE:  246 06:59:18    -1907.962446*       0.0092
FIRE:  247 06:59:18    -1907.962725*       0.0094
FIRE:  248 06:59:19    -1907.962914*       0.0096
FIRE:  249 06:59:19    -1907.963193*       0.0098
FIRE:  250 06:59:19    -1907.963590*       0.0101
FIRE:  251 06:59:19    -1907.963978*       0.0102
FIRE:  252 06:59:19    -1907.964542*       0.0104
FIRE:  253 06:59:20    -1907.965179*       0.0105
FIRE:  254 06:59:20    -1907.965969*       0.0106
FIRE:  255 06:59:20    -1907.966669*       0.0330
FIRE:  256 06:59:20    -1907.965642*       0.1110
FIRE:  257 06:59:20    -1907.967927*       0.0215
FIRE:  258 06:59:21    -1907.967954*       0.0149
FIRE:  259 06:59:21    -1907.967999*       0.0107
FIRE:  260 06:59:21    -1907.968027*       0.0106
FIRE:  261 06:59:21    -1907.968052*       0.0106
FIRE:  262 06:59:21    -1907.968065*       0.0106
FIRE:  263 06:59:22    -1907.968077*       0.0106
FIRE:  264 06:59:22    -1907.968051*       0.0106
FIRE:  265 06:59:22    -1907.968111*       0.0106
FIRE:  266 06:59:22    -1907.968095*       0.0106
FIRE:  267 06:59:22    -1907.968069*       0.0106
FIRE:  268 06:59:23    -1907.968098*       0.0106
FIRE:  269 06:59:23    -1907.968155*       0.0106
FIRE:  270 06:59:23    -1907.968182*       0.0106
FIRE:  271 06:59:23    -1907.968203*       0.0106
FIRE:  272 06:59:23    -1907.968227*       0.0106
FIRE:  273 06:59:24    -1907.968283*       0.0105
FIRE:  274 06:59:24    -1907.968365*       0.0105
FIRE:  275 06:59:24    -1907.968427*       0.0105
FIRE:  276 06:59:24    -1907.968511*       0.0105
FIRE:  277 06:59:24    -1907.968644*       0.0105
FIRE:  278 06:59:25    -1907.968764*       0.0104
FIRE:  279 06:59:25    -1907.968973*       0.0104
FIRE:  280 06:59:25    -1907.969206*       0.0104
FIRE:  281 06:59:25    -1907.969432*       0.0104
FIRE:  282 06:59:25    -1907.969785*       0.0105
FIRE:  283 06:59:25    -1907.970204*       0.0106
FIRE:  284 06:59:26    -1907.970685*       0.0108
FIRE:  285 06:59:26    -1907.971289*       0.0111
FIRE:  286 06:59:26    -1907.972003*       0.0115
FIRE:  287 06:59:26    -1907.973000*       0.0130
FIRE:  288 06:59:26    -1907.973910*       0.0475
FIRE:  289 06:59:27    -1907.972002*       0.1594
FIRE:  290 06:59:27    -1907.975402*       0.0381
FIRE:  291 06:59:27    -1907.975607*       0.0263
FIRE:  292 06:59:27    -1907.975737*       0.0135
FIRE:  293 06:59:27    -1907.975767*       0.0143
FIRE:  294 06:59:28    -1907.975726*       0.0135
FIRE:  295 06:59:28    -1907.975798*       0.0135
FIRE:  296 06:59:28    -1907.975806*       0.0135
FIRE:  297 06:59:28    -1907.975795*       0.0136
FIRE:  298 06:59:28    -1907.975784*       0.0136
FIRE:  299 06:59:29    -1907.975822*       0.0136
FIRE:  300 06:59:29    -1907.975879*       0.0136
FIRE:  301 06:59:29    -1907.975848*       0.0136
FIRE:  302 06:59:29    -1907.975882*       0.0137
FIRE:  303 06:59:29    -1907.975974*       0.0137
FIRE:  304 06:59:30    -1907.976017*       0.0137
FIRE:  305 06:59:30    -1907.976076*       0.0138
FIRE:  306 06:59:30    -1907.976195*       0.0139
FIRE:  307 06:59:30    -1907.976275*       0.0139
FIRE:  308 06:59:30    -1907.976436*       0.0140
FIRE:  309 06:59:31    -1907.976581*       0.0143
FIRE:  310 06:59:31    -1907.976755*       0.0146
FIRE:  311 06:59:31    -1907.977051*       0.0150
FIRE:  312 06:59:31    -1907.977317*       0.0155
FIRE:  313 06:59:31    -1907.977750*       0.0162
FIRE:  314 06:59:32    -1907.978206*       0.0171
FIRE:  315 06:59:32    -1907.978837*       0.0184
FIRE:  316 06:59:32    -1907.979640*       0.0200
FIRE:  317 06:59:32    -1907.980662*       0.0224
FIRE:  318 06:59:32    -1907.982025*       0.0258
FIRE:  319 06:59:33    -1907.983882*       0.0305
FIRE:  320 06:59:33    -1907.986502*       0.0377
FIRE:  321 06:59:33    -1907.989734*       0.0767
FIRE:  322 06:59:33    -1907.987458*       0.2741
FIRE:  323 06:59:33    -1907.995723*       0.0756
FIRE:  324 06:59:34    -1907.996264*       0.0569
FIRE:  325 06:59:34    -1907.996753*       0.0575
FIRE:  326 06:59:34    -1907.996845*       0.0583
FIRE:  327 06:59:34    -1907.996932*       0.0583
FIRE:  328 06:59:34    -1907.997024*       0.0584
FIRE:  329 06:59:35    -1907.997119*       0.0584
FIRE:  330 06:59:35    -1907.997247*       0.0585
FIRE:  331 06:59:35    -1907.997345*       0.0585
FIRE:  332 06:59:35    -1907.997442*       0.0587
FIRE:  333 06:59:35    -1907.997640*       0.0588
FIRE:  334 06:59:36    -1907.997793*       0.0590
FIRE:  335 06:59:36    -1907.998039*       0.0593
FIRE:  336 06:59:36    -1907.998419*       0.0596
FIRE:  337 06:59:36    -1907.998816*       0.0600
FIRE:  338 06:59:36    -1907.999289*       0.0604
FIRE:  339 06:59:37    -1907.999852*       0.0609
FIRE:  340 06:59:37    -1908.000709*       0.0612
FIRE:  341 06:59:37    -1908.001663*       0.0615
FIRE:  342 06:59:37    -1908.002979*       0.0617
FIRE:  343 06:59:37    -1908.004482*       0.0619
FIRE:  344 06:59:38    -1908.006485*       0.0623
FIRE:  345 06:59:38    -1908.009021*       0.0636
FIRE:  346 06:59:38    -1908.012013*       0.0652
FIRE:  347 06:59:38    -1908.015816*       0.0660
FIRE:  348 06:59:38    -1908.020633*       0.0661
FIRE:  349 06:59:39    -1908.026877*       0.0666
FIRE:  350 06:59:39    -1908.035145*       0.0737
FIRE:  351 06:59:39    -1908.046606*       0.0845
FIRE:  352 06:59:39    -1908.064267*       0.1047
FIRE:  353 06:59:39    -1908.093119*       0.1343
FIRE:  354 06:59:40    -1908.138296*       0.1956
FIRE:  355 06:59:40    -1908.173589*       0.3670
FIRE:  356 06:59:40    -1908.210072*       0.2068
FIRE:  357 06:59:40    -1908.213946*       0.1960
FIRE:  358 06:59:40    -1908.218763*       0.1877
FIRE:  359 06:59:40    -1908.222465*       0.1874
FIRE:  360 06:59:41    -1908.226673*       0.1870
FIRE:  361 06:59:41    -1908.233462*       0.1863
FIRE:  362 06:59:41    -1908.242244*       0.1845
FIRE:  363 06:59:41    -1908.250901*       0.1821
FIRE:  364 06:59:41    -1908.260534*       0.1815
FIRE:  365 06:59:42    -1908.274147*       0.1808
FIRE:  366 06:59:42    -1908.292141*       0.1834
FIRE:  367 06:59:42    -1908.312576*       0.1769
FIRE:  368 06:59:42    -1908.338306*       0.1619
FIRE:  369 06:59:42    -1908.364289*       0.1324
FIRE:  370 06:59:43    -1908.387554*       0.1254
FIRE:  371 06:59:43    -1908.401674*       0.1871
FIRE:  372 06:59:43    -1908.411716*       0.2332
FIRE:  373 06:59:43    -1908.414207*       0.2163
FIRE:  374 06:59:43    -1908.418325*       0.1861
FIRE:  375 06:59:44    -1908.423154*       0.1457
FIRE:  376 06:59:44    -1908.428038*       0.1006
FIRE:  377 06:59:44    -1908.432519*       0.0654
FIRE:  378 06:59:44    -1908.436127*       0.0711
FIRE:  379 06:59:44    -1908.439289*       0.0801
FIRE:  380 06:59:45    -1908.442782*       0.0897
FIRE:  381 06:59:45    -1908.446719*       0.1120
FIRE:  382 06:59:45    -1908.451745*       0.1231
FIRE:  383 06:59:45    -1908.458006*       0.1190
FIRE:  384 06:59:45    -1908.465313*       0.0965
FIRE:  385 06:59:46    -1908.473607*       0.0839
FIRE:  386 06:59:46    -1908.482362*       0.0782
FIRE:  387 06:59:46    -1908.491685*       0.0866
FIRE:  388 06:59:46    -1908.502136*       0.0799
FIRE:  389 06:59:46    -1908.511940*       0.0676
FIRE:  390 06:59:47    -1908.512508*       0.1671
FIRE:  391 06:59:47    -1908.522354*       0.0461
FIRE:  392 06:59:47    -1908.516271*       0.1466
FIRE:  393 06:59:47    -1908.519487*       0.1117
FIRE:  394 06:59:47    -1908.523001*       0.0502
FIRE:  395 06:59:48    -1908.523949*       0.0415
FIRE:  396 06:59:48    -1908.523991*       0.0415
FIRE:  397 06:59:48    -1908.524054*       0.0414
FIRE:  398 06:59:48    -1908.524199*       0.0414
FIRE:  399 06:59:48    -1908.524321*       0.0413
FIRE:  400 06:59:49    -1908.524494*       0.0413
FIRE:  401 06:59:49    -1908.524645*       0.0412
FIRE:  402 06:59:49    -1908.524799*       0.0411
FIRE:  403 06:59:49    -1908.524991*       0.0410
FIRE:  404 06:59:49    -1908.525163*       0.0409
FIRE:  405 06:59:49    -1908.525448*       0.0408
FIRE:  406 06:59:50    -1908.525816*       0.0406
FIRE:  407 06:59:50    -1908.526313*       0.0405
FIRE:  408 06:59:50    -1908.526756*       0.0404
FIRE:  409 06:59:50    -1908.527358*       0.0402
FIRE:  410 06:59:50    -1908.528063*       0.0401
FIRE:  411 06:59:51    -1908.528906*       0.0401
FIRE:  412 06:59:51    -1908.529915*       0.0400
FIRE:  413 06:59:51    -1908.531015*       0.0400
FIRE:  414 06:59:51    -1908.532414*       0.0401
FIRE:  415 06:59:51    -1908.533960*       0.0401
FIRE:  416 06:59:52    -1908.535787*       0.0403
FIRE:  417 06:59:52    -1908.538084*       0.0407
FIRE:  418 06:59:52    -1908.540660*       0.0416
FIRE:  419 06:59:52    -1908.543831*       0.0435
FIRE:  420 06:59:52    -1908.547736*       0.0466
FIRE:  421 06:59:53    -1908.552467*       0.0517
FIRE:  422 06:59:53    -1908.558734*       0.0597
FIRE:  423 06:59:53    -1908.566717*       0.0734
FIRE:  424 06:59:53    -1908.575211*       0.1005
FIRE:  425 06:59:53    -1908.562764*       0.3040
FIRE:  426 06:59:54    -1908.594026*       0.0983
FIRE:  427 06:59:54    -1908.594910*       0.0983
FIRE:  428 06:59:54    -1908.595964*       0.0983
FIRE:  429 06:59:54    -1908.596480*       0.0982
FIRE:  430 06:59:54    -1908.596976*       0.0979
FIRE:  431 06:59:55    -1908.597927*       0.0976
FIRE:  432 06:59:55    -1908.599583*       0.0970
FIRE:  433 06:59:55    -1908.601311*       0.0961
FIRE:  434 06:59:55    -1908.602879*       0.0949
FIRE:  435 06:59:55    -1908.604923*       0.0931
FIRE:  436 06:59:55    -1908.608111*       0.0909
FIRE:  437 06:59:56    -1908.611677*       0.0886
FIRE:  438 06:59:56    -1908.615952*       0.0870
FIRE:  439 06:59:56    -1908.621748*       0.0870
FIRE:  440 06:59:56    -1908.627244*       0.0852
FIRE:  441 06:59:56    -1908.633639*       0.0727
FIRE:  442 06:59:57    -1908.639872*       0.0661
FIRE:  443 06:59:57    -1908.645491*       0.0985
FIRE:  444 06:59:57    -1908.651480*       0.0659
FIRE:  445 06:59:57    -1908.657811*       0.0849
FIRE:  446 06:59:57    -1908.665298*       0.0724
FIRE:  447 06:59:58    -1908.668237*       0.1570
FIRE:  448 06:59:58    -1908.677276*       0.0606
FIRE:  449 06:59:58    -1908.677380*       0.0598
FIRE:  450 06:59:58    -1908.677692*       0.0582
FIRE:  451 06:59:58    -1908.678109*       0.0564
FIRE:  452 06:59:59    -1908.678530*       0.0551
FIRE:  453 06:59:59    -1908.679061*       0.0540
FIRE:  454 06:59:59    -1908.679682*       0.0530
FIRE:  455 06:59:59    -1908.680393*       0.0521
FIRE:  456 06:59:59    -1908.681102*       0.0509
FIRE:  457 07:00:00    -1908.682017*       0.0490
FIRE:  458 07:00:00    -1908.683122*       0.0459
FIRE:  459 07:00:00    -1908.684252*       0.0410
FIRE:  460 07:00:00    -1908.685531*       0.0344
FIRE:  461 07:00:00    -1908.686877*       0.0280
FIRE:  462 07:00:01    -1908.688245*       0.0279
FIRE:  463 07:00:01    -1908.689756*       0.0262
FIRE:  464 07:00:01    -1908.691257*       0.0249
FIRE:  465 07:00:01    -1908.692842*       0.0212
FIRE:  466 07:00:01    -1908.694541*       0.0253
FIRE:  467 07:00:02    -1908.696146*       0.0214
FIRE:  468 07:00:02    -1908.697728*       0.0388
FIRE:  469 07:00:02    -1908.697737*       0.0811
FIRE:  470 07:00:02    -1908.700793*       0.0329
FIRE:  471 07:00:02    -1908.698857*       0.0745
FIRE:  472 07:00:03    -1908.699835*       0.0565
FIRE:  473 07:00:03    -1908.701010*       0.0297
FIRE:  474 07:00:03    -1908.701207*       0.0297
FIRE:  475 07:00:03    -1908.701226*       0.0297
FIRE:  476 07:00:03    -1908.701250*       0.0297
FIRE:  477 07:00:04    -1908.701359*       0.0297
FIRE:  478 07:00:04    -1908.701388*       0.0297
FIRE:  479 07:00:04    -1908.701435*       0.0297
FIRE:  480 07:00:04    -1908.701455*       0.0297
FIRE:  481 07:00:04    -1908.701501*       0.0297
FIRE:  482 07:00:05    -1908.701554*       0.0297
FIRE:  483 07:00:05    -1908.701664*       0.0297
FIRE:  484 07:00:05    -1908.701784*       0.0297
FIRE:  485 07:00:05    -1908.701907*       0.0297
FIRE:  486 07:00:05    -1908.702101*       0.0297
FIRE:  487 07:00:05    -1908.702279*       0.0298
FIRE:  488 07:00:06    -1908.702549*       0.0298
FIRE:  489 07:00:06    -1908.702802*       0.0299
FIRE:  490 07:00:06    -1908.703107*       0.0299
FIRE:  491 07:00:06    -1908.703544*       0.0300
FIRE:  492 07:00:06    -1908.704050*       0.0301
FIRE:  493 07:00:07    -1908.704637*       0.0302
FIRE:  494 07:00:07    -1908.705442*       0.0303
FIRE:  495 07:00:07    -1908.706339*       0.0305
FIRE:  496 07:00:07    -1908.707485*       0.0309
FIRE:  497 07:00:07    -1908.708879*       0.0314
FIRE:  498 07:00:08    -1908.710778*       0.0322
FIRE:  499 07:00:08    -1908.713216*       0.0329
FIRE:  500 07:00:08    -1908.716336*       0.0332
FIRE:  501 07:00:08    -1908.720399*       0.0325
FIRE:  502 07:00:08    -1908.725188*       0.0322
FIRE:  503 07:00:09    -1908.729060*       0.0719
FIRE:  504 07:00:09    -1908.731527*       0.0337
FIRE:  505 07:00:09    -1908.730149*       0.0655
FIRE:  506 07:00:09    -1908.731022*       0.0490
FIRE:  507 07:00:09    -1908.731941*       0.0322
FIRE:  508 07:00:10    -1908.732191*       0.0320
FIRE:  509 07:00:10    -1908.732268*       0.0320
FIRE:  510 07:00:10    -1908.732310*       0.0320
FIRE:  511 07:00:10    -1908.732331*       0.0320
FIRE:  512 07:00:10    -1908.732395*       0.0319
FIRE:  513 07:00:11    -1908.732480*       0.0319
FIRE:  514 07:00:11    -1908.732506*       0.0318
FIRE:  515 07:00:11    -1908.732539*       0.0318
FIRE:  516 07:00:11    -1908.732646*       0.0317
FIRE:  517 07:00:11    -1908.732795*       0.0318
FIRE:  518 07:00:12    -1908.732970*       0.0320
FIRE:  519 07:00:12    -1908.733277*       0.0322
FIRE:  520 07:00:12    -1908.733475*       0.0324
FIRE:  521 07:00:12    -1908.733782*       0.0328
FIRE:  522 07:00:12    -1908.734183*       0.0332
FIRE:  523 07:00:13    -1908.734642*       0.0338
FIRE:  524 07:00:13    -1908.735249*       0.0344
FIRE:  525 07:00:13    -1908.736020*       0.0353
FIRE:  526 07:00:13    -1908.736971*       0.0364
FIRE:  527 07:00:13    -1908.738085*       0.0379
FIRE:  528 07:00:14    -1908.739536*       0.0399
FIRE:  529 07:00:14    -1908.741267*       0.0426
FIRE:  530 07:00:14    -1908.743513*       0.0463
FIRE:  531 07:00:14    -1908.746327*       0.0517
FIRE:  532 07:00:14    -1908.750073*       0.0593
FIRE:  533 07:00:15    -1908.755008*       0.0666
FIRE:  534 07:00:15    -1908.761821*       0.0732
FIRE:  535 07:00:15    -1908.771687*       0.0848
FIRE:  536 07:00:15    -1908.786113*       0.1012
FIRE:  537 07:00:15    -1908.807571*       0.1221
FIRE:  538 07:00:16    -1908.827710*       0.1950
FIRE:  539 07:00:16    -1908.844893*       0.1193
FIRE:  540 07:00:16    -1908.846152*       0.1192
FIRE:  541 07:00:16    -1908.847772*       0.1190
FIRE:  542 07:00:16    -1908.849277*       0.1188
FIRE:  543 07:00:17    -1908.851049*       0.1186
FIRE:  544 07:00:17    -1908.853820*       0.1187
FIRE:  545 07:00:17    -1908.857422*       0.1192
FIRE:  546 07:00:17    -1908.861455*       0.1208
FIRE:  547 07:00:17    -1908.866146*       0.1252
FIRE:  548 07:00:17    -1908.872539*       0.1300
FIRE:  549 07:00:18    -1908.881123*       0.1342
FIRE:  550 07:00:18    -1908.891708*       0.1407
FIRE:  551 07:00:18    -1908.905726*       0.1515
FIRE:  552 07:00:18    -1908.924065*       0.1649
FIRE:  553 07:00:18    -1908.947806*       0.1804
FIRE:  554 07:00:19    -1908.978606*       0.1945
FIRE:  555 07:00:19    -1909.017729*       0.2215
FIRE:  556 07:00:19    -1909.064322*       0.1959
FIRE:  557 07:00:19    -1909.109617*       0.1607
FIRE:  558 07:00:19    -1909.126030*       0.3328
FIRE:  559 07:00:20    -1909.134983*       0.2819
FIRE:  560 07:00:20    -1909.140265*       0.1942
FIRE:  561 07:00:20    -1909.146388*       0.1094
FIRE:  562 07:00:20    -1909.155448*       0.1152
FIRE:  563 07:00:20    -1909.159075*       0.1547
FIRE:  564 07:00:21    -1909.160063*       0.1467
FIRE:  565 07:00:21    -1909.161531*       0.1312
FIRE:  566 07:00:21    -1909.162990*       0.1089
FIRE:  567 07:00:21    -1909.164050*       0.0972
FIRE:  568 07:00:21    -1909.164972*       0.0980
FIRE:  569 07:00:22    -1909.166333*       0.0982
FIRE:  570 07:00:22    -1909.168088*       0.0974
FIRE:  571 07:00:22    -1909.170270*       0.0952
FIRE:  572 07:00:22    -1909.172287*       0.0910
FIRE:  573 07:00:22    -1909.174351*       0.0846
FIRE:  574 07:00:23    -1909.177383*       0.0771
FIRE:  575 07:00:23    -1909.181136*       0.0811
FIRE:  576 07:00:23    -1909.184831*       0.0857
FIRE:  577 07:00:23    -1909.189210*       0.0873
FIRE:  578 07:00:23    -1909.194160*       0.0839
FIRE:  579 07:00:24    -1909.199319*       0.0745
FIRE:  580 07:00:24    -1909.205577*       0.0637
FIRE:  581 07:00:24    -1909.212436*       0.0750
FIRE:  582 07:00:24    -1909.220009*       0.0832
FIRE:  583 07:00:24    -1909.229167*       0.0788
FIRE:  584 07:00:25    -1909.238825*       0.0701
FIRE:  585 07:00:25    -1909.246558*       0.0532
FIRE:  586 07:00:25    -1909.244569*       0.1376
FIRE:  587 07:00:25    -1909.252940*       0.0556
FIRE:  588 07:00:25    -1909.253018*       0.0542
FIRE:  589 07:00:26    -1909.253271*       0.0535
FIRE:  590 07:00:26    -1909.253584*       0.0524
FIRE:  591 07:00:26    -1909.253992*       0.0509
FIRE:  592 07:00:26    -1909.254425*       0.0489
FIRE:  593 07:00:26    -1909.254915*       0.0465
FIRE:  594 07:00:27    -1909.255393*       0.0436
FIRE:  595 07:00:27    -1909.255932*       0.0399
FIRE:  596 07:00:27    -1909.256551*       0.0352
FIRE:  597 07:00:27    -1909.257248*       0.0297
FIRE:  598 07:00:27    -1909.257867*       0.0235
FIRE:  599 07:00:27    -1909.258601*       0.0239
FIRE:  600 07:00:28    -1909.259344*       0.0250
FIRE:  601 07:00:28    -1909.260176*       0.0255
FIRE:  602 07:00:28    -1909.261057*       0.0253
FIRE:  603 07:00:28    -1909.262163*       0.0247
FIRE:  604 07:00:28    -1909.263425*       0.0236
FIRE:  605 07:00:29    -1909.264882*       0.0217
FIRE:  606 07:00:29    -1909.266581*       0.0182
FIRE:  607 07:00:29    -1909.268295*       0.0160
FIRE:  608 07:00:29    -1909.269555*       0.0402
FIRE:  609 07:00:29    -1909.270265*       0.0148
FIRE:  610 07:00:30    -1909.269884*       0.0347
FIRE:  611 07:00:30    -1909.270100*       0.0268
FIRE:  612 07:00:30    -1909.270358*       0.0128
FIRE:  613 07:00:30    -1909.270441*       0.0124
FIRE:  614 07:00:30    -1909.270435*       0.0123
FIRE:  615 07:00:31    -1909.270445*       0.0123
FIRE:  616 07:00:31    -1909.270476*       0.0122
FIRE:  617 07:00:31    -1909.270518*       0.0121
FIRE:  618 07:00:31    -1909.270520*       0.0120
FIRE:  619 07:00:31    -1909.270546*       0.0119
FIRE:  620 07:00:32    -1909.270539*       0.0117
FIRE:  621 07:00:32    -1909.270596*       0.0116
FIRE:  622 07:00:32    -1909.270614*       0.0115
FIRE:  623 07:00:32    -1909.270620*       0.0113
FIRE:  624 07:00:32    -1909.270714*       0.0112
FIRE:  625 07:00:33    -1909.270773*       0.0111
FIRE:  626 07:00:33    -1909.270800*       0.0110
FIRE:  627 07:00:33    -1909.270887*       0.0108
FIRE:  628 07:00:33    -1909.271034*       0.0106
FIRE:  629 07:00:33    -1909.271146*       0.0103
FIRE:  630 07:00:34    -1909.271296*       0.0100
FIRE:  631 07:00:34    -1909.271487*       0.0097
FIRE:  632 07:00:34    -1909.271731*       0.0099
FIRE:  633 07:00:34    -1909.272018*       0.0101
FIRE:  634 07:00:34    -1909.272270*       0.0103
FIRE:  635 07:00:35    -1909.272688*       0.0103
FIRE:  636 07:00:35    -1909.273120*       0.0102
FIRE:  637 07:00:35    -1909.273612*       0.0098
FIRE:  638 07:00:35    -1909.274282*       0.0092
FIRE:  639 07:00:35    -1909.274976*       0.0082
FIRE:  640 07:00:35    -1909.275725*       0.0081
FIRE:  641 07:00:36    -1909.276623*       0.0106
FIRE:  642 07:00:36    -1909.277247*       0.0323
FIRE:  643 07:00:36    -1909.277657*       0.0082
FIRE:  644 07:00:36    -1909.277395*       0.0289
FIRE:  645 07:00:36    -1909.277530*       0.0221
FIRE:  646 07:00:37    -1909.277680*       0.0100
FIRE:  647 07:00:37    -1909.277730*       0.0079
FIRE:  648 07:00:37    -1909.277729*       0.0078
FIRE:  649 07:00:37    -1909.277774*       0.0078
FIRE:  650 07:00:37    -1909.277738*       0.0078
FIRE:  651 07:00:38    -1909.277770*       0.0078
FIRE:  652 07:00:38    -1909.277735*       0.0078
FIRE:  653 07:00:38    -1909.277765*       0.0078
FIRE:  654 07:00:38    -1909.277753*       0.0077
FIRE:  655 07:00:38    -1909.277781*       0.0077
FIRE:  656 07:00:39    -1909.277794*       0.0077
FIRE:  657 07:00:39    -1909.277850*       0.0076
FIRE:  658 07:00:39    -1909.277809*       0.0075
FIRE:  659 07:00:39    -1909.277824*       0.0075
FIRE:  660 07:00:39    -1909.277894*       0.0074
FIRE:  661 07:00:40    -1909.277927*       0.0073
FIRE:  662 07:00:40    -1909.278020*       0.0071
FIRE:  663 07:00:40    -1909.278075*       0.0070
FIRE:  664 07:00:40    -1909.278129*       0.0069
FIRE:  665 07:00:40    -1909.278208*       0.0070
FIRE:  666 07:00:41    -1909.278265*       0.0071
FIRE:  667 07:00:41    -1909.278443*       0.0071
FIRE:  668 07:00:41    -1909.278570*       0.0072
FIRE:  669 07:00:41    -1909.278776*       0.0071
FIRE:  670 07:00:41    -1909.278953*       0.0071
FIRE:  671 07:00:42    -1909.279232*       0.0069
FIRE:  672 07:00:42    -1909.279550*       0.0067
FIRE:  673 07:00:42    -1909.279935*       0.0064
FIRE:  674 07:00:42    -1909.280350*       0.0061
FIRE:  675 07:00:42    -1909.280794*       0.0080
FIRE:  676 07:00:43    -1909.281117*       0.0256
FIRE:  677 07:00:43    -1909.281382*       0.0054
FIRE:  678 07:00:43    -1909.281161*       0.0229
FIRE:  679 07:00:43    -1909.281259*       0.0173
FIRE:  680 07:00:43    -1909.281354*       0.0075
FIRE:  681 07:00:43    -1909.281334*       0.0054
FIRE:  682 07:00:44    -1909.281391*       0.0054
FIRE:  683 07:00:44    -1909.281379*       0.0054
FIRE:  684 07:00:44    -1909.281389*       0.0054
FIRE:  685 07:00:44    -1909.281411*       0.0054
FIRE:  686 07:00:44    -1909.281383*       0.0054
FIRE:  687 07:00:45    -1909.281373*       0.0054
FIRE:  688 07:00:45    -1909.281377*       0.0054
FIRE:  689 07:00:45    -1909.281353*       0.0054
FIRE:  690 07:00:45    -1909.281363*       0.0054
FIRE:  691 07:00:45    -1909.281441*       0.0054
FIRE:  692 07:00:46    -1909.281445*       0.0054
FIRE:  693 07:00:46    -1909.281391*       0.0054
FIRE:  694 07:00:46    -1909.281468*       0.0054
FIRE:  695 07:00:46    -1909.281501*       0.0054
FIRE:  696 07:00:46    -1909.281517*       0.0054
FIRE:  697 07:00:47    -1909.281541*       0.0054
FIRE:  698 07:00:47    -1909.281577*       0.0054
FIRE:  699 07:00:47    -1909.281603*       0.0054
FIRE:  700 07:00:47    -1909.281662*       0.0054
FIRE:  701 07:00:47    -1909.281766*       0.0054
FIRE:  702 07:00:48    -1909.281831*       0.0053
FIRE:  703 07:00:48    -1909.281892*       0.0053
FIRE:  704 07:00:48    -1909.282060*       0.0052
FIRE:  705 07:00:48    -1909.282228*       0.0051
FIRE:  706 07:00:48    -1909.282389*       0.0050
[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()
_images/3_5_nanoparticle_advanced_41_0.png

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