source: PSPA/parmelaPSPA/trunk/zoutlal.f @ 13

Last change on this file since 13 was 12, checked in by lemeur, 12 years ago

parmela pspa initial

File size: 2.6 KB
Line 
1      subroutine zoutlal
2c---print a list of elements and their locations.
3c----------------------------------------------------------------------------
4c
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'
12c
13      parameter (nbcd=34)
14      character*10 bcd(nbcd)
15c--------------------------------------------------------------------------
16c*
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
45c  the range of the result for atan2 is -pi < result <= pi
46           if(abs(angle).eq.180.) angle=-angle
47c si l'on veut l'angle entre sur la carte cell
48c          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
55c  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
66c si l'on veut l'angle entre sur la carte cell
67c          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
Note: See TracBrowser for help on using the repository browser.