WIP on DAG generation

This commit is contained in:
2024-07-16 18:51:09 +02:00
parent 9859c3b928
commit a647801f12
6 changed files with 541 additions and 222 deletions

View File

@@ -9,54 +9,25 @@
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Method definition number_particles(QEDbase.AbstractProcessDefinition, DIR, PT) where {DIR<:QEDbase.ParticleDirection, PT<:QEDbase.AbstractParticleType} in module QEDbase at /home/antonr/.julia/packages/QEDbase/gWHxL/src/interfaces/process.jl:208 overwritten in module FeynmanDiagramGenerator at /home/antonr/repos/FeynmanDiagramGenerator/src/QEDprocesses_patch.jl:23.\n",
"WARNING: Method definition (::Type{QEDcore.ParticleStateful{DIR, SPECIES, ELEMENT} where ELEMENT<:QEDbase.AbstractFourMomentum})(QEDbase.AbstractFourMomentum) where {DIR<:QEDbase.ParticleDirection, SPECIES<:QEDbase.AbstractParticleType} in module QEDcore at /home/antonr/.julia/packages/QEDcore/uVldP/src/phase_spaces/create.jl:7 overwritten in module MetagraphOptimization at /home/antonr/.julia/packages/MetagraphOptimization/mvCVq/src/QEDprocesses_patch.jl:15.\n",
"ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.\n"
]
}
],
"source": [
"using Revise\n",
"using FeynmanDiagramGenerator"
]
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"254-element Vector{VirtualParticle{GenericQEDProcess{Tuple{Photon, Photon, Photon, Photon, Photon, Photon, Photon, Electron}, Tuple{Photon, Electron}}, PT, 8, 2} where PT<:AbstractParticleType}:\n",
" positron: \t00000000 | 11\n",
" electron: \t00000001 | 10\n",
" positron: \t00000010 | 01\n",
" electron: \t00000011 | 00\n",
" positron: \t00000100 | 01\n",
" electron: \t00000101 | 00\n",
" positron: \t00001000 | 01\n",
" electron: \t00001001 | 00\n",
" positron: \t00010000 | 01\n",
" electron: \t00010001 | 00\n",
" ⋮\n",
" electron: \t11100001 | 10\n",
" positron: \t11100010 | 01\n",
" electron: \t11100011 | 00\n",
" positron: \t11100100 | 01\n",
" electron: \t11100101 | 00\n",
" positron: \t11101000 | 01\n",
" electron: \t11101001 | 00\n",
" positron: \t11110000 | 01\n",
" electron: \t11110001 | 00"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"proc = GenericQEDProcess(7, 1, 1, 1, 0, 0)\n",
"proc = GenericQEDProcess(3, 1, 1, 1, 0, 0)\n",
"all_particles = Set()\n",
"for fd in feynman_diagrams(proc) \n",
"for fd in feynman_diagrams(proc)\n",
" push!(all_particles, virtual_particles(proc, fd)...)\n",
"end\n",
"all_particles = sort([all_particles...])\n",
@@ -65,125 +36,27 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dict{VirtualParticle, Vector{Tuple{VirtualParticle, VirtualParticle}}} with 254 entries:\n",
" positron: \t01000010 | 11 => [(photon: \t00000000 | 10, positron: \t01000010 | 01),…\n",
" positron: \t11010000 | 11 => [(photon: \t00000000 | 10, positron: \t11010000 | 01),…\n",
" electron: \t10100011 | 00 => [(photon: \t00000010 | 00, electron: \t10100001 | 00),…\n",
" positron: \t11000000 | 11 => [(photon: \t00000000 | 10, positron: \t11000000 | 01),…\n",
" positron: \t00010100 | 01 => [(photon: \t00000100 | 00, positron: \t00010000 | 01),…\n",
" positron: \t01001000 | 11 => [(photon: \t00000000 | 10, positron: \t01001000 | 01),…\n",
" positron: \t11000110 | 01 => [(photon: \t00000010 | 00, positron: \t11000100 | 01),…\n",
" electron: \t10001011 | 10 => [(photon: \t00000000 | 10, electron: \t10001011 | 00),…\n",
" positron: \t00100000 | 11 => [(photon: \t00000000 | 10, positron: \t00100000 | 01),…\n",
" positron: \t01010000 | 11 => [(photon: \t00000000 | 10, positron: \t01010000 | 01),…\n",
" electron: \t11101001 | 00 => [(photon: \t00001000 | 00, electron: \t11100001 | 00),…\n",
" electron: \t00100101 | 10 => [(photon: \t00000000 | 10, electron: \t00100101 | 00),…\n",
" electron: \t11000101 | 00 => [(photon: \t00000100 | 00, electron: \t11000001 | 00),…\n",
" electron: \t01101001 | 00 => [(photon: \t00001000 | 00, electron: \t01100001 | 00),…\n",
" positron: \t00101000 | 01 => [(photon: \t00001000 | 00, positron: \t00100000 | 01),…\n",
" positron: \t00011000 | 11 => [(photon: \t00000000 | 10, positron: \t00011000 | 01),…\n",
" positron: \t00011010 | 01 => [(photon: \t00000010 | 00, positron: \t00011000 | 01),…\n",
" electron: \t10000101 | 10 => [(photon: \t00000000 | 10, electron: \t10000101 | 00),…\n",
" electron: \t10000111 | 00 => [(photon: \t00000010 | 00, electron: \t10000101 | 00),…\n",
" ⋮ => ⋮"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"pairs = FeynmanDiagramGenerator.particle_pairs(all_particles)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"280-element Vector{Tuple{VirtualParticle, VirtualParticle, VirtualParticle}}:\n",
" (photon: \t00000000 | 10, electron: \t01001011 | 00, positron: \t10110100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00010111 | 00, positron: \t11101000 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00110011 | 00, positron: \t11001100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10111001 | 00, positron: \t01000110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10110101 | 00, positron: \t01001010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11110001 | 00, positron: \t00001110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11010011 | 00, positron: \t00101100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t01001101 | 00, positron: \t10110010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11101001 | 00, positron: \t00010110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10011011 | 00, positron: \t01100100 | 01)\n",
" ⋮\n",
" (photon: \t01000000 | 00, electron: \t00111001 | 00, positron: \t10000110 | 11)\n",
" (photon: \t01000000 | 00, electron: \t00000111 | 10, positron: \t10111000 | 01)\n",
" (photon: \t01000000 | 00, electron: \t00011011 | 00, positron: \t10100100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10101011 | 00, positron: \t00010100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10000111 | 10, positron: \t00111000 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10100101 | 10, positron: \t00011010 | 01)\n",
" (photon: \t01000000 | 00, electron: \t00100111 | 00, positron: \t10011000 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10001101 | 10, positron: \t00110010 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10011101 | 00, positron: \t00100010 | 11)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"triples = FeynmanDiagramGenerator.total_particle_triples(all_particles)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"s: 40320, should be: 40320\n",
"number of triples: 280\n"
]
},
{
"data": {
"text/plain": [
"280-element Vector{Tuple{VirtualParticle, VirtualParticle, VirtualParticle}}:\n",
" (photon: \t00000000 | 10, electron: \t00001111 | 00, positron: \t11110000 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00010111 | 00, positron: \t11101000 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00011011 | 00, positron: \t11100100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00011101 | 00, positron: \t11100010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00100111 | 00, positron: \t11011000 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00101011 | 00, positron: \t11010100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00101101 | 00, positron: \t11010010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00110011 | 00, positron: \t11001100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00110101 | 00, positron: \t11001010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00111001 | 00, positron: \t11000110 | 01)\n",
" ⋮\n",
" (photon: \t01000000 | 00, electron: \t10100101 | 10, positron: \t00011010 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10100111 | 00, positron: \t00011000 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10101001 | 10, positron: \t00010110 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10101011 | 00, positron: \t00010100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10101101 | 00, positron: \t00010010 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10110001 | 10, positron: \t00001110 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10110011 | 00, positron: \t00001100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10110101 | 00, positron: \t00001010 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10111001 | 00, positron: \t00000110 | 11)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"function n(vp::VirtualParticle)\n",
" if !haskey(pairs, vp)\n",
@@ -206,6 +79,15 @@
"\n",
"sort(triples)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"generate_DAG(proc)"
]
}
],
"metadata": {