# Brief description of the content of the files in this entry The zip file `ValleyEgineeringPlotData.zip` contains the raw data for the plots in the main text of the associated paper, divided into a folder per plot; in each folder, notes on the data are also present describing the formats. ## AiiDA database The attached `.aiida` file is an AiiDA import that can be imported with [AiiDA](www.aiida.net). It requires AiiDA 1.0 or later. ### Importing the data You first need to import the data in AiiDA. After installing it, you can create a new profile (here and below called ARSENENE, but feel free to change the name). This can be done with: ``` verdi quicksetup --profile=ARSENENE ``` You can then import the data in this profile using: ``` verdi -p ARSENENE import arsenene_EPC.aiida ``` This will take about 10 minutes on a moderately powerful computer. ### Content of the AiiDA database Once imported, you will find two groups in your ARSENENE profiles (these can be shown using `verdi -p ARSENENE group list -A`). Each of them contains a `BandsData` node, as well as many `ArrayData` nodes containing (numpy) arrays corresponding to the electron-phonon (el-ph) coupling matrix elements used for the mobility calculations. The names of the groups are as follows: - `export_for_As_paper_equilibrium`: el-ph matrix elements for *equilibrium* arsenene - `export_for_As_paper_strained`: el-ph matrix elements for *strained* arsenene ### Script to collect and plot the data We also provide a python script (`plotting_tool.py`) to collect and plot the electron-phonon data in the AiiDA database, for your convenience. This script assumes that you have the data imported in the AiiDA profile and that you run the commands from a `verdi shell` (i.e., a custom ipython shell with the AiiDA environment and database loaded), that can be launched as follows: ``` verdi -p ARSENENE shell ``` Alternatively, you can write a python file and then run in with `verdi run` in the correct profile: ``` verdi -p ARSENENE run your_script.py ``` Note: If you run directly the provided script `plotting_tool.py`, it will generate a plot for one of the initial states and band indices. Note that the data collection can take some time, because it involves retrieving data from the AiiDA nodes. Please look at the code for more details. The different functions in the script can be used as follows: ```python bands, elphmats = find_bands_and_elphmats_in_group('export_for_As_paper_equilibrium') # Get data for a given elphmat kis, q, ijs, g2s, freqs = get_data(elphmat) # or: plot data for all elphmats at a given initial state k and band index plot_data(elphmats, kiidx = 0, ijidx=3) ``` The first function `find_bands_and_elphmats_in_group` goes through the nodes of a given group and separates the `BandsData` node (`bands`) from all other `ArrayData` nodes with the el-ph coupling matrix elements (`elphmats`). The second function `get_data` reads one elphmat node (i.e., one element of the `elphmats` list) and returns the data contained in it as arrays. In particular, one elphmat node contains the electron-phonon coupling matrix elements at one given phonon momentum and for all initial states. The data returned can be used to inspect the data structure, extract some data, and also to chose the appropriate inputs of the next function used to plot the matrix elements (see comments for the `plot_data` function later on). The return values of the `get_data` function are: - `kis`: an array containing the momenta of the initial electronic states. - shape: `number of states*3` - units: `bohr^(-1)` - `q`: an array containing the momentum of the phonon involved in scattering. - shape: `3` - units: `bohr^(-1)` - `ijs`: list of tuples containing the available band-indices combinations for the initial and final states of the scattering event. - `g2s`: array containing the el-ph coupling matrix elements. The first two indices of the array correspond to the initial state and band indices. For a given set of those 2 indices, what is left is an array of the squared el-ph coupling (`g^2_{k, k+q}`). The size of this array is the number of phonon modes, i.e. `3*number of atoms` - shape: `len(kis) * len(ijs) * (number of phonon modes)` - units: g^2 in `eV^2` - `freqs`: same structure as `g2s`, but containing the phonon frequencies - shape: `len(kis) * len(ijs) * (number of phonon modes)` - units: frequency in `eV` The last function, `plot_data()`, generates a plot of the electron-phonon matrix elements for one given initial state and all the calculated phonon momenta. Its inputs are the list `elphmats`, and the indices of a given initial state and the index (in the `ijs` array) of the relevant band indices. By default, we use the first initial state (corresponding to the bottom of the valley) and the last combination of band indices (corresponding to scattering from the conduction band to the conduction band). If instead you want to look at an other initial state, use the `get_data` function to get the initial states `kis` and print them, and then choose the appropriate index of the target initial state.