1 | function bfld(z,r,brfld) |
---|
2 | c---------------------------------------------------------------------- |
---|
3 | c |
---|
4 | include 'param_sz.h' |
---|
5 | include 'bfieldcom.h' |
---|
6 | include 'flagcom.h' |
---|
7 | include 'pfieldcom.h' |
---|
8 | include 'syscom.h' |
---|
9 | include 'ucom.h' |
---|
10 | c |
---|
11 | c----- Champ Poisson |
---|
12 | c |
---|
13 | if(poiflag .and. (z.ge.pzmin.and.z.le.pzmax))then |
---|
14 | l=(z-pzmin)/pdz |
---|
15 | k=r/pdr |
---|
16 | f1=(pdz*(l+1)-z+pzmin)/pdz |
---|
17 | f2=1.-f1 |
---|
18 | f3=(pdr*(k+1)-r)/pdr |
---|
19 | f4=1.-f3 |
---|
20 | if(k.ge.nrp)then |
---|
21 | brfld=0. |
---|
22 | bfld=0. |
---|
23 | return |
---|
24 | endif |
---|
25 | brfld=f1*(f3*rbfld(k,l)+f4*rbfld(k+1,l))+ |
---|
26 | * f2*(f3*rbfld(k,l+1)+f4*rbfld(k+1,l+1)) |
---|
27 | bfld=f1*(f3*zbfld(k,l)+f4*zbfld(k+1,l))+ |
---|
28 | * f2*(f3*zbfld(k,l+1)+f4*zbfld(k+1,l+1)) |
---|
29 | return |
---|
30 | endif |
---|
31 | c |
---|
32 | c---- |
---|
33 | c |
---|
34 | if(ifld.ne.0 .and. (z.ge.zmin.and.z.lt.zmax))then |
---|
35 | i=(z-zmin)/dzz +1 |
---|
36 | cbm 04/02/2010 |
---|
37 | if(i.gt.nptcb) then |
---|
38 | write(nnout,*) ' bfld i gt ',nptcb |
---|
39 | stop |
---|
40 | endif |
---|
41 | f1=(dzz*i-z+zmin)/dzz |
---|
42 | f2=1.-f1 |
---|
43 | rsq=r**2 |
---|
44 | bf1=bf(i,1)*f1+bf(i+1,1)*f2 |
---|
45 | bf2=bf(i,2)*f1+bf(i+1,2)*f2 |
---|
46 | bf3=bf(i,3)*f1+bf(i+1,3)*f2 |
---|
47 | bf4=bf(i,4)*f1+bf(i+1,4)*f2 |
---|
48 | bf5=bf(i,5)*f1+bf(i+1,5)*f2 |
---|
49 | bf6=bf(i,6)*f1+bf(i+1,6)*f2 |
---|
50 | bfld=bf(i,0)*f1+bf(i+1,0)*f2-rsq*(bf2-rsq*bf4/16.+ |
---|
51 | * rsq**2*bf6/576.)/4. |
---|
52 | brfld=-r*(bf1-rsq*bf3/8.+rsq**2*bf5/192.)/2. |
---|
53 | else |
---|
54 | bfld=0 |
---|
55 | brfld=0 |
---|
56 | endif |
---|
57 | return |
---|
58 | end |
---|
59 | c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* |
---|