source: PSPA/parmelaPSPA/trunk/field.f-sauv @ 465

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

parmela pspa initial

File size: 2.0 KB
Line 
1      subroutine field
2c---define background field  (e.g., helmholz coil field)
3c---parameters for field coil are position,radius,current,(z0,zmax on
4c---first only)
5c----------------------------------------------------------------------
6c
7      include 'param_sz.h'
8      include 'bfieldcom.h'
9      include 'flagcom.h'
10      include 'misccom.h'
11      include 'syscom.h'
12c
13      real*8 rz3ov2,rz5ov2,rz7ov2,rz9ov2,rz11ov2,rz13ov2
14c----------------------------------------------------------------------
15      div=nptcbu
16cbm      if(ifld.eq.0)then
17cbm         write(nnout,*)
18cbm     * 'Number of used values for magnetic field ',vv(6)
19cbm         div=vv(6)
20cbm         nptcbu=div
21cbm      endif
22      if(ifld.eq.0)then
23cbm28/09/09         do 1 i=1,1002
24         do 1 i=1,nptcbu+2
25         do 1 j=0,6
26         bf(i,j)=0.
271        continue 
28         zmin=vv(4)
29         zmax=vv(5)
30         order=6.
31cbm28/09/09         dzz=(zmax-zmin)/1000.
32         dzz=(zmax-zmin)/div
33         ifld=1
34      endif
35cbm      if(nn.eq.7) order=vv(7)
36      if(nn.eq.6) order=vv(6)
37      cur=vv(3)
38      pos=vv(1)
39      radus2=vv(2)**2
40      a=.6283*cur*radus2
41cbm28/09/09      do 10 i=1,1001
42      do 10 i=1,nptcbu+1
43      z=((i-1)*dzz+zmin)-pos
44      zsq=z**2
45      rsqzsq=radus2+zsq
46      rz3ov2=rsqzsq**1.5
47      rz5ov2=rz3ov2*rsqzsq
48      rz7ov2=rz5ov2*rsqzsq
49      rz9ov2=rz7ov2*rsqzsq
50      rz11ov2=rz9ov2*rsqzsq
51      rz13ov2=rz11ov2*rsqzsq
52      bf(i,0)=bf(i,0)+a/rz3ov2
53      bf(i,1)=bf(i,1)-a*3.*z/rz5ov2
54      if(order.ne.1)then
55      bf(i,2)=bf(i,2)-a*(3.*rsqzsq-15.*zsq)/rz7ov2
56      bf(i,3)=bf(i,3)+a*(45.*z*rsqzsq-105.*z*zsq)/rz9ov2
57      bf(i,4)=bf(i,4)+a*(45.*rsqzsq**2-630.*zsq*rsqzsq+945.*zsq**2)/
58     *                   rz11ov2
59      bf(i,5)=bf(1,5)-a*(1575.*z*rsqzsq**2-9450.*z*zsq*rsqzsq+
60     *                   10395.*z**5)/rz13ov2
61      bf(i,6)=bf(i,6)-a*(1575.*rsqzsq**3-42525.*zsq*rsqzsq**2+
62     * 155925.*zsq**2*rsqzsq-.135135*z**6)/(rz13ov2*rsqzsq)
63      endif
64   10 continue
65      return
66      end
67c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
Note: See TracBrowser for help on using the repository browser.