Homepage of atlc - Arbitrary Transmission Line Calculator
Author: Dr. David Kirkby
Description: Transmission lines, transmission line, atlc, calculator, transmission-lines, transmission-line
Keywords: atlc, transmission lines, tranmission line, calculator, finite difference

# `atlc` - Arbitrary Transmission Line Calculator (for electrical transmission lines)

atlc is a computer aided design (CAD) package for the design and analysis of electrical transmission lines and directional couplers of totally arbitrary cross section and an arbitrary number of different dielectrics. By analysis, it is assumed one requires finding the electrical properties of transmission lines or couplers, where the physical dimensions are known. By design, it is assumed one requires a transmission line or coupler to have certain electrical properties and one wishes to find how to physically realise such a structure.

atlc likely to be of use to radio amateurs, professional RF engineers, students and academics.

Great effort has been put into making atlc portable. Whilst written under UNIX, atlc's portability means pre-compiled command-line Windows binaries have been produced by Mark Chun KH6HPQ and others from the source code without any changes at all. A port to OpenVMS in a possibility, although the main development is aimed very much at UNIX.

In addition to the the commmon Linux PC, atlc has been tested on a Sony Playstation 2 as well as the Cray YMP-EL supercomputer, which is available for free public access at Cray-Cyber network. It has also been tested on Debian Linux, Slackware Linux, Gentoo Linux, Redhat Linux, Suse Linux, IBM's AIX, Apples's OS X for Mac, HP's HP-UX (both PA-RISC and Itanium), SGI's IRIX, Sun's Solaris, SCO's UNIXWare, HP's Tru64, Cray's UNICOS, NetBSD, OpenBSD and FreeBSD. If you run atlc on any other operating system, please let me know.

Previous version of atlc could use multiple-processors if present, to reduce execution time. This has been temporarily disabled, as the algorithm had some intermittent problems on IBM's. Careful checking showed the problem that only seemed to affect AIX, was a real bug with the potential to occur on other operating systems, although it only ever showed up under AIX. Hence the current release has disabled the support for multiple processors - atlc will fun fine on multi-processor machines, but it will only use one of them. A revised method of computation has been determined, which will re-enable the use of multiple processors. It is hoped to release this by early February 2004 at the latest - probably some time in January 2004.

Coaxial cable Zo= 70.0215 Ohms C=47.637 pF/m L=233.557 nH/m | Really odd!!! Zo= 56.020 Ohms C= 59.544 pF/m L= 186.862 nH/m | Directional coupler Zo= 64.7449 Ohms Zeven=65.3682 Ohms Zodd= 64.1275 Ohms | Microstrip coupler on double-sided PCB Zodd= 35.10 Ohms Zeven= 50.93 Ohms Zdiff= 70.21 Ohms Zcomm= 25.46 Ohms

There are 12 programs that comprise the package atlc. One of the programs is called `atlc`; the other 11 have different names. Using the programs comprising the package atlc one is able to:.

1. Calculate the characteristic impedance and other properties of two conductor transmission lines, like coaxial cable (far left above), but the cross section can be of any shape whatsoever, including that second from the left. A technique known as finite difference is used for this. There can be an arbitrary number of different dielectrics. Note the inner conductor is shown red, the outer green and a vacuum dielectric is shown as white - for all practical purposes, the permittivity of a vacuum (1.0 by definition) dielectric is the same as that of air (approximately 1.0006)
2. Calculate the impedance's for both the odd-mode and even-mode, along with many other properties of directional couplers of arbitrary cross section, like that third from the left below. Note, with couplers, there is two inner conductors, with - one red as before, but another one blue, in addition to the green outer conductor. The finite difference technique is used for this too. Analysis extends to couplers with multiple dielectrics, such as the microstrip coupler on the PCB on the right below.
3. Compute the common-mode impedance Zcomm and differential-mode impdance Zdiff of arbitrary directional couplers.
4. Compute the values of electric field, voltage, energy stored etc in 2 and 3 conductor transmission lines and save this data to binary files, as well as bitmaps which can be viewed in a graphics package.
5. Automatically create bitmaps for some common transmission lines, to save the user having to create them in a graphics package, which would soon become tedious.
6. Compute the odd and even mode impedances required of an arbitrary directional coupler to satisfy a given frequency response and coupling factor.
7. In the case of a coupled stripline with thin conductors, the program `design_coupler` can fairly quickly (within a few minutes) compute the dimensions of a directional coupler to satisfy your requirements of frequency response, coupling factor and optionally length. If you wish to implement the design on a double-sided printed circuit board like that on the right below, the program `find_optimal_dimensions_for_microstrip_coupler` will do this for you, but it takes several hours (perhaps a couple of days) to find a solution, although some well-timed and sensible human intervention can reduce this considerably.
8. Since the program `atlc` can save quantitative data on the x and y components of electric field, energy, voltage etc to binary files, there is a program `readbin` that can read the binary files and tell you something about the data saved in them. This information is for debugging only - it is not expected the user will use `readbin`. The user is expected to write their own programs to read this binary information, in the very unlikely event they wish to use the information. It is likely to be of academic interest only. The normal output from `atlc` is in simply text.

