Installation ============ The recommended way to install **MaxwellLink** is through a conda environment that provides third-party EM solvers and molecular drivers alongside Python 3.9+. Recommended Installation Option --------------------------------- Prerequisites ~~~~~~~~~~~~~~~ - A recent Python (``>=3.9``). **MaxwellLink** is tested with CPython. - A working MPI stack (e.g. MPICH or OpenMPI) whenever you plan to run Meep or **MaxwellLink** under ``mpirun``. - C/Fortran toolchains supplied by your platform if you plan to build drivers such as LAMMPS from source. Create a conda environment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash # Create a fresh conda environment for MaxwellLink CONDA_ENV="mxl" conda create -n "$CONDA_ENV" python=3.13 conda activate "$CONDA_ENV" Install **MaxwellLink** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash pip install maxwelllink This installs the Python package together with the ``mxl_driver`` console entry point used to launch molecular drivers. Optional EM solvers ~~~~~~~~~~~~~~~~~~~~~ Currently, **MaxwellLink** ships with `Meep `_ and a simple single-mode cavity solver. While the built-in single-mode cavity is mainly for prototyping and debugging, `Meep `_ is a full-featured FDTD package suitable for production simulations. One can install `Meep `_ with MPI support via conda: .. code-block:: bash conda install -c conda-forge pymeep="*=mpi_mpich_*" .. note:: Users can also install `Meep `_ from source following the `official instructions `_. Optional driver dependencies ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A two-level system (TLS) model ships with **MaxwellLink** and does not require extra packages. Beyond this lightweight driver, **MaxwellLink** supports several molecular drivers that depend on third-party packages. Install any molecular drivers below that you want to use from the command line. Each molecular driver can be pulled into the same conda environment. .. code-block:: bash # Model Hamiltonians via QuTiP conda install -c conda-forge qutip # Psi4 for RT-TDDFT and Ehrenfest drivers conda install -c conda-forge psi4 # Atomic Simulation Environment (ASE) for classical/MM drivers conda install -c conda-forge ase # LAMMPS driver with fix mxl (installs a custom binary lmp_mxl) mxl_install_lammps The `LAMMPS `_ helper downloads, patches, and builds a `LAMMPS `_ executable that contains ``fix mxl``; alternatively copy the provided ``fix_maxwelllink.cpp`` and ``fix_maxwelllink.h`` files in source code (src/maxwelllink/mxl_drivers/lammps/) into your existing `LAMMPS `_ build and recompile. Install **MaxwellLink** from source -------------------------------------- In the same conda environment, if you are interested in understanding and contributing to **MaxwellLink**, clone the repository and install the package: .. code-block:: bash git clone https://github.com/TaoELi/MaxwellLink.git cd MaxwellLink pip install . Enter the developer mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Install developer dependencies to set up a development environment: .. code-block:: bash pip install ".[dev]" Testing and Validation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ After contributing to the code, add a test file in the ``tests/`` folder and run the test suite to ensure everything works as expected. Use ``pytest`` to run the tests. From the root directory of the repository, run: .. code-block:: bash # Run the fast tests (TLS under socket/non-socket modes) pytest -m core -v # Run the optional Psi4 and QuTiP tests when the dependencies are available pytest -m "optional or slow" -v If the optional tests are skipped, confirm that the corresponding packages were installed or adjust your ``PYTHONPATH`` so that the drivers can import them. Build the Documentation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The documentation can be built locally. Use the optional `docs` extra to install the Sphinx toolchain: .. code-block:: bash pip install ".[docs]" Then generate the API and HTML pages using Sphinx and open them in your default browser: .. code-block:: bash make doc html