User’s Guide for Program GO_3D, Version 1K


Professor Christopher W. Trueman

Electromagnetic Compatibility Laboratory

Concordia University


Updated March 28, 2002

1           Introduction

Program GO_3D uses geometrical optics in three-dimensional space to determine the fields of a portable radio transmitter operating in an indoor environment.  The input to the program consists of a floor plan, the location of the transmitter or handset, the transmitter’s far fields, and the location of the receiver or observer.  The GO_3D program uses ray-tracing to find coupling paths between the transmitter and receiver, including propagation through walls or partitions and reflection from walls.  Paths including many reflections and many penetrations of walls can be accounted for.  The program uses full vector analysis and calculates the three vector components of the field at the receiver, , , and .  This User’s Guide describes the preparation of an input file for analysis by GO_3D, including how to specify the floor plan, the transmitter, and the location of one or many receivers at which the field is to be found. 

You can obtain a copy of the “executable” file for GO_3D for a Pentium computer running Microsoft Windows by clicking here: Fetch GO_3D.EXE 

The GO_3D code works by constructing the image of the source in each wall panel, as described in Refs. [1] and [2].  Each image of the source has a 2nd level image in each wall panel; including 2 levels of images permits the code to trace rays that are reflected twice in traveling from the transmitter to the observer.  Each 2nd level image has a 3rd level image in each panel; three levels of images permit rays to be tracked through three reflections.  The GO_3D code constructs a tree of images with the transmitter at the root[3].  The depth of the tree, that is the maximum number of reflections that the program will trace, is not by the user a priori.  Instead the user sets a threshold field strength, as discussed below, and the code includes all rays having fields that are above the threshold.  The tree structure permits the code to trace rays through more than a hundred reflections if the user asks for such a detailed calculation.



2           The GO_3D Input File

The input file for the GO_3D code is interpreted by the program line by line and so in a sense is a “language” for defining a problem.  The input to the program is an ASCII file that is created with a file editor, notepad or word processor.  Table 1 lists the various commands that control GO_3D.  Table 2 shows a typical input file called “hallroom.go3” that constructs the simple floor plan shown in Fig. 1.  The extension “go3” is customary to identify a file as GO_3D input.  The input “language” is intended to be descriptive and easy to understand.  In general the order of the statements in the input file does not matter.  However it helps to group these logically as transmitter definition, material definitions, wall definitions, point locations and wall panel locations, floor and ceiling, and receiver locations.  You can fetch a copy of this input file by clicking here: Fetch HALLROOM.GO3. 

The floor plan defined by the input file in Table 2 is shown in Figure 1.  The figure shows an xy plane “plan view” at the bottom, with the x axis extending across the page and the y axis up the page.  The top part of the figure shows an xz or “vertical” plane, with x across the page and z up the page.  The plan view shows a hallway which extends from x=-10 m to x=10 m and is open at the ends.  The hallway is 1.755 m wide from wall surface to wall surface.  One wall is continuous; the other wall has a 1 m wide doorway leading to a small room.  There is a wood door, 4.5 cm thick, in the “open” position.  The room dimensions are 2.86 m in the x direction and 4.07 m in the y direction.  The walls are of “clay block” construction except for the outside wall of the room, which is “concrete”, as defined in the following.  There is a window approximately in the center of the outer wall.  A transmitter is operated in the corridor, for example at the location shown by the circle in Figure 1.  The field strength at various locations in the room is to be found, for example along the dashed line shown in Fig. 1.  The upper part of the figure shows an elevation view of the same floor plan.  The floor and the ceiling are concrete slabs 42 cm thick.  The ceiling height is 2.48 m.  In the following each part of the input file is described in detail.





Figure 1 The hallway with a side room.


2.1         Input Coordinate System

The floor plan is specified to the GO_3D program in an xyz coordinate system. The z axis is the vertical axis pointing from the floor to the ceiling, with z=0 being the floor level, by definition.  The x and y coordinates are used to define the location of the wall panels making up the floor plan.  One limitation of the present implementation of GO_3D is that the wall panels must be parallel to the xz plane or to the yz plane.


2.2         Input File Structure

Each line of the input file is either a “command” or a “comment”.  Commands are recognized by the keyword at the beginning of the line.  If the leading characters are not recognized as a command then the input line is ignored, that is, treated as a comment.  The user is encouraged to begin comment lines with “C” or “!” or “\” to make clear to the reader of the file that the line is intended as a comment.    It is good practice to include many comments in the input file so that the file is “self-documenting” and fully self-explanatory.  What is the structure being described?  What is the date?  Why is this problem being solved? Where did the geometry data come from? Where are the values for the electrical parameters taken from?  A fully documented file is of much greater value than a simple list of commands and numbers.


Table 1

GO_3D Input Commands

Materials and Wall Construction

MATERIAL   Space      1.    0.   1.

MATERIAL   Concrete  6.1   60.1  1.

MATERIAL   Brick     5.1   10.   1.

MATERIAL   Iron       1.0        2.E9        1000.

WALL_TYPE BrickWall      SOLID     Brick      14.

WALL_TYPE ConcreteWall1  SOLID Concrete 42.

WALL_TYPE SheetrockWall LAYERED 3 Concrete 1.  Space 12. Concrete 1.

WALL_TYPE ClayBlockWall LAYERED 5 Concrete 1.5  Brick 0.8 Space 9.4 Brick 0.8 Concrete 1.5

WALL_TYPE Plaster&Wire   LAYERED 3 Concrete 1. Iron  12. Concrete 1.


POINT     xmitter  3.9225 1.35 1.6

POINT 23          6.095   -1.12   0.

POINT 24t         6.095    0.85    2.48

DEFINE_WALL 23 24t SheetrockWall

FLOOR   Concrete    30.

CEILING Concrete   30.   2.48


FREQUENCY      850.



DIPOLE_SOURCE  0.  0.  1.

IMPORTED_SOURCE  imported.sol



RCVRLINE    rstart  rend        2.0

RCVRGRID       gridst      griden         3.5

Program Control





XMITGRID  xmitgrid1 xmitgrid2   5.0


REFFREQ 400. 1200.



Each command line begins with a “keyword” such as “FREQUENCY” or “DEFINEWALL”.  In the following, all the input commands are described, including how they are used to define wall materials, wall construction, and wall locations to construct a floor plan; how to define a transmitter; and how to define receiver locations. 

The input file is interpreted line by line by the GO_3D program.  Although the commands do not have to appear in any particular order, it is usually convenient to group them in a logical sequence to make the file easy to read.  The customary order is as follows:

1.      Define the transmitter by giving the frequency and the location of the transmitter.  Specify the radiated power.  Specify if the transmitter is to be modeled as a simple dipole antenna or as an “imported source”, which is described more fully below.

2.      Define the “threshold field strength”, which the GO_3D code uses to control the depth of the search for ray paths, as discussed below.

3.      Define the materials to be used to construct walls.  Each material is given a name and values for its electrical parameters.

4.      Define various layered wall constructions.  Each wall type is given a name.  The material for each layer is invoked by the name previously given, and the thickness of the layer is defined.

5.      Specify the floor plan by giving the location of wall panels.  The wall type of each panel is invoked by name.

6.      Specify the wall type of the floor and of the ceiling.

7.      Specify the locations at which the field is to be calculated, called “receivers” in the GO_3D code.


The following describes each section of the sample input file given in Table 2.


Table 2

GO_3D Input File for the Hall with Side Room Problem

C Hall Room Problem


C The frequency in MHz:

FREQUENCY      850.


C The source power in milliwatts:



C The location of the source:

POINT xmitter  1.2 0.9125 1.6



C Half-wave dipole source:

DIPOLE_SOURCE  0.  0.  1.


C Imported source:

C IMPORTED_SOURCE  imported.sol


C The threshold field strength in dB below the "isotropic level":



C Materials for building walls: (850 MHz)

C          Name       epsr       sigma (mS/m)   mur

MATERIAL   Space      1.0        0.0            1.

MATERIAL   Metal      1.0        1.E7           1.

MATERIAL   Brick      5.1       10.             1.

MATERIAL   Glass      6.0        1.E-9          1.

