+++ /dev/null
- subroutine integral(gamma1,gamma2,gamma3,gamma4,ity1,ity2,a1,a2,
- & si1,si2,si3,si4,transp,q)
- implicit none
- integer ity1,ity2
- integer ilam1,ilam2,ilam3,ilam4,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4
- logical transp
- double precision elocal,ele
- double precision delta,delta2,sum,ene,sumene,boltz
- double precision q,a1(2,2),a2(2,2),si1,si2,si3,si4
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=20
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
-cd write(2,*) gamma1,gamma2,ity1,ity2,a1,a2,si1,si2,si3,si4,transp
-
-cd do ilam1=-180,180,5
-cd do ilam2=-180,180,5
-cd lambda1=ilam1*conv+delta2
-cd lambda2=ilam2*conv+delta2
-cd write(2,'(2i5,2f10.5)') ilam1,ilam2,elocal(2,lambda1,lambda2),
-cd & ele(lambda1,lambda2,a1,1.0d0,1.d00)
-cd enddo
-cd enddo
-cd stop
-
- sum=0.0d0
- sumene=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
-cd write (2,*) ilam1,ilam2,ilam3,ilam4
-cd write (2,*) lambda1,lambda2,lambda3,lambda4
- ene=
- & -elocal(ity1,lambda1,lambda2,.false.)*
- & elocal(ity2,lambda3,lambda4,transp)*
- & ele(si1*lambda1+gamma1,si3*lambda3+gamma3,a1)*
- & ele(si2*lambda2+gamma2,si4*lambda4+gamma4,a2)
-cd write (2,*) elocal(ity1,lambda1,gamma1-pi-lambda2),
-cd & elocal(ity2,lambda3,gamma2-pi-lambda4),
-cd & ele(lambda1,lambda2,a1,si1,si3),
-cd & ele(lambda3,lambda4,a2,si2,si4)
- sum=sum+ene
- enddo
- enddo
- enddo
- enddo
- q=sum/(2*pi)**4*delta**4
- write (2,* )'sum',sum,' q',q
- return
- end
-c---------------------------------------------------------------------------
- subroutine integral3(gamma1,gamma2,ity1,ity2,ity3,ity4,
- & a1,koniec,q1,q2,q3,q4)
- implicit none
- integer ity1,ity2,ity3,ity4
- integer ilam1,ilam2,ilam3,ilam4,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,lambda1,
- & lambda2,lambda3,lambda4
- logical koniec
- double precision elocal,ele
- double precision delta,delta2,sum1,sum2,sum3,sum4,
- & ene1,ene2,ene3,ene4,boltz
- double precision q1,q2,q3,q4,a1(2,2),a2(2,2)
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
- write(2,*) gamma1,gamma2,ity1,ity2,ity3,ity4,a1,koniec
-
-cd do ilam1=-180,180,5
-cd do ilam2=-180,180,5
-cd lambda1=ilam1*conv+delta2
-cd lambda2=ilam2*conv+delta2
-cd write(2,'(2i5,2f10.5)') ilam1,ilam2,elocal(2,lambda1,lambda2),
-cd & ele(lambda1,lambda2,a1,1.0d0,1.d00)
-cd enddo
-cd enddo
-cd stop
-
- sum1=0.0d0
- sum2=0.0d0
- sum3=0.0d0
- sum4=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
-cd write (2,*) ilam1,ilam2,ilam3,ilam4
-cd write (2,*) lambda1,lambda2,lambda3,lambda4
- if (.not.koniec) then
- ene1=
- & elocal(ity1,lambda1,gamma1-pi-lambda2,.false.)*
- & elocal(ity3,lambda3,gamma2-pi-lambda4,.false.)*
- & ele(lambda2,lambda4,a1)
- else
- ene1=
- & elocal(ity1,lambda1,gamma1-pi-lambda2,.false.)*
- & elocal(ity3,lambda3,lambda4,.false.)*
- & ele(lambda2,-lambda4,a1)
- endif
- ene2=
- & elocal(ity1,lambda1,gamma1-pi-lambda2,.false.)*
- & elocal(ity4,lambda3,lambda4,.false.)*
- & ele(lambda2,lambda3,a1)
- if (.not.koniec) then
- ene3=
- & elocal(ity2,lambda1,lambda2,.false.)*
- & elocal(ity3,lambda3,gamma2-pi-lambda4,.false.)*
- & ele(lambda1,lambda4,a1)
- else
- ene3=
- & elocal(ity2,lambda1,lambda2,.false.)*
- & elocal(ity3,lambda3,lambda4,.false.)*
- & ele(lambda1,-lambda4,a1)
- endif
- ene4=
- & elocal(ity2,lambda1,lambda2,.false.)*
- & elocal(ity4,lambda3,lambda4,.false.)*
- & ele(lambda1,lambda3,a1)
- sum1=sum1+ene1
- sum2=sum2+ene2
- sum3=sum3+ene3
- sum4=sum4+ene4
- enddo
- enddo
- enddo
- enddo
- q1=sum1/(2*pi)**4*delta**4
- q2=sum2/(2*pi)**4*delta**4
- q3=sum3/(2*pi)**4*delta**4
- q4=sum4/(2*pi)**4*delta**4
- write (2,* )'sum',sum1,sum2,sum3,sum4,' q',q1,q2,q3,q4
- return
- end
-c-------------------------------------------------------------------------
- subroutine integral5(gamma1,gamma2,gamma3,gamma4,ity1,ity2,ity3,
- & ity4,ity5,ity6,a1,a2,si1,si2,si3,si4,transp,ene1,ene2,ene3,ene4)
- implicit none
- integer ity1,ity2,ity3,ity4,ity5,ity6
- integer ilam1,ilam2,ilam3,ilam4,ilam5,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4,lambda5
- logical transp
- double precision elocal,ele
- double precision eloc1,eloc2,eloc3,eloc4,eloc5,eloc6,ele1,ele2
- double precision delta,delta2,sum,ene,sumene,pom
- double precision ene1,ene2,ene3,ene4,sum1,sum2,sum3,sum4,
- & a1(2,2),a2(2,2)
- integer si1,si2,si3,si4
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
-cd write(2,*) 'gamma1=',gamma1,' gamma2=',gamma2,
-cd & ' gamma3=',gamma3,' gamma4=',gamma4
-cd write(2,*) ity1,ity2,ity3,ity4,ity5,ity6
-cd write(2,*) 'a1=',a1
-cd write(2,*) 'a2=',a2
-cd write(2,*) si1,si2,si3,si4,transp
-
- sum1=0.0d0
- sum2=0.0d0
- sum3=0.0d0
- sum4=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- do ilam5=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
- lambda5=ilam5*conv+delta2
- if (transp) then
- ele1=ele(lambda1,si4*lambda4,a1)
- ele2=ele(lambda2,lambda3,a2)
- else
- ele1=ele(lambda1,lambda3,a1)
- ele2=ele(lambda2,si4*lambda4,a2)
- endif
- eloc2=elocal(ity2,lambda1,gamma2-pi-lambda2,.false.)
- eloc5=elocal(ity5,lambda3,gamma4-pi-si4*lambda4,.false.)
- pom=ele1*ele2*eloc2*eloc5
- if (si1.gt.0) then
- eloc1=elocal(ity1,lambda5,gamma1-pi-lambda1,.false.)
- sum1=sum1+pom*eloc1
- endif
- eloc3=elocal(ity3,lambda2,lambda5,.false.)
- sum2=sum2+pom*eloc3
- eloc4=elocal(ity4,lambda5,gamma3-pi-lambda3,.false.)
- sum3=sum3+pom*eloc4
- if (si4.gt.0) then
- eloc6=elocal(ity6,lambda4,lambda5,.false.)
- sum4=sum4+pom*eloc6
- endif
- enddo
- enddo
- enddo
- enddo
- enddo
- pom=1.0d0/(2*pi)**5*delta**5
- ene1=sum1*pom
- ene2=sum2*pom
- ene3=sum3*pom
- ene4=sum4*pom
-c write (2,* )'sum',sum1,sum2,sum3,sum4,' q',ene1,ene2,ene3,ene4
- return
- end
-c-------------------------------------------------------------------------
- subroutine integral_turn6(gamma1,gamma2,gamma3,gamma4,ity1,ity2,
- & ity3,ity4,ity5,ity6,a1,a2,ene_turn6)
- implicit none
- integer ity1,ity2,ity3,ity4,ity5,ity6
- integer ilam1,ilam2,ilam3,ilam4,ilam5,ilam6,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4,lambda5,lambda6
- logical transp
- double precision elocal,ele
- double precision eloc1,eloc2,eloc3,eloc4,eloc41,eloc5,eloc6,
- & eloc61,ele1,ele2
- double precision delta,delta2,sum,ene,sumene,pom,ene5
- double precision ene_turn6,sum5,a1(2,2),a2(2,2)
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
- write(2,*) 'gamma1=',gamma1,' gamma2=',gamma2,
- & ' gamma3=',gamma3,' gamma4=',gamma4
- write(2,*) ity1,ity2,ity3,ity4,ity5,ity6
- write(2,*) 'a1=',a1
- write(2,*) 'a2=',a2
-
- sum5=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- do ilam5=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
- lambda5=ilam5*conv+delta2
- ele1=ele(lambda1,-lambda4,a1)
- ele2=ele(lambda2,lambda3,a2)
- eloc2=elocal(ity2,lambda1,gamma2-pi-lambda2,.false.)
- eloc5=elocal(ity5,lambda3,lambda4,.false.)
- pom=ele1*ele2*eloc2*eloc5
- eloc3=elocal(ity3,lambda2,gamma3-pi-lambda5,.false.)
- eloc4=elocal(ity4,lambda5,gamma4-pi-lambda3,.false.)
- sum5=sum5+pom*eloc3*eloc4
- enddo
- enddo
- enddo
- enddo
- enddo
- pom=-1.0d0/(2*pi)**5*delta**5
- ene_turn6=sum5*pom
-c print *,'sum6',sum6,' ene6',ene6
- return
- end
-c-------------------------------------------------------------------------
- subroutine integral6(gamma1,gamma2,gamma3,gamma4,ity1,ity2,ity3,
- & ity4,ity5,ity6,a1,a2,si1,si2,si3,si4,transp,ene1,ene2,ene3,ene4,
- & ene5,ene6)
- implicit none
- integer ity1,ity2,ity3,ity4,ity5,ity6
- integer ilam1,ilam2,ilam3,ilam4,ilam5,ilam6,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4,lambda5,lambda6
- logical transp
- double precision elocal,ele
- double precision eloc1,eloc2,eloc3,eloc4,eloc41,eloc5,eloc6,
- & eloc61,ele1,ele2
- double precision delta,delta2,sum,ene,sumene,pom
- double precision ene1,ene2,ene3,ene4,ene5,ene6,sum1,sum2,sum3,
- & sum4,sum5,sum6,a1(2,2),a2(2,2)
- integer si1,si2,si3,si4
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
-cd write(2,*) 'gamma1=',gamma1,' gamma2=',gamma2,
-cd & ' gamma3=',gamma3,' gamma4=',gamma4
-cd write(2,*) ity1,ity2,ity3,ity4,ity5,ity6
-cd write(2,*) 'a1=',a1
-cd write(2,*) 'a2=',a2
-cd write(2,*) si1,si2,si3,si4,transp
-
- sum1=0.0d0
- sum2=0.0d0
- sum3=0.0d0
- sum4=0.0d0
- sum5=0.0d0
- sum6=0.0d0
- eloc1=0.0d0
- eloc6=0.0d0
- eloc61=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- do ilam5=-180,179,iincr
- do ilam6=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
- lambda5=ilam5*conv+delta2
- lambda6=ilam6*conv+delta2
- if (transp) then
- ele1=ele(lambda1,si4*lambda4,a1)
- ele2=ele(lambda2,lambda3,a2)
- else
- ele1=ele(lambda1,lambda3,a1)
- ele2=ele(lambda2,si4*lambda4,a2)
- endif
- eloc2=elocal(ity2,lambda1,gamma2-pi-lambda2,.false.)
- eloc5=elocal(ity5,lambda3,gamma4-pi-si4*lambda4,.false.)
- pom=ele1*ele2*eloc2*eloc5
- if (si1.gt.0) then
- eloc1=elocal(ity1,lambda5,gamma1-pi-lambda1,.false.)
- endif
- eloc3=elocal(ity3,lambda2,lambda6,.false.)
- sum1=sum1+pom*eloc1*eloc3
- eloc4=elocal(ity4,lambda5,gamma3-pi-lambda3,.false.)
- if (si4.gt.0) then
- eloc6=elocal(ity6,lambda4,lambda6,.false.)
- eloc61=elocal(ity6,lambda4,lambda5,.false.)
- endif
- sum2=sum2+pom*eloc4*eloc6
- eloc41=elocal(ity4,lambda6,gamma3-pi-lambda3,.false.)
- sum3=sum3+pom*eloc1*eloc41
- sum4=sum4+pom*eloc1*eloc6
- sum5=sum5+pom*eloc3*eloc4
- sum6=sum6+pom*eloc3*eloc61
- enddo
- enddo
- enddo
- enddo
- enddo
- enddo
- pom=-1.0d0/(2*pi)**6*delta**6
- ene1=sum1*pom
- ene2=sum2*pom
- ene3=sum3*pom
- ene4=sum4*pom
- ene5=sum5*pom
- ene6=sum6*pom
-c print *,'sum6',sum6,' ene6',ene6
- return
- end
-c-------------------------------------------------------------------------
- subroutine integral3a(gamma1,gamma2,ity1,ity2,a1,si1,ene1)
- implicit none
- integer ity1,ity2,ity3,ity4,ity5,ity6
- integer ilam1,ilam2,ilam3,ilam4,ilam5,ilam6,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4,lambda5,lambda6
- logical transp
- double precision elocal,ele
- double precision eloc1,eloc2,eloc3,eloc4,eloc41,eloc5,eloc6,
- & eloc61,ele1,ele2
- double precision delta,delta2,sum,ene,sumene,pom
- double precision ene1,ene2,ene3,ene4,ene5,ene6,sum1,sum2,sum3,
- & sum4,sum5,sum6,a1(2,2),a2(2,2)
- integer si1,si2,si3,si4
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
-cd write(2,*) 'gamma1=',gamma1,' gamma2=',gamma2
-cd write(2,*) ity1,ity2
-cd write(2,*) 'a1=',a1
-cd write(2,*) si1,
-
- sum1=0.0d0
- eloc1=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- ele1=ele(lambda1,si1*lambda3,a1)
- eloc1=elocal(ity1,lambda1,gamma1-pi-lambda2,.false.)
- if (si1.gt.0) then
- eloc2=elocal(ity2,lambda2,gamma2-pi-lambda3,.false.)
- else
- eloc2=elocal(ity2,lambda2,lambda3,.false.)
- endif
- sum1=sum1+ele1*eloc1*eloc2
- enddo
- enddo
- enddo
- pom=1.0d0/(2*pi)**3*delta**3
- ene1=sum1*pom
- return
- end
-c-------------------------------------------------------------------------
- subroutine integral4a(gamma1,gamma2,gamma3,ity1,ity2,ity3,a1,si1,
- & ene1)
- implicit none
- integer ity1,ity2,ity3,ity4,ity5,ity6
- integer ilam1,ilam2,ilam3,ilam4,ilam5,ilam6,iincr
- double precision gamma1,gamma2,gamma3,gamma4,beta,b(2,90),lambda1,
- & lambda2,lambda3,lambda4,lambda5,lambda6
- logical transp
- double precision elocal,ele
- double precision eloc1,eloc2,eloc3,eloc4,eloc41,eloc5,eloc6,
- & eloc61,ele1,ele2
- double precision delta,delta2,sum,ene,sumene,pom
- double precision ene1,ene2,ene3,ene4,ene5,ene6,sum1,sum2,sum3,
- & sum4,sum5,sum6,a1(2,2),a2(2,2)
- integer si1,si2,si3,si4
- double precision conv /.01745329252d0/,pi /3.141592654d0/
-
- iincr=60
- delta=iincr*conv
- delta2=0.5d0*delta
-cd print *,'iincr',iincr,' delta',delta
-cd write(2,*) 'gamma1=',gamma1,' gamma2=',gamma2,
-cd & ' gamma3=',gamma3
-cd write(2,*) ity1,ity2,ity3
-cd write(2,*) 'a1=',a1
-cd write(2,*) 'si1=',si1
- sum1=0.0d0
- do ilam1=-180,179,iincr
- do ilam2=-180,179,iincr
- do ilam3=-180,179,iincr
- do ilam4=-180,179,iincr
- lambda1=ilam1*conv+delta2
- lambda2=ilam2*conv+delta2
- lambda3=ilam3*conv+delta2
- lambda4=ilam4*conv+delta2
- ele1=ele(lambda1,si1*lambda4,a1)
- eloc1=elocal(ity1,lambda1,gamma1-pi-lambda2,.false.)
- eloc2=elocal(ity2,lambda2,gamma2-pi-lambda3,.false.)
- if (si1.gt.0) then
- eloc3=elocal(ity3,lambda3,gamma3-pi-lambda4,.false.)
- else
- eloc3=elocal(ity3,lambda3,lambda4,.false.)
- endif
- sum1=sum1+ele1*eloc1*eloc2*eloc3
- enddo
- enddo
- enddo
- enddo
- pom=-1.0d0/(2*pi)**4*delta**4
- ene1=sum1*pom
- return
- end
-c-------------------------------------------------------------------------
- double precision function elocal(i,x,y,transp)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.TORSION'
- integer i
- double precision x,y,u(2),v(2),cu(2),dv(2),ev(2)
- double precision scalar2
- logical transp
- u(1)=dcos(x)
- u(2)=dsin(x)
- v(1)=dcos(y)
- v(2)=dsin(y)
- if (transp) then
- call matvec2(cc(1,1,i),v,cu)
- call matvec2(dd(1,1,i),u,dv)
- call matvec2(ee(1,1,i),u,ev)
- elocal=scalar2(b1(1,i),v)+scalar2(b2(1,i),u)+scalar2(cu,v)+
- & scalar2(dv,u)+scalar2(ev,v)
- else
- call matvec2(cc(1,1,i),u,cu)
- call matvec2(dd(1,1,i),v,dv)
- call matvec2(ee(1,1,i),v,ev)
- elocal=scalar2(b1(1,i),u)+scalar2(b2(1,i),v)+scalar2(cu,u)+
- & scalar2(dv,v)+scalar2(ev,u)
- endif
- return
- end
-c-------------------------------------------------------------------------
- double precision function ele(x,y,a)
- implicit none
- double precision x,y,a(2,2),si1,si2,u(2),v(2),av(2)
- double precision scalar2
- u(1)=-cos(x)
- u(2)= sin(x)
- v(1)=-cos(y)
- v(2)= sin(y)
- call matvec2(a,v,av)
- ele=scalar2(u,av)
- return
- end