FAQs

This page collects frequently asked questions pertaining to NWChemEx’s Design.

Overall Design

Why So Many Repos?

When transitioning from developing a more traditional electronic structure package to NWChemEx, one of the first observations developers make is that there are a lot of repos. The motivation behind this is a separation of concerns and to enforce a decoupled nature to the source code. Each repo is designed to be a reusable component. It is our hope that such a code factorization will facilitate adoption of these components by other codes. Even if our components are never adopted by other codes, a component-based design still benefits us by making it easier to refactor if need be.

General

So Where’s “NWChemEx”?

Having a bunch of individual repos is great for developers, but confusing to users. Users only need to build the NWChemEx repo. Building this repo will build all dependencies which are required to have the complete NWChemEx electronic structure package. The result of building NWChemEx is a set of Python bindings. There is no “NWChemEx” executable, rather users use the Python module.