Software

Scientific software development plays a central role in our research group. Along with the ongoing research, we have developed various scientific computing software to carry out the actual tasks. The software are coded in various programming languages, such as Julia, C/C++, Python, Matlab, and Fortran. Currently, we are almost exclusively using Julia for new projects.
Software ecosystem diagram

Some listed software are open sourced. More will be open sourced as they become mature. Please check our github.com account for the latest updates.

Scientific Computing

Polyorder.jl

Julia

High-performance, next-generation SCFT simulation platform for polymer systems

  • Bleeding edge MDE solvers (ETDRK4) and preconditioned accelerators (Anderson-ETD, NGMRES, OACCEL)
  • GPU acceleration: device-agnostic support via AcceleratedKernels.jl
  • Low memory mode: checkpointing and shared cache for up to 80% memory reduction
  • Flexible architectures for arbitrary block copolymer topologies (linear, star, comb, cyclic)
  • Variable cell optimization and symmetry adapted solution for all 1D/2D/3D space groups

Polyorder Web App

Julia

Web-based interface for running and managing Polyorder.jl simulations

  • Complete web interface for SCFT simulation configuration
  • Real-time simulation monitoring with live convergence plots
  • Thread-safe distributed worker pool
  • Block copolymer library with pre-defined architectures
  • Seed library with rich set of pre-defined seeds
  • User management and simulation history tracking

Scattering.jl

Julia

Julia library for computing scattering and diffraction of nanoparticles, crystals, and clusters

  • Form factor of single particles and collections of particles
  • Structure factor and scattering curves of crystals
  • Translation, rotation, and symmetry operations on particles
  • Unit cell and space group support for 1D, 2D, and 3D crystals

PhaseDiagram.jl

Julia

Julia library for computing phase diagrams of block copolymers, blends, and solutions

  • Microphase separation phase boundary computation
  • Macrophase separation coexistence (binodal) boundary computation
  • Integration with Polyorder.jl as SCFT solver backend

Polymer.jl

Julia

Common interface for describing polymer systems with arbitrary architectures

  • Graph-based representation for arbitrary block copolymer topologies
  • Convenient constructors for common polymer chains and multicomponent blends
  • Serialization and configuration via YAML files
  • Control parameters for systematic phase diagram construction

Installation

1
2
julia> ]
pkg> add Polymer

PolymerArchitecture.jl

Julia

Graph representation and symmetry analysis of polymer architectures

  • Automatic identification of equivalent and semi-equivalent sub-architectures
  • Architecture type classification (linear, star, comb, etc.)
  • Symmetry reduction for polymer field-theoretic simulations (SCFT and FTS)
  • Integration with Polymer.jl

CubicHermiteSpline.jl

Julia

Cubic Hermite spline interpolation for 1D and 2D data

  • Univariate and bivariate interpolation
  • Gradient calculations

Installation

1
2
julia> ]
pkg> add CubicHermiteSpline

AcceleratedDCTs.jl

Julia

Fast, device-agnostic, AbstractFFTs-compatible DCT library for 1D/2D/3D data

  • High performance: optimized Makhoul's method outperforming standard separable approaches
  • Device agnostic: runs on CPU (multithreaded) and GPU (CUDA, AMD via KernelAbstractions)
  • VkDCT backend: VkFFT-based CUDA library for DCT-I offering ~15x speedup on GPU
  • AbstractFFTs compatible with zero-allocation Plan support
  • Specialized 3D kernels avoiding redundant transposes

Installation

1
2
julia> ]
pkg> add AcceleratedDCTs

CrystallographicFFT.jl

Julia

Exploit crystallographic symmetry to compute FFTs on 3D periodic grids up to 28× faster

  • Up to 28× speedup over full-grid FFT for highly symmetric space groups
  • All 230 space groups supported
  • GPU acceleration via CUDA weak extension
  • R2C FFT transforms for further memory and compute savings
  • SCFT-ready with built-in diffusion kernel and stress helpers
  • Zero-allocation execution with pre-allocated plans

Installation

1
2
julia> ]
pkg> add CrystallographicFFT

Utility

MakiePublication.jl

Julia

Publication quality figures using Makie.jl

  • Custom themes for major publishers
  • 15 color palettes
  • Hollow markers support

PolymerArchitectureMakie.jl

Julia

Visualization of polymer architectures using GraphMakie.jl

  • Integration with PolymerArchitecture.jl
  • Customizable visual styles

mpltex

Python

Python package for creating publication-quality plots

  • ACS style plots
  • Presentation and web styles
  • Tableau color scheme

Legacy

PolyOrder

C++

C++ library for polymer self-consistent field theory (deprecated)

  • Non-orthogonal unit cell support
  • Weakly charged polymers support

cheb++

C++

C++ library for Chebyshev polynomials

  • Chebyshev differential matrix
  • Clenshaw-Curtis quadrature

scftpy

Python

Python package for polymer SCFT calculations

  • Confined polymer simulations
  • Polymer brush simulations

chebpy

Python

Python package for spectral methods of PDEs

  • Chebyshev series construction
  • Fast Chebyshev transform

PyDiagram

Python

Python package for generating phase diagrams

  • Polyorder and PolyFTS file support
  • Free energy analysis
  • Phase boundary plotting

gyroid

Python

Python package for symmetry adapted basis functions

  • 1D, 2D and 3D symmetry groups
  • Structure renderer

NGPy

Python

Web application for nucleation and growth simulations

  • Online simulation and analysis
  • Web framework for custom applications