Menu

Tree [e41c5c] master /
 History

HTTPS access


File Date Author Commit
 bin 2022-04-24 Eric Polizzi Eric Polizzi [e41c5c] add bin directory
 database_muffins 2022-04-24 Eric Polizzi Eric Polizzi [c2a35b] Initial commit
 simulations 2022-04-24 Eric Polizzi Eric Polizzi [c2a35b] Initial commit
 src 2022-04-24 Eric Polizzi Eric Polizzi [c2a35b] Initial commit
 README.md 2022-04-24 Eric Polizzi Eric Polizzi [b8b551] readme
 c6h6.jpg 2022-04-24 Eric Polizzi Eric Polizzi [c2a35b] Initial commit
 nessie.jpg 2022-04-24 Eric Polizzi Eric Polizzi [c2a35b] Initial commit

Read Me

NESSIE

Release version: alpha

NESSIE [1] is an electronic structure code that uses a real-space FEM discretization and domain-decomposition (DD) to perform all-electron ground-state DFT and real-time excited-state TDDFT calculations. NESSIE gets its name from an 3D FEM legacy code for quantum transport [2]. The code is written to take advantage of multilevel parallelisms of the state-of-the-art FEAST eigenvalue solver [3,4] to target systems containing many distributed-memory compute nodes. The real space mesh is generated using the software tetgen [5]. NESSIE’s capabilities can be separated into three main categories:

  • Accurate large-scale, full-core potential (all-electrons) DFT ground-state calculations from atoms to nanostructures (up to 1000's of atoms). Remark: Current atom database is limited to three rows of the periodic table (but it is easy to add more); Only isolated systems (non-periodic) are considered in this release (no bandsructrure calculations).

  • Computational spectroscopy using TDDFT real-time propagation, allowing the study of many-body effects. Remark: Only DFT is included in this current NESSIE release while TDDFT functionality will be added in the next release.

  • Massively parallel implementation on modern high-end computing platforms using state-of-the-art parallel algorithms/solvers.

[1] J. Kestyn, E. Polizzi, "...A Review of the NESSIE Project," in IEEE Nanotechnology Magazine, vol. 14, no. 6, pp. 52-C3, Dec. 2020

[2] E. Polizzi, N. Ben Abdallah, "Self-consistent three-dimensional models for quantum ballistic transport in open systems", in Phys. Rev. B, 66, I24, 245301, 2002

[3] E. Polizzi, "Density-Matrix-Based Algorithms for Solving Eigenvalue Problems",in Phys. Rev. B. Vol. 79, 115112, 2009

[4] FEAST Eigenvalue Solver

[5] Tetgen

Installation

1- Install the Intel-MKL library.

2- Install the FEAST library (BSD License)--see corresponding installation instructions.

3- Install the Tetgen library (GNU-GPL License)-- install the executable tetgen in your PATH or copy it in the /bin NESSIE directory.

4- Define the Shell variable NESSIEROOT, e.g. export NESSIEROOT=<nessie directory=""> or set NESSIEROOT=<nessie directory=""> respectively for the BASH or CSH shells.
One of this command can be placed in the appropriate shell startup file in $HOME (i.e .bashrc or .cshrc).</nessie></nessie>

5- In your shell startup file you also need to include this line (using BASH shell): export PATH="$NESSIEROOT/bin:$PATH"

6- Navigate to the /src directory and execute

make all

By default, the compilation is using ifort and intel MPI. If you wish to use a different compiler or MPI directives, just enter "make" to see all the possible options.

7- done

Usage and Example

1- Create a standard .xyz atomic file which contains the atoms and their coordinates in Angstrum. The /simulations directory contains multiple sub-directories with their
example xyz files:

C for Carbon, H2 for diHydrogen, CO for Carbon Monoxide, H2O for Water, SiH4 for Silane, C6H6 for Benzene, C22H14 for Pentacene, C8H10N4O2 for Cafeine

In the following, let us take the example of C6H6.

2- To run DFT simulations, we need to create the input file: C6H6.dft
This input file can be automatically generated by executing (for example):

nessie_config C6H6 dft lda p2 6

Here:

-dft stands for DFT simulations (only available option for this current NESSIE release),

-lda stands for the exchange-correlation functional (only available option for this current NESSIE release),

-p2 stands for P2-FEM real-space mesh discretization (p3 is also available for more accuracy). We note that running DFT with p2 and lda provides good enough initial guesses for starting TDDFT, while p3 (with better XC term) is needed for getting accurate DFT only results (total energy).

-6 stands for the number of available MPI you wish to use. For example if you run on a laptop with 6 cores, you may consider using
6 MPI and a single thread per MPI. If so, do not forget to set up the following before running your simulations:

export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1

NESSIE is using FEAST which can handle 3 levels of MPI-parallelism and a fourth level of OpenMP parallelism. The nessie_config command is attempting to set up all the MPI distributions for you so you do not have to do it by hand. If you are running on a HPC systems you may want to use more MPI and threads. For example, you could scale Benzene using 36 MPI and maybe 2 threads per mpi (72 cores in total).

Before executing the DFT simulations, you have the possibility to edit the file C6H6.dft and change various options. Many of the these options are self-explanatory (such as p2 vs p3) but many others are expert options. A comprehensive NESSIE documentation is not yet available.

3- When executing the nessie_config file, some information will be displayed on screen, and the last line would be the line you will need to execute for
performing DFT simulations. In this case:

mpirun -n 6 nessie_compute C6H6 dft

Many information will be displayed on screen during the DFT calculations. NESSIE is performing all-electons
SCF iterations until convergence, and once done a summary is displayed. Here is the screenshot of the results of the last iterations and summary.

 ----------------------Start SCF-cycle          13
 ** Compute_vhatree
     Poisson  IT-mesh  solver #nbit/residual         106  7.601419297938564E-014
 ** Compute_vxc
 ** Update KS
    -Slice #           2           2
 ** Solve_KS using FEAST
    -Slice #           1           2
       M0/M/#loop/#itbicg/log(eps) 12 6 2 2 10
       Eigenvalues found in [  -284.929992675781       -257.790008544922      ]
           1  -267.015133105195       5.113757170811076E-011
           2  -266.970444146126       4.331830737847108E-011
           3  -266.946759749401       3.730986570314150E-011
           4  -266.936265315721       4.005435858853506E-011
           5  -266.928283483805       3.903329234404391E-011
           6  -266.923396628482       3.919767073080693E-011
       M0/M/#loop/#itbicg/log(eps) 30 15 16 16 10
       Eigenvalues found in [  -59.9799995422363       -2.84999990463257      ]
           1  -21.8755744868028       1.631154288648890E-012
           2  -19.0664271726657       7.158942249928468E-012
           3  -19.0469968746753       4.959392200030436E-012
           4  -15.4393476363625       1.615083808067793E-012
           5  -15.4325204903850       5.544249082421583E-012
           6  -13.5218361124142       3.208722639937455E-013
           7  -11.6656056488480       5.037552796497123E-012
           8  -11.5734831767691       5.263742316222600E-012
           9  -10.7769547537862       1.395178843168396E-011
          10  -10.7528874828970       1.053327239329768E-011
          11  -9.88122266845613       1.683983110064976E-011
          12  -8.74079545121779       4.685922254300299E-012
          13  -8.70178355901801       2.444797501982542E-011
          14  -7.09777941827632       4.346538359385675E-011
          15  -7.08617077255080       4.496757250884583E-011
    -Slice#/#nbe:           1          12
    -Slice#/#nbe:           2          30
 ** Compute_density
     #Electron is:   42.0000000000000               42
 ** Compute energy
     Energy Kin                     6208.5138
     Energy N-N                     5530.0759
     Energy XC                      -881.4644
     Energy Eig                    -3584.7593
     Energy Eh                      8477.1401
     Energy core                  -25587.7483
     Energy total                  -6253.4828
     Energy total(w/ Kin)          -6253.4828
 ** Residual CV  4.126623817452145E-009
 ** CONVERGENCE REACHED!

 =============================================
 SUMMARY
 =============================================
 ** CV history - #Restart           2
    0  0.250084994499E-02  0.100000000000E+01 -0.650768944215E+04
    1  0.501866021214E-02  0.411629504543E-01 -0.623981374407E+04
    2  0.417899547903E-02  0.119257767425E-02 -0.624725520663E+04
    3  0.336050809106E-03  0.353712393168E-03 -0.624504547504E+04
    4  0.522390538168E-04  0.120661723765E-02 -0.625258085456E+04
    5  0.681142240633E-04  0.322812277773E-03 -0.625459926443E+04
    6  0.310006119018E-05  0.226880496485E-03 -0.625318021785E+04
    7  0.462348860501E-05  0.557830137455E-04 -0.625352903908E+04
    8  0.161416464184E-05  0.489850697641E-05 -0.625349840613E+04
    9  0.751657676387E-06  0.131653773224E-05 -0.625349017316E+04
   10  0.275295297693E-06  0.153660567205E-05 -0.625348056401E+04
   11  0.763003689631E-07  0.265072445152E-06 -0.625348222164E+04
   12  0.134511628690E-07  0.942205786999E-07 -0.625348281084E+04
   13  0.412662381745E-08  0.141211471936E-08 -0.625348281968E+04

 ** Compute dipole 
     #Dipole x is:  2.093516596672508E-013
     #Dipole y is: -1.561274971359303E-013
     #Dipole z is:  1.793599298262298E-012
 ** TIMING (cumulative)
     set_mesh             1.47341696650255     
     set_KS               1.50140804593684     
     update_KS            1.16070140915690     
     solve_KS             57.4364273636165     
     compute_density      9.47675506137602     
     compute_vhartree     16.4601693140357     
     compute_vxc_lda     0.351429860660573     
     compute_init_guess   1.41871061881102     
     compute_energy      0.236645479308208     
     NESSIE- time         89.8618657577754     
 ** Save XYZ node coordinates
 ** Save potential/density
 ** Save DFT Wavefunctions
 ** Save DFT Energy
 ** Save DFT Eigenvalues
 ** Save System Matrices (mtx format)
 ** plot vtk file for n
    grid size x,y,z         114          81         109
    it grid done
    muffin grid done
    conversion to grid mesh done
    vtk grid file generated
 ** plot vtk file for v
    conversion to grid mesh done
    vtk grid file generated
 the end

NESSIE for Benzene converges then in 89.9s on a 6 cores laptop to a total energy of -6253.4828eV (a p3 simulation would converge in 432s to reach a total energy of
-6263.6768 eV).

Eigenvalues, Eigenvectors, converged density and potential are all saved in output files. The code is also generating two gzip vtk files (using uniform grid interpolation), that can be used for plotting the ground state density and potential.

License

BSD
The NESSIE code is distributed under the BSD software license.

Copyright (c) 2018-2022, The Regents of the University of Massachusetts, Amherst.
E. Polizzi research lab
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.