1 | subroutine cfield(r,z,nc,ez,er,bt) |
---|
2 | c--------------------------------------------------------------------------- |
---|
3 | c |
---|
4 | include 'param_sz.h' |
---|
5 | include 'cfldscom.h' |
---|
6 | include 'constcom.h' |
---|
7 | include 'ucom.h' |
---|
8 | c |
---|
9 | c-------------------------------------------------------------------------- |
---|
10 | c* |
---|
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 |
---|
51 | c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* |
---|