Abstract

Approximating molecular wave functions involves heavy numerical effort; therefore, codes for such tasks are written completely or partially in efficient languages such as C, C++, and Fortran. While these tools are dominant throughout quantum chemistry packages, the efficient development of new methods is often hindered by the complexity associated with code development. In order to ameliorate this scenario, some software packages take a dual approach where a simpler, higher-level language, such as Python, substitutes the traditional ones wherever performance is not critical. Julia is a novel, dynamically typed, programming language that aims to solve this two-language problem. It gained attention because of its modern and intuitive design, while still being highly optimized to compete with "low-level" languages. Recently, some chemistry-related projects have emerged exploring the capabilities of Julia. Herein, we introduce the quantum chemistry package Fermi.jl, which contains the first implementations of post-Hartree-Fock methods written in Julia. Its design makes use of many Julia core features, including multiple dispatch, metaprogramming, and interactive usage. Fermi.jl is a modular package, where new methods and implementations can be easily added to the existing code. Furthermore, it is designed to maximize code reusability by relying on general functions with specialized methods for particular cases. The feasibility of the project is explored through evaluating the performance of popular ab initio methods. It is our hope that this project motivates the usage of Julia within the community and brings new contributions into Fermi.jl.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call