diff -r 7ec1cfe19a24 -r a4137aedcb3a README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Thu Feb 26 09:32:12 2026 -0500 @@ -0,0 +1,96 @@ + +# Pointsource-PDE + +## Prerequisites + +## Installation and usage + +### Installing dependencies + +Python dependencies are managed Conda and by the Cargo build system of [Rust]. +On some platforms, you can use alternative methods. + +#### Phase 1: Python + +##### Most platforms: + +- Fenicsx installed in Conda according to instructions +- SciFEM and SciPY (`conda install conda-forge::scifem conda-forge::scipy`) + +##### Debian/Ubuntu + +You may br able to use the system package manager instead of Conda, but beware of obsolete versions. + +#### Phase 2: Rust + +You will only need to install the “nightly” Rust compiler and the +[GNU Scientific Library] manually. At the time of writing this README, +[alg_tools] also needs to be downloaded separately. + +1. Install the [Rust] infrastructure (including Cargo) with [rustup]. +2. Install a “nightly” release of the Rust compiler. With rustup, installed in + the previous step, this can be done with + ```console + rustup toolchain install nightly + ``` +3. Install [GNU Scientific Library]. On a Mac with [Homebrew] installed, + this can be done with + ```console + brew install gsl + ``` + For other operating systems, suggestions are available in the [rust-GSL] + crate documentation. If not correctly installed, you may need to pass + extra `RUSTFLAGS` options to Cargo in the following steps to locate the + library. + +4. Download [alg_tools] and unpack it under the same directory as this + package. + + [rustup]: https://rustup.rs + [alg_tools]: https://tuomov.iki.fi/software/alg_tools/ + [Rust]: https://www.rust-lang.org/ + [GNU Scientific Library]: https://www.gnu.org/software/gsl/ + [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/ + [Homebrew]: https://brew.sh + [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991 + [arXiv:2502.12417]: https://arxiv.org/abs/2502.12417 + [doi:10.46298/jnsao-2023-10433]: http://doi.org/10.46298/jnsao-2023-10433 + +### Building and running the experiments + +To compile and install the program, use +```console +cargo install --path=. +``` +When doing this for the first time, several dependencies will be downloaded. +Now you can run the default set of experiments with +``` +pointsource_pde -o results +``` +The `-o results` option tells `pointsource_pde` to write results in the +`results` directory. The option is required. + +Alternatively, you may build and run the program without installing with +```console +cargo run --release -- -o results +``` +The double-dash separates the options for the Cargo build system +and `pointsource_pde`. + +### Documentation + +Use the `--help` option to get an extensive listing of command line options to +customise algorithm parameters and the experiments performed. + +## Internals + +If you are interested in the program internals, the integrated source code +documentation may be built and opened with +```console +cargo doc # build dependency docs +misc/cargo-d --open # build and open KaTeX-aware docs for this crate +``` +The `cargo-d` script ensures that KaTeX mathematics is rendered in the +generated documentation through an ugly workaround. Unfortunately, +`rustdoc`, akin to Rust largely itself, is stuck in 80's 7-bit gringo ASCII +world, and does not support modern markdown features, such as mathematics.