Giter VIP home page Giter VIP logo

dftfe's Introduction

DFT-FE : Density Functional Theory With Finite-Elements

About

DFT-FE is a C++ code for materials modeling from first principles using Kohn-Sham density functional theory. The origins of DFT-FE were in the Computational Materials Physics Group at the University of Michigan, Ann Arbor, with Vikram Gavini, Professor of Mechanical Engineering and Materials Science & Engineering, as the principal investigator broadly overseeing the effort. The current development efforts span across the Computational Materials Physics Group (Prof. Vikram Gavini, Dr. Sambit Das) at the University of Michigan and the MATRIX lab (Prof. Phani Motamarri) at the Indian Institute of Science.

DFT-FE is based on an adaptive finite-element discretization that handles pseudopotential and all-electron calculations in the same framework, and incorporates scalable and efficient solvers for the solution of the Kohn-Sham equations. Importantly, DFT-FE can handle periodic, semi-periodic and non-periodic boundary conditions and general geometries. DFT-FE can be run on massively parallel many-core CPU and hybrid CPU-GPU architectures (tested up to ~200,000 cores on many-core CPUs and ~24,000 GPUs on hybrid CPU-GPU architectures). DFT-FE is capable of fast and accurate large-scale pseudopotential DFT calculations, reaching 50,000-100,000 electrons.

Installation instructions

DFT-FE code builds on top of the deal.II library for everything that has to do with finite elements, geometries, meshes, etc., and, through deal.II on p4est for parallel adaptive mesh handling. The steps to install the necessary dependencies and DFT-FE itself are described in the Installation section of the DFT-FE manual (compile doc/manual/manual.tex or download the development version manual here).

We have created several shell based installation scripts for the development version of DFT-FE (publicGithubDevelop branch) on various machines:

Running DFT-FE

Instructions on how to run DFT-FE including demo examples can also be found in the Running DFT-FE section of the manual (compile doc/manual/manual.tex or download the development version manual here). Beyond the demo examples in the manual, we also refer to our benchmarks repository which contains several accuracy and performance benchmarks on a range of system sizes.

Contributing to DFT-FE

Learn more about contributing to DFT-FE's development here.

More information

  • See the official website for information on code capabilities, appropriate referencing of the code, acknowledgements, and news related to DFT-FE.

  • See Doxygen generated documentation.

  • For questions about DFT-FE, installation, bugs, etc., use the DFT-FE discussion forum.

  • For latest news, updates, and release announcements about DFT-FE please send an email to [email protected], and we will add you to our announcement mailing list.

  • DFT-FE is primarily based on the deal.II library. If you have particular questions about deal.II, use the deal.II discussion forum.

  • If you have specific questions about DFT-FE that are not suitable for the public and archived mailing lists, you can contact the following:

  • The following people have significantly contributed either in the past or current and advanced DFT-FE's goals: (All the underlying lists are in alphabetical order based on last name)

    • Mentors/Development leads

      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • Prof. Vikram Gavini (University of Michigan Ann Arbor, USA)
      • Prof. Phani Motamarri (Indian Institute of Science, India)
    • Principal developers

      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • Prof. Phani Motamarri (Indian Institute of Science, India)
  • A complete list of the many authors that have contributed to DFT-FE can be found at authors.

License

DFT-FE is published under LGPL v2.1 or newer.

dftfe's People

Contributors

bikashkanungo avatar bssw-codetest avatar davydden avatar dsambit avatar frobnitzem avatar gourabp7 avatar iancclin avatar kartickr avatar knikhil1995 avatar krisghos avatar nandis99 avatar phanimotamarri avatar rudraa avatar rudraauw avatar vikramgavini avatar vishal-subbu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dftfe's Issues

Trying to build dft-fe with PetSC on CPU's (intel/2023.1 + gcc/9.2.0)

Attempting to build separate real and complex versions - and everything is working up to the final linking. Both the real and complex versions fail with similar linking errors.

I am using

dftfe - release1.0
dealiiCustomizedCUDARelease
petsc/3.17.5
intel/2023.1 (with gcc/9.2.0)
mpiicc and mpiicpc compilers

I noticed (after getting this far) in the user guide it mentions that intel compilers are not supported - and I'm wondering if this is the issue? Or is there something about using the dealiiCustomizedCUDARelease branch but building without cuda support?

