diff --git a/README.md b/README.md index 0b9863a..255fca8 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,10 @@ A typical workflow will consist of several steps, implemented in a series of sho 0. Prepare a sequence of atomic structure models with displacements that interpolate between two defect configurations (e.g. a site vacancy in charge states q=0 and q=+1). Run single-point energy calculations on these structures, and extract the total energies. Scripts for preprocessing may be found in `script`. - 1. Find a best fit for the energy calculations of the deferomed structures (`potential`) to generate potential energy surfaces (PES). + 1. Find a best fit for the energy calculations of the deformed structures (`potential`) to generate potential energy surfaces (PES). Solve the 1D Schrödinger equation for each PES to obtain their phonon (nuclear) wavefunctions. - 3. Constructe configuration coordinate (`conf_coord`) to calculate the wavefunction overlap between each PES, + 3. Construct configuration coordinate (`conf_coord`) to calculate the wavefunction overlap between each PES, which forms part of the temperature-dependent capture coefficient. ![schematics](https://github.com/WMD-group/CarrierCapture.jl/blob/master/schematics/carrier_capture_sketch.png?raw=true "schematics") @@ -71,7 +71,7 @@ The following examples are provided to illustrate some of the applications of th > The electronic matrix element frequently causes feelings of discomfort (Stoneham, 1981) -The capture of electrons or holes by point defects in a crystalline materials requires the consideration of a number of factors including the coupling between electronic and vibrational degrees of freeedom. Many theories and approximations have been developed to describe the reaction kinetics. +The capture of electrons or holes by point defects in a crystalline materials requires the consideration of a number of factors including the coupling between electronic and vibrational degrees of freedom. Many theories and approximations have been developed to describe the reaction kinetics. The capture coefficient between an initial and final state for this computational set up is given by (eq. 22 in [Alkauskas and coworkers](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.90.075202)): diff --git a/docs/src/index.md b/docs/src/index.md index 22fe522..3e594f4 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -41,10 +41,10 @@ A typical workflow will consist of several steps, implemented in a series of sho 0. Prepare a sequence of atomic structure models with displacements that interpolate between two defect configurations (e.g. a site vacancy in charge states q=0 and q=+1). Run single-point energy calculations on these structures, and extract the total energies. Scripts for preprocessing may be found in `script`. - 1. Find a best fit for the energy calculations of the deferomed structures (`potential`) to generate potential energy surfaces (PES). + 1. Find a best fit for the energy calculations of the deformed structures (`potential`) to generate potential energy surfaces (PES). Solve the 1D Schrödinger equation for each PES to obtain their phonon (nuclear) wavefunctions. - 3. Constructe configuration coordinate (`conf_coord`) to calculate the wavefunction overlap between each PES, + 3. Construct configuration coordinate (`conf_coord`) to calculate the wavefunction overlap between each PES, which forms part of the temperature-dependent capture coefficient. ![schematics](https://github.com/WMD-group/CarrierCapture.jl/blob/master/schematics/carrier_capture_sketch.png?raw=true "schematics") diff --git a/docs/src/usage.md b/docs/src/usage.md index e8f96f2..eb56ab4 100644 --- a/docs/src/usage.md +++ b/docs/src/usage.md @@ -4,11 +4,11 @@ A typical usage will consist of about three steps; 1. preparation, 2. building ` ## 1. Preparation -Before `CarrierCapture`, you need to calculate potential energy surfaces of atomic vibrations (one-dimensional Configuration Coordinate diagram; `1D-CC`) and _e-ph_ coupling matrix element (`W_if`). Prepare a sequence of structures with displacements which interpolate between two defect states. Run single-point energy calculations on these structures, and extract the total energies. Scripts for preprocessing can be found in `/script` which require a python library [`pymatgen`](http://pymatgen.org). +Before `CarrierCapture`, you need to calculate potential energy surfaces of atomic vibrations (one-dimensional Configuration Coordinate diagram; `1D-CC`) and _e-ph_ coupling matrix element (`W_if`). Prepare a sequence of structures with displacements which interpolate between two defect states. Run single-point energy calculations on these structures, and extract the total energies. Scripts for preprocessing can be found in `/script` which require the [`pymatgen`](http://pymatgen.org) python library. 1. **Generate `1D-CC`** - 1. Calculate equilibirum geometries and total energies of defective supercells with charge states `q`(initial) and `q±1`(final) denoted `Conf.(q)` and `Conf.(q±1)`, respectively. + 1. Calculate equilibrium geometries and total energies of defective supercells with charge states `q`(initial) and `q±1`(final) denoted `Conf.(q)` and `Conf.(q±1)`, respectively. 2. Generate interpolated and extrapolated structures between `Conf.(q)` (`POSCAR_i`) and `Conf.(q±1)` (`POSCAR_f`). You may use `gen_cc_struct.py`: @@ -19,7 +19,7 @@ Before `CarrierCapture`, you need to calculate potential energy surfaces of atom disp_dir_f ``` - 3. Run total-energy calculations for each structures. Example of the directory tree (`template` contains all input files for DFT calculations. Make sure DFT-program write wavefunctions (e.g. `LWAVE=.TRUE.` in `VASP`) for [the next stage `W_if`](#wif)): + 3. Run total-energy calculations for each structure. Example of the directory tree (`template`) contains all input files for DFT calculations. Make sure DFT-program writes wavefunctions (e.g. `LWAVE=.TRUE.` in `VASP`) for [the next stage `W_if`](#wif)): ```bash ├── 00_q2q±1 @@ -44,7 +44,7 @@ Before `CarrierCapture`, you need to calculate potential energy surfaces of atom │   │   ├── ... ``` - You can submit jobs for all calculations using a following script in a high-performace computer with a batch system. + You can submit jobs for all calculations using a following script in a high-performance computer with a batch system. ```bash #!/bin/bash -l @@ -92,7 +92,7 @@ Before `CarrierCapture`, you need to calculate potential energy surfaces of atom 2. **Calcuate _e-ph_ coupling matrix element `W_if`** - You already have eigenvalues, wave functions and configurations. Read [Work by Alkauskas and coworkers](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.90.075202) carefully. + You already have eigenvalues, wavefunctions and configurations. Read [Work by Alkauskas and coworkers](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.90.075202) carefully. 1. Find initial and final eigenvalues (`ϵ_i` and `ϵ_f`). diff --git a/paper/paper.md b/paper/paper.md index a4b9dbb..7fe0cfe 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -50,7 +50,7 @@ The API documentation including the guide to the installation is also up-to-date # Author contributions -[Sunghyun Kim](https://github.com/frssp) wrote the majority of the code base with contributions from [Samanth N. Hood](https://github.com/PaleBlueSam). [Lucy D. Whalley](https://github.com/lucydot) and [Puck van Gerwen](https://github.com/puckvg) performed detailed code testing and contributed to the example and test suite. All authors along with [Aron Walsh](https://github.com/aronwalsh) made decisions about code design and feature implementation. This manuscript was written with input from all co-authours. +[Sunghyun Kim](https://github.com/frssp) wrote the majority of the code base with contributions from [Samanth N. Hood](https://github.com/PaleBlueSam). [Lucy D. Whalley](https://github.com/lucydot) and [Puck van Gerwen](https://github.com/puckvg) performed detailed code testing and contributed to the example and test suite. All authors along with [Aron Walsh](https://github.com/aronwalsh) made decisions about code design and feature implementation. This manuscript was written with input from all co-authors. # Acknowledgements diff --git a/src/Brooglie.jl b/src/Brooglie.jl index ba3a1a2..beecfb4 100644 --- a/src/Brooglie.jl +++ b/src/Brooglie.jl @@ -115,7 +115,7 @@ normalizewf(φ, L) = φ / √integrate(φ.^2, L) Solve the potential `V`(x,y,z,...) in a grid xᵢ ∈ [`a`,`b`], discretized in `N` steps. -The particle is asumed to have mass `m` (by default 1, a electron mass). +The particle is assumed to have mass `m` (by default 1, a electron mass). The function will return the `nev` first energy levels (in Hartree[^1]) and its normalized eigenfunctions. diff --git a/src/CaptureRate.jl b/src/CaptureRate.jl index ad06c01..ba585f0 100644 --- a/src/CaptureRate.jl +++ b/src/CaptureRate.jl @@ -15,7 +15,7 @@ Stores two `potential`s with e-ph coupling constant `W` to calculate the capture ## Fields - `name` -- the name of a configuration coordinate. -- `V1` and `V2` -- the initial and fianal `potential`s. +- `V1` and `V2` -- the initial and final `potential`s. - `W` -- the e-ph coupling matrix element. - `g` -- the degeneracy. - `temperature` -- the temperature range where `capt_coeff` is calculated. @@ -46,10 +46,10 @@ conf_coord(pot_i::potential, pot_f::potential) = conf_coord("", pot_i, pot_f, In """ calc_overlap!(cc::conf_coord; cut_off = 0.25, σ = 0.025) -Calculate phonon overlap between phonon wave functions 'potenrial.χ'. +Calculate phonon overlap between phonon wave functions 'potential.χ'. If energy difference is larger then the cutoff (eV) `abs(cc.V1.ϵ[i] - cc.V2.ϵ[j]) > cut_off`, the overlap will not be calculated. -Delta functions are replaced by a Gaussians function with widths `σ`. +Delta functions are replaced by Gaussian functions with widths `σ`. """ function calc_overlap!(cc::conf_coord; cut_off = 0.25, σ = 0.025) Q₀ = cc.V1.Q0 @@ -77,7 +77,7 @@ end """ calc_capt_coeff!(cc::conf_coord, V::Float64, temperature) -Calculte the capture coefficient `cc.capt_coeff` as a function of `temperature` which is a `UnitRange`. +Calculate the capture coefficient `cc.capt_coeff` as a function of `temperature` which is a `UnitRange`. `V` is a volume where the electron-phonon coupling matrix element `cc.W` is calculated. The lowest thermal occupation number of the eigenstate must be lower than `occ_cut_off = 1E-5`. @@ -127,7 +127,7 @@ end # importing parameters """ Depreciated. -Construct `conf_coord` from two potentials `pot_i` (initila) and 'pot_f' (final) and configure dictionalry `cfg`. +Construct `conf_coord` from two potentials `pot_i` (initial) and 'pot_f' (final) and configure dictionary `cfg`. """ function cc_from_dict(pot_i, pot_f, cfg::Dict)::conf_coord cc = conf_coord(pot_i, pot_f) diff --git a/src/Potential.jl b/src/Potential.jl index 24ccfc0..0e36f33 100644 --- a/src/Potential.jl +++ b/src/Potential.jl @@ -17,7 +17,7 @@ Stores a potential in one-dimensional space Q, with discreet points (E0, Q0) and - `QE_data` -- the (n X 2) DataFrame of data points (Q vs Energy). - `E0`, `Q0` -- the minimum point of the potential [`Q0`, `E0`]. - `func_type` -- the type of fitting function ("bspline", "spline", "harmonic", "polyfunc", "morse_poly", "morse"). -- `params` -- the list of hyper paramters for the fitting function. +- `params` -- the list of hyper parameters for the fitting function. - `Q`, `E` -- `Q` and `E`=`func(Q, p_opt; params)`. - `nev` -- the number of eigenvalues to be evaluated. - `ϵ` -- the list of eigenvalues @@ -82,7 +82,7 @@ Fit a function `pot.func_type` to `QE_data` on the domain `Q`. Polynomial function; `y = E₀ + Σ coeffs[i].* (x .- Q₀) .^(i-1)`. - `poly_order`: the maximum order of polynomials. - - `p0`: the initial paramters for the fitting function. + - `p0`: the initial parameters for the fitting function. ## Example - Spline fit @@ -237,7 +237,7 @@ end # read potential """ Depreciated. -Construct `potential` from `QE_data` and configure dictionalry `cfg`. +Construct `potential` from `QE_data` and configure dictionary `cfg`. """ function pot_from_dict(QE_data::DataFrame, cfg::Dict)::potential pot = potential() @@ -351,7 +351,7 @@ end function get_bspline(Qs, Es) # BSplines assume your data is uniformly spaced on the grid - # Qs, Es have to be eqaully-spaced (Range) + # Qs, Es have to be equally-spaced (Range) if Qs[1] > Qs[end] Qs = reverse(Qs) Es = reverse(Es) diff --git a/src/paramScan.jl b/src/paramScan.jl index 5a249a4..6c6074c 100644 --- a/src/paramScan.jl +++ b/src/paramScan.jl @@ -98,7 +98,7 @@ function fitMorseParams(a_i, a_f, b_i, b_f, Q0, E0) a_i: first parameter of the Morse potential of the initial state a_f: first parameter of the Morse potential of the final state b_i: second parameter of the Morse potential of the initial state - b_f: seond parameter of the Morse potential of the final state + b_f: second parameter of the Morse potential of the final state Q0 : horizontal shift between the PES', in amu^0.5 Å^-1 E0 : vertical shift between the PES', in eV