Skip to the content.

Update: 04/20/2023

Maintained By: Arunima K. Singh

Email: arunimasingh@asu.edu

Table of contents

  1. About Our Group
  2. After You Join the Group
  3. Our Computing Resources
    1. ASU Supercomputing
    2. XSEDE Supercomputing
  4. Setting Up a New Computer
    1. Windows
    2. Mac
    3. Sharing/Duplicating Anaconda Environments
    4. Using MongoDB
  5. Our Software Infrastructure
  6. Resources for Learning New Topics

1. About Our Group

Computational Materials Design (CMD) lab’s research focuses on atomistic simulations of complex surfaces and interfaces. We develop and use quantum mechanical simulations as well as molecular dynamics simulations to push the boundaries of knowledge in nanomaterials, 2D materials, and surface dominant-phenomena. Contributing to the Materials Genome Initiative, our lab develops scientific-software infrastructure to enable high-throughput computational studies, facilitating an accelerated discovery and design of novel materials.

Active topics of interest are highly motivated by practical applications with an overarching goal of developing a computational Surface Genome database of materials. Towards this goal, we actively collaborate with experimentalists and theorists within ASU and several other universities and national laboratories, including Caltech, NIST-Gaithersburg and the Lawrence Berkeley National Lab.

Our group maintains a web-site where you can find our latest research achievements along with other group related information.

2. After You Join the Group

A very warm welcome to the group. The following sections are written to guide you during your initial phases in the group. You are always welcome to seek in-person help from the CMD lab group members on any aspect of your research and your day-to-day life at ASU or Arizona.

After joining the group,

Request access to the cmdlabworkspace.slack.com using your ASURITE e-mail id. Our group uses slack as an alternative for e-mail communications. If you haven’t used slack before, the link to its help center can be found here. Slack is a messaging app for teams which is searchable and shareable. The slack workspace will allow you to communicate quickly with Arunima as well as other group members.

Our group maintains a Team Google Drive folder which provides access to group-specific resources. Request an access to the Team Drive by sending an e-mail to arunimasingh@asu.edu. In this drive you will find books, journal articles, presentations etc. related our research. Most of the shared data in the drive is either protected under some copy-right law or unpublished research. Do not share anything from this drive to someone who does not belong to the CMD lab.

Virtual Private Network (VPN) provides you an off-campus connectivity to ASU’s network thereby providing access to research articles and library resources even when you are off-campus. Follow the instructions here to setup VPN on your PC.

While on campus you can access ASU’s free Wi-Fi using your ASURITE id.

We have supercomputing resources both on-campus and off-campus. See section 3 for more information about the individual supercomputers.

-Get Access to ASU Supercomputing:

Register for an account on the ASU supercomputing platform through this link. Make sure to use your ASURITE id for the request. You can expect the ASU supercomputing staff to get back to you with the cluster login information within 24 hours. A guide to get started on using the cluster can be found here. To reach the Agave help-desk send a service request here.

-Get Access to XSEDE Supercomputing:

Send an e-mail to Arunima and she will add your e-mail id to the XSEDE supercomputing. It typically takes the XSEDE staff 2-3 days to activate new users but they can take up to 5 days during busy times of the year. More information on how to use XSEDE supercomputers can be found in section 3.

Share your headshot and a brief bio which will be added on the group website.

See section 4 to find out how to do this and a recommended list of software to install.

3. Our Computing Resources

We perform ab-initio quantum mechanical simulations on supercomputers. The basic methodology for these simulations is density functional theory (DFT) but we also develop and use post-DFT methods such as hybrid functionals, many-body perturbation theory and dynamical correlations within the random phase approximation. Supercomputer provide the much needed memory and processing power which is orders of magnitude larger than what can be accessed through typical PC’s. Our group has access to two major supercomputing clusters:

ASU Supercomputing

Website link. Note that agave has two partitions: (1) a home directory with a 100GB limit (/home/ASURITE) and (2) a scratch directory with no quota but purged every 30 days (/scratch/ASURITE).

XSEDE Supercomputing

Website link.

Both the supercomputers are maintained by dedicated high-performance computing (HPC) staff. HPC staff maintains up-to-date free user-guides and also conducts web-seminars to guide you through the most effective use of the supercomputing resources.