MATERIAL   Wood       2.5        1.18           1.

MATERIAL   Limestone  7.51      28.0            1.

MATERIAL   Concrete   6.1       60.1            1.

MATERIAL   Iron       1.0        2.E9        1000.


C Wall construction definitions:

C        Name           type      material thickness (cm)

WALL_TYPE BrickWall      SOLID     Brick      14.

WALL_TYPE ConcreteWall   SOLID     Concrete   42.

WALL_TYPE GlassPane      SOLID     Glass      0.1

WALL_TYPE MetalPanel     SOLID     Metal      0.1

WALL_TYPE Radiator       SOLID     Metal     58.0

WALL_TYPE WoodDoor       SOLID     Wood       4.5

C        Name           type  layers  layer material and layer thickness

WALL_TYPE Sheetrock      LAYERED 3 Concrete 1. Space 12. Concrete 1.

WALL_TYPE Plaster&Wire   LAYERED 3 Concrete 1. Iron  12. Concrete 1.

WALL_TYPE ClayBlockWall  LAYERED 5 Concrete 1.5 Brick 0.8 Space 9.4 Brick 0.8 Concrete 1.5


C Define the floor plan:


C The long side wall:

POINT  1        -10.00   -0.07   0.00

POINT  2t        10.00   -0.07   2.48

DEFINE_WALL 1 2t  ClayBlockWall

C The side wall with the doorway:

POINT  3        -10.00    1.895  0.00

POINT  4t        -0.50    1.895  2.48

DEFINE_WALL   3  4t  ClayBlockWall

POINT  5         0.50    1.895  0.00

POINT  6t        10.00   1.895  2.48

DEFINE_WALL   5  6t  ClayBlockWall

C The transom above the door:

POINT 20         -0.50    1.895  2.20

POINT 21t         0.50    1.895  2.48

DEFINE_WALL  20 21t  ClayBlockWall

C The door to the room in the open position:

POINT 19         0.4775    1.895  0.00

POINT 20t        0.4775    2.895  2.20

DEFINE_WALL  19 20t  WoodDoor


C The room walls:

POINT 11         -1.40    1.965  0.00

POINT 12t        -1.40    6.175  2.48

DEFINE_WALL  11 12t  ClayBlockWall

POINT 13          1.60    1.965  0.00

POINT 14t         1.60    6.175  2.48

DEFINE_WALL  13 14t  ClayBlockWall

C The room's outer walls on either side of the window:

POINT 15         -1.47    6.245  0.00

POINT 16t        -0.55    6.245  2.48

DEFINE_WALL  15 16t  ConcreteWall

POINT 17          0.63    6.245  0.00

POINT 18t         1.67    6.245  2.48

DEFINE_WALL  17 18t  ConcreteWall

C The patch of wall below the window:

POINT 23         -0.55    6.245  0.00

POINT 24t         0.63    6.245  0.74

DEFINE_WALL  23 24t  ConcreteWall

C The window glass:

POINT 25         -0.55    6.245  0.74

POINT 26t         0.63    6.245  2.29

DEFINE_WALL  25 26t  GlassPane

C The patch of wall above the window:

POINT 27         -0.55    6.245  2.29

POINT 28t         0.63    6.245  2.48

DEFINE_WALL  27 28t  ConcreteWall


C Define the floor material and thickness in cm:

FLOOR   Concrete   30.

C Define the ceiling material, thickness in cm, and height in m:

CEILING Concrete   30.  2.48


C Ask for the reflection and transmission properties of each

C type of wall panel, as a function of the angle of incidence:


C Ask for the reflection and transmission properties of each

C type of wall panel, as a function of the angle of incidence:

REFFREQ  400.  1200.


C A receiver at a single point:

POINT    onercvr  0.0  4.5  1.6

C  RCVRPOINT      onercvr


C A line of receivers in the room:

POINT     rstart   0.0  1.895   1.6

POINT     rend     0.0  6.000   1.6

RCVRLINE  rstart  rend  2.0


C Ask the program to create an output file in "RPL" format:



C A grid of receivers:

POINT     gridst      -1.28  2.000  1.6

POINT     griden       0.17  6.000  1.6

C            From Point:  To Point:   Separation (cm)

C RCVRGRID       gridst      griden        5.0

C Ask the program to write a set of output files in "TBL" format:



C Transmitter grid feature: move the transmitter location over a grid.

POINT     xmitgrid1   -4.50  0.05   1.6

POINT     xmitgrid2    4.50  1.795  1.6

C XMITGRID  xmitgrid1 xmitgrid2   10.0


C End of File


3           The Transmitter

The GO_3D program uses either an ideal dipole source or a user-defined “imported source” to excite fields in the rooms and corridors of the building.  The user must provide the frequency, the location of the source, and information about its radiation patterns.

The user specifies the frequency of the transmitter in MHz with a command beginning with the keyword “FREQUENCY”,

FREQUENCY      850.

The power in milliwatts radiated by the transmitter or “source” into the far field is specified with the keyword “SOURCE_POWER”,


The location of the center of the transmitter is specified by defining a point in 3D space according to

POINT xmitter  1.2 0.9125 1.6

This “POINT” command defines a point with the name “xmitter” at location x=1.2 m, y=0.9125 m, and z=1.6 m, where z=0 is by definition the floor level. The source is positioned at the point called “xmitter” with the command


In GO_3D most commands that require coordinates in 3D space work by first defining a named point (such as “xmitter”) and then invoking the point by name.


3.1         Ideal Dipole Source

            There are two types of sources available in the GO_3D code, namely the ideal dipole source and the “imported” source.  The ideal dipole is a half-wave dipole antenna carrying a sinusoidal current distribution, and radiating into free space the amount of power previously specified with SOURCE_POWER.  The center of the dipole is at the SOURCE_LOCATION point.  The only missing information to fully define this source is the orientation of the dipole in 3D space.  This is specified by giving the components of a unit vector along the axis of the dipole with the command

DIPOLE_SOURCE  0.  0.  1.

This command defines a dipole oriented in the z direction.  When the GO_3D code has found a ray originating at the location of the center of the dipole, it uses the “far” fields of the ideal dipole, scaled to the desired radiated power, for the field strength and vector orientation of the field associated with the ray.


3.2         Imported Source

The second type of source that can be used in GO_3D is called an “imported source” or sometimes a “defined source”.  To invoke this kind of source, use the command

IMPORTED_SOURCE  imported.sol

The far fields of the imported source are contained in the file “imported.sol”, called a “sol” file.  Fetch imported.sol. Bascially, this file must contain the radiation patterns of the source over the whole surface of the radiation sphere, giving the magnitude and phase of the field components  and .    In general, twenty-one conical cut patterns are required, for =0, 25, 37, 45, 53, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 127, 135, 143, 155 and 180 degrees, at five degree increments in angle .   Thus the magnitude and phase of  and  are required for 21 patterns of 73 points each, or in total at 1533 points.  The fields of the source must vary smoothly enough in  and  that linear interpolation is a reasonable approximation for the field in between the explicit  and  points in this data set.  When the GO_3D code needs the field associated with a ray originating at the source, the program determines the  and  angles of the ray relative to the GO_3D xyz coordinate system and then uses linear interpolation to find the value of the field components  and , both magnitude and phase, to find the vector field associated with the ray.

The “sol” file defining the far fields of the source can be prepared with any antenna analysis program that can calculate the far fields.  For example, for a transmitter constructed entirely of metal, the Numerical Electromagnetics Code can model the transmitter and calculate the far fields over the radiation sphere.  For a source antenna containing dielectric regions, such as a cellular phone handset operated next to the head, the Finite Difference Time Domain(FDTD) method is often used to find the far fields.  GO_3D results are independent of the method used to obtain the far fields of the source. GO_3D simply stores the field values and uses linear interpolation. 

The “sol” file must specify the power radiated by the source, and this value must be consistent with the field strengths in the file.  The power radiated is found by integrating the Poynting vector over the surface of the the radiation sphere.  The magnitude of the Poynting vector is given by



where the field values are amplitudes and  is the intrinsic impedance of free space.  Then the radiated power is given by



