subroutine zoutlal c---print a list of elements and their locations. c---------------------------------------------------------------------------- c include 'param_sz.h' include 'bfieldcom.h' include 'constcom.h' include 'flagcom.h' include 'phizoutcom.h' include 'syscom.h' include 'ucom.h' c parameter (nbcd=34) character*10 bcd(nbcd) c-------------------------------------------------------------------------- c* data (bcd(j),j=1,nbcd-1) /'drift','solenoid','quad','bend', 1 'buncher','chopper','cell','tank','trwave','coil','run', 2 'input','output','title','scheff','zout','adjust','start', 3 'restart','continue','save','end','zlimit','errors','change' 4 ,'rotate','sbload','pipe','foclal','back','wiggler','alpham' 5 ,'sextupole'/ if(ifld.ne.0)then write(nnout,11) write(nnout,12) else write(nnout,10) write(nnout,13) endif 10 format(3x,'n',8x,'z1',2x,'element ',8x,'z2',8x,'dz',5x,'phase') 13 format(3x,1x,8x,'cm',2x,8x,8x,'cm',8x,'cm',4x,'degres') 11 format(3x,'n',8x,'z1',2x,'element ',8x,'z2',8x,'dz',5x, 1 'Bz(z2,r=0.)',4x,'phase') 12 format(3x,1x,8x,'cm',2x,8x,8x,'cm',8x,'cm',7x,'Gauss',7x,'degres') z1=0. do 30 n=1,nel z2=zloc(n) dz=z2-z1 nt=ntype(n) if(nt.eq.26)nt=10 if(nt.eq.27)nt=9 if(ifld.ne.0)then if(nt.eq.7) then angle=atan2(el(9,n),el(10,n))/radian c the range of the result for atan2 is -pi < result <= pi if(abs(angle).eq.180.) angle=-angle c si l'on veut l'angle entre sur la carte cell c angle=phideg(n) write(nnout,40) n,z1,bcd(nt),z2,dz,bfldlal(z2), * angle elseif(nt.eq.9) then angle=el(4,n)/radian write(nnout, 20)n,z1,bcd(nt),z2,dz,angle else c for solenoid nt = 2 if(nt.eq.2) then write(nnout,40) n,z1,bcd(nt),z2,dz,el(4,n) else write(nnout,40) n,z1,bcd(nt),z2,dz,bfldlal(z2) endif endif else if(nt.eq.7) then angle=atan2(el(9,n),el(10,n))/radian if(abs(angle).eq.180.) angle=-angle c si l'on veut l'angle entre sur la carte cell c angle=phideg(n) write(nnout,20) n,z1,bcd(nt),z2,dz,angle elseif(nt.eq.9) then angle=el(4,n)/radian write(nnout, 20)n,z1,bcd(nt),z2,dz,angle else write(nnout,20) n,z1,bcd(nt),z2,dz endif endif 20 format(i4,f10.1,2x,a10,f8.1,f10.2,f10.3) 40 format(i4,f10.1,2x,a10,f8.1,f10.2,f12.2,3x,f10.3) 30 z1=z2 return end