# Antenna Radiation Safety Zones Using Scripting in POSTFEKO

### Introduction

A variety of international safety standards for civil and military applications exist to ensure that people do not get exposed to too much electromagnetic radiation. This example illustrates the safety zones for a simple yagi-uda antenna according to both the INIRC 88 and NRPB 89 standards as they are defined for the operating band.

The antenna is simulated from 400MHz to 1.5GHz, which covers several common GSM bands for mobile communication. The results will indicate where a person may be at any simulated frequency and still conform to the safety standards.

### INIRC 88 and NRPB 89 Safety Standards

INIRC (International Non-ionising Radiation Committee) and NRPB (The UK National Radiological Protection Board) provide standards that determine safe radiation thresholds. These standards are typically frequency dependent and defined in a piece-wise manner [1].

The standards for the operating band 400MHz to 1.5GHz are depicted below. Note that "f" is the frequency in megahertz (MHz).

Standard | Electric Field (V/m) | Magnetic Field (A/m) |
---|---|---|

INIRC 88 |
3*sqrt(f) |
0.008*sqrt(f) |

NRPB 89 |
97.1*sqrt(f/1000) | 0.258*sqrt(f/1000) |

These restrictions can be interpreted as those electric and magnetic field values where a person's safety can no longer be guaranteed. The remainder of the article will focus on determining where these thresholds are exceeded.

### The Antenna

To illustrate the point, a simple yagi-uda antenna is taken. A near field cloud is simulated in the immediate surrounding area of the antenna to obtain the electric and magnetic field values.

### The Calculations

POSTFEKO comes with a scripting capability that is based on the Lua language. Internal data structures (called "datasets") are directly accessible and can be created or modified in the scripting environment. Several scripts can be written to calculate these thresholds.

The **first script** illustrates how the standards can be added as a dataset that allows us to plot the threshold field values on a graph.

**Script one: The standards**

-- Create a dataset containing the standards formulae for reference ds = dataset() axisF = dataset.axis('frequency','Hz',400e6,1.5e9,21) dataset.addaxis(ds, axisF) dataset.addquantity(ds, "E_inirc88", "scalar", "V/m") dataset.addquantity(ds, "E_nrpb89", "scalar", "V/m") dataset.addquantity(ds, "H_inirc88", "scalar", "A/m") dataset.addquantity(ds, "H_nrpb89", "scalar", "A/m") for ff = 1,#axisF do local freq = axisF[ff]/1e6 -- frequency in MHz -- Electric field limits ds[ff].E_inirc88 = 3*math.sqrt(freq) ds[ff].E_nrpb89 = 97.1*math.sqrt(freq/1000) -- Magnetic field limits ds[ff].H_inirc88 = 0.008*math.sqrt(freq) ds[ff].H_nrpb89 = 0.258*math.sqrt(freq/1000) end return ds

The **second and third scripts** utilise these limits to calculate the positions where the safety threshold is exceeded. Each near field value is processed and normalised to the maximum field value that the standard allows for that frequency. In other words, a value of "1" corresponds to the field threshold according to the standard. A value higher than "1" is over the limit and a value lower than "1" is a safe zone.

**Script two: The normalised threshold as per INIRC 88**

-- This example illustrates how advanced calculations -- can be performed to display radiation hazar zones. -- The INIRC 88 standards are used. nf = pf.nearfield.get("yagi.Configuration1.nf") axisF = nf.axes[1] -- Isolate the frequency axis axisX = nf.axes[2] -- Isolate the "x" axis axisY = nf.axes[3] -- Isolate the "y" axis axisZ = nf.axes[4] -- Isolate the "z" axis -- declare loop variables to improve performance freq = 0 EfieldLimit = 0; HfieldLimit = 0 magEx = 0; magEy = 0; magEz = 0 magHx = 0; magHy = 0; magHz = 0 for ff = 1,#axisF do freq = axisF[ff]/1e6 -- Frequency in MHz EfieldLimit = 3*math.sqrt(freq) HfieldLimit = 0.008*math.sqrt(freq) for xx = 1,#axisX do for yy = 1,#axisY do for zz = 1,#axisZ do -- SCALE THE ELECTRIC FIELD VALUES -- Scale the values to indicate percentages. The percentage represents -- the field value relative to the limit of the standard. nf[ff][xx][yy][zz].efieldcomp1 = nf[ff][xx][yy][zz].efieldcomp1/(EfieldLimit) nf[ff][xx][yy][zz].efieldcomp2 = nf[ff][xx][yy][zz].efieldcomp2/(EfieldLimit) nf[ff][xx][yy][zz].efieldcomp3 = nf[ff][xx][yy][zz].efieldcomp3/(EfieldLimit) -- SCALE THE MAGNETIC FIELD VALUES -- Scale the values to indicate percentages. The percentage represents -- the field value relative to the limit of the standard. nf[ff][xx][yy][zz].hfieldcomp1 = nf[ff][xx][yy][zz].hfieldcomp1/(HfieldLimit) nf[ff][xx][yy][zz].hfieldcomp2 = nf[ff][xx][yy][zz].hfieldcomp2/(HfieldLimit) nf[ff][xx][yy][zz].hfieldcomp3 = nf[ff][xx][yy][zz].hfieldcomp3/(HfieldLimit) end end end end -- Note that in essence, the values being returned are -- no longer near fields. As such, interpret them -- carefully in POSTFEKO. return nf

