Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2 | mjames | 1 | #ifndef NEC2C_H |
| 2 | #define NEC2C_H 1 |
||
| 3 | |||
| 4 | #include <complex.h> |
||
| 5 | #include <errno.h> |
||
| 6 | #include <fcntl.h> |
||
| 7 | #include <math.h> |
||
| 8 | #include <signal.h> |
||
| 9 | #include <stdio.h> |
||
| 10 | #include <stdlib.h> |
||
| 11 | #include <string.h> |
||
| 12 | #include <sys/time.h> |
||
| 13 | #include <sys/types.h> |
||
| 14 | #include <time.h> |
||
| 15 | #include <unistd.h> |
||
| 16 | |||
| 17 | #ifndef TRUE |
||
| 18 | #define TRUE 1 |
||
| 19 | #endif |
||
| 20 | |||
| 21 | #ifndef FALSE |
||
| 22 | #define FALSE 0 |
||
| 23 | #endif |
||
| 24 | |||
| 25 | /* commonly used complex constants */ |
||
| 26 | #define CPLX_00 (0.0 + 0.0fj) |
||
| 27 | #define CPLX_01 (0.0 + 1.0fj) |
||
| 28 | #define CPLX_10 (1.0 + 0.0fj) |
||
| 29 | #define CPLX_11 (1.0 + 1.0fj) |
||
| 30 | |||
| 31 | /* common constants */ |
||
| 32 | #define PI 3.141592654 |
||
| 33 | #define POT 1.570796327 |
||
| 34 | #define TP 6.283185308 |
||
| 35 | #define PTP .6283185308 |
||
| 36 | #define TPJ (0.0 + 6.283185308fj) |
||
| 37 | #define PI8 25.13274123 |
||
| 38 | #define PI10 31.41592654 |
||
| 39 | #define TA 1.745329252E-02 |
||
| 40 | #define TD 57.29577951 |
||
| 41 | #define ETA 376.73 |
||
| 42 | #define CVEL 299.8 |
||
| 43 | #define RETA 2.654420938E-3 |
||
| 44 | #define TOSP 1.128379167 |
||
| 45 | #define ACCS 1.E-12 |
||
| 46 | #define SP 1.772453851 |
||
| 47 | #define FPI 12.56637062 |
||
| 48 | #define CCJ (0.0 - 0.01666666667fj) |
||
| 49 | #define CONST1 (0.0 + 4.771341189fj) |
||
| 50 | #define CONST2 4.771341188 |
||
| 51 | #define CONST3 (0.0 - 29.97922085fj) |
||
| 52 | #define CONST4 (0.0 + 188.365fj) |
||
| 53 | #define GAMMA .5772156649 |
||
| 54 | #define C1 -.02457850915 |
||
| 55 | #define C2 .3674669052 |
||
| 56 | #define C3 .7978845608 |
||
| 57 | #define P10 .0703125 |
||
| 58 | #define P20 .1121520996 |
||
| 59 | #define Q10 .125 |
||
| 60 | #define Q20 .0732421875 |
||
| 61 | #define P11 .1171875 |
||
| 62 | #define P21 .1441955566 |
||
| 63 | #define Q11 .375 |
||
| 64 | #define Q21 .1025390625 |
||
| 65 | #define POF .7853981635 |
||
| 66 | #define MAXH 20 |
||
| 67 | #define CRIT 1.0E-4 |
||
| 68 | #define NM 131072 |
||
| 69 | #define NTS 4 |
||
| 70 | #define SMIN 1.e-3 |
||
| 71 | |||
| 72 | /* Replaces the "10000" limit used to */ |
||
| 73 | /* identify segment/patch connections */ |
||
| 74 | #define PCHCON 100000 |
||
| 75 | |||
| 76 | /* carriage return and line feed */ |
||
| 77 | #define CR 0x0d |
||
| 78 | #define LF 0x0a |
||
| 79 | |||
| 80 | /* max length of a line read from input file */ |
||
| 81 | #define LINE_LEN 132 |
||
| 82 | /* version of fortran source for the -v option */ |
||
| 83 | #define version "nec2c 0.9" |
||
| 84 | |||
| 85 | /*** Structs encapsulating global ("common") variables ***/ |
||
| 86 | /* common /crnt/ */ |
||
| 87 | typedef struct |
||
| 88 | { |
||
| 89 | double *air, /* Ai/lambda, real part */ |
||
| 90 | *aii, /* Ai/lambda, imaginary part */ |
||
| 91 | *bir, /* Bi/lambda, real part */ |
||
| 92 | *bii, /* Bi/lambda, imaginary part */ |
||
| 93 | *cir, /* Ci/lambda, real part */ |
||
| 94 | *cii; /* Ci/lambda, imaginary part */ |
||
| 95 | |||
| 96 | complex double *cur; /* Amplitude of basis function */ |
||
| 97 | |||
| 98 | } crnt_t; |
||
| 99 | |||
| 100 | /* common /data/ (geometry data) */ |
||
| 101 | typedef struct |
||
| 102 | { |
||
| 103 | int n, /* Number of wire segments */ |
||
| 104 | np, /* Number of wire segments in symmetry cell */ |
||
| 105 | m, /* Number of surface patches */ |
||
| 106 | mp, /* Number of surface patches in symmetry cell */ |
||
| 107 | npm, /* = n+m */ |
||
| 108 | np2m, /* = n+2m */ |
||
| 109 | np3m, /* = n+3m */ |
||
| 110 | ipsym, /* Symmetry flag */ |
||
| 111 | *icon1, /* Segments end 1 connection */ |
||
| 112 | *icon2, /* Segments end 2 connection */ |
||
| 113 | *itag; /* Segments tag number */ |
||
| 114 | |||
| 115 | /* Wire segment data */ |
||
| 116 | double *x1, *y1, *z1, /* End 1 coordinates of wire segments */ |
||
| 117 | *x2, *y2, *z2, /* End 2 coordinates of wire segments */ |
||
| 118 | *x, *y, *z, /* Coordinates of segment centers */ |
||
| 119 | *si, *bi, /* Length and radius of segments */ |
||
| 120 | *cab, /* cos(a)*cos(b) */ |
||
| 121 | *sab, /* cos(a)*sin(b) */ |
||
| 122 | *salp, /* Z component - sin(a) */ |
||
| 123 | |||
| 124 | /* Surface patch data */ |
||
| 125 | *px, *py, *pz, /* Coordinates of patch center */ |
||
| 126 | *t1x, *t1y, *t1z, /* Coordinates of t1 vector */ |
||
| 127 | *t2x, *t2y, *t2z, /* Coordinates of t2 vector */ |
||
| 128 | *pbi, /* Patch surface area */ |
||
| 129 | *psalp, /* Z component - sin(a) */ |
||
| 130 | |||
| 131 | /* Wavelength in meters */ |
||
| 132 | wlam; |
||
| 133 | |||
| 134 | } data_t; |
||
| 135 | |||
| 136 | /* common /dataj/ */ |
||
| 137 | typedef struct |
||
| 138 | { |
||
| 139 | int iexk, ind1, indd1, ind2, indd2, ipgnd; |
||
| 140 | |||
| 141 | double s, b, xj, yj, zj, cabj, sabj, salpj, rkh, t1xj, t1yj, t1zj, t2xj, t2yj, t2zj; |
||
| 142 | |||
| 143 | complex double exk, eyk, ezk, exs, eys, ezs, exc, eyc, ezc; |
||
| 144 | |||
| 145 | } dataj_t; |
||
| 146 | |||
| 147 | /* common /fpat/ */ |
||
| 148 | typedef struct |
||
| 149 | { |
||
| 150 | int near, nfeh, nrx, nry, nrz, nth, nph, ipd, iavp, inor, iax, ixtyp; |
||
| 151 | |||
| 152 | double thets, phis, dth, dph, rfld, gnor, clt, cht, epsr2, sig2, xpr6, pinr, pnlr, |
||
| 153 | ploss, xnr, ynr, znr, dxnr, dynr, dznr; |
||
| 154 | |||
| 155 | } fpat_t; |
||
| 156 | |||
| 157 | /*common /ggrid/ */ |
||
| 158 | typedef struct |
||
| 159 | { |
||
| 160 | int nxa[3], nya[3]; |
||
| 161 | |||
| 162 | double dxa[3], dya[3], xsa[3], ysa[3]; |
||
| 163 | |||
| 164 | complex double epscf, *ar1, *ar2, *ar3; |
||
| 165 | |||
| 166 | } ggrid_t; |
||
| 167 | |||
| 168 | /* common /gnd/ */ |
||
| 169 | typedef struct |
||
| 170 | { |
||
| 171 | int ksymp, /* Ground flag */ |
||
| 172 | ifar, /* Int flag in RP card, for far field calculations */ |
||
| 173 | iperf, /* Type of ground flag */ |
||
| 174 | nradl; /* Number of radials in ground screen */ |
||
| 175 | |||
| 176 | double t2, /* Const for radial wire ground impedance */ |
||
| 177 | cl, /* Distance in wavelengths of cliff edge from origin */ |
||
| 178 | ch, /* Cliff height in wavelengths */ |
||
| 179 | scrwl, /* Wire length in radial ground screen normalized to w/length */ |
||
| 180 | scrwr; /* Radius of wires in screen in wavelengths */ |
||
| 181 | |||
| 182 | complex double zrati, /* Ground medium [Er-js/wE0]^-1/2 */ |
||
| 183 | zrati2, /* As above for 2nd ground medium */ |
||
| 184 | t1, /* Const for radial wire ground impedance */ |
||
| 185 | frati; /* (k1^2-k2^2)/(k1^2+k2^2), k1=w(E0Mu0)^1/2, k1=k2/ZRATI */ |
||
| 186 | |||
| 187 | } gnd_t; |
||
| 188 | |||
| 189 | /* common /gwav/ */ |
||
| 190 | typedef struct |
||
| 191 | { |
||
| 192 | double r1, /* Distance from current element to point where field is evaluated */ |
||
| 193 | r2, /* Distance from image of element to point where field is evaluated */ |
||
| 194 | zmh, /* Z-Z', Z is height of field evaluation point */ |
||
| 195 | zph; /* Z+Z', Z' is height of current element */ |
||
| 196 | |||
| 197 | complex double u, /* (Er-jS/WE0)^-1/2 */ |
||
| 198 | u2, /* u^2 */ |
||
| 199 | xx1, /* G1*exp(jkR1.r[i]) */ |
||
| 200 | xx2; /* G2*exp(jkR2.r'[i]) */ |
||
| 201 | |||
| 202 | } gwav_t; |
||
| 203 | |||
| 204 | /* common /incom/ */ |
||
| 205 | typedef struct |
||
| 206 | { |
||
| 207 | int isnor; |
||
| 208 | |||
| 209 | double xo, yo, zo, sn, xsn, ysn; |
||
| 210 | |||
| 211 | } incom_t; |
||
| 212 | |||
| 213 | /* common /matpar/ (matrix parameters) */ |
||
| 214 | typedef struct |
||
| 215 | { |
||
| 216 | int icase, /* Storage mode of primary matrix */ |
||
| 217 | npblk, /* Num of blocks in first (NBLOKS-1) blocks */ |
||
| 218 | nlast, /* Num of blocks in last block */ |
||
| 219 | imat; /* Storage reserved in CM for primary NGF matrix A */ |
||
| 220 | |||
| 221 | } matpar_t; |
||
| 222 | |||
| 223 | /* common /netcx/ */ |
||
| 224 | typedef struct |
||
| 225 | { |
||
| 226 | int masym, /* Matrix symmetry flags */ |
||
| 227 | neq, npeq, neq2, nonet, /* Number of two-port networks */ |
||
| 228 | ntsol, /* "Network equations are solved" flag */ |
||
| 229 | nprint, /* Print control flag */ |
||
| 230 | *iseg1, /* Num of seg to which port 1 of network is connected */ |
||
| 231 | *iseg2, /* Num of seg to which port 2 of network is connected */ |
||
| 232 | *ntyp; /* Type of networks */ |
||
| 233 | |||
| 234 | double *x11r, /* Real and imaginary parts of network impedances */ |
||
| 235 | *x11i, *x12r, *x12i, *x22r, *x22i, pin, /* Total input power from sources */ |
||
| 236 | pnls; /* Power lost in networks */ |
||
| 237 | |||
| 238 | complex double zped; |
||
| 239 | |||
| 240 | } netcx_t; |
||
| 241 | |||
| 242 | /* common /plot/ */ |
||
| 243 | typedef struct |
||
| 244 | { |
||
| 245 | int |
||
| 246 | /* Plot control flags */ |
||
| 247 | iplp1, |
||
| 248 | iplp2, iplp3, iplp4; |
||
| 249 | |||
| 250 | } plot_t; |
||
| 251 | |||
| 252 | /* common /save/ */ |
||
| 253 | typedef struct |
||
| 254 | { |
||
| 255 | int *ip; /* Vector of indices of pivot elements used to factor matrix */ |
||
| 256 | |||
| 257 | double epsr, /* Relative dielectric constant of ground */ |
||
| 258 | sig, /* Conductivity of ground */ |
||
| 259 | scrwlt, /* Length of radials in ground screen approximation */ |
||
| 260 | scrwrt, /* Radius of wires in ground screen approximation */ |
||
| 261 | fmhz; /* Frequency in MHz */ |
||
| 262 | |||
| 263 | } save_t; |
||
| 264 | |||
| 265 | /* common /segj/ */ |
||
| 266 | typedef struct |
||
| 267 | { |
||
| 268 | int *jco, /* Stores connection data */ |
||
| 269 | jsno, /* Total number of entries in ax, bx, cx */ |
||
| 270 | maxcon; /* Max. no. connections */ |
||
| 271 | |||
| 272 | double *ax, *bx, *cx; /* Store constants A, B, C used in current expansion */ |
||
| 273 | |||
| 274 | } segj_t; |
||
| 275 | |||
| 276 | /* common /smat/ */ |
||
| 277 | typedef struct |
||
| 278 | { |
||
| 279 | int nop; /* My addition */ |
||
| 280 | |||
| 281 | complex double *ssx; |
||
| 282 | |||
| 283 | } smat_t; |
||
| 284 | |||
| 285 | /* common /tmi/ */ |
||
| 286 | typedef struct |
||
| 287 | { |
||
| 288 | int ij; |
||
| 289 | |||
| 290 | double zpk, rkb2; |
||
| 291 | |||
| 292 | } tmi_t; |
||
| 293 | |||
| 294 | /*common /tmh/ */ |
||
| 295 | typedef struct |
||
| 296 | { |
||
| 297 | double zpka, rhks; |
||
| 298 | |||
| 299 | } tmh_t; |
||
| 300 | |||
| 301 | /* common /vsorc/ */ |
||
| 302 | typedef struct |
||
| 303 | { |
||
| 304 | int *isant, /* Num of segs on which an aplied field source is located */ |
||
| 305 | *ivqd, /* Num of segs on which a current-slope discontinuity source is located */ |
||
| 306 | *iqds, /* Same as above (?) */ |
||
| 307 | nsant, /* Number of applied field voltage sources */ |
||
| 308 | nvqd, /* Number of applied current-slope discontinuity sources */ |
||
| 309 | nqds; /* Same as above (?) */ |
||
| 310 | |||
| 311 | complex double *vqd, /* Voltage of applied-current slope discontinuity sources */ |
||
| 312 | *vqds, /* Same as above (?) */ |
||
| 313 | *vsant; /* Voltages of applied field voltage sources */ |
||
| 314 | |||
| 315 | } vsorc_t; |
||
| 316 | |||
| 317 | /* common /yparm/ */ |
||
| 318 | typedef struct |
||
| 319 | { |
||
| 320 | int ncoup, /* Num of segs between which coupling will be computed */ |
||
| 321 | icoup, /* Num of segs in the coupling array that have been excited */ |
||
| 322 | *nctag, /* Tag number of segments */ |
||
| 323 | *ncseg; /* Num of segs in set of segs that have same tag number */ |
||
| 324 | |||
| 325 | complex double *y11a, /* Self admittance of segments */ |
||
| 326 | *y12a; /* Mutual admittances stored in order 1,2 1,3 2,3 2,4 etc */ |
||
| 327 | |||
| 328 | } yparm_t; |
||
| 329 | |||
| 330 | /* common /zload/ */ |
||
| 331 | typedef struct |
||
| 332 | { |
||
| 333 | int nload; /* Number of loading networks */ |
||
| 334 | |||
| 335 | complex double *zarray; /* = Zi/(Di/lambda) */ |
||
| 336 | |||
| 337 | } zload_t; |
||
| 338 | |||
| 339 | /* Returns the complex double of the arguments */ |
||
| 340 | #define cmplx(r, i) ((r) + (i) *CPLX_01) |
||
| 341 | |||
| 342 | /*------------------------------------------------------------------------*/ |
||
| 343 | |||
| 344 | /* Function prototypes produced by cproto */ |
||
| 345 | /* calculations.c */ |
||
| 346 | void cabc (complex double *curx); |
||
| 347 | void couple (complex double *cur, double wlam); |
||
| 348 | void load ( |
||
| 349 | int *ldtyp, int *ldtag, int *ldtagf, int *ldtagt, double *zlr, double *zli, double *zlc); |
||
| 350 | void gf (double zk, double *co, double *si); |
||
| 351 | double db10 (double x); |
||
| 352 | double db20 (double x); |
||
| 353 | void intrp ( |
||
| 354 | double x, |
||
| 355 | double y, |
||
| 356 | complex double *f1, |
||
| 357 | complex double *f2, |
||
| 358 | complex double *f3, |
||
| 359 | complex double *f4); |
||
| 360 | void intx (double el1, double el2, double b, int ij, double *sgr, double *sgi); |
||
| 361 | int min (int a, int b); |
||
| 362 | void test ( |
||
| 363 | double f1r, double f2r, double *tr, double f1i, double f2i, double *ti, double dmin); |
||
| 364 | void sbf (int i, int is, double *aa, double *bb, double *cc); |
||
| 365 | void tbf (int i, int icap); |
||
| 366 | void trio (int j); |
||
| 367 | void zint (double sigl, double rolam, complex double *zt); |
||
| 368 | double cang (complex double z); |
||
| 369 | /* fields.c */ |
||
| 370 | void efld (double xi, double yi, double zi, double ai, int ij); |
||
| 371 | void eksc ( |
||
| 372 | double s, |
||
| 373 | double z, |
||
| 374 | double rh, |
||
| 375 | double xk, |
||
| 376 | int ij, |
||
| 377 | complex double *ezs, |
||
| 378 | complex double *ers, |
||
| 379 | complex double *ezc, |
||
| 380 | complex double *erc, |
||
| 381 | complex double *ezk, |
||
| 382 | complex double *erk); |
||
| 383 | void ekscx ( |
||
| 384 | double bx, |
||
| 385 | double s, |
||
| 386 | double z, |
||
| 387 | double rhx, |
||
| 388 | double xk, |
||
| 389 | int ij, |
||
| 390 | int inx1, |
||
| 391 | int inx2, |
||
| 392 | complex double *ezs, |
||
| 393 | complex double *ers, |
||
| 394 | complex double *ezc, |
||
| 395 | complex double *erc, |
||
| 396 | complex double *ezk, |
||
| 397 | complex double *erk); |
||
| 398 | void gh (double zk, double *hr, double *hi); |
||
| 399 | void gwave ( |
||
| 400 | complex double *erv, |
||
| 401 | complex double *ezv, |
||
| 402 | complex double *erh, |
||
| 403 | complex double *ezh, |
||
| 404 | complex double *eph); |
||
| 405 | void gx (double zz, double rh, double xk, complex double *gz, complex double *gzp); |
||
| 406 | void gxx ( |
||
| 407 | double zz, |
||
| 408 | double rh, |
||
| 409 | double a, |
||
| 410 | double a2, |
||
| 411 | double xk, |
||
| 412 | int ira, |
||
| 413 | complex double *g1, |
||
| 414 | complex double *g1p, |
||
| 415 | complex double *g2, |
||
| 416 | complex double *g2p, |
||
| 417 | complex double *g3, |
||
| 418 | complex double *gzp); |
||
| 419 | void hfk (double el1, double el2, double rhk, double zpkx, double *sgr, double *sgi); |
||
| 420 | void hintg (double xi, double yi, double zi); |
||
| 421 | void hsfld (double xi, double yi, double zi, double ai); |
||
| 422 | void hsflx ( |
||
| 423 | double s, |
||
| 424 | double rh, |
||
| 425 | double zpx, |
||
| 426 | complex double *hpk, |
||
| 427 | complex double *hps, |
||
| 428 | complex double *hpc); |
||
| 429 | void nefld ( |
||
| 430 | double xob, |
||
| 431 | double yob, |
||
| 432 | double zob, |
||
| 433 | complex double *ex, |
||
| 434 | complex double *ey, |
||
| 435 | complex double *ez); |
||
| 436 | void nfpat (void); |
||
| 437 | void nhfld ( |
||
| 438 | double xob, |
||
| 439 | double yob, |
||
| 440 | double zob, |
||
| 441 | complex double *hx, |
||
| 442 | complex double *hy, |
||
| 443 | complex double *hz); |
||
| 444 | void pcint ( |
||
| 445 | double xi, |
||
| 446 | double yi, |
||
| 447 | double zi, |
||
| 448 | double cabi, |
||
| 449 | double sabi, |
||
| 450 | double salpi, |
||
| 451 | complex double *e); |
||
| 452 | void unere (double xob, double yob, double zob); |
||
| 453 | /* geometry.c */ |
||
| 454 | void arc (int itg, int ns, double rada, double ang1, double ang2, double rad); |
||
| 455 | void conect (int ignd); |
||
| 456 | void datagn (void); |
||
| 457 | void helix ( |
||
| 458 | double s, |
||
| 459 | double hl, |
||
| 460 | double a1, |
||
| 461 | double b1, |
||
| 462 | double a2, |
||
| 463 | double b2, |
||
| 464 | double rad, |
||
| 465 | int ns, |
||
| 466 | int itg); |
||
| 467 | int isegno (int itagi, int mx); |
||
| 468 | void move ( |
||
| 469 | double rox, |
||
| 470 | double roy, |
||
| 471 | double roz, |
||
| 472 | double xs, |
||
| 473 | double ys, |
||
| 474 | double zs, |
||
| 475 | int its, |
||
| 476 | int nrpt, |
||
| 477 | int itgi); |
||
| 478 | void patch ( |
||
| 479 | int nx, |
||
| 480 | int ny, |
||
| 481 | double ax1, |
||
| 482 | double ay1, |
||
| 483 | double az1, |
||
| 484 | double ax2, |
||
| 485 | double ay2, |
||
| 486 | double az2, |
||
| 487 | double ax3, |
||
| 488 | double ay3, |
||
| 489 | double az3, |
||
| 490 | double ax4, |
||
| 491 | double ay4, |
||
| 492 | double az4); |
||
| 493 | void subph (int nx, int ny); |
||
| 494 | void readgm ( |
||
| 495 | char *gm, |
||
| 496 | int *i1, |
||
| 497 | int *i2, |
||
| 498 | double *x1, |
||
| 499 | double *y1, |
||
| 500 | double *z1, |
||
| 501 | double *x2, |
||
| 502 | double *y2, |
||
| 503 | double *z2, |
||
| 504 | double *rad); |
||
| 505 | void reflc (int ix, int iy, int iz, int itx, int nop); |
||
| 506 | void wire ( |
||
| 507 | double xw1, |
||
| 508 | double yw1, |
||
| 509 | double zw1, |
||
| 510 | double xw2, |
||
| 511 | double yw2, |
||
| 512 | double zw2, |
||
| 513 | double rad, |
||
| 514 | double rdel, |
||
| 515 | double rrad, |
||
| 516 | int ns, |
||
| 517 | int itg); |
||
| 518 | /* ground.c */ |
||
| 519 | void rom2 (double a, double b, complex double *sum, double dmin); |
||
| 520 | void sflds (double t, complex double *e); |
||
| 521 | /* input.c */ |
||
| 522 | void qdsrc (int is, complex double v, complex double *e); |
||
| 523 | void readmn ( |
||
| 524 | char *gm, |
||
| 525 | int *i1, |
||
| 526 | int *i2, |
||
| 527 | int *i3, |
||
| 528 | int *i4, |
||
| 529 | double *f1, |
||
| 530 | double *f2, |
||
| 531 | double *f3, |
||
| 532 | double *f4, |
||
| 533 | double *f5, |
||
| 534 | double *f6); |
||
| 535 | /* main.c */ |
||
| 536 | int main (int argc, char **argv); |
||
| 537 | void Null_Pointers (void); |
||
| 538 | void prnt ( |
||
| 539 | int in1, |
||
| 540 | int in2, |
||
| 541 | int in3, |
||
| 542 | double fl1, |
||
| 543 | double fl2, |
||
| 544 | double fl3, |
||
| 545 | double fl4, |
||
| 546 | double fl5, |
||
| 547 | double fl6, |
||
| 548 | char *ia, |
||
| 549 | int ichar); |
||
| 550 | /* matrix.c */ |
||
| 551 | void cmset (int nrow, complex double *cm, double rkhx, int iexkx); |
||
| 552 | void cmss (int j1, int j2, int im1, int im2, complex double *cm, int nrow, int itrp); |
||
| 553 | void cmsw ( |
||
| 554 | int j1, |
||
| 555 | int j2, |
||
| 556 | int i1, |
||
| 557 | int i2, |
||
| 558 | complex double *cm, |
||
| 559 | complex double *cw, |
||
| 560 | int ncw, |
||
| 561 | int nrow, |
||
| 562 | int itrp); |
||
| 563 | void cmws ( |
||
| 564 | int j, int i1, int i2, complex double *cm, int nr, complex double *cw, int nw, int itrp); |
||
| 565 | void cmww ( |
||
| 566 | int j, int i1, int i2, complex double *cm, int nr, complex double *cw, int nw, int itrp); |
||
| 567 | void etmns ( |
||
| 568 | double p1, |
||
| 569 | double p2, |
||
| 570 | double p3, |
||
| 571 | double p4, |
||
| 572 | double p5, |
||
| 573 | double p6, |
||
| 574 | int ipr, |
||
| 575 | complex double *e); |
||
| 576 | void factr (int n, complex double *a, int *ip, int ndim); |
||
| 577 | void factrs (int np, int nrow, complex double *a, int *ip); |
||
| 578 | void fblock (int nrow, int ncol, int imax, int ipsym); |
||
| 579 | void solve (int n, complex double *a, int *ip, complex double *b, int ndim); |
||
| 580 | void solves ( |
||
| 581 | complex double *a, |
||
| 582 | int *ip, |
||
| 583 | complex double *b, |
||
| 584 | int neq, |
||
| 585 | int nrh, |
||
| 586 | int np, |
||
| 587 | int n, |
||
| 588 | int mp, |
||
| 589 | int m); |
||
| 590 | /* misc.c */ |
||
| 591 | void usage (void); |
||
| 592 | void abort_on_error (int why); |
||
| 593 | void secnds (double *x); |
||
| 594 | int stop (int flag); |
||
| 595 | int load_line (char *buff, FILE *pfile); |
||
| 596 | void mem_alloc (void **ptr, long int req); |
||
| 597 | void mem_realloc (void **ptr, long int req); |
||
| 598 | void free_ptr (void **ptr); |
||
| 599 | /* network.c */ |
||
| 600 | void netwk (complex double *cm, int *ip, complex double *einc); |
||
| 601 | /* radiation.c */ |
||
| 602 | void ffld (double thet, double phi, complex double *eth, complex double *eph); |
||
| 603 | void fflds ( |
||
| 604 | double rox, |
||
| 605 | double roy, |
||
| 606 | double roz, |
||
| 607 | complex double *scur, |
||
| 608 | complex double *ex, |
||
| 609 | complex double *ey, |
||
| 610 | complex double *ez); |
||
| 611 | void gfld ( |
||
| 612 | double rho, |
||
| 613 | double phi, |
||
| 614 | double rz, |
||
| 615 | complex double *eth, |
||
| 616 | complex double *epi, |
||
| 617 | complex double *erd, |
||
| 618 | complex double ux, |
||
| 619 | int ksymp); |
||
| 620 | void rdpat (void); |
||
| 621 | /* somnec.c */ |
||
| 622 | void somnec (double epr, double sig, double fmhz); |
||
| 623 | void bessel (complex double z, complex double *j0, complex double *j0p); |
||
| 624 | void evlua ( |
||
| 625 | complex double *erv, complex double *ezv, complex double *erh, complex double *eph); |
||
| 626 | void fbar (complex double p, complex double *r); |
||
| 627 | void gshank ( |
||
| 628 | complex double start, |
||
| 629 | complex double dela, |
||
| 630 | complex double *sum, |
||
| 631 | int nans, |
||
| 632 | complex double *seed, |
||
| 633 | int ibk, |
||
| 634 | complex double bk, |
||
| 635 | complex double delb); |
||
| 636 | void hankel (complex double z, complex double *h0, complex double *h0p); |
||
| 637 | void lambda (double t, complex double *xlam, complex double *dxlam); |
||
| 638 | void rom1 (int n, complex double *sum, int nx); |
||
| 639 | void saoa (double t, complex double *ans); |
||
| 640 | #endif |
||
| 641 | |||
| 642 | /* provide wrapper functions to allow change of the data type for printing */ |
||
| 643 | static inline float print_creall (complex double x) |
||
| 644 | { |
||
| 645 | return (float) creall (x); |
||
| 646 | }; |
||
| 647 | static inline float print_cimagl (complex double x) |
||
| 648 | { |
||
| 649 | return (float) cimagl (x); |
||
| 650 | }; |