File | Date | Author | Commit |
---|---|---|---|
bin | 2022-04-24 | Eric Polizzi | [e41c5c] add bin directory |
database_muffins | 2022-04-24 | Eric Polizzi | [c2a35b] Initial commit |
simulations | 2022-04-24 | Eric Polizzi | [c2a35b] Initial commit |
src | 2022-04-24 | Eric Polizzi | [c2a35b] Initial commit |
README.md | 2022-04-24 | Eric Polizzi | [b8b551] readme |
c6h6.jpg | 2022-04-24 | Eric Polizzi | [c2a35b] Initial commit |
nessie.jpg | 2022-04-24 | Eric Polizzi | [c2a35b] Initial commit |
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.
[5] Tetgen
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
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.
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.