To get access to our XSEDE supercomputer Comet, create an account on the XSEDE portal. After you have created your account, e-mail your XSEDE id to Arunima and she will add you to the group’s Comet research allocation.

Every user has an access to the HPC online help-desk that can be used to get help on any aspect which is not covered in the existing documentation. For instance, if you are interested in installing a software which is not compatible with the supercomputer, you can seek the help of HPC staff to see if they can point you in the direction of right resources which will make your supercomputer account compatible for a successful installation of the software.

4. Setting up a new computer

Depending on your project, you may need to install some of the following software on your computer:

This guide walks you through the steps for setting up pymatgen, fireworks and atomate on ASU’s supercomputer, Agave. Installation steps for a local machine or another super computer will differ, but follow similar steps. Setup an environment:

bash Anaconda3-2020.02-Linux-x86_64.sh
source ~/.bashrc

conda create -n cms

source activate cms

conda install numpy scipy matplotlib pandas

Install python libraries for open-source computational materials science software packages: To install atomate (and hence pymatgen, pymatgen-db, fireworks and custodian) on the environment, use the following:

source activate cms

cd ~/anaconda3/envs/cms

mkdir code

cd code

git clone https://github.com/materialsproject/pymatgen.git

git clone https://github.com/materialsproject/pymatgen-db.git

git clone https://github.com/materialsproject/fireworks.git

git clone https://github.com/materialsproject/custodian.git

git clone https://github.com/hackingmaterials/atomate.git

cd pymatgen

pip install –e .

cd ..

cd pymatgen-db

pip install –e .

cd ..

cd fireworks

pip install –e .

cd ..

cd custodian

pip install –e .

cd ..

cd atomate

pip install –e .

cd ..

source activate cms

cd ~/anaconda3/envs/cms/code/

git clone https://github.com/hackingmaterials/matminer.git

then enter the cloned repository or folder to install in the development mode:

cd matminer

pip install –e .

source activate cms

cd ~/anaconda3/envs/cms/code/

git clone https://github.com/henniggroup/GASP-python.git

then enter the cloned repository or folder to install in the developmen mode:

cd GASP-python

pip install -e .

Other OS specific software:

Windows

Mac

Sharing/Duplicating Anaconda Environments

Anaconda enables users to share pre-built virtual environments through exporting a yaml file using the anaconda command-line tool. For cross-platform sharing version numbers are often different and may need slight modification to be compatible. To create your own yaml file use the following commands:

conda activate my_sharing_env

conda env export > linux_atomate_stable.yml

To install identical stable cms environments on remote cluster a stable linux cms environment can be found in the CMD lab google drive in SettingUpYourComputer. You can install this anaconda environment using the following commands:

conda env create -f linux_atomate_stable.yml

Using MongoDB

[STARTUP COMMAND : mongod --auth --bind_ip_all --logpath log/mongod.log --fork]

MongoDB is a document-oriented database program that allows users to store data in a json-like structure.

The steps required to install and setup your own MongoDB server are given below:

To host a mongoDB server you need the server core installed

sudo apt install mongodb-server-core

To connect to a different mongoDB client you need the clients libraries installed

sudo apt install mongodb-clients

If it throws an error saying “/data/db” doesnt exist, try the command

mkdir -p /data/db

You should now be able to launch the server, you can also launch the mongo shell to try out some commands and make sure everything works well:

mongo

This mongo server will only accept connections from the local system and needs to be explicitly told to accept all incoming connections using --bind_ip_all For security reasons we enable authentication using --auth.

The final command should be:

mongod --auth --bind_ip_all --logpath log/mongod.log --fork

The --logpath option is used to save logs from the mongo server for debugging purposes and --fork creates a background process that will keep running after the admin signs out.

MongoDB allows us to create users at a database level, but we can use an authentication server where we can specify users and roles for all databases. By default the “admin” database is used for authentication purposes.

First you need to create your mongoDB root user:

You will have to run the mongo server without the --auth to create the first few users.

First create the root admin user:

use admin

db.createUser(
{
    user: "adminUser",
    pwd: "******",
    roles: [ { role: "root", db: "admin" } ]
}
)

Now the admin user can create different users similar to this:

