Workshop: Software Tools from Atomistics to Phase Diagrams
Contents
Workshop: Software Tools from Atomistics to Phase Diagrams¶
Day 1 - Atomistic simulations (pyiron)¶
Authors: Jan Janssen, Tilmann Hickel, Jörg Neugebauer (Max-Planck-Institut für Eisenforschung)
Interactive: Atomistic simulations with pyiron
The scope of this second exercise is to become familar with:
Interatomic potential calculation,
the pyiron job management and
the aggregation of multiple calculations.
Reminder¶
In the first session we learned how to create a pyiron project object and then use this pyiron project object to create atomistic structure objects.
# Import the Project object
from pyiron_atomistics import Project
# Create a Project object instance for a project named atomistics
pr = Project("simulations")
# Create a cubic aluminum fcc structure and repeat it 3 times in each direction
al_fcc = pr.create_ase_bulk("Al", cubic=True)
al_fcc_repeated = al_fcc.repeat(3)
# Confirm the final structure has 108 atoms by calculating the length of the structure object
len(al_fcc_repeated) == 108
True
LAMMPS Calculation¶
The Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS) code is used inside pyiron for atomistic simualtion with interatomic potentials. These interatomic potentials approximate the interaction of atoms and can be either fitted to density functional theory (DFT) or experimental results. Still in contrast to density functional theory which scales cubically with the number of atoms interatomic potentials scale linearly with the number of atoms. Therefore we are going to use primarly interatomic potentials in this workshop but most calculations could be executed with a DFT codes as well.
Molecular dynamics calculation¶
We start with a first molecular dynamic calculation at an ensemble with constant number of atoms, constant volume and contant fixed temperature.
# Create a LAMMPS job object with the job named lmp
job_md = pr.create_job(
job_type=pr.job_type.Lammps,
job_name="lmp"
)
# Assign the fcc aluminium structure to the LAMMPS job object
job_md.structure = al_fcc_repeated
# Define an ensemble with constant number of atoms,
# constant volume and a constant temperature of 500K
# and simulate 10000 molecular dynamics steps
job_md.calc_md(temperature=500, n_ionic_steps=10000)
# Execute the calculation - You get a warning that
# not potential was set and the default potential was
# used instead. The selection of interatomic potentials
# is discussed below.
job_md.run(delete_existing_job=True)
/opt/conda/lib/python3.8/site-packages/pyiron/lammps/base.py:229: UserWarning: No potential set via job.potential - use default potential, Al_Mg_Mendelev_eam
warnings.warn("No potential set via job.potential - use default potential, " + lst_of_potentials[0])
The job lmp was saved and received the ID: 75
# Animate the molecular dynamics trajectory
job_md.animate_structure()
Reminder: Job Management in pyiron¶
After the successful execution of the calculation it is listed in the project database and can be reloaded using either the job name or the job id, therefore theese have to be unique for a given project.
# list all calculations in the current project using the project job table
pr.job_table()
id | status | chemicalformula | job | subjob | projectpath | project | timestart | timestop | totalcputime | computer | hamilton | hamversion | parentid | masterid | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 75 | finished | Al108 | lmp | /lmp | /home/jovyan/ | again/simulations/ | 2020-11-09 23:36:28.580266 | 2020-11-09 23:36:37.899903 | 9.0 | pyiron@jupyter-jan#1 | Lammps | 0.1 | None | None |
As discussed in the previous section by default pyiron calculations are reloaded from the database when a calculation with the same name already exists in a given project. Therefore to overwrite the calculation parameters we use delete_existing_job
parameter in the run()
function.
# Change the temperature to 800K and calculate 20000 steps.
# You get a warning message that the job is already finished.
job_md.calc_md(temperature=800, n_ionic_steps=20000)
/opt/conda/lib/python3.8/site-packages/pyiron_base/generic/parameters.py:284: UserWarning: The input in GenericParameters changed, while the state of the job was already finished.
warnings.warn(
# Execute the LAMMPS calculation by calling the run function
# with the delete_existing parameter set to true:
job_md.run(delete_existing_job=True)
The job lmp was saved and received the ID: 75
Reminder: Plot calculation results using matplotlib¶
In the same way we can again use matplotlib to analyse the results of our calculation. For example we can use the matplotlib library to plot the temperature over simulation steps.
# Import the matplotlib library for plotting.
import matplotlib.pyplot as plt
# for the LAMMPS job object plot the temperature over simualation steps
plt.plot(job_md.output.steps, job_md.output.temperature)
plt.xlabel("timesteps")
plt.ylabel("Temperature");

In the beginning the potential energy is close to the 0K equilibrium, therefore to accelerate the equilibration the kinetic energy is set to twice the expected kinetic energy. The additional kinetic energy is transfered to the potential energy resulting in an equal distribution of potential and kinetic energy. With this trick the equilibration is accelerated. The large temperature fluctuations are related to the small number of atoms in the simulation cell.
Advanced input options¶
Besides the general functions calc_static()
, calc_minimize()
and calc_md()
. pyiron also has the option to modify the input of the simulation code directly.
# display the LAMMPS input file
job_md.input.control
Parameter | Value | Comment | |
---|---|---|---|
0 | units | metal | |
1 | dimension | 3 | |
2 | boundary | p p p | |
3 | atom_style | atomic | |
4 | read_data | structure.inp | |
5 | include | potential.inp | |
6 | fix___ensemble | all nvt temp 800.0 800.0 0.1 | |
7 | variable___dumptime | equal 100 | |
8 | variable___thermotime | equal 100 | |
9 | timestep | 0.001 | |
10 | velocity | all create 1600.0 61040 dist gaussian | |
11 | dump___1 | all custom ${dumptime} dump.out id type xsu ysu zsu fx fy fz vx vy vz | |
12 | dump_modify___1 | sort id format line "%d %d %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g" | |
13 | thermo_style | custom step temp pe etotal pxx pxy pxz pyy pyz pzz vol | |
14 | thermo_modify | format float %20.15g | |
15 | thermo | 100 | |
16 | run | 20000 |
# change the number of simulation steps to 2000
# by manually modifying the run command.
# You again get a warning message that the job
# is already finished.
job_md.input.control["run"] = 2000
/opt/conda/lib/python3.8/site-packages/pyiron_base/generic/parameters.py:284: UserWarning: The input in GenericParameters changed, while the state of the job was already finished.
warnings.warn(
Advanced output options¶
Besides the output properties it is also possible to access the output of a calculation directly from the data interface which is based om the hierachical file format (HDF5) pyiron is using to store the simulation data.
# print content of the job object
job_md
{'groups': ['input', 'output'], 'nodes': ['HDF_VERSION', 'NAME', 'TYPE', 'VERSION', 'server', 'status']}
# print content of the output of the job object
# use strings to specify the path for the data interface
job_md["output"]
{'groups': ['generic', 'structure'], 'nodes': []}
# print content of the generic group
# of the output of the job object
job_md["output/generic"]
{'groups': [], 'nodes': ['cells', 'energy_pot', 'energy_tot', 'forces', 'indices', 'positions', 'pressures', 'steps', 'temperature', 'unwrapped_positions', 'velocities', 'volume']}
# plot the temperature over simulation steps directly from the HDF5 file
plt.plot(job_md["output/generic/steps"], job_md["output/generic/temperature"])
plt.xlabel("timesteps")
plt.ylabel("Temperature");

Accessing the original output files of the LAMMPS code¶
While pyiron parses most of the output of the simulation codes some users might have the need to access addtional output parameters.
# Decompress the LAMMPS job
job_md.decompress()
# Read the LAMMPS output file of the LAMMPS job
job_md["log.lammps"]
['LAMMPS (3 Mar 2020)\n',
'units metal\n',
'dimension 3\n',
'boundary p p p\n',
'atom_style atomic\n',
'read_data structure.inp\n',
' orthogonal box = (0 0 0) to (12.15 12.15 12.15)\n',
' 1 by 1 by 1 MPI processor grid\n',
' reading atoms ...\n',
' 108 atoms\n',
' read_data CPU = 0.00113201 secs\n',
'include potential.inp\n',
'pair_style eam/fs\n',
'pair_coeff * * Al-Mg.eam.fs Al Mg\n',
'fix ensemble all nvt temp 800.0 800.0 0.1\n',
'variable dumptime equal 100\n',
'variable thermotime equal 100\n',
'timestep 0.001\n',
'velocity all create 1600.0 61040 dist gaussian\n',
'dump 1 all custom ${dumptime} dump.out id type xsu ysu zsu fx fy fz vx vy vz\n',
'dump 1 all custom 100 dump.out id type xsu ysu zsu fx fy fz vx vy vz\n',
'dump_modify 1 sort id format line "%d %d %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g %20.15g"\n',
'thermo_style custom step temp pe etotal pxx pxy pxz pyy pyz pzz vol\n',
'thermo_modify format float %20.15g\n',
'thermo 100\n',
'run 20000\n',
'Neighbor list info ...\n',
' update every 1 steps, delay 10 steps, check yes\n',
' max neighbors/atom: 2000, page size: 100000\n',
' master list distance cutoff = 9.5\n',
' ghost atom cutoff = 9.5\n',
' binsize = 4.75, bins = 3 3 3\n',
' 1 neighbor lists, perpetual/occasional/extra = 1 0 0\n',
' (1) pair eam/fs, perpetual\n',
' attributes: half, newton on\n',
' pair build: half/bin/atomonly/newton\n',
' stencil: half/bin/3d/newton\n',
' bin: standard\n',
'Per MPI rank memory allocation (min/avg/max) = 4.652 | 4.652 | 4.652 Mbytes\n',
'Step Temp PotEng TotEng Pxx Pxy Pxz Pyy Pyz Pzz Volume \n',
' 0 1600 -368.345664348245 -346.216327524245 11129.3817059862 975.959809779197 -506.173015089098 11199.8006475073 432.866725745116 9140.59499836731 1793.61337470476 \n',
' 100 749.881580772722 -356.741524706435 -346.370035907039 40090.2503531197 2760.31703609456 -903.079195725193 40316.4423043625 1216.40418707706 36350.0514063421 1793.61337470476 \n',
' 200 840.246014053288 -357.124302857366 -345.502998444861 38561.084682077 1586.89733791517 2024.37244130575 38792.6759622762 2639.98819885959 38598.9584444955 1793.61337470476 \n',
' 300 803.975418948322 -356.435736999075 -345.316085221497 42261.9480803468 -1014.06165303 1868.70589685109 39413.6429757125 1415.08965412829 38793.8466205228 1793.61337470476 \n',
' 400 810.368869409898 -356.518781278982 -345.310702739698 41999.6164429535 293.926461404266 2956.29537231371 36644.2112836132 638.739186058034 40801.3758083272 1793.61337470476 \n',
' 500 762.363845407562 -356.269622633057 -345.725493684642 41232.4270765162 1580.67261976342 -30.2377891336238 39655.5232451737 1901.42320866177 39405.5321354773 1793.61337470476 \n',
' 600 719.779181990795 -357.891619686303 -347.936472213067 36877.8146442467 -1485.078176708 -530.022672251052 34218.0480634678 2305.00997834194 35726.9080869063 1793.61337470476 \n',
' 700 779.989226931201 -358.996892093632 -348.208989392475 34849.791931427 134.665144082224 1265.35623849104 33332.6813190347 2072.98105105041 33393.7013582744 1793.61337470476 \n',
' 800 713.344122975588 -356.551381468828 -346.685236238361 40374.056052036 130.816195435251 3.56855498138445 36401.3335932569 2491.54549201523 38716.7319386568 1793.61337470476 \n',
' 900 839.088494886636 -356.964282378298 -345.358987422992 41071.3080141472 -2679.13658917922 -249.241566696624 35847.844227083 1906.03123524834 41175.9594815169 1793.61337470476 \n',
' 1000 850.155337896281 -356.798884171926 -345.040525531284 41420.9256049387 -407.196086341458 478.329131780837 39625.2464029036 1307.15493417534 40488.0647158703 1793.61337470476 \n',
' 1100 858.815809455519 -356.98349938102 -345.105359182759 40076.6170408161 1142.20416857242 1970.26036350317 36546.375603244 -1965.23437694236 38086.4436119669 1793.61337470476 \n',
' 1200 702.740392637799 -356.200725317146 -346.481238536826 38930.4361792011 333.61040466 1896.1189812407 37879.1427406753 -651.299493350818 41233.4969983771 1793.61337470476 \n',
' 1300 760.031628130742 -358.498803408504 -347.98693097363 33213.9372046705 -554.064623252203 191.339182173998 34305.3537895353 2036.42214770849 35115.931322729 1793.61337470476 \n',
' 1400 674.495599635681 -357.029776671621 -347.700938977469 36428.9342310195 1315.02797125625 2910.79098443515 36395.5045444763 125.406934549534 37853.1816951362 1793.61337470476 \n',
' 1500 812.297032837413 -356.879132192462 -345.644385541965 38877.0133304646 -1209.16487622562 -1082.19799678315 38768.2872394998 2440.29146897183 40427.6898977389 1793.61337470476 \n',
' 1600 793.764594084365 -356.115080282616 -345.136652744205 39588.7819003317 3494.45830023183 2544.50104043437 41571.8155340742 -118.70109423313 42003.3094941238 1793.61337470476 \n',
' 1700 812.43855524628 -356.496115559444 -345.259411535789 40280.8835130497 556.232673520211 1426.33731319946 37873.7975097177 230.749875840913 40328.4395879412 1793.61337470476 \n',
' 1800 899.953925971534 -358.221499465978 -345.774384744787 35953.0928527356 -767.587707045359 1143.81512197843 33427.1785657943 500.511360352108 34869.2024670573 1793.61337470476 \n',
' 1900 813.721733787399 -358.573781507714 -347.31933005272 33221.2373055638 364.131531323922 1068.83579617249 34469.085877131 971.329732212536 33598.303728355 1793.61337470476 \n',
' 2000 647.646128340881 -357.014300274368 -348.056813201358 39837.3109960031 -584.153764980713 2150.31196947532 36345.2712042205 735.473799967447 37557.2374788153 1793.61337470476 \n',
' 2100 760.394390824431 -356.421548843936 -345.904659097915 42511.1469735922 -219.214968523139 -1884.03520597567 38193.9352234244 2210.1662551086 37491.8497658159 1793.61337470476 \n',
' 2200 739.376149370269 -354.772997664352 -344.546807758698 43341.1392958603 693.475604196563 -722.356751903024 41956.9489605072 3207.0853780075 43091.68228717 1793.61337470476 \n',
' 2300 856.276335795986 -356.720485834212 -344.877468678431 38713.4738998013 866.240228486074 -1525.86417803763 37041.7689691954 -39.2263868491735 42834.6830896656 1793.61337470476 \n',
' 2400 745.740688122929 -356.389888203085 -346.075671408814 41053.536728352 -1717.41079416587 -1026.7052457347 37322.0876891668 832.564181620106 38332.6603585103 1793.61337470476 \n',
' 2500 702.412365638531 -356.82937489122 -347.114424998372 40014.414427068 -2880.24577006219 107.125043147876 35985.9662975502 -38.2685323785348 36717.0616402923 1793.61337470476 \n',
' 2600 762.423538962123 -358.372412870983 -347.827458310834 33834.4732417728 -1004.81997963182 -2994.95504804654 34174.8201761768 -237.635845608481 35316.2273222473 1793.61337470476 \n',
' 2700 651.917678039588 -356.792332723748 -347.775766549461 35120.1675123595 -970.52712460589 99.8062642497652 36074.6434847671 -835.940000581904 37498.1549657058 1793.61337470476 \n',
' 2800 685.051987385048 -355.413816712992 -345.938975356246 42016.9026293928 2875.11275436767 -2485.29823398253 41774.6612149999 -1262.1570112699 40925.1282870328 1793.61337470476 \n',
' 2900 867.027659018289 -356.554956874334 -344.563239935497 40151.5958432988 -1809.28827847902 443.870110688133 40354.2075489155 219.697185425959 39137.890987414 1793.61337470476 \n',
' 3000 861.231577261821 -356.723749463349 -344.812197177916 39727.3714899392 -246.568425598993 203.120966573274 38837.3634342714 -181.847425463459 35561.1875310664 1793.61337470476 \n',
' 3100 739.319205213865 -356.60218073968 -346.376778419287 36937.6501894911 2679.55662761757 -921.020156149648 39926.7608474893 874.051616790185 36648.3926072473 1793.61337470476 \n',
' 3200 719.49103062564 -357.703627451399 -347.752465352298 34687.3782266846 2426.60183356838 -1936.7177546883 36746.6718622789 322.925512681742 33551.856791057 1793.61337470476 \n',
' 3300 741.410873387546 -357.562859533689 -347.308527694834 34214.4776918172 326.603475154767 -144.020276964408 37806.6646069269 1201.33020603643 33097.121541428 1793.61337470476 \n',
' 3400 763.082528500868 -357.280055195622 -346.725986259557 39295.0902284143 -206.029436457679 1491.51093679661 36739.2698187759 -776.372554167981 36242.9417241969 1793.61337470476 \n',
' 3500 762.14456702635 -356.436697955053 -345.89560180986 38113.6823313657 1003.45817278781 -1674.7205257678 39551.1973800642 1456.57037537553 36077.421255915 1793.61337470476 \n',
' 3600 880.376594863603 -356.928709480432 -344.752365605618 38638.0348006314 -1204.09900569873 -3219.88220280614 38596.309941647 174.957397464502 37731.6993554285 1793.61337470476 \n',
' 3700 892.929248418204 -356.46133024939 -344.111372687985 43746.8955214518 -1118.97550581751 -1787.2582380019 40877.0219286756 -334.200907389934 35633.2850109769 1793.61337470476 \n',
' 3800 854.393216974481 -357.145287761964 -345.328315712859 40630.3259299718 -342.293671372876 -1284.76482139519 39840.7096063095 -1287.82547977228 37986.0028322895 1793.61337470476 \n',
' 3900 751.166025414974 -357.632100926391 -347.242847184421 36873.8509510722 403.244737615138 1111.60293624685 39608.6635155635 -1232.28027536114 35922.075963608 1793.61337470476 \n',
' 4000 777.514381501192 -357.860252754796 -347.106579233706 35216.9032514037 -1203.18071964633 -915.851677861811 36430.7970093418 1840.33919073591 36209.3230030433 1793.61337470476 \n',
' 4100 769.258812599239 -356.352623698134 -345.71313159261 38513.9546378867 -2481.53156442883 -425.180231827488 41973.019253725 1046.76316079337 38336.5279243278 1793.61337470476 \n',
' 4200 827.447332669194 -355.849386111992 -344.405098156519 39741.3575520559 -733.417224709384 -378.92164745868 40693.9079140137 505.41831443558 41467.9548135378 1793.61337470476 \n',
' 4300 829.92123950646 -355.893737257111 -344.415233103092 39730.5781650864 583.248807477978 589.972319735323 39994.3259723284 -699.665302325702 41197.380979038 1793.61337470476 \n',
' 4400 788.645805409368 -356.086498195544 -345.178867781333 38445.198859852 2489.35719425358 177.866647505178 40946.217082953 -463.904603678019 37647.5005575011 1793.61337470476 \n',
' 4500 779.257055466703 -356.277254048518 -345.499477890455 39630.6465473869 223.920076449828 -207.59849914412 37630.2603923005 2077.97896192923 41618.1689484628 1793.61337470476 \n',
' 4600 822.107937282041 -357.056871698131 -345.686432042007 38222.3369431844 -452.985677227763 -655.391933282801 36528.4417656839 -304.242046248717 37789.0261965746 1793.61337470476 \n',
' 4700 690.335942805126 -355.90688750492 -346.35896462989 40478.6604466466 -1024.85982240335 -743.0375571704 41196.4417678971 1239.33802865664 39574.307412173 1793.61337470476 \n',
' 4800 721.310511868965 -357.507273841144 -347.530946796244 36220.7851057488 -602.910620651538 790.609647091253 36818.9900574573 1033.13670007759 34642.2366112022 1793.61337470476 \n',
' 4900 598.126632907042 -356.945565534802 -348.672974457924 34973.6981474455 692.440977173571 1043.56837444237 36943.2787833837 1202.2227755585 36221.5311345695 1793.61337470476 \n',
' 5000 744.409278003747 -357.807021423816 -347.511219143906 34251.7991403481 2791.13648035686 625.81078198627 35014.8347763759 1530.87930114575 37426.4740348971 1793.61337470476 \n',
' 5100 826.38586311512 -357.221077169538 -345.791470224872 37338.0094096911 -480.413569144121 -240.548435732395 37919.0349488701 227.414826380036 38415.409831109 1793.61337470476 \n',
' 5200 849.969767773974 -357.016998852805 -345.261206802 37667.1545206298 505.922356070663 -335.512276783935 40199.8703492309 -1933.0825819593 38522.2804789215 1793.61337470476 \n',
' 5300 798.390819399982 -356.149097364994 -345.106685265186 38528.7620047079 -125.469444261041 3376.73911021242 38388.7402044006 -1721.62409168936 40983.0597846419 1793.61337470476 \n',
' 5400 796.11942143275 -357.052930434848 -346.041933666715 37064.3632393267 1783.59848745048 2027.41987618273 38612.9116394476 381.012750410135 39332.8748532915 1793.61337470476 \n',
' 5500 759.378370754079 -358.231662573509 -347.728825233961 35183.1852184311 -1099.10968130291 21.6256164729646 38488.3236271842 -860.044655720406 34330.3207544378 1793.61337470476 \n',
' 5600 759.707414058388 -358.563027087677 -348.05563880431 33484.9176988675 80.1434092051375 -2511.37871388583 36432.4406799049 877.469546301259 32864.1160963895 1793.61337470476 \n',
' 5700 831.734894035661 -357.370762760962 -345.867174249468 37022.483754613 1880.65125348503 -776.782964940565 36476.2907555196 19.0472079092738 37280.7756562849 1793.61337470476 \n',
' 5800 828.872520226219 -356.293963320425 -344.829963830273 41671.3771045732 3867.62286056662 -191.09430199691 42161.3118730995 2589.45020680191 40182.5988495175 1793.61337470476 \n',
' 5900 782.976370508296 -355.829875082702 -345.00065769007 36909.9047728497 1396.54862607289 -1302.54876905196 41663.5948414456 -1567.07551008909 39154.8869947455 1793.61337470476 \n',
' 6000 809.913520983966 -357.022470035565 -345.820689345461 38977.2013853431 1138.55480000766 788.033497624611 38995.4296547808 -2000.93164126332 41759.8939045432 1793.61337470476 \n',
' 6100 679.195638612474 -356.739808760931 -347.345965600777 36873.2723095355 -430.434253400109 -298.386977295956 37520.4397558691 1978.26606158265 38934.2386609225 1793.61337470476 \n',
' 6200 749.844234655478 -358.295336464171 -347.92436419278 34783.9653845057 -363.311463115925 -251.232761220817 35968.5988299888 508.770255271154 33488.2064854663 1793.61337470476 \n',
' 6300 820.49851196061 -357.550320429478 -346.202140470248 38160.8718882195 -238.828029488256 -1718.2872794099 40851.6717990614 -422.529762327098 36341.5318312551 1793.61337470476 \n',
' 6400 856.789717772933 -356.317030845346 -344.466913187885 38821.9083882587 732.451331776492 -3550.00359657497 38951.0659832488 -616.62643046416 41246.090070392 1793.61337470476 \n',
' 6500 793.839737718061 -355.724772878842 -344.745306041193 44057.7756089154 2249.24076275726 -2570.50246913036 43580.698621434 -334.662614148369 39288.8765133271 1793.61337470476 \n',
' 6600 742.91771784507 -356.241367560821 -345.966194804127 38155.9659612084 641.209891465672 -15.3363831502308 38529.5615366837 2911.99642882127 37305.5163468393 1793.61337470476 \n',
' 6700 752.446643669222 -357.511774900153 -347.10480913775 36409.9486684763 772.154531163047 1136.27254452766 37094.6079540005 1002.59985188655 36878.3341896305 1793.61337470476 \n',
' 6800 782.468195697952 -357.466725061903 -346.644536151486 36478.1681885197 2157.96955361209 125.297281094587 37444.6610262222 -50.4761358705569 34401.0128533116 1793.61337470476 \n',
' 6900 790.362332255749 -355.13418822804 -344.202816813359 45406.8694267006 -1264.87331915798 -295.683196464516 42051.9309169773 341.320024663642 38591.6320078236 1793.61337470476 \n',
' 7000 793.340534793587 -354.476311796453 -343.503749352341 44377.420038534 2288.21205255213 -2941.4734642014 45114.9940811359 -1780.86103081083 42409.4353585618 1793.61337470476 \n',
' 7100 867.932809590424 -356.725633835295 -344.721397907778 40557.2363074909 -343.163912773467 -2785.3831976551 39515.5953051268 -564.996527133805 34937.2674509234 1793.61337470476 \n',
' 7200 775.896331255727 -357.025014986695 -346.293720452405 38440.7505275585 -2512.69977087965 -3776.7500144944 38980.7131477292 1072.15168744553 36301.1290157804 1793.61337470476 \n',
' 7300 836.18812910472 -358.099689154442 -346.534508681199 35580.4843013567 -3906.24778540816 -748.342427103274 37203.7181207501 2322.9652390534 32363.5262473724 1793.61337470476 \n',
' 7400 742.111671392371 -356.364959126243 -346.100934665453 41208.2322082013 1206.08098296198 1238.48429505101 40191.6314735752 1636.18220484054 35289.8991119516 1793.61337470476 \n',
' 7500 967.396596491673 -356.911964794258 -343.532061590411 40426.3774220852 -1668.90443753136 424.088540641739 43155.3594131319 -132.396585157213 34404.8562342343 1793.61337470476 \n',
' 7600 741.987356246388 -353.50474440616 -343.242439327706 46388.0599684382 -311.826930076994 -757.636453447027 46558.5447190935 -1043.16313088454 41932.1500018188 1793.61337470476 \n',
' 7700 850.932342570329 -356.196776978323 -344.427671713839 41212.7245057621 -1706.33577007303 392.036735352712 40113.0672303836 1159.69751476588 38074.0680322588 1793.61337470476 \n',
' 7800 812.614141802327 -356.784777568248 -345.545645035817 37231.3240401418 1826.57623265249 407.309300372894 39197.3798946442 -902.257857479664 35911.6664394123 1793.61337470476 \n',
' 7900 761.592367862125 -356.70180976684 -346.16835099746 39800.0664988457 4540.3450313085 1895.02103924553 38832.5544944744 214.241542196366 36323.030703978 1793.61337470476 \n',
' 8000 846.785660095257 -357.725823314371 -346.014070133133 35864.4053003264 2349.23413938048 -668.311510019675 38318.4834401756 -422.844724731193 38036.781373301 1793.61337470476 \n',
' 8100 751.188666446606 -355.880394696768 -345.490827810413 42088.8847356908 270.078595374847 -2143.45781260942 40297.6463767348 -2746.49413355437 39858.8477014905 1793.61337470476 \n',
' 8200 907.554415057673 -356.172790115215 -343.62055427964 39902.8572434687 2942.0888738909 1552.26275239709 41948.7958696854 -985.923485515233 38866.511805982 1793.61337470476 \n',
' 8300 832.795724191115 -355.294401654091 -343.776140975208 42484.8891792162 1789.80053369749 223.117069667468 43044.776739847 221.621868099776 41386.0525403478 1793.61337470476 \n',
' 8400 790.510107545386 -356.649563816128 -345.716148545722 38267.8426779374 2244.93568989913 -1967.14336233188 39696.9534714058 378.659421504136 37817.9731487827 1793.61337470476 \n',
' 8500 800.501625953321 -357.73439535047 -346.662789032419 35021.1289256523 609.1186317779 -776.702273321142 37582.2331080461 186.519885411398 35187.7581689388 1793.61337470476 \n',
' 8600 677.51188117799 -356.099234206712 -346.728678818681 39221.4977325478 3060.71820135887 2663.89113882903 43337.731035611 665.833286795631 39954.350107263 1793.61337470476 \n',
' 8700 845.061238574824 -357.249028540887 -345.561125550056 35990.4468839631 560.110437290344 1627.269475785 38682.5256145712 1362.29482441532 38390.643108026 1793.61337470476 \n',
' 8800 840.903657181993 -355.83991300466 -344.209512838214 42905.7921638168 1766.31330561964 518.548865063824 41671.302362059 494.811780786297 39182.019214144 1793.61337470476 \n',
' 8900 1010.75298067284 -355.768670843976 -341.789112621994 42474.2391137064 1328.25570686813 1938.52527563103 42385.3021956046 851.938829434333 42341.5234094057 1793.61337470476 \n',
' 9000 953.264061718669 -355.528583830332 -342.34414539034 42571.8549520773 -2100.78717890256 -854.250645320613 43084.9751392484 -1424.44705072745 44905.0594325278 1793.61337470476 \n',
' 9100 851.668155649737 -357.22735193175 -345.448069757595 37496.5641328316 1572.80659113757 -3811.33198025542 36490.6117319065 -3099.81523869372 36140.3279199671 1793.61337470476 \n',
' 9200 856.048950746444 -358.004714267291 -346.164842036729 36095.7422250628 118.826637462534 657.791952229538 36774.2706639562 -1202.33064782998 34196.3468720894 1793.61337470476 \n',
' 9300 819.105058199289 -357.737078615112 -346.408171285653 36608.8657313905 2798.94267891615 2401.51735945741 38033.7837706624 1892.00662470925 34021.7576522639 1793.61337470476 \n',
' 9400 824.615697791146 -357.500124142738 -346.095000063502 36017.1710194406 2439.73698903537 -326.969120429015 37739.0308880657 2495.95764856247 37897.5526491098 1793.61337470476 \n',
' 9500 736.522165389253 -355.557835367532 -345.371118444881 41030.3814500166 -107.665398565148 1638.31318138482 43442.0687510181 -740.8443909917 38470.0643298087 1793.61337470476 \n',
' 9600 886.570191850558 -356.18435675278 -343.922350256793 44900.6346469954 2346.79040660161 71.9793110859875 43094.2072038589 -1743.94031559657 38815.3640871689 1793.61337470476 \n',
' 9700 946.697196151611 -356.047147775837 -342.953534573353 42539.3648324139 -292.310682683279 672.648792127791 42145.0513713537 161.941401018845 39576.1807829896 1793.61337470476 \n',
' 9800 784.331656460008 -355.385665321215 -344.537703191509 42112.94213063 1143.76307351372 1873.28942760912 41858.1307350454 -1606.27989376496 41750.1437452593 1793.61337470476 \n',
' 9900 714.427609713026 -356.603004436657 -346.721873679342 40672.7701676998 1035.04159458382 2129.95170725607 38849.8853187908 807.432744924296 38306.0151897274 1793.61337470476 \n',
' 10000 722.29056563971 -356.733882074541 -346.744000067142 38264.220522289 -497.681236426798 -379.596624319038 39325.0856584253 230.816615728109 36117.6230272646 1793.61337470476 \n',
' 10100 734.517995932581 -356.103610434324 -345.944612849773 38552.949710672 -2407.51777901244 -1297.76461849835 41490.7305170047 1476.36695796645 38233.9788853926 1793.61337470476 \n',
' 10200 824.575545571096 -355.87341992785 -344.468851187364 38865.2684805507 1872.64665375643 -2014.83411678444 43533.0898701872 2388.99365189952 40960.3947935395 1793.61337470476 \n',
' 10300 926.118100439051 -355.95187275825 -343.142885643613 39234.8686659589 38.5529899058919 -942.002346276504 41545.3802637566 -2311.16683704817 40741.0433419482 1793.61337470476 \n',
' 10400 827.045433073616 -355.60618981368 -344.167460465407 41408.0618089217 -8.34135645696648 65.3691425767916 39607.6798445401 105.104159392463 42644.370686051 1793.61337470476 \n',
' 10500 807.594542253442 -357.860846538843 -346.691139262124 36779.6591127854 -421.327502129863 864.868441065833 36815.7019772418 -1223.61797299441 35721.6814603745 1793.61337470476 \n',
' 10600 817.300879567842 -358.271653248168 -346.9676992166 35362.1335589773 -461.211362787567 1148.07672257078 35784.7422405989 22.0657551739406 34602.6390251694 1793.61337470476 \n',
' 10700 746.02936645356 -356.480910679297 -346.162701222518 36137.7784735419 370.160204150254 -16.7673350430108 40647.5503155331 168.330991356153 40430.5351364572 1793.61337470476 \n',
' 10800 846.608585943437 -356.270810835979 -344.561506738208 38346.5180993067 -487.304764409416 2369.36260400656 43586.2649983077 1164.89941985036 38016.669290621 1793.61337470476 \n',
' 10900 870.320921977546 -356.165908454289 -344.128642937154 39401.2166543923 -137.490587805415 1204.1361254251 43667.1730965996 3597.52198980086 38695.5190648119 1793.61337470476 \n',
' 11000 863.158619594574 -357.647985501442 -345.709780610475 36272.3476234514 1980.45601667717 1010.19874850039 38970.1600469157 77.462487465937 34477.3844981243 1793.61337470476 \n',
' 11100 704.167458847832 -357.591165425601 -347.851941127261 33967.8835910253 1939.80569556716 815.400589429562 39304.16253668 1244.93753325343 36211.0655300913 1793.61337470476 \n',
' 11200 725.149566462142 -357.261471101424 -347.232046723912 36180.3028626804 2280.39179140233 -735.742904421594 37429.4293551411 1504.34446968503 36836.1697033886 1793.61337470476 \n',
' 11300 812.548883438161 -356.777826213299 -345.539596258569 38352.0128724561 -707.728754424876 1714.1871136185 39695.3373926769 4.544523918113 34667.4077418341 1793.61337470476 \n',
' 11400 853.679124537665 -356.566158430948 -344.759062876878 37548.7174149195 2136.86384994103 -776.455570285565 39754.9352472207 1588.07805331313 38592.3291284025 1793.61337470476 \n',
' 11500 889.541787746101 -357.078622130134 -344.775515980099 38956.0059308913 -1377.63911521614 -187.418990405616 38343.4968549555 645.308718260954 40202.3631261767 1793.61337470476 \n',
' 11600 751.30537025826 -356.972251306763 -346.581070309184 38728.0148943543 269.888724009166 -2118.18253293686 37478.7702077422 -140.370215137099 38490.4323034569 1793.61337470476 \n',
' 11700 778.442376130597 -358.846633197059 -348.080124734891 35031.1755513612 -51.8645047197146 2139.6637469829 32534.6601611344 413.886729222508 34008.4554083276 1793.61337470476 \n',
' 11800 724.43956640564 -357.50454325599 -347.484938772476 34923.4719676359 1768.83376867061 -69.6358751804642 36580.3098552521 -1423.39013916291 37040.5474194563 1793.61337470476 \n',
' 11900 712.376252520404 -356.050935947551 -346.198177174149 39255.1675410121 -1724.93259587955 -1225.77683783917 39927.6605862326 -1237.84518069288 40438.8236184215 1793.61337470476 \n',
' 12000 799.338473716167 -356.512371868453 -345.456852917673 37794.7679979708 10.3549069320649 -2971.39907273625 37738.6842168812 -4342.17963059355 39022.5878427786 1793.61337470476 \n',
' 12100 754.061516661289 -355.944257868972 -345.514957063838 42968.5355794191 244.219076726714 -2030.26039708891 39664.3872244434 -1908.33042435394 40626.1580298886 1793.61337470476 \n',
' 12200 801.376868625596 -356.621283767645 -345.537572112158 37991.1188587035 -2085.67937000614 -925.1789866914 40872.0617471302 227.310233502005 39420.2412479503 1793.61337470476 \n',
' 12300 706.864711398864 -356.45350169733 -346.676972142615 39284.1419696234 -618.433964170184 -723.695059310048 38403.9940842116 424.928415927877 36926.1505696995 1793.61337470476 \n',
' 12400 725.699973056312 -358.349905461108 -348.312868500526 33701.277289337 1235.31396727601 1738.75625580515 35361.7686934078 -1319.4328336897 36424.8522506842 1793.61337470476 \n',
' 12500 706.693573872561 -357.582236137865 -347.808073558127 34970.5867135301 -1259.00412091415 2049.16420957715 37678.0191974868 -983.858073675155 33921.471533761 1793.61337470476 \n',
' 12600 840.587171878442 -357.718905576795 -346.092882666525 37175.7761508061 -1131.0388736947 -1037.74247141678 35850.0658990575 -294.454513799936 36706.7439472803 1793.61337470476 \n',
' 12700 824.207272150889 -356.776744848496 -345.37726963711 35610.6465457175 -734.802629316457 130.680878716874 39355.8092188605 389.814541816564 41624.2934244488 1793.61337470476 \n',
' 12800 851.68648944656 -357.005990152708 -345.226454406825 36298.2769903847 -436.440804302677 893.744375486674 39791.3091282056 -560.394746584602 36029.0530375121 1793.61337470476 \n',
' 12900 714.211364258062 -355.556647162843 -345.678507260846 40754.3877321983 -4325.188030357 2063.97359638905 41104.8547401525 -1824.95651834025 39007.4166033455 1793.61337470476 \n',
' 13000 687.039449973445 -356.781753351037 -347.279423726138 36619.7130000974 523.714330908832 -1037.90519062326 36944.5570539405 -850.595852310524 39798.8720253236 1793.61337470476 \n',
' 13100 707.071634657349 -358.105049354005 -348.325657877737 33808.0479918567 2568.47151200497 -1270.48443853872 34507.3056634513 163.43608478855 33635.3553975206 1793.61337470476 \n',
' 13200 814.859654958424 -358.439979319201 -347.169789463662 36609.5866016748 -57.6950715500698 1442.0941845626 33106.7417057346 -1940.5087793723 37273.2982803396 1793.61337470476 \n',
' 13300 794.389693945318 -356.377215243815 -345.390142052046 40005.7570102314 -1177.52216780881 1306.6013845571 36383.317541955 -240.023257344546 40077.7832453257 1793.61337470476 \n',
' 13400 794.948384568479 -356.2683582055 -345.273557855619 41784.6668146529 -347.070270326794 -227.358089186407 39236.2126424616 549.501402980235 39066.0910242047 1793.61337470476 \n',
' 13500 828.124363332705 -356.912407219914 -345.458755364695 39377.3833781558 -750.348725497878 1307.07429030181 37888.6541447395 -542.907054291556 38482.3714943569 1793.61337470476 \n',
' 13600 730.245500148766 -356.507375355454 -346.407469957328 39848.7457669929 -513.51394875679 1902.064312809 35520.8114665291 -2471.77856836454 37120.776476944 1793.61337470476 \n',
' 13700 721.686956698759 -357.745082400917 -347.763548809496 38760.2281917025 -1682.21255013259 2521.33823205598 34034.4634870747 -1630.5811037507 36452.9249038094 1793.61337470476 \n',
' 13800 685.092585480854 -357.727067760891 -348.25166489856 35663.1582801697 661.564506574272 3066.50587049692 36118.1467441636 317.702454079284 35465.372700253 1793.61337470476 \n',
' 13900 738.012167632374 -356.250355776017 -346.043030877425 42148.7454647345 1361.66170348727 -102.807603232912 36420.3970491095 -331.179644290107 38985.0335920229 1793.61337470476 \n',
' 14000 842.885414029434 -356.376427334687 -344.718617815253 41159.7171226039 -1293.33425141254 -79.6559956831809 40250.4712064319 -1636.88421953813 39679.4861525449 1793.61337470476 \n',
' 14100 775.026950080433 -355.509155183362 -344.789884917108 40899.0135113297 -1656.25580544481 1642.06314321659 40565.711663888 1972.98048954085 38475.927574105 1793.61337470476 \n',
' 14200 786.244281861666 -357.036937297244 -346.162521960206 39501.1105936467 1384.81887588005 502.263400216768 37342.0890722394 1876.61981137556 37511.7375106753 1793.61337470476 \n',
' 14300 794.967534680469 -358.198435007788 -347.203369795857 34436.1808652866 141.142296083205 456.478243706059 34875.6682144241 -2530.6972742239 36158.4881101076 1793.61337470476 \n',
' 14400 834.210738034859 -358.245664753542 -346.707833250935 36808.7870789388 1079.55969206398 1465.37786333602 35580.861062594 -1568.76450004086 36762.4001011609 1793.61337470476 \n',
' 14500 860.029605635813 -355.740353781325 -343.845425767746 42387.4249355553 -839.028395837209 2691.93255109681 39521.4818895289 -171.16853105196 39684.2634885065 1793.61337470476 \n',
' 14600 886.830981295968 -356.110999710303 -343.845386278392 40057.6403437361 -868.994108606089 -1367.39134239525 40181.1166094801 134.097874862007 42689.0347204388 1793.61337470476 \n',
' 14700 817.388116448499 -356.727234739291 -345.422074148776 40560.3221592834 843.977059016213 -1402.45726827535 37461.8055746028 -746.353411214356 40621.3753201954 1793.61337470476 \n',
' 14800 853.664638511787 -358.213616485159 -346.406721284931 37045.6038500878 -1386.08961263408 4632.63359200648 36080.9826836947 914.175881453034 37774.0673375834 1793.61337470476 \n',
' 14900 797.690130823385 -357.782189047929 -346.749468056572 38530.150123081 -349.022589577603 3772.46270154743 35222.4867506702 -1538.55275994818 36947.6849513549 1793.61337470476 \n',
' 15000 799.35958259726 -356.807377250891 -345.751566346649 35357.6885745629 -719.494132734172 2023.38950245296 37633.9916707623 -2458.34702820137 41966.546153717 1793.61337470476 \n',
' 15100 903.750863706071 -355.761565640393 -343.261936097935 42841.1586802239 -83.9290234233217 652.685629831055 40513.1983921849 -4365.23632757154 41235.4768407087 1793.61337470476 \n',
' 15200 819.163717626797 -354.919492335869 -343.589773697517 46409.5537392128 1835.49330453991 4482.81967865854 38743.4650992806 -691.882032953736 46230.8895734687 1793.61337470476 \n',
' 15300 779.236613127598 -356.127629815488 -345.350136392055 40889.7296026711 -2284.21678598481 2638.43950511737 34225.0277411632 3633.6930656367 39467.3067497457 1793.61337470476 \n',
' 15400 757.437122057121 -356.686628230744 -346.210639982617 38212.0657681688 -2707.41387299544 891.739834708601 38651.3196416952 1689.63089509138 37862.1270981151 1793.61337470476 \n',
' 15500 786.931736603073 -357.138152811264 -346.254229400774 37929.513061566 -977.078185989203 924.951232748421 35549.8286810379 348.896987371433 39036.1750979915 1793.61337470476 \n',
' 15600 736.732140941442 -355.989475500738 -345.799854440763 40168.265838567 -294.08917363854 667.144753570203 38410.4205701525 -2227.87738999591 41885.7504568412 1793.61337470476 \n',
' 15700 950.031240788351 -357.009186820301 -343.869460994846 37488.5250152125 -475.639977409668 -753.080185884916 36926.4200258786 -436.261622706333 39877.9277861901 1793.61337470476 \n',
' 15800 848.174928559949 -354.353247208534 -342.622279283675 45447.25836776 -1820.61327901581 2029.3968499906 44401.4620002593 -1376.28265052667 43848.1932547139 1793.61337470476 \n',
' 15900 858.582156953509 -356.072790741313 -344.197882152375 43409.9601621882 2298.84214922486 549.324750742336 40549.8314121 2998.28628625907 42113.9190806361 1793.61337470476 \n',
' 16000 779.434627150029 -356.357455041607 -345.5772229188 39191.7106585927 879.410728929475 -704.100913393134 35462.4690991472 -628.008733559899 42778.5067755251 1793.61337470476 \n',
' 16100 784.819807398893 -357.032706302583 -346.177992637535 37835.1798788068 -1370.0088575188 -1686.16998760573 38299.4789140716 -310.243328687557 38874.7224755823 1793.61337470476 \n',
' 16200 836.382503276106 -357.620882823366 -346.05301399293 37951.5406458894 2328.87733977287 2718.24885126109 36830.0171264515 -251.915265406183 38496.0557441355 1793.61337470476 \n',
' 16300 861.618479118728 -356.932245293948 -345.015341832572 42077.2258484927 -910.345686278825 1241.22661137507 37091.1880348415 -245.261888382486 39954.9177365369 1793.61337470476 \n',
' 16400 861.133599498874 -355.460659748904 -343.550462577795 38807.6562982896 761.198523863945 -368.838829052675 43337.4102975003 1250.95176643911 43949.423678868 1793.61337470476 \n',
' 16500 911.08116146375 -356.246300991676 -343.645287306656 43213.4203431485 429.596508902729 -299.964915116679 42976.940233386 2485.31268365381 38825.6323125825 1793.61337470476 \n',
' 16600 846.496702044505 -357.885769824197 -346.178013174229 35551.9329533843 1646.78804025541 -954.666586198171 35244.5767964553 536.774097181813 34764.8331781458 1793.61337470476 \n',
' 16700 861.148054097326 -358.991409560813 -347.081012470531 34617.1677856062 -1174.58403777501 -1284.91291761226 32620.4032072595 851.276801157856 34642.3960315908 1793.61337470476 \n',
' 16800 746.531702223648 -356.831837245211 -346.506680065023 33877.6676436539 -1752.59242044953 -1789.34802520829 38326.1086849873 145.599397921678 39699.8802387804 1793.61337470476 \n',
' 16900 809.400708771001 -356.392129668272 -345.197441599536 36798.254749817 3890.79474602444 -2425.48575377512 40622.9944623613 -654.044933002952 40616.846578928 1793.61337470476 \n',
' 17000 895.601191685851 -356.890929668939 -344.504016899694 39348.260932247 -4323.01029306485 -1158.34995489929 39420.276572551 -1790.1614725735 36864.1007512764 1793.61337470476 \n',
' 17100 781.902221487617 -356.143822180738 -345.32946116653 37937.6331672169 -2677.08545258973 -1521.785118176 39438.2546982093 -987.665059590171 41212.7416264693 1793.61337470476 \n',
' 17200 699.756683372468 -357.379999992542 -347.701780404296 34115.4413161353 393.935130405083 -1149.92080472731 37811.8012347075 25.6156642918339 35139.0026683158 1793.61337470476 \n',
' 17300 736.640295851624 -357.786795100754 -347.598444335109 34289.1658921556 -1769.96152438441 -842.333148860581 35943.0231292643 1055.94618486112 34820.8784613138 1793.61337470476 \n',
' 17400 796.074950125937 -356.979319704575 -345.968938011771 35547.7484811156 -825.458901071941 -64.3383694779713 39184.4383810632 1640.03171196078 39253.7146306027 1793.61337470476 \n',
' 17500 771.274016587926 -355.717047375931 -345.04968331551 40392.1828204757 -445.990460646558 711.082327182498 40649.0546907547 168.69461824953 40745.7831067794 1793.61337470476 \n',
' 17600 902.443816277888 -357.357381297466 -344.875829312998 37965.3830763842 -2389.60978610972 -1036.22271557285 37515.7512703833 1625.51376172823 38159.7451988512 1793.61337470476 \n',
' 17700 840.66031202573 -357.383030820685 -345.755996321069 38650.7236168551 -252.688987234936 -1060.77571657922 34780.6571877659 707.650502085862 37933.4925921504 1793.61337470476 \n',
' 17800 724.436558433976 -358.222766194257 -348.203203313504 34130.2753716348 -85.3822088896514 -27.737172229968 34053.7076994379 533.483157760286 34295.1371893198 1793.61337470476 \n',
' 17900 668.313071633651 -357.459334813948 -348.216006647659 35434.8739627128 -1147.01410139439 -170.433879826082 38254.8394889396 -3257.60771316637 34666.1287284872 1793.61337470476 \n',
' 18000 889.530408105186 -359.211038822631 -346.908090062537 33172.9077969678 1623.95953561924 -1129.10510217797 34225.4422954948 -158.741521351069 34969.3096385357 1793.61337470476 \n',
' 18100 822.707315271459 -357.12215729139 -345.743427736883 39572.8513730713 3265.01626290738 -1848.06077821197 37580.701973637 236.70678998032 38788.4262222818 1793.61337470476 \n',
' 18200 798.184881536036 -356.177750160315 -345.13818635323 39680.4887784247 901.375913566574 -3116.29419620845 41648.1922869513 -519.592691065023 40489.3699718967 1793.61337470476 \n',
' 18300 792.061823752229 -356.041041865849 -345.086165063821 39623.3124401486 596.515056692137 1520.42191134844 41385.4970165593 1217.49601098358 35713.9738149434 1793.61337470476 \n',
' 18400 780.589355983123 -357.326413180711 -346.530210193348 37367.0425154381 2155.7195441979 797.633540061855 34612.9608836162 -2668.55060776923 37160.720749246 1793.61337470476 \n',
' 18500 658.886490938263 -357.479443458802 -348.36649277958 35400.1485171784 223.648274812416 -48.0995613448334 34218.1366852397 -2896.55447406831 38213.4284634241 1793.61337470476 \n',
' 18600 742.753821966333 -358.144507274633 -347.871601334879 33155.5484176314 368.372332491591 952.89697073968 36391.3265778431 -1766.30341118637 34798.4408373551 1793.61337470476 \n',
' 18700 750.651824142296 -356.965958018747 -346.58381611 40449.5609382063 -1348.04316983457 -841.76014307215 36703.2604582588 -1671.82247913636 38432.8134329816 1793.61337470476 \n',
' 18800 898.243612002902 -358.160428275535 -345.736968625523 33786.5539243204 417.981234539693 -628.370203423225 37433.4312929384 -1432.92890757182 39709.1409179298 1793.61337470476 \n',
' 18900 921.401747652867 -358.01382420977 -345.27006819475 36980.0519916866 152.974980191492 1976.93678916791 35969.1099093114 -808.634053952824 39172.1426073932 1793.61337470476 \n',
' 19000 871.436968665514 -357.21823521187 -345.165533836567 36683.5697958141 -129.69371586819 1615.72913823233 38484.1172356229 -2426.68541861946 38129.2920499831 1793.61337470476 \n',
' 19100 834.272308479845 -357.952719746925 -346.414036673621 36014.4178901828 2035.30902312764 1791.48801487592 36909.5624918798 -268.550562430534 36893.6206646451 1793.61337470476 \n',
' 19200 743.593303296104 -358.157945950314 -347.87342928237 36635.1876140348 -1754.0398828528 -2894.30085678302 31938.3814693013 -1095.22316800621 34240.9836551698 1793.61337470476 \n',
' 19300 749.322093466099 -357.739331470889 -347.375580848404 35899.5719115423 -632.182500143193 -1853.09291722053 36479.6235275853 -1264.787061791 38091.3376570751 1793.61337470476 \n',
' 19400 786.672963875134 -356.419770727717 -345.539426360263 40697.1119504175 338.885778863244 -706.384600291253 38648.5894561094 -638.883734334577 40981.9986520812 1793.61337470476 \n',
' 19500 858.662382641883 -356.83796603974 -344.961947862502 43328.897047749 784.07916045646 658.714550843565 36880.4783174275 -2544.79806435751 35959.7817587514 1793.61337470476 \n',
' 19600 822.395338264799 -356.757012297202 -345.382597645358 39778.3395420067 1273.78509345342 261.722041517892 39953.3099272179 -1478.39778800766 40299.5140192559 1793.61337470476 \n',
' 19700 758.599899478218 -356.733478706303 -346.241408274924 38504.0091043052 -2152.77971577667 1146.9670902327 37805.1808443203 2544.2848201123 37215.4839170994 1793.61337470476 \n',
' 19800 688.929181799472 -357.155608568389 -347.627142373437 36354.243453565 -909.537424246228 176.436347150598 37138.0719447076 422.85433683006 35643.5884941952 1793.61337470476 \n',
' 19900 738.071532541178 -359.232606821321 -349.02446085644 32012.3493456594 329.058197444971 226.665636221428 31657.3294080938 -1795.39478358907 34454.2125807656 1793.61337470476 \n',
' 20000 729.604074839261 -357.983932833097 -347.892898882922 35305.3131484828 2658.61407604072 -442.204464702034 34366.7570636079 -1961.46864608404 35224.214477881 1793.61337470476 \n',
'Loop time of 7.44521 on 1 procs for 20000 steps with 108 atoms\n',
'\n',
'Performance: 232.096 ns/day, 0.103 hours/ns, 2686.292 timesteps/s\n',
'99.3% CPU use with 1 MPI tasks x no OpenMP threads\n',
'\n',
'MPI task timing breakdown:\n',
'Section | min time | avg time | max time |%varavg| %total\n',
'---------------------------------------------------------------\n',
'Pair | 7.1814 | 7.1814 | 7.1814 | 0.0 | 96.46\n',
'Neigh | 0 | 0 | 0 | 0.0 | 0.00\n',
'Comm | 0.10862 | 0.10862 | 0.10862 | 0.0 | 1.46\n',
'Output | 0.097549 | 0.097549 | 0.097549 | 0.0 | 1.31\n',
'Modify | 0.037854 | 0.037854 | 0.037854 | 0.0 | 0.51\n',
'Other | | 0.01978 | | | 0.27\n',
'\n',
'Nlocal: 108 ave 108 max 108 min\n',
'Histogram: 1 0 0 0 0 0 0 0 0 0\n',
'Nghost: 1580 ave 1580 max 1580 min\n',
'Histogram: 1 0 0 0 0 0 0 0 0 0\n',
'Neighs: 12096 ave 12096 max 12096 min\n',
'Histogram: 1 0 0 0 0 0 0 0 0 0\n',
'\n',
'Total # of neighbors = 12096\n',
'Ave neighs/atom = 112\n',
'Neighbor list builds = 0\n',
'Dangerous builds = 0\n',
'Total wall time: 0:00:07\n']
Beyond a single LAMMPS calculation¶
While for individual LAMMPS calculation an integrated solution like pyiron is not required, pyiron really shines when it comes to combining multiple calculations. So in the following we iterate over a database of existing interatomic potentials and determine the lattice structure by minimizing the simulation cell.
Filter Interatomic Potential Database¶
We start by identifying suitable interatomic potentials. By default pyiron already filters the interatomic potentials to only list those which include the required elements. Still the user can further filter the list of available potentials for a given project.
# List interatomic potentials from the NIST repository:
# https://www.ctcms.nist.gov/potentials/
# which include interactions for aluminium by calling view_potentials() on the LAMMPS job object
potential_df = job_md.view_potentials()
potential_df[potential_df.Model == "NISTiprpy"]
Config | Filename | Model | Name | Species | |
---|---|---|---|---|---|
0 | [pair_style eam/fs \n, pair_coeff * * Al-Mg.eam.fs Al Mg\n] | [potential_LAMMPS/2009--Mendelev-M-I--Al-Mg--LAMMPS--ipr1/Al-Mg.eam.fs] | NISTiprpy | Al_Mg_Mendelev_eam | [Al, Mg] |
1 | [pair_style eam/alloy \n, pair_coeff * * Zope-Ti-Al-2003.eam.alloy Ti Al\n] | [potential_LAMMPS/2003--Zope-R-R--Ti-Al--LAMMPS--ipr1/Zope-Ti-Al-2003.eam.alloy] | NISTiprpy | Zope_Ti_Al_2003_eam | [Ti, Al] |
2 | [pair_style eam/alloy \n, pair_coeff * * NiAlH_jea.eam.alloy Ni Al H\n] | [potential_LAMMPS/1995--Angelo-J-E--Ni-Al-H--LAMMPS--ipr1/NiAlH_jea.eam.alloy] | NISTiprpy | Al_H_Ni_Angelo_eam | [Ni, Al, H] |
13 | [pair_style meam/c\n, pair_coeff * * MgAlZn.library.meam Mg Al MgAlZn.parameter.meam Mg Al Zn\n] | [potential_LAMMPS/2018--Dickel-D-E--Mg-Al-Zn--LAMMPS--ipr1/MgAlZn.parameter.meam, potential_LAMMPS/2018--Dickel-D-E--Mg-Al-Zn--LAMMPS--ipr1/MgAlZn.library.meam] | NISTiprpy | 2018--Dickel-D-E--Mg-Al-Zn--LAMMPS--ipr1 | [Mg, Al, Zn] |
34 | [pair_style eam/alloy\n, pair_coeff * * alpb-setfl.eam.alloy Al Pb\n] | [potential_LAMMPS/2000--Landa-A--Al-Pb--LAMMPS--ipr1/alpb-setfl.eam.alloy] | NISTiprpy | 2000--Landa-A--Al-Pb--LAMMPS--ipr1 | [Al, Pb] |
44 | [pair_style eam/alloy\n, pair_coeff * * Al_Zhou04.eam.alloy Al\n] | [potential_LAMMPS/2004--Zhou-X-W--Al--LAMMPS--ipr2/Al_Zhou04.eam.alloy] | NISTiprpy | 2004--Zhou-X-W--Al--LAMMPS--ipr2 | [Al] |
51 | [pair_style eam/alloy\n, pair_coeff * * Al03.eam.alloy Al\n] | [potential_LAMMPS/2003--Zope-R-R--Al--LAMMPS--ipr1/Al03.eam.alloy] | NISTiprpy | 2003--Zope-R-R--Al--LAMMPS--ipr1 | [Al] |
57 | [pair_style eam/fs\n, pair_coeff * * Al90Sm10_MendelevM_2014.eam.fs Al Sm\n] | [potential_LAMMPS/2015--Mendelev-M-I--Al-Sm--LAMMPS--ipr1/Al90Sm10_MendelevM_2014.eam.fs] | NISTiprpy | 2015--Mendelev-M-I--Al-Sm--LAMMPS--ipr1 | [Al, Sm] |
59 | [pair_style eam/alloy\n, pair_coeff * * mg-al-set.eam.alloy Al Mg\n] | [potential_LAMMPS/1997--Liu-X-Y--Al-Mg--LAMMPS--ipr1/mg-al-set.eam.alloy] | NISTiprpy | 1997--Liu-X-Y--Al-Mg--LAMMPS--ipr1 | [Al, Mg] |
64 | [pair_style eam/alloy\n, pair_coeff * * Al.set Al\n] | [potential_LAMMPS/2004--Zhou-X-W--Al--LAMMPS--ipr1/Al.set] | NISTiprpy | 2004--Zhou-X-W--Al--LAMMPS--ipr1 | [Al] |
70 | [pair_style eam/alloy\n, pair_coeff * * NiAlH_jea.eam.alloy Ni Al H\n] | [potential_LAMMPS/1995--Angelo-J-E--Ni-Al-H--LAMMPS--ipr1/NiAlH_jea.eam.alloy] | NISTiprpy | 1995--Angelo-J-E--Ni-Al-H--LAMMPS--ipr1 | [Ni, Al, H] |
75 | [pair_style meam/c\n, pair_coeff * * library.meam Al U AlU.meam Al U\n] | [potential_LAMMPS/2015--Pascuet-M-I--Al-U--LAMMPS--ipr2/library.meam, potential_LAMMPS/2015--Pascuet-M-I--Al-U--LAMMPS--ipr2/AlU.meam] | NISTiprpy | 2015--Pascuet-M-I--Al-U--LAMMPS--ipr2 | [Al, U] |
85 | [pair_style eam/alloy\n, pair_coeff * * al-cu-set.eam.alloy Al Cu\n] | [potential_LAMMPS/1999--Liu-X-Y--Al-Cu--LAMMPS--ipr1/al-cu-set.eam.alloy] | NISTiprpy | 1999--Liu-X-Y--Al-Cu--LAMMPS--ipr1 | [Al, Cu] |
93 | [pair_style meam/c\n, pair_coeff * * library-Al.meam Al Al.meam Al\n] | [potential_LAMMPS/2015--Pascuet-M-I--Al--LAMMPS--ipr1/library-Al.meam, potential_LAMMPS/2015--Pascuet-M-I--Al--LAMMPS--ipr1/Al.meam] | NISTiprpy | 2015--Pascuet-M-I--Al--LAMMPS--ipr1 | [Al] |
95 | [pair_style eam/alloy\n, pair_coeff * * almg.liu.eam.alloy Al Mg\n] | [potential_LAMMPS/1998--Liu-X-Y--Al-Mg--LAMMPS--ipr1/almg.liu.eam.alloy] | NISTiprpy | 1998--Liu-X-Y--Al-Mg--LAMMPS--ipr1 | [Al, Mg] |
96 | [pair_style eam/alloy\n, pair_coeff * * NiAlCo_updated.eam.alloy Ni Al Co\n] | [potential_LAMMPS/2015--Purja-Pun-G-P--Ni-Al-Co--LAMMPS--ipr2/NiAlCo_updated.eam.alloy] | NISTiprpy | 2015--Purja-Pun-G-P--Ni-Al-Co--LAMMPS--ipr2 | [Ni, Al, Co] |
104 | [pair_style eam/fs\n, pair_coeff * * Al-Mg.eam.fs Al Mg\n] | [potential_LAMMPS/2009--Mendelev-M-I--Al-Mg--LAMMPS--ipr1/Al-Mg.eam.fs] | NISTiprpy | 2009--Mendelev-M-I--Al-Mg--LAMMPS--ipr1 | [Al, Mg] |
115 | [pair_style eam/alloy\n, pair_coeff * * NiAl02.eam.alloy Ni Al\n] | [potential_LAMMPS/2002--Mishin-Y--Ni-Al--LAMMPS--ipr1/NiAl02.eam.alloy] | NISTiprpy | 2002--Mishin-Y--Ni-Al--LAMMPS--ipr1 | [Ni, Al] |
118 | [pair_style eam/alloy\n, pair_coeff * * AlMnPd_Schopf_2012.lammps.EAM_CORRECT Al Mn Pd\n] | [potential_LAMMPS/2012--Schopf-D--Al-Mn-Pd--LAMMPS--ipr1/AlMnPd_Schopf_2012.lammps.EAM_CORRECT] | NISTiprpy | 2012--Schopf-D--Al-Mn-Pd--LAMMPS--ipr1 | [Al, Mn, Pd] |
142 | [pair_style eam/fs\n, pair_coeff * * MDSL.eam.fs Al\n] | [potential_LAMMPS/2000--Sturgeon-J-B--Al--LAMMPS--ipr1/MDSL.eam.fs] | NISTiprpy | 2000--Sturgeon-J-B--Al--LAMMPS--ipr1 | [Al] |
144 | [pair_style eam/alloy\n, pair_coeff * * Zope-Ti-Al-2003.eam.alloy Ti Al\n] | [potential_LAMMPS/2003--Zope-R-R--Ti-Al--LAMMPS--ipr1/Zope-Ti-Al-2003.eam.alloy] | NISTiprpy | 2003--Zope-R-R--Ti-Al--LAMMPS--ipr1 | [Ti, Al] |
150 | [pair_style eam/alloy\n, pair_coeff * * Al-2009.eam.alloy Al\n] | [potential_LAMMPS/2009--Zhakhovskii-V-V--Al--LAMMPS--ipr1/Al-2009.eam.alloy] | NISTiprpy | 2009--Zhakhovskii-V-V--Al--LAMMPS--ipr1 | [Al] |
159 | [pair_style eam/alloy\n, pair_coeff * * Mishin-Ni-Al-Co-2013.eam.alloy Ni Al Co\n] | [potential_LAMMPS/2015--Purja-Pun-G-P--Ni-Al-Co--LAMMPS--ipr1/Mishin-Ni-Al-Co-2013.eam.alloy] | NISTiprpy | 2015--Purja-Pun-G-P--Ni-Al-Co--LAMMPS--ipr1 | [Ni, Al, Co] |
161 | [pair_style eam/alloy\n, pair_coeff * * Farkas_Nb-Ti-Al_1996.eam.alloy Nb Ti Al\n] | [potential_LAMMPS/1996--Farkas-D--Nb-Ti-Al--LAMMPS--ipr1/Farkas_Nb-Ti-Al_1996.eam.alloy] | NISTiprpy | 1996--Farkas-D--Nb-Ti-Al--LAMMPS--ipr1 | [Nb, Ti, Al] |
162 | [pair_style eam/alloy\n, pair_coeff * * Mishin-Al-Co-2013.eam.alloy Al Co\n] | [potential_LAMMPS/2015--Purja-Pun-G-P--Al-Co--LAMMPS--ipr1/Mishin-Al-Co-2013.eam.alloy] | NISTiprpy | 2015--Purja-Pun-G-P--Al-Co--LAMMPS--ipr1 | [Al, Co] |
166 | [pair_style eam/alloy\n, pair_coeff * * Mishin_updated-Al-Co-2013.eam.alloy Al Co\n] | [potential_LAMMPS/2015--Purja-Pun-G-P--Al-Co--LAMMPS--ipr2/Mishin_updated-Al-Co-2013.eam.alloy] | NISTiprpy | 2015--Purja-Pun-G-P--Al-Co--LAMMPS--ipr2 | [Al, Co] |
167 | [pair_style meam/c\n, pair_coeff * * library.meam Al U AlU.meam Al U\n] | [potential_LAMMPS/2015--Pascuet-M-I--Al-U--LAMMPS--ipr1/library.meam, potential_LAMMPS/2015--Pascuet-M-I--Al-U--LAMMPS--ipr1/AlU.meam] | NISTiprpy | 2015--Pascuet-M-I--Al-U--LAMMPS--ipr1 | [Al, U] |
170 | [pair_style eam/alloy\n, pair_coeff * * Al_wkg_MSMSE_2009.set Al\n] | [potential_LAMMPS/2010--Winey-J-M--Al--LAMMPS--ipr1/Al_wkg_MSMSE_2009.set] | NISTiprpy | 2010--Winey-J-M--Al--LAMMPS--ipr1 | [Al] |
175 | [pair_style eam/fs\n, pair_coeff * * Al-Fe.eam.fs Al Fe\n] | [potential_LAMMPS/2005--Mendelev-M-I--Al-Fe--LAMMPS--ipr1/Al-Fe.eam.fs] | NISTiprpy | 2005--Mendelev-M-I--Al-Fe--LAMMPS--ipr1 | [Al, Fe] |
180 | [pair_style eam/alloy\n, pair_coeff * * Al99.eam.alloy Al\n] | [potential_LAMMPS/1999--Mishin-Y--Al--LAMMPS--ipr1/Al99.eam.alloy] | NISTiprpy | 1999--Mishin-Y--Al--LAMMPS--ipr1 | [Al] |
196 | [pair_style eam/fs\n, pair_coeff * * Al1.eam.fs Al\n] | [potential_LAMMPS/2008--Mendelev-M-I--Al--LAMMPS--ipr1/Al1.eam.fs] | NISTiprpy | 2008--Mendelev-M-I--Al--LAMMPS--ipr1 | [Al] |
197 | [pair_style eam/alloy\n, pair_coeff * * Mishin-Ni-Al-2009.eam.alloy Ni Al\n] | [potential_LAMMPS/2009--Purja-Pun-G-P--Ni-Al--LAMMPS--ipr1/Mishin-Ni-Al-2009.eam.alloy] | NISTiprpy | 2009--Purja-Pun-G-P--Ni-Al--LAMMPS--ipr1 | [Ni, Al] |
202 | [pair_style meam/c\n, pair_coeff * * Jelinek_2012_meamf Al Si Mg Cu Fe Jelinek_2012_meam.alsimgcufe Al Si Mg Cu Fe\n] | [potential_LAMMPS/2012--Jelinek-B--Al-Si-Mg-Cu-Fe--LAMMPS--ipr1/Jelinek_2012_meamf, potential_LAMMPS/2012--Jelinek-B--Al-Si-Mg-Cu-Fe--LAMMPS--ipr1/Jelinek_2012_meam.alsimgcufe] | NISTiprpy | 2012--Jelinek-B--Al-Si-Mg-Cu-Fe--LAMMPS--ipr1 | [Al, Si, Mg, Cu, Fe] |
212 | [pair_style eam/alloy\n, pair_coeff * * NiAl.eam.alloy Ni Al\n] | [potential_LAMMPS/2004--Mishin-Y--Ni-Al--LAMMPS--ipr1/NiAl.eam.alloy] | NISTiprpy | 2004--Mishin-Y--Ni-Al--LAMMPS--ipr1 | [Ni, Al] |
216 | [pair_style eam/alloy\n, pair_coeff * * Al-LEA.eam.alloy Al\n] | [potential_LAMMPS/2004--Liu-X-Y--Al--LAMMPS--ipr1/Al-LEA.eam.alloy] | NISTiprpy | 2004--Liu-X-Y--Al--LAMMPS--ipr1 | [Al] |
243 | [pair_style bop\n, pair_coeff * * AlCu.bop.table Al Cu\n] | [potential_LAMMPS/2016--Zhou-X-W--Al-Cu--LAMMPS--ipr1/AlCu.bop.table] | NISTiprpy | 2016--Zhou-X-W--Al-Cu--LAMMPS--ipr1 | [Al, Cu] |
254 | [pair_style agni\n, pair_coeff * * Al_jpc.agni Al\n] | [potential_LAMMPS/2017--Botu-V--Al--LAMMPS--ipr1/Al_jpc.agni] | NISTiprpy | 2017--Botu-V--Al--LAMMPS--ipr1 | [Al] |
256 | [pair_style adp\n, pair_coeff * * AlCu.adp Al Cu\n] | [potential_LAMMPS/2011--Apostol-F--Al-Cu--LAMMPS--ipr1/AlCu.adp] | NISTiprpy | 2011--Apostol-F--Al-Cu--LAMMPS--ipr1 | [Al, Cu] |
258 | [pair_style agni\n, pair_coeff * * Al_prb.agni Al\n] | [potential_LAMMPS/2015--Botu-V--Al--LAMMPS--ipr1/Al_prb.agni] | NISTiprpy | 2015--Botu-V--Al--LAMMPS--ipr1 | [Al] |
266 | [pair_style comb3 polar_off\n, pair_coeff * * ffield.comb3.NiAlO Al\n] | [potential_LAMMPS/2015--Choudhary-K--Al--LAMMPS--ipr1/ffield.comb3.NiAlO] | NISTiprpy | 2015--Choudhary-K--Al--LAMMPS--ipr1 | [Al] |
267 | [pair_style bop\n, pair_coeff * * AlCuH_Dec3.t Al Cu H\n] | [potential_LAMMPS/2018--Zhou-X-W--Al-Cu-H--LAMMPS--ipr1/AlCuH_Dec3.t] | NISTiprpy | 2018--Zhou-X-W--Al-Cu-H--LAMMPS--ipr1 | [Al, Cu, H] |
273 | [pair_style comb3 polar_off\n, pair_coeff * * ffield.comb3.NiAlO Al Ni O\n] | [potential_LAMMPS/2015--Kumar-A--Al-Ni-O--LAMMPS--ipr1/ffield.comb3.NiAlO] | NISTiprpy | 2015--Kumar-A--Al-Ni-O--LAMMPS--ipr1 | [Al, Ni, O] |
289 | [pair_style comb3 polar_off\n, pair_coeff * * ffield.comb3.NiAlO Al Ni\n] | [potential_LAMMPS/2015--Kumar-A--Al-Ni--LAMMPS--ipr1/ffield.comb3.NiAlO] | NISTiprpy | 2015--Kumar-A--Al-Ni--LAMMPS--ipr1 | [Al, Ni] |
Choose an interatmoic potential¶
Interatomic potentials can be fitted for specific applications, therefore before selecting a given interatomic potential it is recommended to test basic properties of the potential. In this example we calculate the 0K equilibrium lattice constant by optimizing the atmoic supercell.
Job Template¶
To develop a scalable simulation protocol, we first define a job template and then apply this template to the available interatomic potentials.
# To compare different potentials we start by creating a template job named lmp_template
job_template = pr.create_job(
job_type=pr.job_type.Lammps,
job_name="lmp_template"
)
# We assign a cubic fcc aluminium supercell
job_template.structure = pr.create_ase_bulk("Al", cubic=True)
# Enable volume minimization by specifying the pressure as zero
job_template.calc_minimize(pressure=0.0)
Iterate over interatomic potentials¶
After the template is constructed we can iterate over the database of existing interatomic potentials. In this example we limit the total umber of potentials to three to accelerate the calculations.
# Select the first three potentials from the NIST database
potential_df[potential_df.Model == "NISTiprpy"].Name.values[:3]
array(['Al_Mg_Mendelev_eam', 'Zope_Ti_Al_2003_eam', 'Al_H_Ni_Angelo_eam'],
dtype=object)
# We then iterate over the first three potentials of the NIST database
for p in potential_df[potential_df.Model == "NISTiprpy"].Name.values[:3]:
# create a copy for each of the template job for each of the potentials
# without creating a new database entry by setting the new_database_entry
# parameter to False
job_minimize = job_template.copy_to(
new_job_name="lmp_" + p.replace("-", "_"),
new_database_entry=False
)
# We then assign the potential
job_minimize.potential = p
# Execute the calculation
job_minimize.run(delete_existing_job=True)
The job lmp_Al_Mg_Mendelev_eam was saved and received the ID: 76
The job lmp_Zope_Ti_Al_2003_eam was saved and received the ID: 77
The job lmp_Al_H_Ni_Angelo_eam was saved and received the ID: 78
# list all calculations in the current project using the project job table
pr.job_table()
id | status | chemicalformula | job | subjob | projectpath | project | timestart | timestop | totalcputime | computer | hamilton | hamversion | parentid | masterid | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 75 | finished | Al108 | lmp | /lmp | /home/jovyan/ | again/simulations/ | 2020-11-09 23:36:41.970727 | 2020-11-09 23:36:52.541898 | 10.0 | pyiron@jupyter-jan#1 | Lammps | 0.1 | None | None |
1 | 76 | finished | Al4 | lmp_Al_Mg_Mendelev_eam | /lmp_Al_Mg_Mendelev_eam | /home/jovyan/ | again/simulations/ | 2020-11-09 23:37:00.285287 | 2020-11-09 23:37:02.967963 | 2.0 | pyiron@jupyter-jan#1 | Lammps | 0.1 | None | None |
2 | 77 | finished | Al4 | lmp_Zope_Ti_Al_2003_eam | /lmp_Zope_Ti_Al_2003_eam | /home/jovyan/ | again/simulations/ | 2020-11-09 23:37:08.665310 | 2020-11-09 23:37:10.641839 | 1.0 | pyiron@jupyter-jan#1 | Lammps | 0.1 | None | None |
3 | 78 | finished | Al4 | lmp_Al_H_Ni_Angelo_eam | /lmp_Al_H_Ni_Angelo_eam | /home/jovyan/ | again/simulations/ | 2020-11-09 23:37:15.027790 | 2020-11-09 23:37:16.947035 | 1.0 | pyiron@jupyter-jan#1 | Lammps | 0.1 | None | None |
Validate calculations¶
We validate the simulation results by confirming the calculations have been executed successfully. In this example one calculation failed.
# We use the pyiron job table of the project object
# to validate all jobs finished successfully with
# the status "finished"
df = pr.job_table()
len(df[df.status == "finished"]) == 4
True
Analyse results¶
Iterate over the successful calculation and compare the calculated lattice constants.
# load a job object by the job name in the column job
# of the pyiron job table
job = pr.load(job_minimize.job_name)
job_minimize.job_name
'lmp_Al_H_Ni_Angelo_eam'
# print the final lattice constant
job["output/generic/cells"][-1,0,0]
4.050000068034437
# We iterate over the jobs in a the current project
for job in pr.iter_jobs():
# Filter job using only those who have the job status
# finished and "lmp_" in the job_name
if job.status == "finished" and "lmp_" in job.job_name:
# Print the job name and the lattice constant
print(job.job_name, job["output/generic/cells"][-1,0,0])
lmp_Al_Mg_Mendelev_eam 4.045270541092276
lmp_Zope_Ti_Al_2003_eam 4.049999419544279
lmp_Al_H_Ni_Angelo_eam 4.050000068034437
pyiron table¶
To automate the collection of data from individual calculations pyiron includes the pyiron table object.
# Create a pyiron table object
table = pr.create_table()
# Implement a filter function, which returns true
# for finished jobs and jobs with "lmp_" in the job_name
def filter_jobs(job):
return job.status == "finished" and "lmp_" in job.job_name
# Implement an analysis functions, which takes a job object
# as an input and returns the lattice constant. Based on the
# previous cell above to print the lattice constant.
def get_lattice_constant(job):
return job["output/generic/cells"][-1,0,0]
# Implement a second analysis functions, which takes a
# job object as an input and returns the job_name.
def get_job_name(job):
return job.job_name
# Assigne the filter functions and the analysis functions
# to the pyiron table object
table.filter_function = filter_jobs
table.add["job_name"] = get_job_name
table.add["lattice_constant"] = get_lattice_constant
# Execute the pyiron table just like a pyiron job object
table.run()
100%|██████████| 5/5 [00:00<00:00, 373.15it/s]
0%| | 0/3 [00:00<?, ?it/s]
The job table was saved and received the ID: 79
100%|██████████| 3/3 [00:00<00:00, 61.96it/s]
# Return a pandas DataFrame with the collected results
table.get_dataframe()
job_id | job_name | lattice_constant | |
---|---|---|---|
0 | 76 | lmp_Al_Mg_Mendelev_eam | 4.045271 |
1 | 77 | lmp_Zope_Ti_Al_2003_eam | 4.049999 |
2 | 78 | lmp_Al_H_Ni_Angelo_eam | 4.050000 |
Summary¶
In this section you learned:
to execute LAMMPS calculation with generic and code-specifc input,
to iterate over multiple interatomic potentials
and aggregate the data in a pyiron table object. This technique was afterwards used to calculate the lattice constant of multiple interatomic potentials.
Additional exercises:
Calculate the lattice constant at a finite temperature of 500K by averaging the lattice constant over 1000 time steps.
Calculate the thermal expansion for multiple potentials.
How does an interstitial element change the thermal expansion? How does a vacancy change the thermal expansion?