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

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

parmela pspa initial

File size: 1.3 KB
Line 
1      subroutine cfield(r,z,nc,ez,er,bt)
2c---------------------------------------------------------------------------
3c
4      include 'param_sz.h'
5      include 'cfldscom.h'
6      include 'constcom.h'
7      include 'ucom.h'
8c
9c--------------------------------------------------------------------------
10c*
11      if(nc.lt.1 .or. nc.gt.numc)then
12        write(ndiag,*)' cell id number (',nc,') is out of range'
13        call appendparm
14        stop ' Abnormal stop cfield '
15      endif
16      if(iflag(nc).ge.0)call genfld(nc)
17  1   dz=hcll(nc)/(numz-1)
18      abz=abs(z)
19      if(z.lt.0.)then
20      s=-1.
21      else
22      s=1.
23      endif
24      nz=abz/dz+1
25      if(nz.gt.numz-1)then
26      nz=numz-1
27      dz1=1.
28      else
29      dz1=abz/dz-nz+1
30      endif
31      nr=r/dr(nc)+1
32      if(nr.gt.numr-1)then
33      nr=numr-1
34      dr1=1.
35      else
36      dr1=r/dr(nc)-nr+1
37      endif
38      c1=(1.-dr1)*(1.-dz1)
39      c2=(1.-dr1)*dz1
40      c3=dr1*(1.-dz1)
41      c4=dr1*dz1
42      er=c1*fer(nr,nz,nc)+c2*fer(nr,nz+1,nc)+
43     1   c3*fer(nr+1,nz,nc)+c4*fer(nr+1,nz+1,nc)
44      er=er*s
45      ez=c1*fez(nr,nz,nc)+c2*fez(nr,nz+1,nc)+
46     1   c3*fez(nr+1,nz,nc)+c4*fez(nr+1,nz+1,nc)
47      bt=c1*fbt(nr,nz,nc)+c2*fbt(nr,nz+1,nc)+
48     1   c3*fbt(nr+1,nz,nc)+c4*fbt(nr+1,nz+1,nc)
49      return
50      end
51c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
Note: See TracBrowser for help on using the repository browser.