The value of the radiated power must be explicitly stated in the “sol” file and is used by the GO_3D program to rescale the fields to the desired power level.  The exact structure of the “sol” file is given in Appendix 1.

The “imported source” feature permits the user to provide a realistic model of whatever transmitter is being considered.  If a portable radio is the source, it could be modeled in a vertical orientation or in a tilted orientation and the radiation patterns determined with an FDTD solver.  The radio might be a cellular telephone handset.  The handset held against a model of the human head and hand can be solved with FDTD, again to determine the radiation patterns over the radiation sphere.  A complex source such as a cellular phone handset and a head radiates approximately equal power in  and in , and so takes advantage of the full vector calculation provided by GO_3D.  Directional sources such as a cellular phone held against the head complicate the interpretation of  results computed with GO_3D because the fields at various locations will be dependent on the orientation of the “user” of the cellular phone. Thus in Figure 1, the user may be facing along the hall, or crosswise to the hall, and the fields in each case are somewhat different.



4           The Threshold Field Strength

Ideally a geometrical optics analysis should track each ray through many reflections and transmissions until it exits from the problem space.  But at each reflection, there is a transmitted ray, which must also be traced until it exits from the problem space.  The computation quickly becomes very time-consuming and hence expensive.  So geometrical optics computer codes must decide to discard each ray at some point.   For most wall materials, the field strength associated with the ray is substantially reduced either when the ray penetrates a wall or when the ray reflects from a wall.  After a few reflections we might expect the field strength associated with the ray to be negligible, and the ray can discarded, and not tracked any further.  Thus, many geometrical optics codes require that the user specify the maximum number of reflections that the code will track.  A priori, the user is asked to state that the code trace rays through as many as, say, four reflections, or perhaps six reflections.  The implicit assumption is that after this many reflections the field strength associated with the ray is negligible.  But this can be misleading.  For example, for near-grazing incidence, the reflection coefficient approaches unity for any type of wall construction.  Obviously, if a ray undergoes say four reflections at near grazing incidence, the reflection coefficient at each reflection is nearly unity and the field is not reduced by reflection.  The ray still carries a significant amount of power and should not be discarded.

The GO_3D code uses a different criterion for discarding a ray.  Each ray is traced through as many reflections as required to reduce its estimated field strength to less than a pre-set threshold value.  There is, in theory, no limit to the number of reflections that the code will trace to meet the pre-set condition.  If a crude threshold is specified, the code will only track two or three reflections.  But if the threshold is too sensitive, the GO_3D program will try to track fifty or even a hundred reflections.  Since memory is allocated “on the fly” to accommodate the image sources required, the computer may run out of memory. If not, the GO_3D program may run so slowly that no useful results can be generated.  Thus, setting the threshold is a compromise between the need for accurate results, and the need for reasonable computation times.

The GO_3D tracks each ray until the field strength associated with it falls below a pre-set “threshold” field strength.  The user specifies the threshold with the command

ETHRESHOLD       20.

This specifies that rays must be tracked until the field  associated with the ray is 19 dB below the “isotropic level” field strength of the source antenna.  For any antenna, if the power radiated is  then the corresponding isotropic level field strength is given by

For a 600 mW source, the isotopic level is 5.998 V/m, or about 6 V/m.    An image source is included in the calculation if the largest field strength it can give rise to is greater than or equal to the “cutoff” field strength of



A threshold of 20 dB with a 600 mW source specifies that rays having fields less than 0.6 V/m should be discarded. A 40 dB threshold asks that rays with field strength less than 0.06 V/m be discarded, but this “sensitive” threshold value usually leads to more image sources than is practical to solve on desktop computers.

In practice, the GO_3D code constructs an “image tree” once, after the input geometry file has been read, and then uses the same image tree for all the observers.  Thus, the location of an observer cannot be a criterion for whether an image should or should not be included in the image tree.  The field an image source gives rise to is of the form



where  is the strength of the transmitter in the direction associated with the image source,  is the net attenuation along the path including the reflection loss when the ray is reflected from walls and the transmission loss when the ray penetrates walls, and  is the distance from the source to the observer along the ray path.  To decide whether to include or discard an image, the GO_3D code uses , , and uses  to be the distance from the image source to the nearest point to the image source where an observer can be located.  Because it is assumed that the reflection coefficients and attenuation coefficients are all unity, this is a very conservative choice.  This amounts to retaining the image if



or equivalently if



where the cutoff distance is



Thus, the decision of whether to retain or discard images is based simply on the nearest possible distance from the image source to an observer.

For the problem of Figure 1, with a 600 mW source, the isotropic level is 6 V/m.  A threshold of 10 dB causes the code to include all image sources with field strengths greater than 1.90 V/m, and some image with smaller field strengths.  The code actually tracks as many as 7 reflections using 427 image sources.  With a threshold of 16 dB, all the image sources having fields greater than 0.95 V/m are included, and some with smaller field strengths.  The code tracks as many as 12 reflections using 7056 image sources.  With a 20 dB threshold the cutoff field strength is 0.6 V/m, and as many as 15 reflections are tracked with 9911 image sources. Section 13 of this User’s Guide presents an example of the changes in the computed field strength as the threshold value is increased.


5           Material Definitions

The materials that will be used to make up the walls of the building are specified with the keyword “MATERIAL”.  It is convenient to let the user associate a name with each material and then to refer to the material by name when defining wall constructions having several layers.  The format of the MATERIAL command is

MATERIAL name  permittivity conductivity permeability

which  creates a material called “name” having the specified relative permittivity, the conductivity in milliSiemens/meter, and relative permeability.  The name of the material must be less than 10 characters and cannot contain any blanks.  For example,

MATERIAL Space 1.  0.  1.

creates a material called “Space” which has the properties of free space, and can be used to fill air spaces in hollow walls.  A material with the properties of brick at 850 MHz can be created with

MATERIAL   Brick    5.1        10.             1.

The relative permittivity of “Brick” is given as 5.1, the conductivity as 10. mS/m, and the relative permeability is given as unity. 


6           Wall Construction

In GO_3D walls are either of “solid” construction, having only one layer, or of “layered” construction having up to seven layers of various materials and thickness.   In defining wall constructions, the materials are invoked by name, and the thickness of each layer is given.

A solid wall is make of one type of material throughout.  The material type is specified by name, and the wall thickness is given in centimeters, thus

WALLTYPE  BrickWall      SOLID     Brick    14.

This command specifies that a wall construction with the name “BrickWall” is to be a SOLID wall made of “Brick” material 14 cm thick.  The name cannot contain embedded blanks, thus “Brick Wall” with a space between the words is not permitted.  Either “BrickWall” with no space or “Brick_Wall” with an underline character separating the words can be used.  Note that the material, “Brick”, must be defined previously in the input file with a MATERIAL command.

The user is cautioned that walls of homogeneous materials that are low loss have low transmission loss, that is, are almost transparent, when the thickness is half a wavelength in the material.  For normal incidence, the transmission loss for a low-conductivity material is nearly zero if the wall is an integer multiple of a half-wavelength in thickness.  This is called the “radome effect” in GO_3D.  The radome effect leads to counter-intuitive behavior.  A solid brick wall is a substantial construction and it is reasonable to expect that as the thickness is increased, so also will be the attenuation of rays passing through the wall.  But in fact this is not so.  Brick is a relatively low-loss material, with a relative permittivity of 5.1 and a conductivity of 10 mS/m.  At 850 MHz, a brick wall 12 cm thick has a reflection coefficient of 0.624 for normal incidence.   If the thickness is increased to 15.6 cm, it might be expected that the reflection coefficient from the more substantial wall would be larger, but in fact the reflection coefficient is only 0.1, because the thicker wall is a “radome” at 850 MHz, and transmits most of the field through to the other side.

Note that the single-layer wall construction is used to model panes of glass, and metal panels such as the surfaces of a metal locker. 

Walls are more realistically represented as having a layered construction.  This is specified with a “LAYERED” wall definition, such as

WALLTYPE ClayBlockWall LAYERED 5 Concrete 1.5 Brick 0.8 Space 9.4 Brick 0.8 Concrete 1.5

