Welcome to Polyorder.jl
Polyorder.jl is a high-performance, next-generation Self-Consistent Field Theory (SCFT) simulation platform for polymer systems, written entirely in pure Julia. It is the modern successor to the C++ library polyorder, redesigned from the ground up to leverage Julia's powerful type system, multiple dispatch, and extensive package ecosystem.
Note: This package is under active development. While robust for research, APIs may evolve as we introduce new features.
Why Polyorder.jl?
Polyorder.jl aims to bridge the gap between rapid prototyping and high-performance computing in polymer physics. Whether you are exploring novel block copolymer architectures on your laptop or running massive 3D simulations on a GPU cluster, Polyorder.jl provides a unified, efficient, and extensible platform.
Key Features
- ⚡ State-of-the-Art Algorithms: Polyorder.jl implements several bleeding edge MDE solvers (ETDRK4) and preconditioned accelerators (Anderson-ETD, NGMRES, OACCEL). It also features SOTA methods (RQM4, Anderson) and a vast library of iterative algorithms—spanning baseline (SD), spectral (SIS, ETD), predictor-corrector (ETDPEC, EMPEC, PO), accelerators, and custom preconditioned accelerators.
- 🚀 GPU Acceleration: Seamless, device-agnostic support via AcceleratedKernels.jl. Write your simulation code once and run it on CPUs, NVIDIA GPUs, and other hardware accelerators without modification.
- 💾 Low Memory Mode: Advanced Checkpointing and Shared Cache algorithms allow you to run high-resolution 3D simulations (e.g., $128^3$ or larger) on consumer-grade hardware by trading a small amount of compute time for massive memory savings (up to 80% reduction).
- 🧩 Flexible Architectures: Support for arbitrary block copolymer topologies (linear, star, comb, cyclic) and multicomponent blends via a graph-based molecular representation.
- 📦 Modern Ecosystem: Easily extensible and fully compatible with the Julia scientific stack (e.g.,
Optim.jlfor free energy minimization,FFTW.jlfor spectral transforms). - 🔄 Variable Cell Optimization: Built-in routines for unit cell optimization to find equilibrium domain periods and symmetries.
- 💎 Symmetry Adapted Solution: Support for all 1D/2D/3D space groups to enforce symmetries of phase structures in a unit cell.
Getting Started
Ready to dive in?
- First time? Check out the Tutorial for a step-by-step introduction.
- Deep dive? Explore the User Guides:
- Basics - Core concepts and setup.
- Microphase Separation - Finding ordered phases.
- GPU Acceleration - Running on graphics cards.
- Low Memory Mode - Running massive simulations.
- Reference? Browser the complete API Reference.
Contribute
We welcome contributions from the community!
- 🌟 Star the repository on GitHub to show your support.
- 🐛 Report issues or feature requests on the Issue Tracker.
- 🔧 Submit pull requests to improve code or documentation.
Author: Yi-Xin Liu (lyx@fudan.edu.cn) and Polyorder Lab @Fudan University.