[12] | 1 | subroutine field |
---|
| 2 | c---define background field (e.g., helmholz coil field) |
---|
| 3 | c---parameters for field coil are position,radius,current,(z0,zmax, |
---|
| 4 | c---nptcb, order on first card only) 03/02/2010 |
---|
| 5 | c---------------------------------------------------------------------- |
---|
| 6 | c |
---|
| 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' |
---|
| 13 | c |
---|
| 14 | real*8 rz3ov2,rz5ov2,rz7ov2,rz9ov2,rz11ov2,rz13ov2 |
---|
| 15 | c---------------------------------------------------------------------- |
---|
| 16 | if(ifld.eq.0)then |
---|
| 17 | cbm28/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. |
---|
| 21 | 1 continue |
---|
| 22 | zmin=vv(4) |
---|
| 23 | zmax=vv(5) |
---|
| 24 | c valeurs par defaut |
---|
| 25 | div=1000. |
---|
| 26 | nptcbu=1000 |
---|
| 27 | order=6. |
---|
| 28 | c |
---|
| 29 | if(nn.gt.5) then |
---|
| 30 | div=vv(6) |
---|
| 31 | nptcbu=vv(6) |
---|
| 32 | if(nn.eq.7) order=vv(7) |
---|
| 33 | endif |
---|
| 34 | cbm28/09/09 dzz=(zmax-zmin)/1000. |
---|
| 35 | dzz=(zmax-zmin)/div |
---|
| 36 | ifld=1 |
---|
| 37 | endif |
---|
| 38 | cbm03/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 |
---|
| 43 | cbm28/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 |
---|
| 69 | c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* |
---|