Adding interstitial hydrogen to a metal

Hi,

I am looking to add interstitial hydrogen a BCC lattice. I have formed the lattice and want to add a certain number of H atoms. I am seeing previous literature specifying the site they add it in (octahedral or tetrahedral depending on the material). Am I able to add the atoms into my system randomly (create atoms random), then minimize and run a temp equilibration to all the atoms to relax into the interstitial sites? As an alternative I could make my data file on atomsk but I again don’t see anything specifying the interstitial site the atom would occupy.

Is there a way to add say 100 hydrogen interstitial atoms in a BCC lattice?

Thanks very much.

Carly

Hi,

I am looking to add interstitial hydrogen a BCC lattice. I have formed the lattice and want to add a certain number of H atoms. I am seeing previous literature specifying the site they add it in (octahedral or tetrahedral depending on the material). Am I able to add the atoms into my system randomly (create atoms random), then minimize and run a temp equilibration to all the atoms to relax into the interstitial sites? As an alternative I could make my data file on atomsk but I again don’t see anything specifying the interstitial site the atom would occupy.

Is there a way to add say 100 hydrogen interstitial atoms in a BCC lattice?

you could build a custom lattice to fill all possible interstitial sites, use create_atoms with a suitably thin region, and then (randomly) delete atoms using delete_atoms porosity until you have the desired degree of occupancy.

axel.

Or you could insert 100 new atoms randomly, then minimize to push them into interstitial sites
(assuming that is the only place they want to go w/out messing up the lattice of heavier atoms).
But to do the minimize you will likely need to use a soft potential, e.g. see pair_style soft.

Steve

Apologies for the delay, was away on break and a conference. This was what I was thinking. As an alternative, I saw a recent paper do an NVE first to allow the hydrogen to settle into reasonable sites, then an NVT to specified temeperature, then deformation. Does this also make sense or would it need to be a minimize?

Thanks!

Carly

when you insert atoms randomly, you need to do a minimization first, or else there is a high chance, that you have atoms that overlap and then your MD will be unstable and crash due to lost atoms. if you want to keep the host geometry immobile, you can define a group of all atoms before you insert randomly and then during the minimization use fix setforce 0 0 0 on that group of atoms, so that only the positions of the newly inserted atoms will be updated. afterwards, you can unfix that fix and continue with fix nve and/or fix nvt. sometimes you may get away with using fix nve/limit to unoverlap the atoms directly, but the more complex route via minimization is cleaner.

axel.

Thanks very much, just to be sure I will likely try both and see how they work. I have seen the fix nve/limit used in previous literature but agree the minimzation makes the most sense. Just to be sure, does this script match what you were describing?

#prior to adding hydrogen atoms define group called lattice

group lattice region whole
create_atoms 2 random 100 123456 NULL

mass 1 55
mass 2 1

set force on lattice to zero

fix freeze lattice setforce 0 0 0

min_style sd
min_modify dmax 0.1 line backtrack
minimize 1.0e-4 1.0e-6 100 1000

unfix freeze

#continue on with NVT

Thanks!

Thanks very much, just to be sure I will likely try both and see how they work. I have seen the fix nve/limit used in previous literature but agree the minimzation makes the most sense. Just to be sure, does this script match what you were describing?

it looks about right, but the only way to be certain is to dump the coordinates during minimization and visualize the process.

axel.

Thanks, will do.

In the meantime the minimization converged and stopped via the etol. I’m not totally certain if those values for the Energy next-to-last and final are good, but they match values from other posts in the list serve. Also, when I do my NVT, straining after this there is no high spikes in temp, box does not blow up, and atoms stay in the system, all good signs I think :)?

Per MPI rank memory allocation (min/avg/max) = 289.3 | 289.3 | 289.3 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -197027.64 0 -197027.64 23264.613
24 0 -205906.04 0 -205906.04 4016.9521
Loop time of 19.8881 on 1 procs for 24 steps with 2034 atoms

99.4% CPU use with 1 MPI tasks x 1 OpenMP threads

Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-197027.642737 -205905.926149 -205906.040108
Force two-norm initial, final = 8943.27 4.36337
Force max component initial, final = 5591.33 3.95383
Final line search alpha, max atom move = 0.00175485 0.00693839
Iterations, force evaluations = 24 27