The repository is developed by Xuexun (or Hokseon in Cantonese) and aims to reproduce the simulations and plots showed in the manuscript:
A Haldane-Anderson Model Hamiltonian for Hyperthermal Hydrogen Scattering from a Semiconductor Surface by Xuexun Lu, Nils Hertl, Sara Oregioni, Riley J Preston, Samuel Louis Rudge, Michael Thoss, Rocco Martinazzo and Reinhard J. Maurer.
Schematic of H-Atom Scattering from Ge(111)
Figure 1. 3-D Schematic of an H atom scattering from Ge(111) surface.
However, this project applies 1-D analytical model to represent the nonadiabatic effects during the scattering process. Figure 1. is only for illustrative purpose.
Steps
After cloning this repository to your machine, you need to the followings
- Turn on the Julia REPL where you terminal need to be at the root of this repository
Add
(@v1.10) pkg> activate .
HokseonRegistryto the julia environment so that you could access some personal packages Hokseon has developed for filing and plotting purposes.Also, the NQCDRegistry is needed to access the NQCD family packages.(HonGeAnalysis) pkg> registry add https://github.com/Louhokseson/HokseonRegistry
(HonGeAnalysis) pkg> registry add https://github.com/NQCD/NQCRegistry
- If you managed to activate the project environment, you should see the prompt
(HonGeAnalysis) pkg> - Resolve the dependencies / equivalent to rewrite the Manifest.toml based on the Project.toml
(HonGeAnalysis) pkg> resolve - Instantate the dependencies / equivalent to download the packages listed on Project.toml
(HonGeAnalysis) pkg> instantiate - Last step is to double check you have the correct version of the
NQCDynamics.jl(v0.13.4) and its companion package,NQCModels.jl(v0.8.19) in the julia enviroment.If you see the version is not correct, you can use the following command to update the package.(HonGeAnalysis) pkg> status NQCDynamicsExact same procedure applies to(HonGeAnalysis) pkg> add NQCDynamics@0.13.4
NQCModels.jlpackage.
For those who are confident with Julia and skip the folded instructions, you are highly recommended to check your installed version of NQCDynamics.jl and NQCModels.jl packages are v0.13.4 and v0.8.19 respectively. If you are not sure, please follow the folded content in Steps.
In the directory figure_data, you can find the data in .txt used to generate the figures in the manuscript. The Julia scripts for those plots sit in the scripts/plots.
The ab-initio data is stored in directory data/ab-initio_cals. The specs of the DFT calculations is illustrated the manuscript.
The H atom scattering on Ge(111) surface data is published and available in
Practical Tips
This repo should be ready in some machines that Hokseon can use by the time he comes back to it. i.e. Archer2 and Taskfarm.
- If you need to configure a new machine, please follow the step you wrote below. Because with the given UUID of NQCDynamics and NQCModels, julia package git installer would automatically download v0.15.0. Make sure that you do
(HonGeAnalysis) pkg> add NQCDynamics@0.13.4in your configure script for that machine.Same applies to NQCModels.jl which has to be either v0.8.20 or v0.8.19.
- Make sure
datafolder has foldersims. Withinsimsshould haveEhrenfest,IESHandIndividual-Large. The first two are used for storing the raw.h5output from NQCD simulation. Each of the.h5should be named after the simulation parameters (parameters_IESH.jl for reference). The given run scripts (Ehrenfest/IESH) would skip taht simulation if the conjugate output.h5exist in folderEhrenfestorIESH. - When you need to do repeating simulations (mostly IESH for energy loss/ sticking probability convergence), make sure you turn the
is_dividual_large_saving = truein the parameters_IESH.jl for simualtions. For example, 500 trajectories for a.h5for 1000 times. - When you have generated massive amount of .h5 file under folder
Individual-Large/your_simulation_parameter..., you need to process/extract the useful properties by
- Run traj2kineticloss.jl and traj2nstick.jl (order of executing does not matter since they are independent). These two generate folder
scattering_countingandscattered_kinetic_losscontaining.csvwith the desired properities (including confidence errors) from the NQCD simulated.h5data. The.csvis easy for storage and rsyncing between machines.
- Rsyncing the whole folder from HPCs to storage machine to process the traj2kineticloss.jl and traj2nstick.jl.
rsync -avnis a dry run. testing whether the stuff can be send to desitnation. The actually syncing needrsync -av
Whole folder rsyncing
rsync -avn your-path-to-the-folder destinationFiles inside folder rsyncing
rsync -avn your-path-to-the-folder/ destination- Rsyncing the processed
.csvto a local laptop: Exclude .h5 files
rsync -avn --exclude='*.h5' source destinationYou should save NQCD output in data/sims directory. After running the simulations, you would have the following structure
└── sims
├── Ehrenfest
│ ├── configuration.h5
├── IESH
│ ├── configuration.h5
└── Individual-Large
└── configuration
├──JOB_ID_XXXXX.h5
- You can find the raw data files with extension of
.h5which contain the raw ouput from the NQCDynamics.jl simulation from the folder Ehrenfest and IESH. The name of the files indicate the simulation parameters, e.g.,
centre=0_couplings_rescale=1.95_discretisation=GapGaussLegendre_dt=0.01_gap=0.49_impuritymodel=Hokseon_incident_energy=0.3_is_Wigner_initial=false_mass=1.01_method=EhrenfestNA_nstates=150_temperature=300.0_tmax=1000_trajectories=1_width=50.h5
contains the simulation of 500 trajctories of the Ehrenfest dynamics with desired output variables along the dynamics. 2. The Individual_Large directory contains folders with name illustrating the simulation parameters, e.g.,
centre=0_couplings_rescale=1.95_decoherence=EDC_discretisation=GapGaussLegendre_dt=0.05_gap=0.49_impuritymodel=Hokseon_incident_energy=0.25_is_Wigner=false_mass=1.01_method=AdiabaticIESH_nstates=150_temperature=300.0_tmax=1001_trajectories=500_width=50
Inside, it contains the processed data from a large set of simulations and stored in the .csv files. Those .csv files are named with the distinct job id of each julia simulation.
Acknowledgements
Fundings
- EPSRC Doctoral Training Partnership
- MSCA Postdoctoral Fellowship
- Erasmus+ Traineeship Mobility
- Alexander von Humboldt Research Fellowship
- DFG Grant
- UKRI Future Leaders Fellowship
- UKRI Frontier Research Grant
Computational Resources
- Scientific Computing Research Technology Platform (SCRTP) in University of Warwick
- Archer2 UK National Supercomputing Service
- Sulis HPC Midlands+ Computing Centre
- bwHPC (Baden-Württemberg High Performance Computing)
Hosting Institutions