**Script three: The normalised threshold as per NRPB 89**

-- This example illustrates how advanced calculations -- can be performed to display radiation hazar zones. -- The NRPB 89 standards are used. nf = pf.nearfield.get("yagi.Configuration1.nf") axisF = nf.axes[1] -- Isolate the frequency axis axisX = nf.axes[2] -- Isolate the "x" axis axisY = nf.axes[3] -- Isolate the "y" axis axisZ = nf.axes[4] -- Isolate the "z" axis -- declare loop variables to improve performance freq = 0 EfieldLimit = 0; HfieldLimit = 0 magEx = 0; magEy = 0; magEz = 0 magHx = 0; magHy = 0; magHz = 0 for ff = 1,#axisF do freq = axisF[ff]/1e9 -- Frequency in GHz EfieldLimit = 97.1*math.sqrt(freq) HfieldLimit = 0.258*math.sqrt(freq) for xx = 1,#axisX do for yy = 1,#axisY do for zz = 1,#axisZ do -- SCALE THE ELECTRIC FIELD VALUES -- Scale the values to indicate percentages. The percentage represents -- the field value relative to the limit of the standard. nf[ff][xx][yy][zz].efieldcomp1 = nf[ff][xx][yy][zz].efieldcomp1/(EfieldLimit) nf[ff][xx][yy][zz].efieldcomp2 = nf[ff][xx][yy][zz].efieldcomp2/(EfieldLimit) nf[ff][xx][yy][zz].efieldcomp3 = nf[ff][xx][yy][zz].efieldcomp3/(EfieldLimit) -- SCALE THE MAGNETIC FIELD VALUES -- Scale the values to indicate percentages. The percentage represents -- the field value relative to the limit of the standard. nf[ff][xx][yy][zz].hfieldcomp1 = nf[ff][xx][yy][zz].hfieldcomp1/(HfieldLimit) nf[ff][xx][yy][zz].hfieldcomp2 = nf[ff][xx][yy][zz].hfieldcomp2/(HfieldLimit) nf[ff][xx][yy][zz].hfieldcomp3 = nf[ff][xx][yy][zz].hfieldcomp3/(HfieldLimit) end end end end -- Note that in essence, the values being returned are -- no longer near fields. As such, interpret them -- carefully in POSTFEKO. return nf

Note that a working knowledge of Lua is recommended for scripting examples. An overview of the Lua/POSTFEKO interface is provided in the formal FEKO documentation.

### The Results

The resulting "near fields" are now a normalised threshold value. Plotting the Iso-surfaces for these fields can show the positions where a certain field percentage is reached. For example, the red surface corresponds to positions where the maximum allowable field value is reached. Getting any closer to the antenna than the red surface would result in a breach of the INIRC 89 standard. The yellow surface corresponds to 80% of the maximum field value.

This is a good way to visualise the safety zones for individual frequencies. With small modifications to the script, the safety zone over the entire band can be calculated by storing only the "worst-case" values.

To see whether a specific position is within the safety limits, a simple graph can also be utilised. By comparing the near field at a given location to the standard (i.e. the results from script one), the entire frequency band can be assessed. Here it can be seen that the given position is not safe for extended exposure between roughly 1.0 and 1.2 GHz.

The same logic can be applied to any standard over any band. Scripting provides a fully customisable interface with POSTFEKO data structures so that any calculation can be performed.

### References

[1] | R. Kitchen, "Radio Frequency Radiation Safety Handbook", Oxford: Butterworth-Heinemann, p. 78, 1993. |