This command defines a LAYERED wall construction called by the name “ClayBlockWall”.  Note that the name string cannot have embedded blanks and must be less than 20 characters long.  This layered wall construction has five layers.  The first is Concrete, 1.5 cm thick.  The next is Brick, 0.8 cm thick., then “Space” or air 9.4 cm thick, then Brick 0.8 cm thick, and finally Concrete 1.5 cm thick. All the materials must be previously defined with MATERIAL commands.  The maximum line length is 120 characters, and the maximum number of layers is seven.  Note that “Concrete” has been used to model the material parameters of plaster.  This construction models walls made of hollow clay blocks with a thickness of 0.8 cm for the clay and a hollow space inside of thickness 9.4 cm.  The clay blocks are faced with plaster 1.5 cm thick.  Sometimes wire mesh is embedded in the plaster; such a wall in Table 2 is called by the name “Plaster&Wire”, and is modeled with seven layers.  Note that the layered construction is not a precise representation of a real wall because the sides of the clay blocks perpendicular to the wall surfaces are ignored. 

In general walls with homogeneous layers are not a precise representation of real wall construction.  Thus walls have studs, either metal or wood, that cannot be represented with homogeneous layers.  Since the spacing of the studs can be comparable to the wavelength, the studs may form a diffraction grating.  Also, real walls have many embedded objects such as metal wiring, metal and plastic pipes, and metal ducts.  These objects will scatter the field and cannot be modeled in GO_3D.



Figure 2(a) The reflection coefficient for various wall constructions at 850 MHz.

Figure 2(b) The reflection coefficient for various wall constructions as a function of frequency, for normal incidence.




7           Reflection Coefficient for Four Wall Constructions


Knowledge of the behavior of the reflection coefficient of each type of wall construction can be useful in understanding the fields that result when rays are incident upon the wall.  If the command “REFANGLE” is included in the input file, then the GO_3D program creates a data file giving the reflection coefficient of each wall type as a function of incidence angle, at the operating frequency.  If “REFFREQ” is included, then the program calculates the reflection coefficient as a function of frequency for each type of wall construction.

Four types of wall construction are defined in Table 2.  The construction named “BrickWall” is a solid, 14 cm layer of brick, with,   mS/m at 850 MHz.  A “Sheetrock” wall consists of surface sheets of drywall 1 cm thick, separated by a 12 cm air layer.  The drywall is represented with the electrical properties of concrete, mS/m. The construction named “ClayBlockWall” models a real wall construction using hollow clay blocks with a wall thickness of 8 mm, faced with plaster.  This is represented as a layered structure with a 1.5 cm plaster (concrete) facing, a 0.8-cm brick wall of the clay block, a 9.4 cm thick air space inside the clay block, the 0.8-cm block wall and the 1.5-cm plaster facing on the other side of the wall.  Some clay block walls have metal screen embedded within the plaster.  The construction named “Plaster&Wire” models a 1 cm thick plaster (concrete) facing backed by a very highly conducting metal layer.  Such walls are almost perfectly reflecting. 

The reflection coefficient at a wall surface is a function of the frequency and the angle of incidence of the plane wave.  If the command “REFANGLE” is included in the input file, then the program calculates the reflection coefficient and the transmission coefficient for each wall construction as a function of the angle of incidence.   Four values are reported: the reflection coefficient and the transmission coefficient, for parallel polarization and for perpendicular polarization.

Figure 2(a) shows the reflection coefficient for the perpendicular polarization as a function of the angle of incidence from the normal, for the four types of wall construction, at the operating frequency of 850 MHz.  Grazing incidence corresponds to 90 degrees from the normal, and all the wall constructions have a reflection coefficient of unity at grazing.  In a long corridor with the transmitter at one end and the receiver at the other, rays will be reflected from the walls along zigzag paths from transmitter to receiver with little attenuation at each reflection.  The lightest wall construction is sheetrock, consisting mostly of air space in the three-layer model used here.  In Fig. 2(a), the reflection coefficient for normal incidence is about 0.566, and declines to about 0.42 for incidence at about 70 degrees from the normal.  The solid brick wall is a much heavier construction and might be expected to have a much larger reflection coefficient.  In fact, for normal incidence the reflection coefficient is about 0.54. The reflection coefficient of the solid brick wall rises monotonically, to unity for grazing incidence.  The clay block wall is a lighter construction than solid brick, but has a larger reflection coefficient of 0.795 for normal incidence, rising to unity for grazing.  Finally, the embedded metal mesh in the “plaster and wire” construction leads to a reflection coefficient close to unity (in magnitude) for all incidence angles. 

Single-layer walls can also be almost transparent for incidence at the “Brewster angle”, where the wall behaves as a “Brewster window”.

The frequency dependence of the reflection coefficient explains why the reflection coefficient for heavy wall constructions can be less than that for a light construction, as follows.  Fig. 2(b) shows the reflection coefficient for normal incidence for the four wall types, as a function of frequency.  The wall construction with an embedded wire mesh has a near-unity reflection coefficient across the frequency band.  The reflection coefficient for all of the layered wall constructions varies strongly with frequency, and has minima where the value of the reflection coefficient is quite small.  For normal incidence on solid walls made of low loss materials such as brick, the wall is almost transparent at frequencies where its thickness is an integer multiple of the half-wavelength.  The wall behaves as a “radome” and the field passes through it with little attenuation.  Fig. 2(b) shows that the brick wall 14 cm thick has “radome” frequencies at 475 and 950 MHz.  The maximum reflection coefficient for normal incidence is at about 710 MHz and is 0.62.  It violates our intuition that although from 710 to 950 MHz, the wall is getting thicker in terms of the wavelength but the reflection coefficient is actually decreasing.    It is also against our intuition that a “light” wall construction such as sheetrock can have a higher reflection coefficient at 0.57 at 850 MHz than a “heavy’ wall construction such as solid brick, with 0.44.   Fig. 2(b) shows that multiple-layer walls can also have “radome” frequencies; thus the clay block wall has a minimum reflection coefficient at 444 MHz. 

To characterize the reflective properties of each wall construction in a single number, the reflection coefficient for the “perpendicular” polarization  can be averaged over all angles of incidence.  The lightest wall construction is sheetrock, with an average reflection coefficient of 54%, hence about half of the amplitude of the incident field is reflected.  The next heavier construction is the clay block wall, which reflects about 83% of the field incident on it.   The heaviest construction is the brick wall, but at 850 MHz, the average reflection coefficient is 69%, less than the clay block wall.  The plaster-and-wire wall reflects 99.4% of the field, averaged over all angles for the “perpendicular” case.  Note that the intuitive notion that heavier wall construction leads to a larger reflected field is incorrect and can be misleading.  The fraction of the field that is reflected is dependent on the thickness of the various layers in the wall, on their electrical properties, on the angle of incidence, on the polarization, and on the frequency.



8           Defining the Floor Plan

Once the material parameters for wall materials have been defined and then the various wall constructions have been specified, walls can be positioned to build the floor plan.  Each wall in GO_3D is called a “panel” and is specified with two points on opposite corners of the central plane of the wall.  Use the “POINT” command to define two points on opposite corners of the central plane of the panel.  Then use the  “DEFINE_WALL” command to define the wall panel by naming its construction and naming the two points at the corners.  Thus the long wall at the bottom of the floor plan in Figure 1 is defined with two points named “1” and “2t”,

POINT  1        -10.00   -0.07   0.00

POINT  2t        10.00   -0.07   2.48

DEFINE_WALL 1 2t  ClayBlockWall

The “DEFINE_WALL” command specifies the points named “1” and “2t” as the opposite corners of the wall panel, and that the construction of the wall is “ClayBlockWall”, defined previously.  Point “1” is located at x=-10 and point “2t” at x=10, so this wall will be 20 m long.  The y coordinates are chosen on the central plane of the 14 cm thick wall, so one surface of the wall will be at y=0.  Point “1” is at z=0 and point “2t” is at z=2.48, so the height of the panel will be 2.48 m.  Later, the ceiling height will be set at 2.48 m, so this wall extends from the floor to the ceiling. 

The best practice in using GO_3D is to avoid defining walls that overlap at their ends.  Thus walls should occupy distinct volumes of space.  They should not cross or intersect.  However, the code will not detect crossing or intersecting walls.  In fact, in most cases the code will execute correctly for crossing or intersecting walls and generate correct results.

