Crates.io | dynast |
lib.rs | dynast |
version | |
source | src |
created_at | 2023-06-23 08:52:02.312343 |
updated_at | 2024-12-06 14:19:05.284065 |
description | Feynman graph topology identification |
homepage | |
repository | https://github.com/a-maier/dynast |
max_upload_size | |
id | 898113 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
dynast is a program for identifying the topologies (or integral families) of Feynman graphs. It is based on nauty and Traces.
If Rust and Cargo are installed on your system, run
cargo install dynast
Precompiled executables are available on github.
dynast reads in Feynman diagrams in a YAML or FORM-based format and, for each diagram, prints its topology and how loop momenta have to be shifted to obtain a uniform assignment of propagator momenta.
Basic usage is
dynast -o outfile.yml diagrams.yml
It is possible to pass more than one input file, for instance
dynast -o outfile.yml topologies.yml diagrams.yml
to ensure the diagrams in diagrams.yml
are mapped onto the
topologies defined in topologies.yml
as far as possible.
Use the -s
flag to allow mapping onto subtopologies, i.e. onto
diagrams where one or more propagators have been contracted.
Use -f
to switch between YAML and FORM output.
--replace-masses
and --replace-momenta
can be used for kinematic
replacements, e.g. --replace-momenta='{p1: q, p2: q}'
to set the
momenta p1
and p2
to q
.
The input in YAML format has the form
diagram0:
- [from0, to0, p0, m0] # first propagator
- [from1, to1, p1, m1] # second propagator
# further propagators ...
---
diagram1:
# propagators ...
from
and to
are non-negative integer vertex labels designating
the start and end of the propagator line. p
is the propagator
momentum (e.g. l1 + q
) and m
its mass. It is allowed to omit
both from
and to
and the same time to denote a scalar product
that is not associated with a graph edge. dynast
will ignore
such scalar products.
The document separator ---
is optional but recommended for large
input files to save memory.
dynast includes a
QGRAF style file
share/qgraf/yaml.sty
that generates the required input. If
several fields have the same mass the corresponding masses in the
QGRAF output have to be adjusted manually.
FORM input files should start with the following line:
* dynast-format: FORM
The remainder of the file should consist of diagram folds:
*--#[ DIANAME:
diagram specification
*--#] DIANAME:
In the diagram specification, only propagator lines of the form
*prop(from, to, field(fieldnr, ...))
with arbitrary extra
whitespace are interpreted. The ellipsis indicates any number of
further arguments. Only the from
, to
, and field
specifications are considered for the topology mapping, and
field
is interpreted as a mass. Use the --replace-masses
option to replace fields by actual masses.
The default YAML output consists of records
diagram: [topology, {l1: p1, ...}]
where diagram
is the diagram name and topology
the first
passed diagram with the same topology. The last part of the entry
indicates how loop momenta have to be replaced to arrive at the
same momentum assignment as in topology
.
Alternatively -f form
to produce output for FORM. In this case,
mapping information is only written for diagrams that have integer
numbers as names. Then, an output file topologies.frm
can be
used as follows:
cf dia;
#include- topologies.frm
* example diagram
* the argument of `dia` should match the name in the dynast input file
local diagrams =
+ dia(1)
* ... diagram information (propagators, vertices)
+ dia(2)
* ... more diagrams
;
id dia(?a) = dia(?a) * topology(?a);
if(match(top(?a$a)) && match(top(?b$b)));
print "the topology of diagram %$ is %$" $a $b;
endif;
* shift momenta to canonical form
id replace(?a) = replace_(?a);
.end
License: GPL-3.0-or-later