Installation

Anaconda

Unless you are interested in the full package, miniconda installation should be sufficient for installing the rest of the modules needed for the PDielec installation. A miniconda is the recommended environment for installing PDielec. On windows it is necessary to run the commands in an Anaconda command terminal, which will be added to the user’s menu when miniconda is installed.

PDielec is available on the conda-forge channel and installation using Anaconda can be performed on Linux, Windows and Mac systems. However, there are no example files installed, only the executables. Example files for each of the DFT packages supported can be downloaded from the Git repository.

The conda-forge package has a Python 3 environment included in the package. After installation of miniconda or anaconda, a new evironment should be created in which to install the package:

conda create  --name pdielec
conda activate pdielec
conda config --add channels conda-forge
conda install -c conda-forge pdielec
pdgui

If at a later stage you want to update PDielec to the latest version from conda-forge, you should be able to update the environment in the following way:

conda activate pdielec
conda update pdielec

This only works if the conda-forge channel has been added to the channel list for the environment.

PyPi

If you really dont want to use Anaconda, PDielec is available on pypi.org and can be installed using pip.:

pip install --user pdielec
pdgui

GitHub - Linux

The package is available on GitHub and can be downloaded from https://github.com/JohnKendrick/PDielec. cd to a directory where PDielec will be installed and use git to clone a copy of the program. I use a ‘Software/’ directory in my home directory to store programs, so for me the commands to obtain PDielec would look like this.:

cd ~/Software
git clone https://github.com/JohnKendrick/PDielec.git

This will create a directory ~/Software/PDielec. To make the program generally available to the user;:

cd ~/Software/PDielec
make install

This copies the commands and modules to the ~/bin directory which should be included in your PATH environment variable.:

export PATH=~/bin;$PATH

As part of the installation you will have to install a number of Python packages into your enviroment. The full list of packages is as follows;:

pyqt5
psutil
numpy
scipy
dill
multiprocess
matplotlib
pyopengl
openpyxl
pyyaml
xlsxwriter
termcolor
imageio
imageio-ffmpeg
sklearn

GitHub - Windows

An Anaconda installation is now the recommended way of installing to a Windows machine. See the section on Anaconda above. If the user still wishes to proceed with a local installation based purely on the GitHub releases, see below.

Installation from repository

This Windows installation method is only needed if installation through Anaconda is not possible. A Windows 10 installation from the git repository which works for users without administrator rights involves a few steps but gives an installation which can run all the test cases. In the following instructions replace ‘yourusername’ with your user name.

Install git

First of all install a Windows version of git from www.git-scm.com. A 64 bit version of Windows 10 will be assumed for the following instructions.

  • From the download page download and run the 64 bit Git for Windows setup.

  • During the installation install the Quick Launch and Desktop icons as these make using the program easier.

  • If you are not familar with the vi or vim editor, it is probably best to use the Nano editor, although if you wish you can install Notepad++ and use that as the default editor.

  • In the section concerning the PATH environment I would recommend the last option “Use git and optional Unix tools from the Windows Command prompt”. This option will mean that some Windows commands eg. find and sort will be replaced by the Unix commands, so be careful.

  • Leave the https certificate choice as the default, namely the OpenSSL library.

  • Line endings are best left to the default setting of Windows-style for checkout and Unix-style for check-in.

  • The Console I use is the MinTTY console it has a larger scrolling buffer than the Windows console.

  • Under the “Configuring extra options” I leave everything as the default.

I have seen a few hickups in the installation of Git. Occasionally I have to do the installation twice and occasionally I am left with the Setup Installing window indicating that I should wait, when in fact the installation has completed. When this happens I kill the setup process with the task manager

Install make

Once you have Git installed open the “Git bash” shell and create the following directories in your home directory;:

mkdir bin
mkdir Software

From the web url http://www.equation.com/servlet/equation.cmd?fa=make download the 64-bit version of make.exe and copy it into your bin/ directory. You should find this directory in c:usersyourusernamebin in the file manager.

Install Python

  • From https://www.python.org/downloads/windows/ download and run the Windows x86-64 executable installer for the latest Python 3.x version

  • Uncheck install launcher for all users

  • Check “Add Python 3.x to PATH”

  • Click on “Install now” button

  • Check installation ran OK by running the Idle python environment

Open a git bash console and type;:

