source: PSPA/parmelaPSPA/trunk/field.f @ 445

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

parmela pspa initial

File size: 2.1 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, 
4c---nptcb, order on first card only) 03/02/2010
5c----------------------------------------------------------------------
6c
7      include 'param_sz.h'
8      include 'bfieldcom.h'
9      include 'flagcom.h'
10      include 'misccom.h'
11      include 'syscom.h'
12      include 'ucom.h'
13c
14      real*8 rz3ov2,rz5ov2,rz7ov2,rz9ov2,rz11ov2,rz13ov2
15c----------------------------------------------------------------------
16      if(ifld.eq.0)then
17cbm28/09/09         do 1 i=1,1002
18         do 1 i=1,nptcb+2
19         do 1 j=0,6
20         bf(i,j)=0.
211        continue 
22         zmin=vv(4)
23         zmax=vv(5)
24c valeurs par defaut
25         div=1000.
26         nptcbu=1000
27         order=6.
28c
29         if(nn.gt.5) then
30            div=vv(6)
31            nptcbu=vv(6)
32      if(nn.eq.7) order=vv(7)           
33         endif
34cbm28/09/09         dzz=(zmax-zmin)/1000.
35         dzz=(zmax-zmin)/div
36         ifld=1
37      endif
38cbm03/02/10      if(nn.eq.6) order=vv(6)
39      cur=vv(3)
40      pos=vv(1)
41      radus2=vv(2)**2
42      a=.6283*cur*radus2
43cbm28/09/09      do 10 i=1,1001
44      do 10 i=1,nptcbu+1
45      z=((i-1)*dzz+zmin)-pos
46      zsq=z**2
47      rsqzsq=radus2+zsq
48      rz3ov2=rsqzsq**1.5
49      rz5ov2=rz3ov2*rsqzsq
50      rz7ov2=rz5ov2*rsqzsq
51      rz9ov2=rz7ov2*rsqzsq
52      rz11ov2=rz9ov2*rsqzsq
53      rz13ov2=rz11ov2*rsqzsq
54      bf(i,0)=bf(i,0)+a/rz3ov2
55      bf(i,1)=bf(i,1)-a*3.*z/rz5ov2
56      if(order.ne.1)then
57      bf(i,2)=bf(i,2)-a*(3.*rsqzsq-15.*zsq)/rz7ov2
58      bf(i,3)=bf(i,3)+a*(45.*z*rsqzsq-105.*z*zsq)/rz9ov2
59      bf(i,4)=bf(i,4)+a*(45.*rsqzsq**2-630.*zsq*rsqzsq+945.*zsq**2)/
60     *                   rz11ov2
61      bf(i,5)=bf(1,5)-a*(1575.*z*rsqzsq**2-9450.*z*zsq*rsqzsq+
62     *                   10395.*z**5)/rz13ov2
63      bf(i,6)=bf(i,6)-a*(1575.*rsqzsq**3-42525.*zsq*rsqzsq**2+
64     * 155925.*zsq**2*rsqzsq-.135135*z**6)/(rz13ov2*rsqzsq)
65      endif
66   10 continue
67      return
68      end
69c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
Note: See TracBrowser for help on using the repository browser.