use admin

db.createUser({
user: "Uranium",
pwd: "***",
roles: [
{ role: "readWrite", db: "database_orange" },
{ role: "read", db: "database_blue" }
]})

A new user Uranium is created who has readWrite access to database_orange and read access to database_blue.

More information about builtin roles can be found here.

You can also create custom roles, by choosing the specific actions you want to allow:

db.runCommand({
createRole: "listDatabases",
privileges: [{ resource: { cluster : true }, actions: ["listDatabases"]}],
roles: [] 
})

This creates a new role called “listDatabases”, which is allowed to view a list of all the databases on the server. More information about privilege actions can be found here.

You can also grant new roles to existing users:

db.grantRolesToUser( "labrat", [{ role: "listDatabases", db: "admin" }])

More information about databases and collection commands will be added soon

5. Our software infrastructure

Any software-infrastructure developed by our group is shared via github. Some of the software are open-access while others are only accessible by the members of the group and our collaborators.

We use VASP for density-functional theory simulations. This licensed software is accessible to all group members. The source code, the psuedopotential library and the makefiles and executables for our supercomputing platform can be found on the CMDLab google drive.

6. Resources for learning new topics

Slack

If you have a specific question, sometimes the easiest solution is to post it to the Slack group and crowdsource the answer from the CMD lab group members.

Books

As an ASU student or affiliate, you can get access to almost any book you’d like through the ASU library. Our group has several technical books shared on the CMD lab google drive. If you need a book which is not available through the library we can purchase it through research funds.

Materials Science

It can be difficult to find resources that explain concepts in materials science clearly. Often, struggling through multiple attempts to understand a topic using several different resources in a patchwork and non-linear fashion is the only way forward. That said, the resources listed below are particularly helpful.

For beginners to density functional theory, I would recommend the book “Density Functional Theory: A Practical Introduction”, which truly achieves what it states by providing physical insights and relevant information rather than just listing equations. A copy is available within the group through the CMD lab google drive. If you are interested in the physics of the DFT, the book “Atomic and Electronic Structure of Solids” dives into the relevant physics at a level suited for graduate students. Again, this book is available on the CMD lab google drive.

Computer Programming

Note that there are usually many excellent resources to choose from when learning computer science topics. You usually have the flexibility of choosing to learn from a book, a video series, or even interactive tutorials like www.learnpython.org. Use the list below as potential starting points, but there exist many other high-quality alternatives you can find on your own and may be even better-suited to your needs.

The command line is a text interface for your computer. It’s a program that takes in commands, which it passes on to the computer’s operating system to run. From the command line, you can navigate through files and folders on your computer, just as you would with Windows Explorer on Windows or Finder on Mac OS. The difference is that the command line is fully text-based.

If you are using a MAC, the “Macintosh Terminal Pocket Guide” is an easy to read and a beginner friendly introduction to the command lines which can be entered via the terminal. If you are using a Windows machine, you will need a SSH client like putty to access the Linux OS of your supercomputing resource. You can learn how to enter text-based commands on the Linux supercomputer through the SSH client. A good introductory book for learning how to use the Linux terminal is the “Linux Pocket Guide”. Both the books are shared on the CMD lab google drive.

For pure beginners to Python, you might try the book “Learn Python the Hard Way”. It is a fun and easy introduction to Python. Beginners that know a little but not a lot of Python can also look at “How to Make Mistakes in Python” (ebook). For intermediate programmers, you might try “20 Python Libraries You Aren’t Using (But Should)” (ebook). For advanced programmers, you might try “Expert Python Programming”. These books are also on CMD lab’s google drive.

A (now somewhat old, but still clear) resource for beginning to use MongoDb is the “The Little MongoDB Book”: https://github.com/karlseguin/the-little-mongodb-book .There is also an extensive library of webinars on MongoDb on their official web site.

To bring everyone up to speed with the software our group use we have created tutorials and introductory documentation for our software. You can find this documentation on the CMDLab Google Drive under the Code_Softwares folder.

Professional Skills

To learn professional skills like writing papers and presenting talks and posters you can try this e-book http://go.nature.com/2opiiQh. You can also refer to the book “Trees, Maps, and Theorems” which is available on the CMD lab google drive.