Walls in the present implementation of GO_3D are restricted to be parallel to the coordinate planes, xy, xz, and yz.  The program will detect wall definitions not parallel to these planes and terminate execution.  The mathematics behind the GO_3D code is correct for wall panels oriented arbitrarily, but the assumption of walls parallel to the coordinate planes greatly simplifies the coding of the method as a computer program, and speed execution.

Parallel walls that touch or overlap will not be solved correctly. Thus if two walls are defined in the xz plane such that their surfaces are in contact, the code will not solve the configuration correctly.  Such a wall should be defined as a single wall of LAYERED construction.  Also, if two parallel walls overlap one another, then the code will execute incorrectly.  Closely-spaced, parallel walls can lead to long running times as there may be many reflections between them before a ray’s field is reduced to values less than the threshold field strength.

It is good practice to include comments explaining the purpose of each wall being defined, as it is otherwise difficult to read the list of wall definitions when it must be modified.

To define the wall having the doorway in Figure 1, four wall panels must be specified.  Two large wall panels form the large part of this wall, namely

POINT  3        -10.00    1.895  0.00

POINT  4t        -0.50    1.895  2.48

DEFINE_WALL   3  4t  ClayBlockWall

POINT  5         0.50    1.895  0.00

POINT  6t        10.00   1.895  2.48

DEFINE_WALL   5  6t  ClayBlockWall

One of these walls extends from x=-10 to x=-0.5, and the other from x=+0.5 to x=10, so together they form a 20 m wall with a 1 m gap for a doorway.  The doorway has a wooden door 2.2 m tall and a transom above the door from the top of the door to the ceiling.  These are added with the commands

C The transom above the door:

POINT 20         -0.50    1.895  2.20

POINT 21t         0.50    1.895  2.48

DEFINE_WALL  20 21t  ClayBlockWall

C The door to the room in the open position:

POINT 19         0.4775    1.895  0.00

POINT 20t        0.4775    2.895  2.20

DEFINE_WALL  19 20t  WoodDoor

Note that small-area wall panels such as the transom can increase the running time of the code substantially because the computation associated with them is about the same as that of the large panels.



9           Floor and Ceiling Definitions

To permit three-dimensional ray tracing, a floor should be added to reflect rays upward.   By definition, the surfaceof the floor is at height  z=0.  It is specified by the command

FLOOR Concrete  30.

Thus the material from which the floor is constructed is invoked by name, and the thickness of the floor slab is given in cm.  Note that it is a material that is named, not a wall construction.  The current implementation cannot use a layered model of the floor.  The size of the floor does not have to be specified.  The GO_3D code will search through all the wall panels that have been defined and find the extent of the floor plan in x and in y, and size the floor accordingly. Note that no wall panel can extend below z=0, that is, into the floor.  There can only be one FLOOR command.  

A ceiling is added with the command

CEILING Concrete  30.   2.48

This gives the MATERIAL the ceiling is made out of, the thickness of the ceiling in cm, and the height of the ceiling in meters.  There can only be one CEILING command.  In the POINTS definitions all the z coordinates must be less than or equal to the ceiling height.  This requires that no wall extend into the ceiling.  The program automatically sizes the ceiling to be of equal extent as the floor in x and in y.

The ceiling is treated as a panel made of the named material, and so reflects spectrally.  This is quite unrealistic for many building environments.  Thus many offices and hospitals have a hanging ceiling of thin acoustic tiles that are themselves transparent electrically, but hide a very complex layout of wires, conduit, air ducts, heating ducts, plumbing in plastic and metal, lighting fixtures, and so forth.  The hanging ceiling itself is usually supported by metal channel arranged in two by four foot rectangles.  The wiring, conduit, ducts and so forth will scatter and RF signal, not reflect it spectrally.  So a smooth, flat ceiling is often a poor representation of the reality in an office environment.


10       Viewing the Floor Plan

The program provides an output file that can be used to graph the floor plan in the format of Figure 1, with an xy plane “plan” at the bottom and an xz plane “elevation view” at the top.  When the program is run, an output file called “PLAN.LAB” is created.  This file contains a drawing that can be inspected with program LABLNG.EXE, as shown in Fig. 1[4].  In constructing a floor plan, it is recommended that walls be added a few at a time and that GO_3D be run at each stage to create the PLAN.LAB file.  The file is then viewed to be sure that the new walls appear in the intended locations.  By adding walls one or two at a time, errors in the point locations are easily found as they are made, and so a correct floor plan is gradually built up.  The LABLNG program permits the user to add labels such as “transmitter” to the drawing, for example.  Fetch LABLNG.EXE.  As with GO_3D itself, the LABLNG program executes on a computer running Microsoft Windows.  (The name “LABLNG” stands for “labeling” and was devised for a computer permitting file names with a maximum of 6 characters!)



11       Receiver Locations

The points where the GO_3D program is required to compute the field strength are called “receivers” or “receiver locations”.  The program provides for either a single receiver position with RCVRPONT, or a line of receivers with RCVRLINE, or receivers that lie on a grid in a plane, using RCVRGRID.  Table 2 shows the RCVRPOINT command and the RCVRGRID commend  “commented out”  by adding “C” at the beginning of the line.  This causes the program to ignore these commands because they are “comments”.  The RCVRLINE command is used in Table 2 specifies some points at which the field is to be calculated.  If there are no receivers, then the program generates no output at all! Only one of the commands RCVRPOINT, RCVRLINE and RCVRGRID can be used in the input file.



11.1     A Receiver at a Single Point

A receiver at a single point is often used to study the rays that “flow” from the transmitter to the receiver location.  To specify the location of a single receiver, use

POINT onercvr  0.0  4.5  1.6


to define a point called “onercvr” at location x=0, y=4.5 and z=1.6 m.  Then command RCVRPOINT specifies that the receiver is to be placed at the location called “onercvr”.  On execution, the program reports the x, y and z components of the electric field at the specified point. 


Figure 4 The PLAN.LAB file shows all the coupling paths from the transmitter to the receiver when a single receiver is used.


One important use of the calculation of the field at one receiver location is to study the ray paths from the transmitter location to that receiver location.  The GO_3D program draws the ray paths onto the plan and elevation views in file PLAN.LAB, as shown in Fig. 3.   This is done only when there is one receiver, and not for lines of receivers or grids of receivers.  Inspection of the ray paths with program LABLNG can give insight into how the two points are coupled. 

 Fig. 4 shows the ray paths from file PLAN.LAB when the transmitter is in at the center of the hallway just past the doorway, and the receiver is near the center of the room.  Note that rays bounce back and forth across the hallway before entering the room via the doorway.  Other rays enter the room by penetrating the walls.  Various rays bounce around in the room before reaching the receiver.  The number of rays shown by the GO_3D program depends on the value of the threshold specified in the “go3” file.  The coarse threshold of 10 dB used for Fig. 3 leads to few rays, which are easy to follow.  A sensitive threshold leads to a great many rays, which can make the drawing of the ray paths in PLAN.LAB to complex to readily interpret.  Often ray paths that have reflection with no wall penetration will carry the largest fields.  However this is not guaranteed because the “radome effect” can lead to rays that penetrate a wall but still carry a large field strength.


Figure 4  The strength of the field as a function of the path length for thresholds of 10 and 16 dB.


Sometimes the user wishes to study the coupling paths between the transmitter and receiver in detail.  If the command “RAYLISTS” is included in the “go3” file, then the GO_3D program will create a text file called “RAYLISTS.DAT” which lists the geometrical coordinates of each reflection point along each ray path, the net path length, and the field strength associated with the ray.  Each ray in Fig. 4 can be identified in the “RAYLISTS” file.  This is discussed further in Ref. [2].

The field strength of each ray as a function of the path length is often of interest to study the delay time associated with the strongest rays that arrive at a given receiver location. When there is only one receiver, the GO_3D code creates a graph of the field strength of each ray as a function of the path length of the ray, as described in the following. 



11.2     Field Strength Associated with Each Ray