In any example which has been checked against exact analytical solutions, the errors in `atlc` are under 1% and usually under 0.4%

In order to perform 1, 2, 3 or 4 above, the programme `atlc` needs to know shape of the transmission line's cross section. This cross section is stored in a data file, which happens to be a Windows bitmap file. The bitmap file is read by `atlc`, following which the programme performs the analysis.
There are two ways to generate the bitmap for `atlc`.

1. As you might expect, you can draw the transmission line's cross-section in a graphics programme such as Gimp, Photoshop, Windows Paint, Corel Photopaint etc. The programme must be able to save images as bitmap (.BMP or .bmp) files, in 24-bit (true colour) mode. The graphics programme can run under whatever operating system you like. If for example you have some U-section brass and some hollow rectangular tube, and wanted to know the properties of a transmission line formed from these, you might draw something like this, and save it as a file, which we might call `ushape.bmp`
2. In the case of simple cross-sections, the bitmaps can be generated automatically. Currently 7 such programmes have been written:
   1. `create_bmp_for_circ_in_circ`
   2. `create_bmp_for_circ_in_rect`
   3. `create_bmp_for_rect_cen_in_rect`
   4. `create_bmp_for_rect_in_rect`
   5. `create_bmp_for_symmetrical_stripline`
   6. `create_bmp_for_stripline_coupler`
   7. `create_bmp_for_microstrip_coupler`
   to quickly generate bitmaps for transmission lines. The first five are for two-conductor transmission lines, whereas the last two are for directional couplers. See the section Automatic Bitmap Generators for information about what cross sections these programs generate. Using these programs to create bitmaps is very fast - much faster than creating them with a graphics programme.

A UNIX computer, with a gcc or other C compiler, is needed to build atlc. The programme should compile very easily and quickly. Being rather CPU intensive, `atlc` has been written to support multiple processors if available. Here is an example of using atlc, with the file `ushape.bmp`, which was drawn by a graphics programme.

    sparrow % atlc -v ushape.bmp
    ushape.bmp 2 Er= 1.00 Zo= 43.55 Ohms C= 76.6 pF/m L= 145.3 nH/m v= 2.998e+08 m/s v_f= 1.000 VERSION= 4.2.2
    ushape.bmp 2 Er= 1.00 Zo= 43.64 Ohms C= 76.4 pF/m L= 145.6 nH/m v= 2.998e+08 m/s v_f= 1.000 VERSION= 4.2.2
    ushape.bmp 2 Er= 1.00 Zo= 43.64 Ohms C= 76.4 pF/m L= 145.6 nH/m v= 2.998e+08 m/s v_f= 1.000 VERSION= 4.2.2

It will be seen that `atlc` makes several estimates of the transmission line's properties, each subsequent one being closer to the true values (normally only the final result is shown, but the -v option added above causes `atlc` to print intermediate results).
`atlc` produces numberous bitmap and binary files, in addition to the text shown above. Hopefully some of the text output is comprehensible, but the exact format of all of atlc's outputs is disucced in the fileformat section.
Here's an example of using `create_bmp_for_circ_in_circ` to create a bitmap, following which is it analysed using `atlc`. The programme `create_bmp_for_circ_in_circ` creates a bitmap (.bmp file) for a cicular conductor inside another circular conductor - like coaxial cable. The program takes takes 5 command line arguments which (in order) are:

1. D - The inner diameter of the outer conductor.
2. d - The outer diameter of the inner conductor
3. O - The offset between the inner and outer conductors (this is zero for standard coax)
4. Er - The relative permittivity of the dielectric between the conductors
5. filename - The filename to write the bitmap file to, which would normally end in .bmp

    sparrow % create_bmp_for_circ_in_circ 500 100 100 1 x.bmp
    sparrow % atlc  x.bmp
    x.bmp 2 Er=1.00 Zo= 85.44 Ohms C= 39.0 pF/m L= 285.0 nH/m v= 2.998e+08 m/s v_f= 1.000 VERSION= 4.2 2

How to use `create_bmp_for_circ_in_circ` (or any other program) is best determined by reading the UNIX man page, seeing an example or by running the program with no arguments, where it will print a usage message. An html version of the man page for `create_bmp_for_circ_in_circ` is available, but the all-important diagram is not clear.
Return to the atlc homepage
atlc is written and supported by Dr. David Kirkby (G8WRB) It it issued under the GNU General Public License

. . . . . . .