subroutine sbload(ne) c---calculate effects of single-bunch beam loading c---sbload paramaters are l,aperature,iout,zlen,number of cells, c--- a1,a2,a3,a4,a5,ta1,ta2,ta3,ta4,ta5 c--- The coefficents for the transvers wake are ta1 to ta5. the transvers c--- wake is applied if the parameter ncells is negative. c--- the longitudnal wake is applied in either case. c--------------------------------------------------------------------------- c include 'param_sz.h' include 'constcom.h' include 'coordcom.h' include 'ncordscom.h' include 'pcordcom.h' include 'syscom.h' include 'ucom.h' c common/pnum/ipnum(imaa) common/sbload1/tsbparm(5,50) c-------------------------------------------------------------------------- c* write(nnout,*) ' subroutine sbload : dbgxy was not defined ! ' dbgxy=0.01 zlen=el(4,ne) cells=el(5,ne) a1=el(6,ne) a2=el(7,ne) a3=el(8,ne) a4=el(9,ne) a5=el(10,ne) if(cells.lt.0)then nc=el(11,ne) ta1=tsbparm(1,nc) ta2=tsbparm(2,nc) ta3=tsbparm(3,nc) ta4=tsbparm(4,nc) ta5=tsbparm(5,nc) endif c--if a1 to a5 are zero assume 1.3ghz fel cavity and scale for freq. c--to be compatiable with previous versions of sbload. if(a1.eq.0)then scale=freq/1300 a1=1.5316e13*scale a2=1.40056*scale a3=-5.024e14*scale*scale a4=5.41*sqrt(scale) a5=0. ta1=ta1*scale*scale ta2=ta2*scale ta3=ta3*scale*scale*scale ta4=ta4*sqrt(scale) ta5=0.0 endif zr=cord(5,1) zmax=zr+.5*zlen zmin=zmax-zlen if(cells.gt.0.0) then do 20 n=2,ngood c4=cells*weight(n)*1.e-6/erest zq=cord(5,n) if ((zq-zmin)*(zq-zmax).gt.0.) go to 20 if(a5.ne.0.)then do 10 m=1,ngood z=cord(5,m) dz=zq-z 10 continue else do 15 m=1,ngood z=cord(5,m) dz=zq-z 15 continue endif 20 continue else cells=-cells do 21 n=2,ngood c4=cells*weight(n)*1.e-6/erest zq=cord(5,n) if ((zq-zmin)*(zq-zmax).gt.0.) go to 21 if(a5.ne.0..and.ta5.ne.0.)then do 11 m=1,ngood z=cord(5,m) dz=zq-z cord(2,m)=cord(2,m)+dbgxy*cord(1,n) cord(4,m)=cord(4,m)+dbgxy*cord(3,n) 11 continue elseif(a5.eq.0.and.ta5.eq.0.)then do 12 m=1,ngood z=cord(5,m) dz=zq-z cord(2,m)=cord(2,m)+dbgxy*cord(1,n) cord(4,m)=cord(4,m)+dbgxy*cord(3,n) 12 continue elseif(a5.ne.0..and.ta5.eq.0.)then do 13 m=1,ngood z=cord(5,m) dz=zq-z cord(2,m)=cord(2,m)+dbgxy*cord(1,n) cord(4,m)=cord(4,m)+dbgxy*cord(3,n) 13 continue elseif(a5.eq.0..and.ta5.ne.0.)then do 14 m=1,ngood z=cord(5,m) dz=zq-z cord(2,m)=cord(2,m)+dbgxy*cord(1,n) cord(4,m)=cord(4,m)+dbgxy*cord(3,n) 14 continue endif 21 continue endif n=1 30 continue bgzsq=gam(n)**2-(1.+cord(2,n)**2+cord(4,n)**2) if (bgzsq.gt.0.) go to 50 cord(6,n)=-sqrt(-bgzsq) go to 60 50 cord(6,n)=sqrt(bgzsq) 60 n=n+1 if (n.le.ngood) go to 30 return end c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*