When only one receiver is used, the GO_3D program outputs a file giving the field strength associated with each ray that arrives at the receiver as a function of the total length of the ray path from the transmitter to the receiver.  Figure 4 shows the field strength in dB relative to 1 volt/meter for each ray for the receiver shown in Fig. 3.  Two different “threshold” field strengths are shown, 10 and 16 dB, relative to the isotropic level.  Since the arrival time of each ray is proportional to the path length, this graph can be used to obtain the “delay spread” at the observer.  The ray with the shortest path length of 3.783 m (i.e., earliest arrival time) does not have the strongest field strength because this observer is not “line of sight” to the transmitter.  The ray with a path length of 5.270 m has a much strong field strength.  The field strength associated with each ray is dependent on whether the ray penetrates one or more walls, which reduces the field strength by the transmission coefficient, or reflects from one or more walls, which reduces the field strength by the reflection coefficient.  A short path length that penetrates walls with a large reduction in field strength can lead to a smaller field at the observer than a longer path length having several reflections, each with a modest reduction in field strength.

The GO_3D code can create the data file for Figure 4 in one of two formats.  The default is a “two column” data file called “RAYS.DAT”, which presents the path length in the first column and the associated field strength in the second column. The file has a header consisting of comment lines, beginning with “CM”, which identify the contents of the file.  The data in the file appears in the order that the rays are found by the GO_3D file, so is not sorted into ascending order on path length.  Alternately, if the command “RPLFILE” is included in the “go3” input file, then a data file called “RAYS.RPL” is created, suitable for plotting with the “RPLOT” rectangular plotter program[5]. Fetch RPLOT.EXE.   The “rpl” file includes labels for the axes of the graph, and the RPLOT program graphs the data in the form shown in Fig. 4.

The red crosses in Fig. 4 show the rays for a threshold of 10 dB.  The GO_3D code includes all image sources that can, for some observers, give rise to fields greater than 10 dB below the isotropic level, which corresponds to 5.56 dB above 1 V/m.  There are three “dominant” rays carrying large field strengths of 1.37 dB, -2.70 dB, and –3.61 dB for this observer location.  The next smaller field strength is –12.40 dB.  There are 13 rays in addition to the 3 dominant rays. 

When the value of the threshold is increased to 16 dB below the isotropic level, we expect more rays to be included in the calculation.  Fig. 4 shows the rays for a 16 dB threshold with gray circles. All of the rays found with the 10 dB threshold are also found with the 16 dB threshold.  The cutoff field strength for a 16 dB threshold is –0.44 dB re: 1 V/m, and no new rays with field strengths stronger than –0.44 dB will be found for any observer.  Fig. 4 shows that only three additional rays are found with the more sensitive threshold, of field strength –19.7 dB, -35.3 dB and –43.15 dB.

The question of how the net field strength at the observer calculated with GO_3D varies with the value of the threshold is investigated in Section 13 below.





11.3     Fields Along a Line

To find the field along a line, use the POINT command to define the starting point of the line,and the ending point of the line,

POINT     rstart   0.0  1.895   1.6

POINT     rend     0.0  6.000   1.6

The RCVRLINE command directs GO_3D to calculate the field along a line joining the starting point in 3D space to the ending point in 3D space. To calculate the field along the line every 2 cm use the command

RCVRLINE  rstart  rend  2.0

The line of receivers is sometimes called the “path”.  Think of the receiver as moving along the path from the “rstart” point to the “rend” point and sampling ,  and  every 2 cm.   If the path penetrates a wall, then the program reports zero field strength for “receivers” inside the wall.  Note that the last receiver will not necessarily be at the “rend” point, unless the point spacing is such that the distance from “rstart” to “rend” is an integer multiple of the point spacing. When GO_3D is run, it creates the PLAN.LAB file of Fig. 1, showing the path for the receivers as a dashed line, but no ray paths are shown.  

GO_3D offers two formats for the output file containing the field strengths.  If the RPLFILE command in Table 2 is omitted, then the output is a file called “RCVR.DAT” which contains five columns of data: distance along the line; the magnitude of ; of ; of ;  and of the “total field”  defined as



This multi-column data can be graphed with the user’s favorite rectangular-axis plotting software.  For instance, program “RPLOT” can be used to graph the data: Fetch RPLOT.EXE  Alternately, if the command RPLFILE is included in the input file, the GO_3D program will generate an output called “RCVR.RPL” in the “native format” for program RPLOT.  The header of the “rpl” file  includes useful information about the run of GO_3D, and includes labels for the curves and axes.  If the RPLOT program is to be used for graphing then it is best if the output file is an “rpl” file.

The RPLFILE command offers various options for reporting the position on the path.  Versions of the RPLFILE command are as follows:





RPLFILE with no qualifier, or RPLFILE S uses distance along the path as the independent variable in the RPL output file.  Distance along the path is defined as the geometrical distance from the “rstart” point.  RPLFILE XYZ uses a coordinate value as the independent variable, either x or y or z, for paths that are parallel to a coordinate axis.  If the command “RPLFILE R” is used in the GO_3D file, then the “rpl” file uses the distance from the transmitter as the independent variable in the “rpl” file.  This is useful when the changes in field strength with distance from the transmitter are required.




Figure 5  The field along the receiver path shown in Figure 1.


Fig. 5 shows the electric field strength along the receiver line of Fig. 1, starting at the center of the doorway and ending near the window of the room, as a function of distance along the receiver line.  The transmitter is a vertical dipole, so the  field strength is the largest.  Both the transmitter and the receiver are 1.6 m above the floor.  The field was computed with a threshold of 32 dB.  The small   and  components are introduced by reflections from the floor and ceiling.  Note that there are abrupt discontinuities in the curve of  as a function of distance, particularly at distances of 0.76 m, 1.24 m and 1.84 m.  This happens because the method is “geometrical optics”, in which rays switch on and off with position changes, with no compensating diffracted rays to smooth the field.  Also, due to the relative phasing of various rays arriving at the receiver location, the field is not necessarily the strongest when the receiver is closest to the transmitter.  For this path, receivers near the doorway are “line of sight” to the transmitter, and so there is a “direct” ray from the source and the field is quite strong.  Such receivers also see reflected fields from the hallway walls and so the field varies with distance according to the relative phase of the field of “direct” ray and the fields of the various reflected rays.  As the receiver moves into the room, the hallway wall blocks the “direct” ray and the field abruptly falls, at 0.76 m distance.  The field is then due to rays which either bounce back and forth between the hallway walls and then enter the room via the doorway, or which penetrate the hallway wall to enter the room.  The field strength as a function of distance shows a series of peaks and minima called “fast fading” as the various rays go in and out of phase.



11.4     Fields On a Planar Grid

The RCVRGRID command is used to ask the GO_3D program to report the value of the , ,  and  field strengths at a grid of points parallel to either the xy, the xz or the yz plane.  The POINT command is used to define points at opposite corners of a rectangle called “gridst” and “griden”,

POINT gridst  -1.28  2.000  1.6

POINT griden   0.17  6.000  1.6

Then the RCVRGRID command asks for the field on a grid of points spaced 3.5 cm apart starting at point “gridst”,

RCVRGRID gridst griden 5.0

This command will generate a grid of receivers with the “gridst” point as one corner of the grid, and grid points spaced by 3.5 cm.  The grid will lie in the xy plane since both the “gridst” and the “griden” points have the same z coordinate.  Note that the “griden” point will not be part of the grid, unless the size of the rectangle in x and in y is an integer multiple of the point spacing.  Fig. 6 shows the grid as a dashed rectangle superimposed on the floor plan, as drawn by the program in the PLAN.LAB file.   This is useful for verifying the position of the grid on the floor plan.


Figure 6  The grid location is drawn on the PLAN.LAB file.


The output of the program can have one of two formats.  The simpler format is a table of point coordinates on the grid and the values of the magnitudes of the field components,  ,  and .  The position coordinates are u,v, where:

for an xy grid u=x and v=y;

for an xz grid u=x and v=z; and

for a yz grid u=y and v=z.

The columns of the table give the values of , ,  and .    This file can be graphed with the user’s favorite contour plotting program.

