Modeling and Simulation

General modeling and simulation packages in Julia.

Organizations

See also

Resources

File IO

  • CellMLToolkit.jl : a Julia library that connects CellML models to the Scientific Julia ecosystem.
  • FMIExchange.jl : load Model Exchange Functional Mock-up Units (FMUs) and simulate them using the DifferentialEquations.jl package.
  • ReactionNetworkImporters.jl : Loading BioNetGen .net file.
  • SBML.jl : Julia interface to the Systems Biology Markup Language (SBML) library.
  • SBMLToolkit.jl : importing models specified in the Systems Biology Markup Language (SBML) into the Julia SciML ecosystem.

Symbolic Computation

Wikipedia: Symbolic Computation

Data structures

Differential equations

Wikipedia: Differential equations

Frameworks

  • CadCAD.jl : Complex Adaptive Dynamics Computer Aided Design (CadCAD) is a language for encoding Generalized Dynamical Systems (GDS) as computer programs. The Julia implementation is based on its Python counterpart.
  • Catalyst.jl : Domain-specific language (DSL) for chemical reaction networks.
  • ConcurrentSim.jl : A discrete event process oriented simulation framework written in Julia.
  • DifferentialEquations.jl : High-performance solvers of differential equations.
  • Dyad.jl : Modern Modeling and Simulation powered by Machine Learning (formerly JuliaSim). Julia forum thread
  • ModelingToolkit.jl : A modeling framework for automatically parallelized scientific machine learning (SciML) in Julia.
  • Modia.jl : Modia is a Julia package for modeling and simulation of multidomain engineering systems described by differential equations, algebraic equations, and (space-discretized) partial differential equations.

Algorithms

  • DAECompiler.jl : the core compiler engine of the Cedar EDA platform. It provides a domain-agnostic framework for high-performance simulation of Differential Algebraic Equations (DAEs). JuliaCon 2024 video
  • DataDrivenDiffEq.jl : Data driven modeling and automated discovery of dynamical systems.
  • FdeSolver.jl : A Julia package for the numerical solution of fractional differential equations (FDEs) as well as systems of equations.
  • HarmonicBalance.jl : solving nonlinear differential equations using the harmonic balance method.
  • ProbNumDiffEq.jl : Probabilistic Numerical Differential Equation solvers via Bayesian filtering and smoothing. JuliaCon 2024 video
  • QuDiffEq.jl : Quantum Algorithms for solving differential equations
  • RiemannHilbert.jl : A Julia package for solving a Riemann–Hilbert problem, a certain type of boundary value problem.
  • SingularIntegralEquations.jl : An experimental Julia package for solving singular integral equations.
  • Sundials.jl : A Julia package that interfaces to the Sundials library and includes a nonlinear solver (KINSOL), ODE’s (CVODE), and DAE’s (IDA).

Utilities

Partial Differential Equations


Frameworks ModelingToolkit.jl supports finite difference method via MethodOfLines.jl.

  • Gridap.jl : Grid-based approximation of PDEs with finite element (FE) discretization.
  • JuliaFEM.jl : Finite Element method solver.
  • PETSc.jl : A Julia interface for PETSc.
  • Trixi.jl : Adaptive high-order numerical simulations of hyperbolic PDEs in Julia.  JuliaCon 2021 video
  • VoronoiFVM.jl : Solution of nonlinear multiphysics partial differential equation systems using the Voronoi finite volume method.

Utilities

  • ClimaCore.jl : Tools for building spatial discretization. JuliaCon 2021 video
  • FEMBasis.jl : Package contains interpolation routines for standard finite element function spaces.
  • FinEtools.jl : FinEtools is a package for basic operations on finite element meshes: Construction, modification, selection, and evaluation of quantities defined on a mesh.
  • FourierFlows.jl : Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains.
  • Heptapus.jl : The roofline function is a translation of the roofline code, Accelerated finite element flow solvers.
  • Krylov.jl : A Julia Basket of Hand-Picked Krylov Methods.
  • LinearAlgebraicRepresentation.jl : Official Julia implementation of LAR, the Linear Algebraic Representation for Solid Modeling. LAR is a general representation scheme for geometric and topological modeling.
  • MethodOfLines.jl : Automatic Finite Difference PDE solving with Julia.
  • ParallelStencil.jl : writing high-level code for parallel high-performance stencil computations that can be deployed on both GPUs and CPUs.

Computational Fluid Dynamics (CFD)


  • WaterLily.jl : a simple and fast fluid simulator written in pure Julia.

Steady state solutions

Universal Differential Equations

When differential equations meet neural networks

  • DiffEqFlux.jl : Combining DifferentialEquations.jl and Flux.jl as its building blocks to support research in Scientific Machine Learning, specifically neural differential equations and universal differential equations.
  • NeuralOperators.jl : Learning the solution operator for partial differential equations in pure Julia.
  • NeuralPDE.jl : Physics-Informed Neural Networks (PINN) and Deep BSDE Solvers of Differential Equations.
  • UniversalDiffEq.jl : builds Universal Differential Equations (UDEs) to learn nonlinear dynamics from time series data.

Stochastic algorithms

Wikipedia: Stochastic simulation algorithms (SSA) are also included in the DifferentialEquations ecosystem.

  • BioSimulator.jl : A stochastic simulation framework in Julia.
  • Gillespie.jl : Stochastic Gillespie-type simulations using Julia.
  • JumpProcesses.jl: Build and simulate jump equations like Gillespie simulations and jump diffusions with constant and state-dependent rates and mix with differential equations.
  • StochasticDiffEq.jl : Solvers for stochastic differential equations in the SciML ecosystem.

Difference Equations

  • DynamicalSystems.jl : Julia software library for the exploration of chaos and nonlinear dynamics.

Agent-based models

Wikipedia: Agent-based model

  • Agents.jl : Agent-based modeling framework in Julia.
  • DynamicalBilliards.jl : An easy-to-use, modular and extendable Julia package for Dynamical Billiard systems in two dimensions.

Network modeling

  • ACME.jl : Analog Circuit Modeling and Emulation for Julia.
  • NetworkDynamics.jl : A package for working with dynamical systems on complex network, providing an interface between Graphs.jl and DifferentialEquations.jl.
  • Petri.jl : Petri net modeling framework.
  • PowerDynamics.jl: Package for dynamical modeling of power grids, based on NetworkDynamics.jl.
  • PowerSimulations.jl : Julia for optimization simulation and modeling of PowerSystems.
  • PowerSystems.jl : Data structures in Julia to enable power systems analysis.
  • TrafficAssignment.jl: Julia package for finding traffic user equilibrium flow.

Utilities

Parameter estimation

Others