You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.8 KiB

subroutine pvextCtensor(p1,p2,m1s,m2s,m3s,FC0,FC1,FC2,FC3)
implicit none
C p1,p2 are the external momenta
C m1s,m2s,m3s are the squares of the masses in the propagators
include 'lib/TensorReduction/Include/types.f'
include 'lib/TensorReduction/Include/pvCnames.f'
include 'lib/TensorReduction/Include/pvextCv.f'
include 'lib/TensorReduction/Include/TRydef.f'
include 'lib/TensorReduction/Include/TRmetric.f'
complex(dp):: FC0(-2:0),FC1(y1max,-2:0),FC2(y2max,-2:0),
& FC3(y3max,-2:0)
real(dp):: p1Dp1,p2Dp2,p3Dp3,p1(4),p2(4),p3(4),m1s,m2s,m3s,
& pvSPK,pvSPKK,pvSDDP
integer::n1,n2,n3,C0i,pvextCcache
logical,save:: first=.true.
!$omp threadprivate(first)
if (first) then
first=.false.
call pvarraysetup
endif
p3(:)=-p1(:)-p2(:)
p1Dp1=p1(4)**2-p1(1)**2-p1(2)**2-p1(3)**2
p2Dp2=p2(4)**2-p2(1)**2-p2(2)**2-p2(3)**2
p3Dp3=p3(4)**2-p3(1)**2-p3(2)**2-p3(3)**2
C0i=pvextCcache(p1Dp1,p2Dp2,p3Dp3,m1s,m2s,m3s)
FC0(:)=Cv(C0i+cc0,:)
do n1=1,4
FC1(n1,:)=Cv(C0i+cc1,:)*p1(n1)+Cv(C0i+cc2,:)*p2(n1)
enddo
do n1=1,4
do n2=n1,4
FC2(y2(n1,n2),:)=
& +p1(n1)*p1(n2)*Cv(C0i+cc11,:)
& +p2(n1)*p2(n2)*Cv(C0i+cc22,:)
& +pvSPK(n1,n2,p1,p2)*Cv(C0i+cc12,:)
& +g(n1,n2)*Cv(C0i+cc00,:)
enddo
enddo
do n1=1,4
do n2=n1,4
do n3=n2,4
FC3(y3(n1,n2,n3),:)=
& +p1(n1)*p1(n2)*p1(n3)*Cv(C0i+cc111,:)
& +p2(n1)*p2(n2)*p2(n3)*Cv(C0i+cc222,:)
& +pvSPKK(n1,n2,n3,p2,p1)*Cv(C0i+cc112,:)
& +pvSPKK(n1,n2,n3,p1,p2)*Cv(C0i+cc122,:)
& +pvSDDP(n1,n2,n3,p1)*Cv(C0i+cc001,:)
& +pvSDDP(n1,n2,n3,p2)*Cv(C0i+cc002,:)
enddo
enddo
enddo
return
end