pip install pyqt5
pip install psutil
pip install numpy
pip install scipy
pip install dill
pip install multiprocess
pip install matplotlib
pip install pyopengl
pip install openpyxl
pip install pyyaml
pip install xlsxwriter
pip install termcolor
pip install imageio
pip install imageio-ffmpeg
pip install sklearn

Install PDielec

Open a git bash console and type;:

cd Software
git clone -c core.symlinks=true https://github.com/JohnKendrick/PDielec.git

This should create a directory in Software called PDielec. The “-c core.symlinks=true” means that the commands; pdgui and preader are treated as windows symlinks to their equivalent .py file.

Testing PDielec

Open a git bash console. If you have installed Python using anaconda then you need to ‘source activate’ the environment you have established before typing;:

cd Software/PDielec
make test_preader
make test_pdgui

Installing PDielec to run in any git bash console

Open a git bash console and type;:

cd Software/PDielec
export SCRIPTS=~/bin
make install

Updating PDielec from the git repository

Open a git bash console and type;:

cd Software/PDielec
git pull

GitHub - PDielec directory structure

  • PDielec/ is the home directory and contains the pdgui and preader commands

  • PDielec/PDielec holds the source for the modules used by the pdielec and preader commands

  • PDielec/PDielec/GUI holds the python code for PDGui

  • PDielec/Examples a set of examples are available for Abinit, Crystal14, CASTEP, GULP, Phonopy, Mie and VASP. Each example directory holds the input files to the QM/MM program and the relevant output files which are post processed by PDielec. For each program there is also a preader directory which holds test output for the preader command.

  • PDielec/Sphinx holds the documentation as restructured text documents (.rst). Sphinx can be used to build the documentation in either html or pdf format.

  • PDielec/docs holds the final html documentation.

Examples

Each example directory has the relevant input data sets used to run the QM/MM program and the output files from that run, which are post-processed by PDielec. There is a file script.py which contains an of PDGui usage line and which has been used to create the reference output file results.ref.xlsx. The example can be run interactively:

make pdgui-view

The output can be compared with the reference data to see if the program is working correctly. The checkexcell command can be used to do this automatically.

The main Examples/ directory also has a Makefile file which can be used to verify the correct working of the package. Simply by typing make tests in the Examples directory each example will be run automatically and the output compared with the reference files. To remove the intermediate files after running the tests automatically, type make clean.

A benchmark can be run for comparison of the performance of PDielec on different platforms by typing;

make benchmark

This runs a range of calculations on different systems and provides a real world view of the performance. An indication of the likely performance of the program is given in the Performance section of the documentation.

A summary of the different examples and their purpose is shown below;

Table 1 Summary of the Examples available in the Examples/ directory

Directory

Program

Molecule

Description

ATR/AlAs

AbInit

AlAs

Maxwell Garnett calculation of the ATR spectrum of an ellipsoid along [001]. The incident angle varies from 0 to 80 degrees.

ATR/Na2SO42

Vasp

Na2(SO4)2

Maxwel-Garnett calculation of the ATR spectrum, change the S polarisation component from 0 to 100%

ATR/Na2SO42_fit

Vasp

Na2(SO4)2

Maxwel-Garnett calculation of the ATR spectrum, example of fitting the spectrum to experiment

AbInit/AlAs

AbInit

AlAs

Average permittivity and Maxwell Garnett calculation of sphere, plate and ellipsoid

AbInit/BaTiO3

AbInit

BaTiO3

Average permittivity and Maxwell-Garnett calculations of sphere, plate and ellipsoid, using average isotope masses

AbInit/BaTiO3-phonana

AbInit

BaTiO3

Average permittivity and Maxwell-Garnett calculations of sphere, plate and ellipsoid, using program defined masses

AbInit/Na2SO42

AbInit

Na2(SO4)2

Average permittivity and Maxwell-Garnett calculations of Na2(SO4)2, sphere, plate and ellipsoid, using program defined masses

Castep/AsparticAcid

Castep

Aspartic Acid

Average permittivity and Maxwell-Garnett calculations of sphere, plate and ellipsoid, using program defined masses

Castep/Bubbles

Castep

MgO

Maxwell-Garnett calculation showing the effect of air bubbles at 24% volume fraction and 30 micron radius

Castep/Castep17

Castep

