From 8e3e80f5f6ecb4d2866717be7763420f833a1e97 Mon Sep 17 00:00:00 2001 From: Alex Ganose Date: Mon, 9 Mar 2020 16:14:59 -0700 Subject: [PATCH 1/4] Fix readme typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5e446a3..1df6718 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,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") @@ -65,7 +65,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)): From 9f2a9a18193c6a43fc6222fe876c23e96672c425 Mon Sep 17 00:00:00 2001 From: Alex Ganose Date: Mon, 9 Mar 2020 16:15:09 -0700 Subject: [PATCH 2/4] Fix docs typos --- docs/src/index.md | 4 ++-- docs/src/usage.md | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/src/index.md b/docs/src/index.md index 859a50c..41c7358 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -36,10 +36,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`). From 7d1d13701273b0265033e5f0b4ad3f5acbb8e48e Mon Sep 17 00:00:00 2001 From: Alex Ganose Date: Mon, 9 Mar 2020 16:15:18 -0700 Subject: [PATCH 3/4] Fix paper typo --- paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 15a179c6a00bf549c3c5d7c097d21f081e7383b3 Mon Sep 17 00:00:00 2001 From: Alex Ganose Date: Mon, 9 Mar 2020 16:21:16 -0700 Subject: [PATCH 4/4] Fix typos in API doc --- src/Brooglie.jl | 2 +- src/CaptureRate.jl | 10 +++++----- src/Potential.jl | 8 ++++---- src/paramScan.jl | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) 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