WilsonWebs - An automated tool for n-Loop Wilson web generation

git clone git://git.bcharge.de/WilsonWebs.git

About | Log | Files | Refs | License

commit b5de5eea187fbabfd6fe7c57c8dbdd31ad29255c
parent a97a6f3ef90bc23dda77ad60991fe53ecd24b2e9
Author: Bakar Chargeishvili <bakar@bcharge.de>
Date:   Thu, 28 Apr 2022 09:59:00 +0200

Correct the leg indices

Diffstat:
Mwebs.c | 29++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/webs.c b/webs.c @@ -32,8 +32,8 @@ generate_legs(char **init, size_t n_init, char **fin, size_t n_fin, size_t nLoop if (!strcmp("g", init[i])) isGluon = 1; Vertex *Vertices = (Vertex*)ecalloc(nLoops+1, sizeof(Vertex)); - Vertices[0] = (Vertex){i,0}; - Legs[i] = (Leg){init[i], 1, i, 0, isGluon, Vertices}; + Vertices[0] = (Vertex){i+1,0}; + Legs[i+1] = (Leg){init[i], 1, i, 0, isGluon, Vertices}; } for (int i=0; i<n_fin; ++i) { @@ -42,7 +42,7 @@ generate_legs(char **init, size_t n_init, char **fin, size_t n_fin, size_t nLoop isGluon = 1; Vertex *Vertices = (Vertex *)ecalloc(nLoops+1, sizeof(Vertex)); Vertices[0] = (Vertex){n_init+i,0}; - Legs[n_init+i] = (Leg){init[i], 1, n_init+i, 0, isGluon,Vertices}; + Legs[n_init+i+1] = (Leg){init[i], 1, n_init+i, 0, isGluon,Vertices}; } } @@ -53,7 +53,7 @@ generate_vertices(Leg *Legs, size_t nLegs, int nLoops, Vertex *Vertices) for (int j=0; j<nLoops; ++j) { /* TODO: Don't forget to add vertices for self-energies later */ Vertices[j+nLoops*i] = (Vertex){i+1, 1+j}; - Legs[i].Vertices[j+1] = Vertices[j+nLoops*i]; + Legs[i+1].Vertices[j+1] = Vertices[j+nLoops*i]; } } @@ -65,19 +65,26 @@ generate_vertices(Leg *Legs, size_t nLegs, int nLoops, Vertex *Vertices) } void -generate_loops(Vertex *Vertices, int *deletedVertices, Link *Graphs, size_t nVx, int nLoops, int nGenLoops) +generate_loops(Vertex *Vertices, Leg *Legs, Link *Graphs, size_t nVx, size_t nLegs, int nLoops, int nGenLoops) { for (int iVx = 0; iVx < nVx; ++iVx) { + Vertex V = Vertices[iVx]; + printf("V%d%d\n", V.legId, V.id); + for (int iLeg = V.legId+1; iLeg <= nLegs; ++iLeg) { + printf("%d ", iLeg); + } + printf("\n"); + /* Link *Graph = (Link *)ecalloc(nLoops, sizeof(Link)); int iEdge = -1; for (int jVx = 0; jVx < nVx; ++jVx) { if (iVx == jVx) { continue; } - /* Add a connection */ Graph[++iEdge] = (Link){Vertices[iVx], Vertices[jVx]}; printf("V%d%d\n", iVx, jVx); } + */ } /* Find the first non-deleted vertex */ //int mVx = -1; @@ -168,7 +175,7 @@ main(int argc, char *argv[]) int nLoops = 1; size_t nLegs = NELEMS(initial) + NELEMS(final); - Leg Legs[nLegs]; + Leg Legs[nLegs+1]; generate_legs(initial,NELEMS(initial), final, NELEMS(final), nLoops, Legs); size_t nVx = nLegs*nLoops; @@ -179,12 +186,12 @@ main(int argc, char *argv[]) printf("V%d%d\n",Vertices[i].legId,Vertices[i].id); } - int *deletedVertices = (int *)ecalloc(nVx, sizeof(int)); + /*int *deletedVertices = (int *)ecalloc(nVx, sizeof(int));*/ Link *Graphs = (Link *)ecalloc(300*nLoops, sizeof(Link)); Link *Skeleton = (Link *)ecalloc(300*nLoops, sizeof(Link)); int iEdge = -1; - for (int iLeg = 0; iLeg < nLegs; ++iLeg) { + for (int iLeg = 1; iLeg <= nLegs; ++iLeg) { Vertex* LegVertices = Legs[iLeg].Vertices; Skeleton[++iEdge] = (Link){LegVertices[0],LegVertices[1]}; for (int iVx = 1; iVx < nLoops; ++iVx) { @@ -200,9 +207,9 @@ main(int argc, char *argv[]) } printf("Edge count: %d\n", iEdge); - return 0; - generate_loops(Vertices, deletedVertices, Graphs, nVx, nLoops, 0); + generate_loops(Vertices, Legs, Graphs, nVx, nLegs, nLoops, 0); + return 0; for (int iVx=0; iVx<300; ++iVx) { printf("Graph ID: %d\n",iVx);