Skip to content

CianLM/SymbolicQuantumFieldTheory.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SymbolicQuantumFieldTheory.jl

Build Status

Symbolic Quantum Field Theory in Julia

This package is in active development and is not production ready. Feel free to reach out with suggestions/issues.

Documentation is under construction. See test.ipynb for LaTeX printing and more example usage.

Basic Syntax

using QFT
using Symbolics
@operator ScalarField a
@syms p q

where a is the name of the operator and p and q are the momenta.

We can use these objects with

comm(a(p),a(q)')
normalorder(a(p) * a(q)')
a(p)'^2 * a(q)' * vacuum()
ℋ = E(q) * a(q)' * a(q)
integrate(ℋ * a(p)', q)

which returns $2\pi * E(p) a_p^\dagger \ket{0}$ in a Jupyter notebook and 2π*E(p)a_p^†|0⟩ otherwise.

Defining a Custom Commutation Relation

We can define a custom commutation relation between operators in a field using a natural syntax with the @comm macro.

Note. To do this we need to

import QFT.comm

as the comm function will be overloaded with your custom relation.

Then,

@field YourField
@operators YourField b c
@comm [b(p), c(q)'] = f(p,q)

for any f(p,q). This defines the commutation relation such that the commutator is now given by

@syms k l 
comm(b(k), c(l)') # returns f(k,l)

where Julia has replaced p and q with k and l appropriately. Multiple indices are also supported with @comm [b(p,q), c(r,s)'] = f(p,q,r,s).