11
int main(int argc, char **argv)
14
for(d=0.0000001;d<=1;d+=0.02)
16
z21(1.0,d,0.5, &r, &x);
17
printf("%f %f %f %f \n", d,r,x, sqrt(r*r+x*x));
22
/* To find the mutual impedance between to arbitary length, thin elements
23
I used the equations on Krauss, Antennas, McGraw Hill, 1988, pp426 and
24
427. Original work from Brown and King, 'High Frequency Models in Antenna
25
Investigations', Proc IRE, vol 22, pp457-480, April 1934*/
26
void z21(double lamda, double d, double l, double *r21, double *x21)
29
double b, cos_bl, sin_bl, sin_bl_over_2, cos_bl_over_2, c, s ;
30
double t1, t2, t3, t4;
31
double si_t1, ci_t1, si_t4, ci_t4, ci_bd, si_bd;
32
double ci_t2, si_t2, ci_t3, si_t3;
35
t1=b*(sqrt(d*d+l*l)+l);
36
t2=0.5*b*(sqrt(4*d*d+l*l)-l);
37
t3=0.5*b*(sqrt(4*d*d+l*l)+l);
38
t4=b*(sqrt(d*d+l*l)-l);
39
/* To save findinding the same slow trigometric and ever slower
40
si and ci functions, I'll just look them up once */
43
sin_bl_over_2=sin(b*l/2);
44
cos_bl_over_2=cos(b*l/2);
45
s=sin_bl_over_2*sin_bl_over_2;
46
c=cos_bl_over_2*cos_bl_over_2;
48
cisi(t1, &ci_t1, &si_t1);
49
cisi(t2,&ci_t2, &si_t2);
50
cisi(t3,&ci_t3, &si_t3);
51
cisi(t4, &ci_t4, &si_t4);
52
cisi(b*d,&ci_bd, &si_bd);
53
/* Real part of mutual impedance, computed as equation on page
55
*r21=(30/s)*(2*(2+cos_bl)*ci_bd
56
-4*c*( ci_t2 + ci_t3 )
57
+cos_bl*( ci_t4 + ci_t1 )
58
+sin_bl* ( si_t1 - si_t4 -2*si_t3 +2*si_t2 ) );
60
/* Imaginary part of mutual impedance, computed as equation on page
62
*x21=(30/s)*(-2*(2+cos_bl)*si_bd
63
+4*c*( si_t2 + si_t3 )
64
-cos_bl*( si_t4 + si_t1 )
65
+sin_bl* ( ci_t1 - ci_t4 -2*ci_t3 +2*ci_t2 ) );
69
fprintf(stderr,"Errno =%d in z21() mutual.c\n", errno);
75
double ci(double x) /* cosine integral */
79
cisi(x, &result, &null);