beta-Lactose

Castep 17,Maxwell-Garnett sphere and plates with 3 surfaces

Castep/Isoleucine

Castep

Isoleucine

Maxwell-Garnett sphere

Castep/MgO

Castep

MgO

Comparison of MG, Bruggeman and AP methods changing shapes and volume fractions

Castep/Na2SO42

Castep

Na2(SO4)2

Comparison of MG and Bruggeman, for needle, ellipsoid and plate shapes

Crystal/Leucine

Crystal

Leuscine

Comparison of MG, plates and ellipsoids

Crystal/Na2SO42

Crystal

Na2(SO4)2

Comparison of MG for needle, ellipsoid and plate shapes

Crystal/Na2SO42_C17

Crystal

Na2(SO4)2

Comparison of MG for needle, ellipsoid and plate shapes, reading output from Crystal 17

Crystal/Quartz

Crystal

Quartz

Comparison of MG for needle, ellipsoid and plate shapes

Crystal/ZnO/CPHF

Crystal

ZnO

Coupled Hartree-Fock, Maxwell-Garnett Sphere, Needle and Plate

Crystal/ZnO/Default

Crystal

ZnO

Default Crystal calculation of IR spectrum, Maxwell-Garnett Sphere, Needle and Plate

Crystal/ZnO/NoEckart

Crystal

ZnO

As above, but no Eckart projection in Crystal, Maxwell-Garnett Sphere, Needle and Plate

Experiment/Forsterite

Experiment

Forsterite

Single crystal calculations of a thick slab, for a, b and c axis alignments with polarisation direction. Uses FPSQ model for permittivity.

Experiment/Mayerhofer

Experiment

Toy model

Example of a Drude Lorentz model permittivity

Experiment/constant

Experiment

Constant

Example of a constant permittivity with loss

Experiment/drude-lorentz

Experiment

MgO

A Drude-Lorentz model for MgO, varying the angle of incidence

Experiment/fpsq

Experiment

Quartz

An FPSQ model for Quartz, showing polarisation on along different axes and different incident angles.

Experiment/interpolation

Experiment

Quartz

Under development

Gulp/Na2SO42

Gulp

Na2(SO4)2

Maxwell-Garnett and Bruggeman on needle, ellipsoid and plate

Gulp/calcite

Gulp

Calcite

Maxwell-Garnett method on Sphere and Plate

Mie/MgO

Castep

MgO

Mie method with varying volume fractions and sphere sizes

Mie/MgO_lognormal

Castep

MgO

Mie method with varying volume fractions and sphere size distributions

Phonopy/Na2SO42

Phonopy

Na2(SO4)2

Maxwell-Garnett and Bruggeman method for needle, ellipsoid and plate shapes, with varying volume fractions

Phonopy/ZnO

Phonopy

ZnO

Maxwell-Garnett and Bruggeman method for needle, ellipsoid and plate shapes

QE/Cocaine

Quantum Espresso

Cocaine

Maxwel-Garnett sphere

QE/Na2SO42

Quantum Espresso

Na2(SO4)2

Maxwell-Garnett and Bruggeman on needle, ellipsoid and plate

QE/ZnO

Quantum Espresso

ZnO

Maxwell-Garnett and Bruggeman on needle, ellipsoid and plate

SingleCrystal/Bi2Se3

Vasp

Bi2Se3

Single crystal example of thick slab, angle of incidence varies from 0 to 90

SingleCrystal/Bi2Se3_film

Vasp

Bi2Se3

Single crystal example of thin film, angle of incidence varies from 0 to 90

SizeEffects/BaTiO3

Abinit

BaTiO3

Exploration of size effects in Bruggeman effective medium theory

SizeEffects/MgO

Castep

MgO

Exploration of size effects in Bruggeman and Maxwell-Garnett effective medium theories

SizeEffects/ZnO

Vasp

ZnO

Exploration of size effects in Maxwell-Garnett effective medium theory

Vasp/F-Apatite

Vasp

F-Apatite

Maxwell-Garnett, sphere plates and needles

Vasp/Na2SO42

Vasp

Na2(SO4)2

Maxwell-Garnett and Bruggeman, needle, plate and needle

Vasp/ZnO

Vasp

ZnO

Maxwell-Garnett and Bruggeman, needle, plate and needle, mass fraction