Alternatively, the GO_3D program can be commanded to create output files in the format required by the “CPLOT” contour mapping program [6]. Fetch CPLOT.EXE.  CPLOT does not read multi-column data in the format described above.  When the command “TBLFILE” is included in the “go3” input file as in Table 2, the GO_3D program creates four separate “table files” or “tbl” files, one for each field component,  ,  and .  Each of these “tbl” files can be graphed directly with CPLOT.



Figure 7 The  component of the electric field strength over the receiver grid.


Fig. 7 shows the  component of the field over the receiver grid of Fig. 6, made by graphing the field “EZ.TBL” with program CPLOT.  This “field map” was computed with a 18 dB threshold and a 3.5 cm point spacing.  The point at x=0,y=2 m near the bottom right corner of the map is near the center of the doorway into the room, and the field at this location is strong because it is “line of sight” to the transmitter.  A beam flows into the room from the transmitter, upward and to the left in Fig. 7, and then reflects from the wall.   The field decreases with distance from the transmitter changing from red to yellow to green on the color scale of Fig. 7.  The beam show some maxima and minima in the field strength due to interference of the field of the ray coming directly from the source with that of the ray bouncing off the wall of the small room.   Deeper in the room there is no “direct” ray and the field is smaller in value, with colors from blue to green.  There is an interference pattern showing maxima and minima, which are oriented roughly vertically on the page, and arise due to rays bouncing back and forth between the two walls of the room. 

To study the field over a volume of space, the GO_3D program must be used to compute the field on grids of points at various heights above the floor.  The code must be run individually for each grid.



12       Grid of Transmitter Locations

Suppose that electronic equipment which has an immunity level of 3 V/m is operated somewhere in the “receiver grid’ region show in Fig. 6.  Suppose a 600 mW cellular telephone is to be operated somewhere in the hall.  The field at any point in the receiver grid must be maintained less than 3 V/m to avoid interference.  The GO_3D code permits the transmitter to be moved over a grid of points in the hallway, called the “transmitter grid”.  At each location of the transmitter in the grid, the field over the whole receiver grid is calculated.  The largest field strength  over the whole receiver grid is found, called the “maximum interference field” or MIF.  The MIF is recorded for that transmitter location.  If the MIF is greater than 3 V/m, then the cell phone would cause interference to equipment positioned at some location in the receiver grid.  By graphing the MIF as a function of the position of the transmitter, a map of transmitter locations leading to interference is obtained.

To use the MIF mapping capability, first a receiver grid must be defined, using commands such as

POINT gridst      -1.28  2.015  1.6

POINT griden       0.17  6.100  1.6

RCVRGRID gridst griden 10.0

This defines the receiver grid shown in Fig. 6, but using a 10 cm point spacing.  Then the grid of transmitter locations must be defined using

POINT     xmitgrid1   -4.50  0.05   1.6

POINT     xmitgrid2    4.50  1.795  1.6

XMITGRID  xmitgrid1 xmitgrid2   10.0

This defines a transmitter grid in the hallway, as shown in Figure 7, using a 5 cm point spacing.  The GO_3D code will move the transmitter over 6335 locations in the transmitter grid, and at each location will calculate the field at 2430 locations over the receiver grid, using a 5 cm point spacing as well.  At 850 MHz, 5 cm is roughly a sixth of the wavelength and may be too coarse to accurately find the maxima in the interference pattern in the receiver grid of Fig. 7.   The calculation with more than six thousand transmitter locations and about 2500 receiver locations is very time-consuming and so a realistic trade-off between long running time for the GO_3D code and precise results must be made.

Fig. 8 A transmitter grid in the hallway outside the door.


The output from the GO_3D code is a “table” file called MIF.TBL giving coordinates of each transmitter location and the MIF value at that location.  The MIF is found for one transmitter location by computing the field strength at all the points in the receiver grid.  The MIF is the maximum value of the total field  over the receiver grid.   File MIF.TBL can be graphed with program CPLOT to obtain the color map shown in Fig. 9


Fig. 9  The maximum field strength over the receiver grid as a function of the transmitter position on the transmitter grid.


Fig. 9 shows the MIF over the transmitter grid of Fig. 8.   The x and y axes give the position on the transmitter grid of Fig. 8.   Thus the x coordinate is the transmitter’s position along the hallway and the y coordinate is the transmitter’s position across the hallway. The center of the doorway to the small room is at the top of the graph of Fig. 9, at x=0.   At each position the largest total field  over the whole receiver grid is determined and plotted. Thus, when the transmitter is in the doorway (red region in Fig. 9) the largest field strength in the receiver grid area in the room is in excess of 30 V/m, more than ten times the permissible field strength of 3 V/m to avoid interference.  As the transmitter moves away from the doorway, the maximum field strength in the receiver grid in the small room decreases, with the color in Fig.9 changes from red to yellow to green to cyan, and eventually to dark blue for locations far enough from the doorway.  Fig. 9 shows that only when the transmitter is quite far from the doorway is the field in the room less than 3 V/m.   A case study using the “XMITGRID” feature of GO_3D can be found in Reference [8].


13       Field Strength as a Function of the Threshold Value

The threshold field strength T (dB) discussed in Section 4 is a control that lets the user determine how sensitive a calculation is carried out by the GO_3D program.  Consider the problem of a hallway with a side room, shown in Figure 1.  The field strength is to be calculated along the path shown by the dashed line, starting in the center of the doorway and ending at the window.  The user must choose a threshold field strength for the program to use in the calculation of the field.  As explained above, GO_3D does not ask the user to set a limit on the number of reflections that the program will track.  Instead, the code retains all image sources that could, for some observer, give rise to fields that are larger than the “cutoff” field strength, which is T dB below the isotropic level field strength.  GO_3D will track as many reflection as needed to meet this criterion.

Table 3 shows the maximum number of reflections that the GO_3D code tracks for various threshold values for the hallway-with-room problem, and the number of image sources that are used. With a 10 dB threshold, 7 reflections are tracked using a total of 426 image sources.  With a 13 dB threshold, one more reflection is tracked and the number of image sources roughly doubles to 822.  With a 16 dB threshold, up to 12 reflections are found using 1874 image sources.   With a 19 dB threshold, 14 reflections are tracked using 7056 image sources.  With a 22 dB threshold, 19 reflection, 19 reflections are traced, using 26,037 image sources.  With a 26 dB threshold the code tracks 29 reflections using 254,379 image sources.  This very large numbers of image sources causes the code to execute quite slowly!

Table 3

The Number of Reflections and the Number of Image Sources for Various Threshold Values.




Image sources




















Figure 10  The field strength along the path in Figure 1, for various values of the threshold field strength.


Does the field become constant as the value of the threshold increases?   Ideally, we would like the field to “converge” to a constant value as the threshold value is increased, and for “large” thresholds, show little change for further threshold increase.  But in general, this behavior is not found, as illustrated in Figure 10.  The figure shows the field strength  along the path in Figure 1 from the center of the door into the room to the window, using distance form the antenna on the horizontal axis.  The field is shown for thresholds of 10, 16, and 22 dB.  All four curves are similar overall; they are dominated by a few rays that have relatively large field strengths and are found by GO_3D even for the “low” 10 dB threshold value.

For close distances to the transmitter, there is a line-of-sight path from the transmitter to the observer and the behavior of the field is dominated by the large field strength of the “direct” ray from the transmitter.  For all three threshold values the field for distances less than 2.07 m is very similar.  By increasing the threshold value, the user commands the code to include additional rays with fields at a much lower level than the “direct” ray’s field, which have only a small effect on the net field strength. 

At 2.07 m distance the line of sight path is lost, and the field is made up of rays transmitted through the wall and reflected from various walls.  With a 10 dB threshold only a modest number of rays contribute to the field, and there is a trough in the field strength from 2.07 m to 2.21 m distance. As the threshold is increased, a lot of “minor” rays are added which tend to fill in the trough, hence the field in this region with a 16 dB threshold (red dashed curve) is larger than with a 10 dB threshold(black curve).  However, including many more “minor” rays by increasing the threshold to 22 dB(blue curve) does not increase the field in this trough further.

