1 | subroutine zoutlal |
---|
2 | c---print a list of elements and their locations. |
---|
3 | c---------------------------------------------------------------------------- |
---|
4 | c |
---|
5 | include 'param_sz.h' |
---|
6 | include 'bfieldcom.h' |
---|
7 | include 'constcom.h' |
---|
8 | include 'flagcom.h' |
---|
9 | include 'phizoutcom.h' |
---|
10 | include 'syscom.h' |
---|
11 | include 'ucom.h' |
---|
12 | c |
---|
13 | parameter (nbcd=34) |
---|
14 | character*10 bcd(nbcd) |
---|
15 | c-------------------------------------------------------------------------- |
---|
16 | c* |
---|
17 | data (bcd(j),j=1,nbcd-1) /'drift','solenoid','quad','bend', |
---|
18 | 1 'buncher','chopper','cell','tank','trwave','coil','run', |
---|
19 | 2 'input','output','title','scheff','zout','adjust','start', |
---|
20 | 3 'restart','continue','save','end','zlimit','errors','change' |
---|
21 | 4 ,'rotate','sbload','pipe','foclal','back','wiggler','alpham' |
---|
22 | 5 ,'sextupole'/ |
---|
23 | if(ifld.ne.0)then |
---|
24 | write(nnout,11) |
---|
25 | write(nnout,12) |
---|
26 | else |
---|
27 | write(nnout,10) |
---|
28 | write(nnout,13) |
---|
29 | endif |
---|
30 | 10 format(3x,'n',8x,'z1',2x,'element ',8x,'z2',8x,'dz',5x,'phase') |
---|
31 | 13 format(3x,1x,8x,'cm',2x,8x,8x,'cm',8x,'cm',4x,'degres') |
---|
32 | 11 format(3x,'n',8x,'z1',2x,'element ',8x,'z2',8x,'dz',5x, |
---|
33 | 1 'Bz(z2,r=0.)',4x,'phase') |
---|
34 | 12 format(3x,1x,8x,'cm',2x,8x,8x,'cm',8x,'cm',7x,'Gauss',7x,'degres') |
---|
35 | z1=0. |
---|
36 | do 30 n=1,nel |
---|
37 | z2=zloc(n) |
---|
38 | dz=z2-z1 |
---|
39 | nt=ntype(n) |
---|
40 | if(nt.eq.26)nt=10 |
---|
41 | if(nt.eq.27)nt=9 |
---|
42 | if(ifld.ne.0)then |
---|
43 | if(nt.eq.7) then |
---|
44 | angle=atan2(el(9,n),el(10,n))/radian |
---|
45 | c the range of the result for atan2 is -pi < result <= pi |
---|
46 | if(abs(angle).eq.180.) angle=-angle |
---|
47 | c si l'on veut l'angle entre sur la carte cell |
---|
48 | c angle=phideg(n) |
---|
49 | write(nnout,40) n,z1,bcd(nt),z2,dz,bfldlal(z2), |
---|
50 | * angle |
---|
51 | elseif(nt.eq.9) then |
---|
52 | angle=el(4,n)/radian |
---|
53 | write(nnout, 20)n,z1,bcd(nt),z2,dz,angle |
---|
54 | else |
---|
55 | c for solenoid nt = 2 |
---|
56 | if(nt.eq.2) then |
---|
57 | write(nnout,40) n,z1,bcd(nt),z2,dz,el(4,n) |
---|
58 | else |
---|
59 | write(nnout,40) n,z1,bcd(nt),z2,dz,bfldlal(z2) |
---|
60 | endif |
---|
61 | endif |
---|
62 | else |
---|
63 | if(nt.eq.7) then |
---|
64 | angle=atan2(el(9,n),el(10,n))/radian |
---|
65 | if(abs(angle).eq.180.) angle=-angle |
---|
66 | c si l'on veut l'angle entre sur la carte cell |
---|
67 | c angle=phideg(n) |
---|
68 | write(nnout,20) n,z1,bcd(nt),z2,dz,angle |
---|
69 | elseif(nt.eq.9) then |
---|
70 | angle=el(4,n)/radian |
---|
71 | write(nnout, 20)n,z1,bcd(nt),z2,dz,angle |
---|
72 | else |
---|
73 | write(nnout,20) n,z1,bcd(nt),z2,dz |
---|
74 | endif |
---|
75 | endif |
---|
76 | 20 format(i4,f10.1,2x,a10,f8.1,f10.2,f10.3) |
---|
77 | 40 format(i4,f10.1,2x,a10,f8.1,f10.2,f12.2,3x,f10.3) |
---|
78 | 30 z1=z2 |
---|
79 | return |
---|
80 | end |
---|