Modeling and Simulation
General modeling and simulation packages in Julia.
Organizations
See also
Resources
- SciMLTutorials.jl : Tutorials for doing scientific machine learning (SciML) and high-performance differential equation solving with open source software.
- Workshop for
ModelingToolkit.jl: A Youtube video for JuliaCon 2021.
File IO
- CellMLToolkit.jl : a Julia library that connects
CellMLmodels to the Scientific Julia ecosystem. - FMIExchange.jl : load Model Exchange Functional Mock-up Units (FMUs) and simulate them using the
DifferentialEquations.jlpackage. - ReactionNetworkImporters.jl : Loading BioNetGen
.netfile. - 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
- CommonSubexpressions.jl : Naïve combined subexpression elimination in Julia.
- Reduce.jl : Symbolic parser generator for Julia language expressions using REDUCE algebra term rewriter.
- Symata.jl : language for symbolic mathematics.
- SymbolicRegression.jl : Distributed High-Performance symbolic regression in Julia.
- Symbolics.jl : A fast and modern CAS for a fast and modern language.
- SymEngine.jl : Julia wrappers of https://github.com/symengine/symengine.
- SymPy.jl : Julia interface to SymPy via
PyCall.jl. - SymPyPythonCall.jl : Julia interface to SymPy via
PythonCall.jl.
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
- ModelingToolkitDesigner.jl : A helper tool for visualizing and editing a
ModelingToolkit.jlsystem connections. - ModelingToolkitSampledData.jl : A standard library with discrete-time components for ModelingToolkit. It requires
JuliaSimCompiler.jl, a proprietary product. JuliaCon 2024 video - Pathogen.jl : Utilities to simulate and perform inference of disease dynamics.
- SciMLSensitivity.jl : A component of the DiffEq ecosystem for sensitivity analysis.
- Surrogates.jl : Surrogate modeling and optimization.
Partial Differential Equations
- Wikipedia: Finite difference method
- Wikipedia: Finite element method
- Wikipedia: Finite volume method
- https://github.com/PtFEM/PtFEM.jl : Book “Programming the Finite Element Method” by I M Smith, D V Griffiths and L Margetts.
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 :
FinEtoolsis 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)
- Wikipedia: Fluid Dynamics
- Blog post about CFD tutorial in julia
- WaterLily.jl : a simple and fast fluid simulator written in pure Julia.
Steady state solutions
- HomotopyContinuation.jl: solving systems of polynomial equations by numerical homotopy continuation.
- NonlinearSolve.jl : Fast implementations of root finding algorithms in Julia using the SciML common interface.
- SteadyStateDiffEq.jl: Solvers for steady states in differential equations.
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
- 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.jlandDifferentialEquations.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
- BifurcationKit.jl : Bifurcation Analysis in Julia.
- DataInterpolations.jl : Data interpolation and smoothing functions.
- DrWatson.jl : dealing with simulations and simulation parameters.
- ProgressLogging.jl : a package for defining progress logs, supported by REPL (TerminalLoggers.jl), VS Code, Pluto.
- SciMLBenchmarks.jl : Benchmarks for scientific machine learning (SciML) software and differential equation solvers. Benchmark results
- SimulationLogger.jl : providing convenient logging tools for
DifferentialEquations.jl. - SimulationLogs.jl : Signal logging and scoping for
DifferentialEquations.jlsimulations.
Parameter estimation
- DiffEqParamEstim.jl : a package for simplified parameter estimation with
DifferentialEquations.jl. - PEtab.jl: Create parameter estimation problems for ODE models
- PhysicsInformedRegression.jl : solving inverse problems (parameter estimation) using physics informed regression. It requires well-defined derivatives. JuliaCon 2024 video
- SciMLSensitivity. : sensitivity analysis and parameter estimation.
Others
- ControlSystems.jl : A Control Systems Toolbox for Julia.
- FMI.jl : integrating the Functional Mock-Up Interface.
- Mads.jl : MADS, Model Analysis & Decision Support.
- OMJulia.jl : Julia scripting OpenModelica interface.