From about 2.5 to 3 m distance, and again from about 3.5 to about 4.2 m, the field with a “low” 10 dB threshold is fairly smooth.  Increasing the threshold to 16 dB adds the ripple to the field called “fast” fading.    The average value of the field, the “slow fading”, is not much changed.  Increasing the threshold to 22 dB affects the amplitude of the ripple, but again the “slow fading” or average value is not much changed.

The results shown in this figure are typical of those obtained by increasing the threshold value in GO_3D.  The field does not “converge” to a value independent of the threshold at all.  Instead, adding more image sources by increasing the threshold fills in troughs found with low threshold values, and adds “fast fading” behavior to the overall curve.


14       Conclusion

The input file for the GO_3D program has been described, and a sample problem has been solved with the program.  The input “language” is intended to lead to a self-documenting file that is easy to read and modify.    The user is encouraged to include comment lines in the file describing the contents, so that numbers in the file are readily traced to their source. 

The user defines wall materials with meaningful names such as “Brick” or “Concrete”.  Such names make the input file easier to read and understand.  These are used to define solid or layered wall construction, again giving each a descriptive name such as “ClayBlockWall”.  Points in three-dimensional space are also defined and associated with names such as “xmitter” for the transmitter location or “rstart” and “rend” for the endpoints of the line of receivers.  The floor plan is built by creating two points at opposite corners of each wall panel and then joining them with  a wall of a previously-defined construction invoked by name.  A word description of the purpose of each wall is helpful in reading the file.  For example, each wall on a drawing of the floor plan can be numbered, and the wall identified by number in the comments.  Or, as done in Table 2, a brief description of each wall can be included as a comment.  As modifications are made to the file comments should be added to explain what was done and give the date.

When GO_3D is run it creates output files that can be graphed with standard graphing software or with software tools designed to work with special GO_3D output formats.  The floor plan is graphed with a viewer program called LABLNG.  The field strength as a function of distance is graphed with a rectangular plotting program called RPLOT. The field strength over a region is graphed with a color contour mapping program called CPLOT.

GO_3D has proven a useful tool for investigating the field in a room due to a transmitter located somewhere in the room, with reasonable correspondence to measurements[7].  The program has been used to study the decline in field strength with distance from the observer in long corridors[8] and in rooms adjacent to corridors.  The program has been used to study the locations in a corridor where a cellular telephone can be operated without exceeding the immunity level of equipment in an adjacent room[9], as in the example presented in this User’s Guide.



Appendix 1  Structure of the Input File for the Imported Source

The file format for defining an “imported source” is shown in Table 3, and is called a “solution” file.  Fetch imported.sol.  It is derived from the Concordia Electromagnetic Compatibility Laboratory’s software system for aircraft antenna simulation[9,10].  Such “solution” files are created automatically by the EMC Lab’s software system, either from the analysis of wire-grid models of aircraft and other radiators, or from FDTD analysis of portable radio handsets and models of the head.  The radiation patterns are computed by the antenna analysis code, and then a utility program called “ISOLEV” reads the file, integrates the power flow density over the radiation sphere and then writes the radiated power into the solution file.  Most solution files contain a great deal more information than is shown in Table 3.  However, only the lines in the solution file that are used by GO_3D are actually shown in Table 3, and the “minimal” file in Table 3 is acceptable to GO_3D as input.

The file usually begins with a header having one or many “comment lines”, beginning with “CM”, which contain user comments identifying the source antenna used to generate the file, how the file was made, the date, project identification, and so forth.  The first “keyword” that GO_3D searches for is “FREQUENCY”; GO_3D reads the frequency from the solution file and compares it to the frequency specified in the “go3” input file.  The GO_3D program exits if the frequencies are different.  The next line searched for is the line


Although this may look like a comment line, the characters “RADIATED POWER” in positions 13 to 26 are used as a “keyword” by GO_3D; when these characters are found the program reads the radiated power in watts from the remainder of the line.  The reasons that this line appears to be a comment are historical in the EMC Lab software system.

Next, the GO_3D program expects to find 21 radiation patterns of 73 points each.  These are the radiation patterns for the 21 “conical cuts” for =0, 25, 37, 45, 53, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 127, 135, 143, 155 and 180 degrees, at five degree increments in angle .   Characters “RP” in positions 1 and 2 on the line are used as a keyword to identify the start of each pattern.  The first number following “RP” is the  angle of the pattern cut.  It is compared with the required list of  angles given above, and the GO_3D program will exit if an unexpected pattern cut is found.  Following the “RP” line are 73 lines giving the field at  angles 0, 5, 10, …, 360 degrees.  Each line gives the magnitude of , the magnitude of , the phase of  in degrees, and the phase of  in degrees.  The format of the data is rigid.  The  magnitude appear in the first nine characters on the line; the  magnitude occupies the next 10 characters, namely positions 10 to 19 on the line; the  phase occupies the next six character positions and finally the  phase uses the last six character positions.  No commas or other separators are permitted.

The GO_3D program continues to look for the “RP” keyword until all 21 of the radiation patterns in the above list have been found and 73 field values read for each pattern.  GO_3D then closes the “imported source” file. The radiation pattern information is saved and used to calculate values of the source field along rays originating from the source found by the ray-tracing algorithm, using linear interpolation between  and  values explicitly included in the “import source” file.


Table 3

A sample “sol” file defining an “imported” source.

CM This is a sample of a "minimal" imported-source "sol" file.

FREQUENCY  0.190000E+04 MHZ


RP  0.0000E+00 0.0000E+00 0.0000E+00 0.5000E+01   1  73

0.000E+00 0.000E+00   0.0   0.0

0.000E+00 0.000E+00   0.0   0.0

RP  0.2500E+02 0.0000E+00 0.0000E+00 0.5000E+01   1  73

2.236E-01 0.000E+00  56.4   0.0

2.236E-01 0.000E+00  56.4   0.0

RP  0.3700E+02 0.0000E+00 0.0000E+00 0.5000E+01   1  73

3.347E-01 0.000E+00  56.3   0.0

2.236E-01 0.000E+00  56.4   0.0

RP  0.1800E+03 0.0000E+00 0.0000E+00 0.5000E+01   1  73

1.226E-08 0.000E+00  56.5   0.0

1.226E-08 0.000E+00  56.5   0.0



[1] C.W. Trueman, R. Paknys, J. Zhao, D. Davis, and B. Segal, “Ray Tracing Algorithm for Indoor Propagation,” ACES 16th Annual Review of Progress in Applied Computational Electromagnetics, pp. 493-500, Monterey, California, March 20-24, 2000.

[2] C.W. Trueman, “The GO_3D Code for Indoor Propagation”, Concordia University Electromagnetic Compatibility Laboratory, October 23, 2001.

[3] M. Kimpe, H. Leib, O. Maquelin, and T. D. Szymanski, “Fast Computational Techniques for Indoor Radio Channel Estimation”, Computing in Science & Engineering, pp. 31-41, Jan.-Feb., 1999.

[4] C.W. Trueman, program LABLNG.EXE.

[5] C.W. Tureman, program RPLOT.EXE.

[6] C.W. Trueman, program CPLOT.EXE.

[7] C.W. Trueman, D. Davis, and B. Segal, “Ray Optical Simulation of Indoor Corridor Propagation at 850 and 1900 MHz,” IEEE AP-S Conference on Antennas and Propagation for Wireless Communication, pp. 81-84, Waltham, Massachusetts, November 6-8, 2000.

[8] C.W. Trueman, D. Davis, and B. Segal,  “Specifying Zones for Cellular Telephone Operation in Hospital Hallways,” Symposium on Antenna Technology and Applied Electromagnetics (ANTEM), pp. 381-386, Winnipeg, Manitoba, July 30-August 2, 2000.

[9] S.J. Kubina, C.W. Trueman, Q. Luu, and  D. Gaudine, “Visualization Aids for Effective Aircraft Antenna Simulations,” ACES 14th Annual Review of Progress in Applied Computational Electromagnetics, Monterey, California, March 16-20, 1998.

[10] S.J. Kubina, C.W. Trueman, D. Gaudine, and A. Ramos, "Creation, Visualization and Analysis - The Dynamics of Complex Models," ACES 9th Annual Review of Progress in Applied Computational Electromagnetics, Monterey, California, March 22-26, 1993.