$ make VERBOSE=1
/cm/shared/software/cmake/3.20.0/bin/cmake -S/cm/shared/software/dft-fe/1.0.2/b1/src/dftfe -B/cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real --check-build-system CMakeFiles/Makefile.cmake 0
/cm/shared/software/cmake/3.20.0/bin/cmake -E cmake_progress_start /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real/CMakeFiles /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real//CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real' make -f CMakeFiles/dftfem.dir/build.make CMakeFiles/dftfem.dir/depend make[2]: Entering directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
cd /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real && /cm/shared/software/cmake/3.20.0/bin/cmake -E cmake_depends "Unix Makefiles" /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real/CMakeFiles/
dftfem.dir/DependInfo.cmake --color=
make[2]: Leaving directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real' make -f CMakeFiles/dftfem.dir/build.make CMakeFiles/dftfem.dir/build make[2]: Entering directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
make[2]: Nothing to be done for CMakeFiles/dftfem.dir/build'. make[2]: Leaving directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
[ 95%] Built target dftfem
make -f CMakeFiles/dftfe.dir/build.make CMakeFiles/dftfe.dir/depend
make[2]: Entering directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real' cd /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real && /cm/shared/software/cmake/3.20.0/bin/cmake -E cmake_depends "Unix Makefiles" /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real/CMakeFiles/ dftfe.dir/DependInfo.cmake --color= make[2]: Leaving directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
make -f CMakeFiles/dftfe.dir/build.make CMakeFiles/dftfe.dir/build
make[2]: Entering directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real' [ 97%] Linking CXX executable dftfe /cm/shared/software/cmake/3.20.0/bin/cmake -E cmake_link_script CMakeFiles/dftfe.dir/link.txt --verbose=1 /cm/shared/software/intel/2023.1/mpi/2021.9.0/bin/mpiicpc -O2 -fPIC -fopenmp -shared-intel -qopenmp -rdynamic CMakeFiles/dftfe.dir/src/main.cc.o -o dftfe -Wl,-rpath,/cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real:/cm/shared/software/dealii/20230907/b3/lib:/cm/shared/software/slepc/3.17.2/b1/src/slepc-v3.17.2/arch-ci-linux-intel-mkl-single/lib:/cm/shared/software/petsc/3.17.5/b1/src/petsc-3.17.5/arch-ci-linux-intel-mkl-sing le/lib:/cm/shared/software/lle/petsc-hash-pkgs/b3d0e4/lib: libdftfem.so /cm/shared/software/dealii/20230907/b3/lib/libdeal_II.so.9.3.0-pre /usr/lib64/libz.so -lrt /cm/shared/software/p4est/2.2/b1/lib/libp4est.so /cm/shared/software/p4est/2.2/b1/lib/libsc.so -qmkl-ilp64=parallel -lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64 -L/cm/shared/software/intel/2023.1/mkl/2023.1.0/lib/intel64 -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_gnu_thread -lmk l_core -lgomp -lpthread -lm -ldl /cm/shared/software/slepc/3.17.2/b1/src/slepc-v3.17.2/arch-ci-linux-intel-mkl-single/lib/libslepc.so /cm/shared/software/petsc/3.17.5/b1/src/petsc-3.17.5/arch-ci-linux-intel-mkl-single/lib/libpetsc.so /cm/shared/software/intel/2023.1/mkl/2023.1.0/lib/intel64/libmkl_scalapack_lp64.so /cm/shared/software/intel/2023.1/mkl/2023.1.0/lib/intel64/libmkl_blacs_intelmpi_lp64.so /cm/shared/software/intel/2023.1/mkl/2023 .1.0/lib/intel64/libmkl_intel_lp64.so /cm/shared/software/intel/2023.1/mkl/2023.1.0/lib/intel64/libmkl_core.so /cm/shared/software/intel/2023.1/mkl/2023.1.0/lib/intel64/libmkl_sequential.so /cm/shared/software/lle/petsc-hash-pkgs/b3d0e4/lib/libparmetis.so /cm/shared/software/lle/petsc-hash-pkgs/b3d0e4/lib/libmetis.so /usr/lib64/libX11.so -lifport /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libifcoremt_pic .a /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libimf.so /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libsvml.so -lm /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libipgo.a /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libirc.so /cm/shared/software/intel/2023.1/compiler/2023.1.0/linux/compiler/lib/ intel64_lin/libirc_s.a -lquadmath -ldl -lAlglib /cm/shared/software/libxc/6.2.2/b1/lib/libxc.a /usr/lib64/libxml2.so /cm/shared/software/spglib/2.1.0/b1/lib64/libsymspg.so /cm/shared/software/elpa/2021.05.002/b1/lib/libelpa_openmp.so icpc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message. libdftfem.so: undefined reference to void dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::reinit<std::complex >(dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host> const&, bool)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::compress_finish(dealii::VectorOperation::values)' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::Vector()'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::zero_out_ghosts() const' libdftfem.so: undefined reference to void dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::reinit<std::complex >(dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host> const&, bool)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<float>, dealii::MemorySpace::Host>::swap(dealii::LinearAlgebra::distributed::Vector<std::complex<float>, dealii::MemorySpace::Host>&)' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::Vector()'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<float>, dealii::MemorySpace::Host>::reinit(dealii::IndexSet const&, dealii::IndexSet const&, int const&)' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::zero_out_ghosts() const'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::update_ghost_values() const' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::compress_start(unsigned int, dealii::VectorOperation::values)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<float>, dealii::MemorySpace::Host>::update_ghost_values_finish() const' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::update_ghost_values() const'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::update_ghost_values_start(unsigned int) const' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::swap(dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>&)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::update_ghost_values_finish() const' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::reinit(dealii::IndexSet const&, dealii::IndexSet const&, int const&)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<float>, dealii::MemorySpace::Host>::update_ghost_values_start(unsigned int) const' libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex, dealii::MemorySpace::Host>::compress_finish(dealii::VectorOperation::values)'
libdftfem.so: undefined reference to dealii::LinearAlgebra::distributed::Vector<std::complex<double>, dealii::MemorySpace::Host>::compress_start(unsigned int, dealii::VectorOperation::values)' make[2]: *** [dftfe] Error 1 make[2]: Leaving directory /cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
make[1]: *** [CMakeFiles/dftfe.dir/all] Error 2
make[1]: Leaving directory `/cm/shared/software/dft-fe/1.0.2/b1/src/dftfe/build/release/real'
make: *** [all] Error 2

Print out citation information from libxc

Hi,

DFT-FE appears to use libxc exclusively to evaluate density functionals, but doesn't seem to be printing out any information about it. I would kindly ask to include the following information in the DFT-FE output:

  • the version of libxc used (produced by xc_version_string())
  • the citation for the used version of libxc (journal reference produced by xc_reference() and doi by xc_reference_doi())

In addition to Libxc, users should also cite the employed density functionals. This information is conveniently stored inside Libxc in the func->info->refs field, which should be likewise printed out by DFT-FE.

question about dealii::DoFTools::make_hanging_node_constraints_from_serial

HI All,

I'm helping some users with getting going with DFT FE version 1.0.2. I'm noticing an issue with DEALII's DoFTtools, in particular DFT FE is using a make_hanging_node_constraints_from_serial method which is not defined in any of the branches of DEALII that are on the public github repo - [email protected]:dealii/dealii.git - that i've checked so far.

Does one need to use a special version of DEALII to build DFT FE 1.0.2?

Thanks,

Howard

A GUI for DFT-FE

I have recently installed DFT-FE and started running a few test calculations. I couldn't find a way to easily convert my existing input files or CIFs to the DFT-FE format.

Therefore, to streamline the process of setting up calculations and facilitate the creation of the input files, I have created a web app (https://dft-fe.streamlit.app/) that can serve as a GUI for DFT-FE.

It creates input files such as coordinates.inp, domainVectors.inp, pseudo.inp, and parameters.prm. It also automatically fetches the SG15 pseudopotentials.

Currently, it allows one to create input files for a given material in the materialsproject.org database, or a molecule in PubChem database. It also allows to create input files form Quantum ESPRESSO input, CIFs, POSCARs, extended XYZs, etc.

Hope the developers and users of DFT-FE will find it useful and can test it out. Essentially, I created the web app by modifying an existing app (https://ripertools.turbomole.org/), that I created for TURBOMOLE (https://www.turbomole.org/).

Build issue involving conversion to std::function<...>

I was trying to build DFT-FE according to the build manula. However, I get many errors related to std::function<...>

In file included from /home/davidkleiven/Documents/dftfe/src/triangulation/triangulationManager/triangulationManager.cc:32:
/home/davidkleiven/Documents/dftfe/src/triangulation/triangulationManager/restartUtils.cc: In member function ‘void dftfe::triangulationManager::saveTriangulationsCellQuadData(const std::vector<const std::map<dealii::CellId, std::vector<double> >*>&, const MPI_Comm&, const MPI_Comm&)’:
/home/davidkleiven/Documents/dftfe/src/triangulation/triangulationManager/restartUtils.cc:270:90: error: cannot convert ‘const unsigned int’ to ‘const std::function<std::vector<char>(const dealii::TriaIterator<dealii::CellAccessor<3, 3> >&, dealii::Triangulation<3, 3>::CellStatus)>&’
  270 |          const unsigned int offset = d_parallelTriangulationUnmoved.register_data_attach(dataSizeInBytes,
      |                                                                                          ^~~~~~~~~~~~~~~
      |                                                                                          |
      |                                                                                          const unsigned int

there are many similar errors where std::function is involved. Any ideas on what causes this error?

Here is the full output from running setup.sh
setup_output.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.