# Julia's Physics Ecosystem

## Dealing with physical quantities

`JuliaPhysics`

:`Measurements.jl`

: Error propagation library`PhysicalConstants.jl`

: Collection of fundamental physical constants, with physical units and uncertainties`PeriodicTable.jl`

: Periodic Table for Julians

`Unitful.jl`

: Physical quantities with arbitrary units`NaturallyUnitful.jl`

: Facilities for using natural units with`Unitful.jl`

`UnitfulAstro.jl`

: An extension of Unitful.jl for astronomers.`BinningAnalysis.jl`

: Standard error estimation tools for correlated data

## Differential equations

`DifferentialEquations.jl`

: Julia suite for high-performance solvers of differential equations`DiffEqPhysics.jl`

: A library for building differential equations arising from physical problems`DiffEqOperators.jl`

: Linear operators for discretizations of differential equations`ModelingToolkit.jl`

: A toolkit for modeling and creating DSLs for Scientific Computing in Julia

### TODOS here

Short tutorial with common physics problems

Overview of DiffEqPhysics and FDM with DiffEq

how to use ModellingToolkit by @ChrisRackauckas and @HarrisonGrodin if possible...with special reference to constructing systems of diffeq programatically

## Dynamical systems

`DynamicalSystems.jl`

: A Julia software library for nonlinear dynamics: Delay embeddings, recurrence analysis, chaos (e.g. Lyapunov exponents) and interactive applications.`DynamicalBilliards.jl`

: Feature-full library for billiards in two dimensions, with support for plotting/animating

`PyDSTool.jl`

: A wrapper for the PyDSTool library`CausalityTools.jl`

: a framework for detecting causal relations between timeseries.`Reachability.jl`

: approximating the reachable states and checking safety properties of affine systems.`Agents.jl`

: Agent-based modelling, cellular automata.

## Astronomy

## Quantum Physics

`Yao.jl`

: Extensible, Efficient Quantum Algorithm Design for Humans.`QuantumInformation.jl`

A Julia package for numerical computation in quantum information theory`QuantumInfo.jl`

`QuantumLab.jl`

A workbench for Quantum Chemistry and Quantum Physics in Julia`QuantumOptics.jl`

: Library for the numerical simulation of closed as well as open quantum systems.`QuantumBayesian.jl`

Julia package for simulating quantum evolution efficiently, including the quantum Bayesian approach to stochastic measurement update and continuous readout.`MonteCarlo.jl`

Classical and quantum Monte Carlo simulations in Julia`RandomQuantum.jl`

sample from various random matrix ensebles associated with quantum information applications.- QuantumWalk.jl QuantumWalk.jl is a package for Julia programming language implementing models of quantum continuous and discrete walks used for performing quantum spatial search.

## Finite element analysis

`JuAFEM.jl`

: Finite element toolbox for Julia`JuliaFEM.jl`

: Framework for the distributed processing of large Finite Element Models across clusters of computers using simple programming models`FENiCS.jl`

: A wrapper for the FEniCS Finite Element library

## Solid state

`JuliaAtoms`

: Atomic physics`AtomicLevels.jl`

: A library used to define electronic configurations constructed from electronic orbitals in spherical symmetry.`Atoms.jl`

: Data structures for representing atoms in a product space of orbitals and a radial grid. The radial grid can be any implementation of the`ContinuumArrays.jl`

interface.`EnergyExpressions.jl`

: A library for setting up the energy expression of a system built up from a set of configurations. At the moment, the implementation is geared towards atomic systems (in that it uses data structures from AtomicLevels.jl), but it is applicable to other systems as well, such as molecules.`SCF.jl`

: A library for the solution of integro-differential eigenproblems, in a self-consistent manner.`AngularMomentumAlgebra.jl`

: A library for the special case of energy expressions in spherical symmetry.`AtomicPotentials.jl`

Provides structures for modelling the atomic nucleus as a potential.

`libAtoms`

: Materials-modelling + FEM orientated libraries`JuLIPMaterials`

: collection of Julia tools for materials science`CarrierCapture.jl`

: Semi-classical recombination in semiconductors.`PolaronMobility.jl`

: Feynman variational path-integral model for the Fröhlich polaron`CoulombIntegrals.jl`

: A library that implements the calculation of the Coulombic repulsion between pairs of electrons.`MatrixFactorizations.jl`

Wrappers around the solvers from`IterativeSolvers.jl`

that can be used as lazy factorizations.`PseudoPotentials.jl`

: Model potentials used to reduces calculation complexity by representing a core of electrons in a mean-field sense. This can turn a multi-electron problem into an approximate few- or single-electron problem.`MonteCarlo.jl`

: Classical and quantum Monte Carlo simulations in Julia`WignerSymbols.jl`

: Compute Wigner's 3j and 6j symbols, and related quantities such as Clebsch-Gordan coefficients and Racah's symbols.

## Tensors

`ITensors.jl`

: A Julia library for efficient tensor and tensor network calculations`TensorOperations.jl`

: Julia package for tensor contractions and related operations`Einsum.jl`

: Einstein summation notation in Julia- That new Einsum library for more automatic differentiation?

## Radiation detectors

`RadiationSpectra.jl`

: Toolkit for analysis of radiation spectra in Julia`RadiationDetectorSignals.jl`

: Data types for signals of radiation detectors`RadiationDetectorDSP.jl`

: Digital signal processing for radiation detectors

## Plotting

Visualization is one of the most important tools in our toolkit. There are three main plotting packages in Julia:

`Plots.jl`

: Very intuitive and convenient, Plots.jl is a wrapper around several plotting backends. Plots tries to figure out what you*want*it to do, not just what you tell it.`Makie.jl`

: Built around the idea of fast, interactive plotting utilizing the speed of OpenGL and the GPU (and WebGL now),`Makie.jl`

is a next-generation plotting package which offers superior interactivity and speed. It's great for building interactive or animated visualzations with minimal overhead, but the time to first plot is a little slow compared to Plots, and it isn't*quite*as feature-complete. Written in pure Julia.`PyPlot.jl`

: A wrapper around the PyPlot interface to the popular Python plotting library`matplotlib`

.