Giter Club home page Giter Club logo

forcer's Introduction

DOI

Forcer

Forcer is a FORM program for the integration of massless four-loop propagator diagrams.

Forcer reduces integrals using parametrically solved IBP identities, similar to the three-loop Mincer program. Forcer has been used for the computation of the finite pieces of four-loop propagators and vertices, Mellin moments of splitting functions and coefficient functions, and for the computation of the five-loop beta function for Yang-Mills theory with fermions.

More information about the Forcer program can be found in our research paper. If you use this software, please cite our work.

Authors

Forcer was written by Ben Ruijl, Takahiro Ueda, and Jos Vermaseren. This work has been supported by the ERC Advanced Grant no. 320651, HEPGAME.

We are much indebted to Andreas Vogt for helping with the testing of the programs and making many useful suggestions about the efficiency.

Usage

Forcer requires the latest development version of FORM. The generation scripts -- which are not needed for running the program -- require Python 2.7/Python 3.0, igraph, numpy, and sympy.

An example of Forcer input is the following program:

#-
#include forcer.h

L F =
 +1/<p1.p1>/.../<p6.p6>*Q.p3*Q.p4*vx(Q,p1,p5,p6)*vx(-p1,p2,p3)
                       *vx(-p5,-p6,p4)*vx(-Q,-p2,-p3,-p4)
 +1/<p1.p1>/.../<p5.p5>*vx(-Q,p2,p3)*vx(p1,-p2,p5)*vx(-p1,p4,Q)
                       *vx(-p3,-p4,-p5)*ex(p1,p4)
;

#call Forcer(msbarexpand=4)
B ep;
P +s;
.end
Input specification

After forcer.h is included, the input integral can be defined. This is done by specifying the vertex structure using vx. The external momentum should be called Q. The propagators and momenta can simply be multiplied in, as shown in the example above. Insertions on lines can be specified using the ex function. In the second integral above, ex(p1,p4) means that there is a single ε on the propagator associated with momentum p1 and one on p4. The provided topologies will automatically be matched to Forcer's internal topologies. The dot products will also automatically be rewritten.

Output options

By calling Forcer(), the integrals are computed. The optional argument msbarexpand can give the (unrenormalized) answer expanded in MSbar. Otherwise, the result will be given exactly in terms of the master integrals and rational coefficients. Other options include polyratfunexpand=div and polyratfunexpand=maxpow, which enable the expansions of rational coefficients in ε at intermediate steps..

forcer's People

Contributors

benruijl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

f-feng tueda

forcer's Issues

Crash with formal expression names

Hi Ben,

if I use expression names in square brackets (e.g. [expression]) I get a crash with the following error

ReduceEdge Line 47 --> Illegal LHS for expression definition
++++Errors in Loop
ReduceEdge Line 107 --> Illegal LHS for expression definition
ReduceEdge Line 107 --> Illegal position for d3
ReduceEdge Line 107 --> Undeclared variable d3
ReduceEdge Line 115 ==> Proper syntax: #exchange expr1,expr2 or #exchange $var1
,$var2

I guess a simple fix would be to wrap the names of the temporary expressions themselves in square brackets, for instance [NAMEtmp] instead of NAMEtmp.

Table with PolyRatFun breaks using tform

I stumble upon an interesting bug while using tFORM when running the following code:

test.frm
__________________________________________________________
#--
table sparse rtop(2);
table sparse top(1);
table sparse c(2);
Auto S x;
S w,d;
CF rat,cc;

PolyRatFun rat;

* Include Transformations 
Fill rtop(1,1) = + cc(1,1)*top(2) 
                 + cc(1,2)*top(3) 
                 + cc(1,3)*top(4);
Fill rtop(2,4) = + cc(2,1)*top(3);
Fill rtop(2,2) = + cc(2,2)*top(5);
Fill rtop(3,6) = top(7);
Fill rtop(3,3) = top(5);

* Include Coefficients 
Fill c(1,1) = rat((-2*d^3+14*d^2-32*d+24),(6*d^3-69*d^2+264*d-336));
Fill c(1,2) = rat(((50*d^4-550*d^3+2248*d^2-4040*d+2688)*w-40*d^4+452*d^3-1892*d^2+3472*d-2352),
                            ((18*d^4-267*d^3+1482*d^2-3648*d+3360)*w-18*d^4+267*d^3-1482*d^2+3648*d-3360));
Fill c(1,3) = rat(((2*d^3-14*d^2+32*d-24)*w),((18*d^3-195*d^2+702*d-840)*w-18*d^3+195*d^2-702*d+840));
Fill c(2,1) = rat((-5*d+14),((d-4)*w));
Fill c(2,2) = rat((5*d-14),(3*d-10));

L F = top(1);

#do i=1,3
    id top(?a) = rtop(`i',?a);
    id cc(?a) = c(?a);
    id rtop(x1?,x2?) = top(x2);
    .sort
#enddo
print +s;
.end

The code is the minimal case I managed to extract from some reduction tables that I'm applying using FORM.

When running the code with form everything works as expected and the result is:

> form test.frm
F = + top(5)*rat(20*d^3 - 156*d^2 + 400*d - 336,9*d^3 - 102*d^2 + 384*d - 480);

Things go very wrong (on some runs) when trying to use tform

> tform -w2 test.frm
F = + top(5)*rat(4928*d^4,20160*d^4);

I don't know if this problem is related to the following but it may be.
When postponing the call for PolyRatFun rat; till after the #do loop, I get that whenever the two outputs coincide they are still represented in different ways

<        + top(5)*rat(20*d^3 - 156*d^2 + 400*d - 336,9*d^3 - 102*d^2 + 384*d - 
<       480)
---
>        + top(5)*rat( - 336 + 400*d - 156*d^2 + 20*d^3, - 480 + 384*d - 102*d^2
>        + 9*d^3)

with the first one obtained using form and the second with tform -w2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.