vermaseren / form

The FORM project for symbolic manipulation of very big expressions
GNU General Public License v3.0
1.16k stars 138 forks source link

Vacuum diagrams using diagrams_() #485

Open pschicho opened 8 months ago

pschicho commented 8 months ago

Testing the new diagram generation function in FORM 5.0-beta.1 with QCD, as a specific model, I ran into the result below.

I am specifically trying to generate vacuum diagrams i.e. diagrams that have zero external legs. While symmetry factors seem to be correct, at 2loop level it seems that not all topologies are covered. Here e.g. only one topology is generated which is the sunset diagram. Although at 2loop level I would have also expected there to be another topology, the figure 8 diagram.

A similar situation appears when going to 3loops. Also not all the particle content seems to be used and only a fully gluon mercedes diagram is generated while there should also be mercedes diagrams with fermion and ghost content.

Additionally I noticed that the print statement did not work for me in this version -- I had to use #write to see any output. Also the commented bracketing command b s1; caused the script to terminate.

    auto s s;

    #define LOOPS "2"
    #do i = 0,`LOOPS'
    Model QCD`i';
        Particle qua,QUA,-2;
        Particle gho,GHO,-1;
        Particle glu,+3;
        Vertex qua,QUA,glu:g;
        Vertex gho,GHO,glu:g;
        Vertex glu,glu,glu:g;
        Vertex glu,glu,glu,glu:g^2;
    EndModel;
    #enddo
    Vector Q,Q1,...,Q7,p,p0,...,p21;
    Symbols x1,x2,n1,...,n14;
    Indices j1,j2,i1,...,i21;
    Set QQ:Q1,...,Q7;
    Set pp:p1,...,p21;
    Set empty:;
    .global
    * L  Fprop`LOOPS' = diagrams_(QCD`LOOPS',empty,empty,QQ,pp,`LOOPS',
    *                 `OnePI_'+`NoTadpoles_'+`Symmetrize_'+`TopologiesOnly_');
    L  Fprop`LOOPS' = diagrams_(QCD`LOOPS',empty,empty,QQ,pp,`LOOPS',
                    `OnePI_'+`NoTadpoles_'+`Symmetrize_');

    * L XX = (s1+s2)^10;

    * b s1;
    print+s;
    .sort

Time =       0.00 sec    Generated terms =          3
          Fprop2         Terms in output =          3
                         Bytes used      =        960

    #write "%+E",Fprop`LOOPS' 
 - 1/2*topo_(1)*node_(1,g,qua(-p2),QUA(-p1),glu(-p3))*node_(2,g,qua(p1),QUA(p2
      ),glu(p3))
       - 1/2*topo_(1)*node_(1,g,gho(-p2),GHO(-p1),glu(-p3))*node_(2,g,gho(p1),
      GHO(p2),glu(p3))
       + 1/12*topo_(1)*node_(1,g,glu(-p1),glu(-p2),glu(-p3))*node_(2,g,glu(p1)
      ,glu(p2),glu(p3))
    .end

Time =       0.00 sec    Generated terms =          3
          Fprop2         Terms in output =          3
                         Bytes used      =        960
  0.00 sec out of 0.00 sec
tueda commented 8 months ago

Indeed it seems that diagrams_ has some problems (incomplete?), while I have no problems with Print and Bracket.

pschicho commented 8 months ago

It seems like Print and Bracket were faulty after compilation even though checks seemed ok. But it was related to some Library location hiccup for CommandLineTools on MacOS.

Concerning the `diagrams_' command, the error persists. I have not done further checking than the zero-external leg diagrams. But having this feature to reliably generate bubble diagrams directly would certainly also be desirable in a future version.

tueda commented 8 months ago

Just wondering which version of the algorithm is implemented. The manual refers this paper but the paper says in its introduction

In order to make the problem simpler, we assume the following conditions:

  1. Vacuum-to-vacuum graphs are not considered.

though how to loosen this restriction is described in Section 6.