Skip to content

Commit

Permalink
Merge branch 'pr-madqc' of github.com:m-a-d-n-e-s-s/madness
Browse files Browse the repository at this point in the history
  • Loading branch information
ahurta92 committed Jul 22, 2024
2 parents cdd6e68 + 4044e2f commit f5e23cc
Show file tree
Hide file tree
Showing 24 changed files with 3,422 additions and 4 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
build*
cmake-build-debug*
.history*
output_dir


# Compiled Object files
*.slo
Expand Down
1 change: 1 addition & 0 deletions src/apps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ add_subdirectory(dirac)
add_subdirectory(mp2)
add_subdirectory(cc2)
add_subdirectory(oep)
add_subdirectory(madqc)
add_subdirectory(znemo)
add_subdirectory(zcis)
#add_subdirectory(hf)
Expand Down
6 changes: 6 additions & 0 deletions src/apps/madqc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# src/apps/moldft

add_mad_executable(madqc madqc.cc "MADchem")
add_dependencies(applications-madness madqc)

install(TARGETS madqc DESTINATION "${MADNESS_INSTALL_BINDIR}")
20 changes: 20 additions & 0 deletions src/apps/madqc/doc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
62 changes: 62 additions & 0 deletions src/apps/madqc/doc/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

project = "maddft"
copyright = "2024, Adrian Hurtado"
author = "Adrian Hurtado"

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = [
"myst_parser",
"sphinx_copybutton",
"sphinxcontrib.bibtex",
"sphinx.ext.mathjax",
]
latex_engine = 'xelatex'
latex_elements = {
'preamble': r'''
\usepackage{physics},
'''
}
latex_additional_files = ['mra.sty']



myst_enable_extensions = [
"dollarmath", # Allows $ symbols for math expressions
"amsmath", # Enables support for amsmath LaTeX environments
"deflist", # Enables definition lists

# add other extensions as needed
]


templates_path = ["_templates"]
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]

source_suffix = {
".rst": "restructuredtext",
".md": "markdown",
}


# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

# html_theme = "alabaster"
#html_theme = "pydata_sphinx_theme"
html_theme = "sphinx_rtd_theme"


#html_static_path = ["_static"]

bibtex_bibfiles = ["references.bib"]
bibtex_default_style = "plain"
bibtex_reference_style = "label"
74 changes: 74 additions & 0 deletions src/apps/madqc/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
.. maddft documentation master file, created by
sphinx-quickstart on Tue Apr 30 14:32:26 2024.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to madqc's documentation!
==================================

.. toctree::
:maxdepth: 2
:caption: Contents:

installation.rst
quickstart.rst
references.rst
usage/calculation_structure.rst
usage/qcengine_interface.rst
usage/response_properties.rst
usage/property_examples.rst

Multiresolution Quantum Chemistry Interface
-----------------------------------------------

The goal of this project is to provide a unified interface for computing with the various quantum chemistry applications available within MADNESS.
The motivation for this project is make MADNESS more accessible to the quantum chemistry community, providing them a platform to compute
benchmark quality results with minimal effort. Towards easy access, we aim to make this interface compatible with QCEngine, given
users the ability define and run their computations from python jupyter notebooks.

Currently, the interface is designed to work with :code:`moldft` and :code:`molresponse` in order to compute Hartree-Fock and DFT ground and response properties including excited states.
Future work will include additional quantum chemistry methods.

Why we need MADQCEngine?
------------------------

In the currently implemtation, all quantum chemistry methods are seperate executables, even though many of them depend on
each other. For example, in order to compute a response property, which depends both on ground and response states, the current procedure
is to first compute the ground state using :code:`moldft` and then compute the response property using :code:`molresponse`.
To do this properly, a user necessarily needs to manage details such as
where to place the response calculation in relation the ground state calculation, and how to pass the ground state calculation.
Further complications arise when trying to compute response states at multiple frequencies, or higher order response properties which
depend on a mixture of multiple ground and response states. Currently the locations of all files where managed outside of the
code base which can be a cumbersome process.

Instead, MADQCEngine aims to provide a unified interface to manage all of these details for the user. The user can simply define their
calculation, and the interface will manage the details of where to place the files in a consistent manner. Additionally, the interface
will contain logic to manage the restart of files as well as whether or not to overwrite files during restarts. For ease of use,
all outputs will be stored json files and will include a :code:`calc_paths.json` file which will contain the paths to all of the
files generated during the calculation.


Getting Started
---------------

This documentation will guide you through the features, setup, and use of MADQCEngine. Here's how to get started:

1. **Installation**: Learn how to install MyProject on your machine. See :doc:`installation`.
2. **Quick Start**: Jump straight into using MyProject with our Quick Start guide. See :doc:`quickstart`.
3. **Reponse Properties** Learn how to compute HF/DFT response properties. See :doc:`usage/response_properties`.
4. **Calculation Structure** Learn how :code:`madqce` manages calculations and where to find the output files. See :doc:`usage/calculation_structure`.
5. **Interfacing with QCEngine** Learn how to interface with QCEngine. See :doc:`usage/qcengine_interface`.
6. **Property Examples** Learn how to compute specific properties using MADQCEngine. See :doc:`usage/property_examples`.

Navigate through the documentation using the sidebar. Each section is designed to help you understand and use MyProject effectively.


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`



4 changes: 4 additions & 0 deletions src/apps/madqc/doc/installation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Installation
=============


35 changes: 35 additions & 0 deletions src/apps/madqc/doc/make.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)

if "%1" == "" goto help

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd
Loading

0 comments on commit f5e23cc

Please sign in to comment.