xmiaocat / ac2o3

Rust implementation of Anderson Acceleration (Pulay Mixing)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ac2O3

CI

Rust implementation of an Anderson Acceleration algorithm based on Ref [1].
Please note: There is an original Matlab implementation as well as a slightly modified implementation in C (including a Python interface) by the authors of the paper.
Ac2O3 is a port of the C implementation to Rust.

Dependencies

Building Ac2O3 requires the following to be installed:

  • OpenBLAS:
    On linux systems you can either install it by just executing sudo apt-get install libopenblas-dev or follow the instructions on the repository page. On macOS OpenBLAS can be installed using HomeBrew: brew install openblas. Make sure that the homebrew path is included in $LIBRARY_PATH. So you might need to execute:
    export LIBRARY_PATH=/opt/homebrew/Cellar/:$LIBRARY_PATH (on Apple Silicon/M1 processors)
    export LIBRARY_PATH=/usr/local/Cellar/:$LIBRARY_PATH (on Intel processors)

References:


[1]: J. Zhang, B. O'Donoghue, and S. Boyd, Globally Convergent Type-I Anderson Acceleration for Non-Smooth Fixed-Point Iterations, 30(4):3170–3197, 2020. SIAM Journal on Optimization

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Rust implementation of Anderson Acceleration (Pulay Mixing)

License:Apache License 2.0


Languages

Language:Rust 100.0%