NISTIR 89-3929

NEW NIST PUBLICATION

November 1989

PLANAR NEAR-FIELD CODES FOR

PERSONAL COMPUTERS

Lorant A. Muth

Richard L. Lewis

National Institute of Standards and Technology

U.S. Department of Commerce

Boulder, Colorado 80303-3328

October 1989

NISTIR 89-3929

PLANAR NEAR-FIELD CODES FOR

PERSONAL COMPUTERS

Lorant A. Muth

Richard L. Lewis

Electromagnetic Fields Division

Center for Electronics and Electrical Engineering

National Engineering Laboratory

National Institute of Standards and Technology

Boulder, Colorado 80303-3328

October 1989

Sponsored, in part, by

Air Force Guidance and Metrology Center

Newark Air Force Base, Ohio 43057

U.S. DEPARTMENT OF COMMERCE, Robert A. Mosbacher, Secretary

NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY, Raymond G. Kammer, Acting Director

CONTENTS

Page

Abstract , 1

1. Introduction 1

2. General Features 2

3. Data Management 4

4. Research Modules 6

5. Output Files 10

6. DOS Batch Files 11

7. Symbol Definitions 12

8. Subroutine Descriptors 12

9. Table of Dependencies 13

10.

Summary 13

Appendix A 35

Appendix B 36

Appendix C 38

Appendix D 41

111

Planar Near-Field Codes for Personal Computers

by

Lorant A. Muth and Richard L. Lewis

We have developed planar near-held codes, written in Fortran, to serve

as a research tool in antenna metrology. We describe some of the inner

workings of the codes, the data management schemes, and the structure

of the input/output sections to enable scientists and programmers to use

these codes effectively. The structure of the codes is seen to be open,

so that a user can incorporate a new application into the package for

future use with relative ease. The large number of subroutines currently

in existence are briefly described, and a table showing the interdependence

among these subroutines is constructed. Some basic research problems,

such as transformation of a near held to the far held and probe position

error correction, are carried out from start to hnish, to illustrate use and

effectiveness of these codes. Sample outputs are shown. The advantage of

a high degree of modularization is demonstrated by the use of DOS batch

hies to execute Fortran modules in a desired sequence.

Key words: antenna metrology; data management; planar near-held codes;

research tool; subroutines

1. Introduction

Most research problems in antenna metrology are computationally intensive,

and program development makes up a substantial part of the research effort. Hence,

isolating frequent computational themes in this research area and developing independent modules that can perform any of these computational themes in any order

independently of any previous computational step is very desirable. Improvements

in both the quality and quantity of research can be a by-product of such a computational tool. Ideally, such a software package should be an open-ended system; that

is, new modules can be added to it painlessly to increase the versatility of the package. It should also be easy to use and learn, and, therefore, adaptable to new areas

of research. With the cooperative effort of the members of the Antenna Metrology

Group such a software package could evolve into a comprehensive research tool over

a short period of time.

With these thoughts in mind, we have taken the first steps to accomplish the

goal of creating a comprehensive software package suitable for conducting state-ofthe-art research on a personal computer.^ We have achieved a very high level of

modularity by creating a large number of subroutines (written m Fortran) that can

^ Because most antenna metrology research problems are computationally intensive and usually have large memory requirements, the authors recommend that

a personal computer equipped with the fastest available CPU and floating point

processor be used and that at least 4 megabytes of RAM be made available.

1
be used in many different contexts, since the subroutines emphasize structure rather

than content of small computational problems. By the same effort, we have made

it relatively simple to create higher level subroutines, since such routines can rely

heavily on the existing low level subroutines of general applicability. These higher

level routines accomplish more complicated and complete computational tasks than

the low level subroutines. In turn, they can be combined to form independent

modules, which are the selected subtasks of a particular research effort. These

subtasks usually will be subtasks in other research areas, too. Hence, the effort

expended in creating them will be saved many times over in future endeavors.

Particular attention has been given to the way information flows to and from the

modules and between modules. We have automated much of the data management

needed to provide a smooth transition as one module finishes its task and another

is executed to accomplish* the next step of the research. A large number of small

modules, playing a supportive role in data management, have been created to allow

manipulation of datasets according to the needs of the current phase of the research

project. For example, an existing dataset merely has to be activated to make it

accessible to a module about to be executed. Thus, both the modules chosen to

be executed and the datasets to be used can be controlled interactively by the

scientist. This makes for a very flexible computational procedure, freeing one’s time

and energy to think about research procedure rather than computational detail.

In the next section, concentrating on the main features, we outline the structure

of the Planar Near-Field Codes (PNFC), and in the subsequent sections we present

essential details of the main features. It is our intention that any researcher, programmer or scientist, be able to use these codes effectively after familiarizing himself

with the contents of this report.

2. General Features

The complete PNFC is structured into modules. To be able to determine the

function of a module we merely have to decipher the acronym that was constructed

to name the module. Once deciphered, the full function of the module should be

self-evident. In Table 1 we have compiled the symbols used to construct module

names and deflne the meaning of each symbol. In Table 2 and 3 we list the modules

used to conduct research and the modules used to manage data access during the

course of research, respectively. A brief descriptor of their function is also included.

All of the research modules listed in Table 2 perform some manipulation of an

existing dataset, that is, they either numerically transform the dataset or perform

some I/O operation on it. Each module was designed to perform a single computational task that is an important aspect of research in antenna metrology. Some of

the modules are more speciflc to antenna metrology than others. For example, the

module URDNFFF (Utility, ReaD a Near Field and transform it to the Far Field)

is an ever present computational step in this research area, but UPRNCBD (Utility,

PRiNt a Complex Binary Dataset) is obviously of more general applicability. How

to execute these modules is demonstrated in Section 4.

The modules listed in Table 3 perform simple data management functions. For

example, USWTOFF (Utility, SWitch TO Far Fields) activates the far field datasets

2
that have been previously created and recorded within the data management part

of the system. After USWTOFF has been executed any subsequent executions

of modules that can use either far-field or near-held data will access the far-held

datasets, unless this switch is overridden by a nonzero active held. How to activate

a specihc dataset to make it the dataset that any module will use will be covered

in Section 3.

All these modules are constructed from a large set of independent subroutines

that perform specihc computational or I/O subtasks. They are used repeatedly in

various sequences to produce the specihc results of the module. These subroutines

are compiled into a library, which is linked to a module at compilation time. All

existing subroutines are listed in Table 7, along with a brief description of their

function.

All modules use a general set of input parameters that belong to the original

dataset. The original datasets are recorded as direct access binary hies, so that

specihc records within them can be accessed at will. This might be useful if some

selected records are found to be in error. (How to create the original direct access

datasets from some ascii hie that was created on some other computer or data

acquisition system is explained in Appendix A.) The hrst 7 records in these datasets

contain the essential parameters of the dataset. All modules access the original

direct access hie to input the original parameters of the dataset, although only

a subset of these might actually be needed by the specihc module in use. This

procedure assures that the same parameter set will be used by all modules for a

specihc dataset. A list of these parameters is given in Appendix A.

Each module might also access a parameter (.PAR) hie that is specihc to it.

For example, UMAKEDZ (Utility, MAKE DZ), which creates a probe displacement

error function, reads the parameter hie PERDZ.PAR if periodic error functions are

requested, and UTS (Utility, Taylor Series) reads the parameter hie SCALE.DZ to

input the amplitude of the error function requested for the current execution. The

parameter hies currently in existence and the research modules that access them are

listed in Table 4. The parameter hies accessed by the data management modules

are tabulated in Table 5. The contents of each parameter hie will be dehned in

Section 3.

All necessary I/O procedures are handled within each module, but there are

some specihc modules that prepare the data and create ascii hies that can be further processed for graphical output. Two such modules are UCBDGRD (Utility,

Complex Binary Dataset to .GRD hie) and UCBDDAT (Utility, Complex Binary

Dataset to .DAT hie), which create ascii datasets to be used for plotting 3-D and

simple linear plots, respectively. These modules also rely on specihc parameter hies

to perform their function as desired. These parameter hies are listed in Table 4.

Finally, all modules have very similar structures and differ signihcantly only in

their computational sections. The common structure is as follows:

a. Read all relevant switch settings and determine the unit numbers^ of existing

^ Here and throughout this report unit numbers refer to the hie extensions xx in

3
datasets. Check to see whether there is room for more datasets on the disk and

assign the new unit numbers.

b. Read all relevant parameters needed by the module.

c. Read all parameters describing the dataset to be used.

d. Read all datasets needed by the module.

e. Prepare for computations.

f. Perform the computations.

g. Output the results to the preassigned units.

h. Set the relevant switches and update the unit numbers of the new datasets.

i. Output an ascii file to record all parameters and I/O activity.

j. Update the history file to show which modules were executed.

k. Stop execution of the module with ‘Successful termination’ message.

This structure seems to be very successful in that modules that are truly independent of each other have been constructed, which, therefore, can be executed in any

order as long as the relevant datasets have been created. Under these conditions

a research project can be implemented with relative ease either interactively or

with the use of DOS batch files. (The use of DOS batch files to enhance research

efficiency is discussed in Section 6.)

3. Data Management

In this section we present the details of unit or dataset management built into

the system as a whole. Specific modules make use of this procedure according to

their requirements. Here the terms data management and unit mQ,nagement have

the same meaning, as datasets generated by PNFC for the purpose of computations

reside on files with filenames FORT.xx, where xx is some integer refering to a Fortran

unit number assigned internally by the module being executed. (The filename FORT

is automatically assigned when a Fortran binary write is executed.)

a. Initialization of the system.

The system has to be initialized before starting any research project with a

new dataset. Both the system parameters and the unit numbers where different

datasets will reside are initialized in this procedure. Here we will describe how

the unit numbers are set and manipulated at the start of the research project. In

Appendix B the output of the initialization module is shown and an explanation of

features not covered in this section is presented.

When the UINITUN (Utility, INITialize Unit Numbers) module is executed

the initial unit numbers for the far-held and the near-held datasets are read from

a parameter hie (INIT.IUN) and entered into the unit number hies named FF.IUN

and NF.IUN. After initialization the modules URDFFNF or URDNFFF can be

executed to read in the existing direct-access complex binary dataset containing

the original data to be analyzed. (Subsequently, the same modules will access

datasets according to the unit management switch settings. See Section 3b below.)

the hlenames fort.xx that are automatically generated by the system when a binary

dataset is written to the disk.

4
Both modules output both the far field and the near field to FORT.ix files; the

filename extensions xx are obtaqined from the files FF.IUN and NF.IUN.

All far fields created after initialization will be assigned unit numbers one less

than the previously assigned far field unit number, and all near fields created after

initialization will be assigned unit numbers one higher than the previously assigned

near field unit number. Hence, the far-field and near-field unit numbers will converge toward each other as datasets are created by executing module after module.

Before any module proceeds with execution of its task it checks to see whether

there is enough of a difference between the last far-field and the last near-field unit

numbers to allow the creation of additional datasets. If the far-field and near-field

unit numbers are adjacent to each other, no module that creates a new dataset is

allowed to proceed, and an appropriate error message to that effect is displayed.

In this manner, disk overload is prevented, since new datasets cannot be created

indefinitely.

b. The Complex Binary Dataset (CBD) files.

Except for the original datasets, which are stored as direct access binary files,

the modules read and write complex binary datasets (CBD) during execution to

store intermediate results in the course of the research project. These datasets are

recorded with the filename FORT and with integer unit numbers for extensions.

The unit numbers are automatically assigned, as described in the previous section.

For example, FORT.40 would be the initial near field unformatted complex binary

file, and FORT.60 would be the initial far field unformatted complex binary file.

Since all modules read and/or write one or more CBD files, we must keep track

of these files and must be able to access a desired dateset with relative ease. For

this purpose a unit number management support system has been constructed. This

works as follows:

An existing dataset is identified by its unit number^ which is the extension of the

FORT file. An existing unit number is any unit number that has been created since

initialization. An existing unit number, in general, has no special status and is not

automatically accessed by any module until it is made active^ additional^ or current.

A unit number is active if its value is recorded in the ACTIVE.lUN file, whereas a

unit number is additional if its value is recorded in the ADD.IUN file. The current

unit numbers are the last unit numbers recorded in the files FF.IUN and NF.IUN. In

general, these are the unit numbers created by the most recently executed module,

but can be altered according to the user’s needs. A general purpose module can

access either the current near field unit number or the current far field unit number,

depending on the setting of the variable FFNF recorded in the file FFORNF.IUN.

The variable FFNF can have the values ‘ff’ or ‘nf’.

When modules access datasets a precedence rule is followed: the kCTive file

gets accessed first, and the KT>T>itional file gets accessed if the module requires 2

datasets. The current file gets accessed only if the ACTive file is set to 0, and any

existing file can be accessed only if it is made ACTzve, ADDitional or current. To

access the desired current files with modules that process either far-field or nearfield datasets the ‘FFORNF’ switch has to be set to tell the system that one is

5
interested in far-field or near-field unit numbers.

A number of utilities have been written to define these file types easily. These

utilities are listed in Table 3. To view the existing unit numbers we execute

USHOWUN (Utility, SHOW Unit Numbers), which summarizes the existing files

according to their type (as defined in FFORNF.IUN) and status (ACT, ADD, current, existing). USHOWUN will also identify the unit numbers of special datasets,

such as the TS (Taylor Series) file, EC (error corrected) and DS (direct sum) files.

To activate a dataset, execute one of the special utilities listed in Table 3. Similarly,

we can add a dataset. To make a dataset current, one can execute the decrementing or incrementing modules (UDECFF, UDECNF, UINCFF, UINCNF) repeatedly

until the desired unit number is the last unit number shown by USHOWUN. Two

examples of the output of USHOWUN are given in Appendix C along with explanations.

c. Output Files.

As discussed above most modules read and write CBD files according to the

unit management scheme built into every module. In addition, some of the modules

create special ascii files to be used as input to graphics programs. The module

UCBDGRD, for example, reads the ACTzve or current CBD file, with filename

FORT and an extension defined by the active or current unit number. It then

outputs ascii files, whose filenames are obtained by concatenating the setting of the

switch FFORNF with the descriptors AMP or PHASE, and appending a filename

extension .CRD. The structure of these files is determined by the requirement of

the graphics package in use. Similary, the module UCBDDAT creates ascii files

for simple xy-plots with filenames obtained the same way as for .GRD files, using

.DAT as the filename extension. This module outputs a set of x-values and one,

two or three y-values. The actual number of data columns output by UGBDDAT is

determined by the KCTive, ADDitional and current switch settings. The rules are

as follows: to write only a single column of y-values, the active field must be nonzero and the additional field must 0. To write two sets of y-values, the additional

field must also be non-zero. To write three sets of y-values, both the active and

additional unit numbers must be 0, in which case the current unit number will be

used to create the first column, and the next two adjacent existing unit numbers will

be used to create columns 2 and 3 in the .DAT file. A simple module UACTADDO

(Utility, set AGTive and ADDitional to 0) will reinitialize the unit numbers so that

up to three columns of data might be written.

All research modules create a .OUT file, with filenames identical to the module

names, that contain information about the execution flow of the module. Parameters used and the unit numbers accessed or created are listed in these files, so that

an orderly cross-referencing can be conducted if some of the results are brought into

question. In addition, these modules record their activity in a history file (.HST)

so that the sequence of executions can be checked at a later time.

4. Research Modules

In Table 2 we list the currentl}^ existing modules. These modules were designed

6
in the course of a research project where the goal was to understand the propagation

of errors in near-field data to the far field, and to develop techniques to remove the

effects of these errors from the far field. Thus, some of these modules are very

specific to this research projects; others, however, have more general applicability.

To illustrate the use of these modules in research, we provide first a simple, then

a more elaborate example of computational sequence that delivers results required

by two representative research problems.

Simple research problem.

Given a near field dataset, obtain a perspective plot of both the near field and the

far field of the antenna.

Using ’x’ to mean ’execute’ a module, this simple task would be accomplished

by entering the following batch commands at the DOS prompt:

X uinitun

X urdnfff

X ucbdgrd

pit ff

X uswtonf

X ucbdgrd

pit nf

Here pit is a DOS batch file that calls on the plot package on the system to process

the graph data files output by UCBDGRD. Thus, this part of the procedure would

vary from system to system, depending on the graphics package used.

From Table 2 we can easily ascertain that the above sequence of computational

steps above will deliver the results required. First, by executing UINITUN we

initialize the system variables and unit numbers to delete the results of all previous

executions of modules. Next, we read in the original near-field dataset and transform

it to the far field. At this point, the data management system sets the ^orTz/ variable

to ff, since the last field created was a far field. Now UCBDGRD will access the

far-field dataset to create a plot file. To create a plot file using the current near

field, we must set the system variable to nf. Hence, we execute USWTONF,

and then UCBDGRD will access the near-field dataset to create a plot file for the

near field.

A more complicated research problem.

Given a near-field dataset, introduce known errors into this near field. Use a known

probe position error function and the Taylor series technique to generate error- contaminated near-field values. Then, remove these errors from the data using a well

defined error correction technique, and compare the error-free, error- contaminated

and error- corrected near and far fields by looking at the respective complex ratios of

field values at each data point. Present the results in perspective plots and/or linear

plots showing ratios of amplitudes and phase differences.

7
Using the existing set of research modules, this relatively involved research task

can be brought to conclusion as follows:

X uinitun

X umakedz

X urdnfff

X uts

X ec

Executing this sequence, we have accomplished the first part of the research.

Again, we started by initializing the system parameters and unit numbers. Then,

a probe displacement error field has been created by executing UMAKEDZ. The

function to be used is defined in the parameter file read by the module. This is

listed in Table 4. A .GRD file to draw a perspective plot of the error function has

also been created. Next, the near-field dataset is read in and the corresponding far

field is calculated. Then errors are introduced into the original near field using the

Taylor series technique by executing the module UTS, and the errors are removed

by inverting the error operator when the module EC is executed. At this point each

dataset has been recorded on the disk in complex binary dataset files with filenames

fort and file extensions .xx, where xx is some unit number automatically assigned

by the data management section of the system. We can now proceed to obtain the

far field corresponding to each near field created up to now. We proceed as follows:

X udecnf

X urdnfff

X uincnf

X urdnfff

All far fields of interest have now been created. By executing UDECNF, the

current near field unit number has been decremented by 1 (assuming that the unit

increment/decrement parameter is 1, the default), thereby making the near field

obtained prior to the last near field current. Then executing URDNFFF will transform this near field into a far field. Incrementing the near-field unit number will

increase the current unit number by 1, which, in this case, is the last near field

created. Again executing URDNFFF will create the corresponding far field.

Only plotting and comparing the various near fields and far fields is left. The

module UDIVCBD can be used to form the complex ratio of two near-field or farfield datasets. As discussed above in the data management section, the two desired

datasets are loaded by defining an active and additional unit numbers, or if these

are set to 0, then the two most recently created fields (near or far) will be used.

Thus, to take the ratio of the error- contaminated near field to the original near

field, we execute the following:

X uswtonf

X uactts

X uaddnfO

X udivcbd

8
Similarly, to take the ratio of the error- corrected near field and of the original

near field we execute the following:

X uactec

X uaddnfO

X udivcbd

In both of the above sequences of operations the complex ratio field is created,

which is recorded sequentially using near-field unit numbers, since we executed

USWTONF at the beginning of this sequence. Note that the second execution of

UADDNFO is really redundant, since it was already executed above.

To create far-fields ratios the procedure is somewhat different, since far fields

have not been labeled by special identifiers, such as ts and ec. Any far field can

be made current by incrementing or decrementing the fax-field unit numbers an

appropriate number of times, and can be selected by executing one of the modules

UACTFF or UADDFF. Thus, to form all ratios we execute the following sequence:

X uswtoff

X uaddffO

X uincff

X uactff

X udecff

X udivcbd

X uincff

X uactff

X udecff

X udivcbd

All far-field ratios of interest have now been created and recorded on farfield unit numbers. This was accomplished by first switching to the far fields

(USWTOFF), then making the original far field the additional field (UADDFFO),

followed by making the far field created before the last one the active field (UINCFF,

UACTFF and UDECFF) and taking the ratio (UDIVCBD). After the ratio was

taken the current far field unit number was automatically increased. Next, the previously created far field was made current (UDECFF) and active (UACTFF), the

current unit number reincremented (UINCFF) and then the ratio (UDIVCBD) was

taken. Each ratio field was automatically recorded on next available far-field unit

number.

At this point we can obtain a system status report, so that any problem with

the sequence of operations could be detected. For this purpose we execute the

module USHOWUN, whose output is presented in the second table in Appendix C,

with a detailed discussion.

After examining the output of USHOWUN and ascertaining that no errors

were made, we can proceed to plot any of the existing fields {fort.xx files). First,

an ascii plot file (.GRD) needs to be created using the module UCBDGRD, after

which plots can be created using the plot package. The module UCBDGRD will

9
read the current far or near field depending on the setting of the switch ffornf. A

setting can be selected by executing USWTOFF or USWTONF. Alternatively, a

unit number can be loaded by making it active by executing one of the number of

modules which have the phrase ACT embedded in their names.

Sample plotting procedures would be as follows:

X uswtonf

X unorml

X ucbdgrd

pit nf

or

X uswtonf

X unormO

X uactts

X ucbdgrd

pit nf

or

X uswtoff

X uactO

X ucbdgrd

pit ff

In all these examples we first specify the type of fields we want to access. Then, in the first example, we set the normalization constant to 1, since we are

plotting a ratio field, which does not have to be normalized when it is converted

to decibels. Next, a plot file is created by UCBDGRD. In the second example,

the normalization constants are restored to their proper values (UNORMO), then

the error-contaminated near field created by the Taylor series method is activated

(UACTTS), and a plot file is created. In the third example, we switch to the

far field, zero out the active unit number so that the current far field is accessed

by UCBDGRD to create the plot file. In all three cases, we use the DOS batch

command pH to plot either the far field (ff) or the near field (nf).

5. Output Files.

All research modules have been constructed to write an output file where the

parameters and data files used during execution are clearly listed. This way the

settings of input/output parameters can be cross-referenced, and the correctness

of the computational sequence and numerical inputs can be ascertained. These

output files have the name of the modules as their filenames and .OUT for the file

extension.

Certain modules write ascii datasets to be used by the graphics package on

the system. The module UCBDGRD creates two-dimensional ascii datasets for

perspective and contour plots, and the module UCBDDAT creates ascii datasets

(.DAT) for simple xy-plots. The module URMSCBD creates a .DAT file to plot the

rms distribution of the power radiated in a far field. These .GRD and .DAT ascii

10
files may also be used to examine the data for any features we might be interested

in.

Finally, the module UPRNCBD prints the rows and/or columns of any far- or

near-held CBD hie, according the switch setting of ffornf and the settings of the

current and active unit numbers. If the active unit number is 0, then the current

hie will be printed. The particular rows and/or columns to be printed and the

respective ranges of data are set by the parameter hie sub.prn.

6. DOS Batch Files

DOS batch hies can be used to advantage to save time and effort when performing step-by-step computations to obtain a result. We can v/rite batch hies merely

as abbreviations of longer commands, or to collect a set of executable steps that

will be used many times over. The complexity of the batch hies and their usefulness

are limited only by the programmer’s knowledge of the DOS operating system and

the programmer’s imagination.

The use of the pit. bat hie has been illustrated in the previous section a number

of times. Another example of a batch hie is the abbreviation of the execution of

the hrst simple research problem discussed above. Thus, the batch hie pltnfff wo\Ad

look like this:

command

command

command

command

command

command

command

/c X uinitun

/c X urdnfff

/c X ucbdgrd

/c X uswtonf

/c X ucbdgrd

/c pit nf

/c pit ff

Simply typing pltnfff at the DOS prompt would execute all the steps in this

batch hie. We now have a very easily usable, high level program that will produce

plots of the near and far helds of the current dataset. The DOS expression command

/c is used here to continue execution within the batch hie to the last line. Without

command /c execution would not return to the next step, but exit to the DOS

prompt.

The second research problem is the implementation of the error-correction problem using a specihc error-creation and error-correction technique. What might

change from one implementation to the next is the original dataset to be used,

the form of the error function and the magnitude of the error function. These are

all inputs to the complete procedure; that is, the program execution steps are the

same, independent of these parameters. Therefore, a DOS batch file is appropriate

for recording the steps of this relatively complicated research project. This batch

file could be appropriately called error.bat (error correction), and would look like

this:

command /c x uinitun

command /c x umakedz

11
command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

command

/c X urdnfFf

/c X uts

/c X ec

/c X udecnf

/c X urdnfFf

/c X uincnf

/c X urdnfFf

/c X uswtonf

/c X uactts

/c X uaddnfO

/c X udivcbd

/c X uactec

/c X udivcbd

/c X uswtofF

/c X uaddfFO

/c X uincfF

/c X uactfF

/c X udecff

/c X udivcbd

/c X uincfF

/c X uactfF

/c X udecff

/c X udivcbd

This batch file goes as far as creating all the required near and far fields of the

research project, as well as the ratio fields. It stops short of plotting any of the

existing fields. A separate batch file would be appropriate for creating a desired set

of plots.

The batch files using the executable modules of the PNFC allows one to create

and save complicated research procedures in a straightforward and efficient manner.

A collection of such batch files over a period of time would greatly enhance the

computational ability and efficiency of any research group.

7. Symbol Definitions

To help the user understand the names of the modules and subroutines used

in the PNFC, we compiled a table of symbols with their most commonly used

definitions. This list is presented in Table 6. This table should make reading the

source codes easier. We hope that authors of new code will use existing symbols as

far as possible to contribute to the coherence of the full package.

8. Subroutine Descriptors

In Table 7 we compiled a list of subroutines along with brief descriptors of

their functions. This can be helpful when creating new modules or when planning

to write new subroutines to perform computational tasks not yet addressed in the

package.

12
9. Table of Dependencies

In Appendix D a table of dependencies showing the interrelationship between

the various subroutines is presented. Primarily this table can serve as an index

of subroutines file, since all existing subroutines are included alphabetically in the

leftmost column. The subroutines called by the routine on the left are listed following the colon in the order in which they are called. In this manner we can get

an overview of both the contents and structure of the complete code. Such a file

can be used to advantage when developing new code, or when improvements in the

existing code are contemplated.

10. Summary

In this report we have outlined and documented the computational structrures

and procedures of a newly created software package named Planar Near Field Codes

(PNFC) for personal computers. This package supports the computational effort

needed to solve research problems in antenna metrology.

The PNFC can be used to address diverse research problems because of its

highly modular structure wherein independent subroutines have been combined

to create independent research modules. These modules have been constructed

to provide the computational procedure for recurring research themes in antenna

metrology as well as for research problems that arose in connection with the specific task of correcting for probe position errors in planar near field data. A data

management procedure has been implemented that automatically keeps track of the

various datasets being created and stored during the course of research. Because of

the highly modular nature of the PNFC new research modules can be easily constructed and incorporated into the total system. A large number of independent

subroutines are available to support new efforts, and new subroutines can be added

without any difficulty.

Streamlining computational procedures along the lines built into this software

package can result in significant reduction of time needed to obtain answers to

complicated research problems. Additions to the current version of the package over

an extended period of time would create a truly comprehensive computer package

capable of dealing with most computational needs of antenna metrology easily. For

this reason all users are encouraged to add to the effort as they see appropriate.

13
Table 1.

Definition of Symbols Used in Naming Modules

SYMBOL MEANING

0 initial

set to 0

1

2

act

actO

add

addO

version 1

squared quantity

active, activate

set ACTive switch to 0

additional

set ADDitional switch to 0

amp

ap

cbd

amplitude

amplitude, phase

complex binary dataset

cor

db

dif

div

drv

ds

dacb

dat

dbp

dc

dec

deriv

dif2

difa

dz

correct, corrected, correction

in dBs

difference

divide, divided (ratio)

derivative

direct sum

direct access complex binary (file)

.DAT (file)

dB, phase complex storage

decrement

decrement

derivative

difference between squared amplitudes

difference in amplitude

function dz

ec error correction

err

ff

fFO

grd

hst

error

far field

original far field

.GRD (DOS file extension)

history

inc

init

laplcn

make

nf

nfO

increment

initialize

Laplacian

near field

original near field

14
nc increment

normO normalization of original datasets

norml normalization with 1

op operator

prn print

rbd real binary dataset

rd read

rms root mean square

show

sw switch

to to

ts Taylor series

u utility

un unit number

15
Table 2

List of Modules That Perform Basic Computational Tasks

UAMP2CBD read a near-field or a far-field dataset and write its squared ampliUAPDACB

tude to a complex binary data file

read an amplitude, phase ascii file and write a direct access complex

binary file

UCBDDAT

UCBDGRD

read a complex binary data file and create a .DAT file for x-y plots

read a complex binary data file and create a .GRD file for two

dimensional contour or surface plotting

UDBPDACB read a dB,phase ascii file and write a direct access complex binary

file

UDERIV read a near-field dataset and write the derivative of some specified

order

UDIF2CBD read two far-field or near-field datasets and write the difference of

UDIFACBD

the squared amplitudes to a CBD file

read two far-field or near-field datasets and write the difference of

UDIFCBD

the amplitudes to a CBD file

read two far-field or near-field datasets and write the complex difference to a CBD file

UDIFDB read two far-field or near-field datasets and write the difference of

amplitudes in dBs and the phase difference to a CBD file

UDIVCBD read two far-field or near-field datasets and write the complex ratio

to a CBD file

UDIVRBD

UDS

read two real binary data files and write the ratio to a RBD file

create a near-field dataset with errors in it using the direct sum

algorithm

UERR create a near-field dataset with errors in it using the Taylor series

method

UERRC0R2 read a near-field dataset with errors in it and do a second order

error correction

ULAPLCN read a near-field dataset and form the Laplacian and check that it

satisfies the scalar wave equation

UMAKEDZ create an array DZ using a specified error function and write a

GRD file to plot the error function

UOPNORM

UPRNCBD

URBDGRD

URDDZ

URDFFNF

URDNFFF

URMSCBD

calculate the norm of the error operator

print specified rows and columns of a complex binary data file

read a real binary dataset and create a grid file for plotting

read the error function file dz and create a GRD file for plotting

read a far field and transform it to the near field

read a near field and transform it to the far field

sum the rms values at grid points of a CBD file, and create a .DAT

file for plotting

16
USUBGRD

UTS

convert a specified part (SUB) of a CBD file to a GRD file for

plotting

introduce errors into a near-field dataset using the Taylor series

method

17
List of

UACTO

UACTADDO

UACTDDB

UACTDIF

UACTDIV

UACTDRV

UACTDS

UACTEC

UACTFF

UACTFFO

UACTNF

UACTNFO

UACTTS

UADDO

UADDDRV

UADDDS

UADDEC

UADDFF

UADDFFO

UADDNF

UADDNFO

UADDTS

UDCDFDV

UDECFF

UDECNF

UINCFF

UINCNF

UINITUN

UNCDFDV

UNORMO

Table 3.

Modules That Perform Basic Data Management Functions,

set the active unit number to 0

set the active and additional unit numbers to 0

set the active unit number to the value in difdb.iun

set the active unit number to the value in dif.iun

set the active unit number to the value in div.iun

set the active unit number to the value in drv.iun

set the active unit number to the value 0

set the active unit number to the value in ec.iun

set the active unit number to the final value in ff.iun

set the active unit number to the initial value in ff.iun

set the active unit number to the final value in nf.iun

set the active unit number to the initial value in nf.iun

set the active unit number to the value in ts.iun

set the additional unit number 0

set the additional unit number to the value in drv.iun

set the additional unit number to 0

set the additional unit number to the value in ec.iun

set the additional unit number to the final value in ff.iun

set the additional unit number to the initial value in ff.iun

set the additional unit number to the final value in nf.iun

set the additional unit number to the initial value in nf.iun

set the additional unit number to the value in ts.iun

decrement the unit number recorded in difdiv.iun

decrement the value of the current far-field unit number

decrement the value of the current near-held unit number

increment the unit number recorded in ff.iun

increment the unit number recorded in nf.iun

initialize the system parameters and unit numbers

increment the unit number recorded in difdiv.iun

set the far-held and near-held normalization constants to their initial values

UNORMl

URESTFF

URESTNF

USAVEFF

USAVENF

USETDBl

USETDB2

set the far-held and near-held normalization constants to unity

restore the unit numbers in ff.iun to the values saved in save.ffs

restore the unit numbers in nf.iun to the values saved in save.nfs

save the unit numbers recorded in ff.iun in save.ffs

save the unit numbers recorded in nf.iun in save.nfs

copy the hrst set of values of dbctoff,dbfloor in dbmins.set to dbmin.db

copy the second set of values of dbctoff,dbfloor- in dbmins.set to

dbmin.db

18
USETDB3

USHOWUN

USWBOTH

USWFFNF

USWTOAMP

USWTODB

USWTODS

USWTOFF

USWTONF

USWTONON

USWTOTS

copy the third set of values of dbctoff,dhfloor in dbmins.set to dbmin.db

display on the screen the current system parameter settings and

the current unit settings

record the value ffnf into ffornf.iun

toggle the value recorded in ffornf.iun between ff said nf

record the value amp in ampordb.grd

record the value dB in ampordb.grd

record the value ds in dsorts.iun

record the value ff in ffornf.iun

record the value nf in ffornf.iun

record the value none in ampordb.grd

record the value ts in dsorts.iun

19
Table 4

List of Parameter Files Used by the Research Modules and the Data Files They Create

module parameter files data files

UAMP2CBD

UAPDACB

UCBDDAT

UCBDGRD

UDBPDACB

UDERIV

UDIF2CBD

UDIFACBD

UDIFCBD

UDIFDB

UDIVCBD

UDIVRBD

UDS

UERR

UERRCOR

ULAPLCN

dabd.iof

adab.iof

dabd.iof, ampordb.grd

ampnom.nf, ampnorm.ff

difdiv.iun, dbmin.db

dbloss.grd, iregion.nf

iregion.ff

ampordb.grd, ampnorm.nf

ampnorm.ff, dbloss.grd

dbmin.db , dabd.iof

adab.iof

order. drv, dabd.iof, sub.grd

dbmin.db

difdiv.iun, dabd.iof

difdiv.iun, dabd.iof

difdiv.iun, dabd.iof

difdiv.iun, dabd.iof, ampnorm.ff

ampnorm.nf, dbmin.db

difdiv.iun, dabd.iof, iregion.ff

iregion.nf

difdiv.iun, dabd.iof, iregion.ff

iregion.nf

sub.ds, filter. ff, scale. dz, dabd.iof

dabd.iof, scale. dz

dabd.iof, scale. dz

dabd.iof, dbmin.db

UMAKEDZ

UOPNORM

UPRNCBD

URBDGRD

URDDZ

URDFFNF

dabd.iof, fun.dz, polydz.par

perdz.par, randz.par

difdiv.iun, dabd.iof, iregion.ff

iregion.nf

dabd.iof, sub.prn

dabd.iof

dabd.iof, makedz.par, scale. dz

filter. ff, dabd.iof, db.ff, db.nf

uamp2cbd.out, fort.xa;^

[adab.iof]^

nfyamp.dat, nfyphase.dat

nfxamp.dat, nfxphase.dat

ffyamp.dat, ffyphase.dat

ffxamp.dat, ffxphase.dat

ucbddat.out

nfamp.grd, nfphase.grd

ffamp.grd, ffphase.grd

ucbdgrd.out

[adab.iof]^

order. drv, uderiv.out, ioii.xx^

drvamp.grd, drvphase.grd

udif2cbd.out, fort .xx^

udifacbd.out, fort.xa:^

udifcbd.out ,

' fort . xx^

udifdb.out, ddbamp.grd, fort.xx^

ddbphase.grd

udivcbd.out, fort.xz^

udivrbd.out, fort.a^a;^

scale. dz, uds.out, fort.udx^

uerr.out, scale. dz, fort.xx^

scale. dz, uerrcor.out, fort.xx^

ulaplcn.out, Inamp.grd, Inphase.grd

ampO.grd, phased. grd

iregion.ff, iregion.nf, umakedz.out

[dz.grd]^, fort.a:a:^

uopnorm.out

uprncbd.out

ffamp.grd, nfamp.grd, urbdgrd.out

scale. dz, urdz.out, [dz.grd]^

iregion.ff, iregion.nf, fort.xx^

urdffnf.out, db.ff, fort.zx^

20
URDNFFF filter.ff, dabd.iof, db.ff, db.nf

URMSCBD dabd.iof, ampnorm.ff

USUBGRD dbloss.grd, dabd.iof, sub.grd

ampnorm.nf, ampordb.grd

ampnorm.ff, dbmin.db

UTS dabd.iof, scale. dz

ampnorm.fF, db.nf, ampnorm.nf

iregion.fF, iregion.nf, fort.xx^

urdnfff.out, db.fF, fort.ix^

ampnorm.fF, db.nf, ampnorm.nf

db.ff, db.nf, urmscbd.out, fort.a:a:^

ampnorm.ff, rms.dat

ffamp.grd, ffphase.grd, nfamp.grd

nfphase.grd, usubgrd.out

uts.out, scale. dz, fort.xx^

^ The DOS extension number xx added to the filename FORT is recorded in the

appropriate .lUN file

^ The brackets [filename] is to be understood as the contents of the filename. For

example, the output file name is read in as a parameter from file adab.iof

21
Table 5

List of Parameter Files Used by the Data Management Modules

module input file output file

UACTO active.iun

UACTADDO active.iun, add.iun

UACTDDB difdb.iun active.iun

UACTDIF dif.iun active.iun

UACTDIV div.iun active.iun

UACTDRV drv.iun active.iun

UACTDS - ERRORS - active.iun

UACTEC ec.iun active.iun

UACTFF ff.iun active.iun

UACTFFO ff.iun active.iun

UACTNF nf.iun active.iun

UACTNFO nf.iun active.iun

UACTTS ts.iun active.iun

UADDO add.iun

UADDDRV drv.iim add.iun

UADDDS - ERRORS - add.iun

UADDEC ec.iun add.iun

UADDFF ff.iun add.iun

UADDFFO ff.iun add.iun

UADDNF nf.iun add.iun

UADDNFO nf.iun add.iun

UADDTS ts.iun add.iun

UDCDFDV difdiv.iun, ffornf.iun

ff.iun, nf.iun

difdiv.iun

UDECFF ff.iun ff.iun

UDECNF nf.iun nf.iun

UINCFF ff.iun ff.iun

UINCNF nf.iun nf.iun

UINITUN init.iun, data.dir ampordb.grd, filter.ff, order.drv

scale. dz, fun.dz, active.iim, add.iun

amp2.iun, asci.iun, difdiv.iun

dif2.iun, dif.iun, difdb.iun, div.iun

drv.iun, ds.iun, dz.iun, ec.iun, err.iun

ff.iun, nf.iun, rdiv.iun, ts.iun

UNCDFDV difdiv.iun, ffornf.iun

ff.iun, nf.iun

difdiv.iun

UNORMO tempnorm.nf, tempnorm.ff tempnorm.nf, ampnorm.nf

ampnorm.nf, ampnorm.ff tempnorm.ff, ampnorm.ff

22
UNORMl ampnorm.nf, ampnorm.ff tempnorm.nf, ampnorm.nf

tempnorm.nf, tempnorm.ff tempnorm.ff, ampnorm.ff

URESTFF save.ffs ff.iun

URESTNF save.nfs nf.iun

USAVEFF ff.iun save.ffs

USAVENF nf.iun save.nfs

USETDBl dbmins.set dbmin.db

USETDB2 dbmins.set dbmin.db

USETDB3 dbmins.set dbmin.db

USHOWUN ampordb.grd, filter.fF, fun.dz

ampnorm.ff, ampnorm.nf

ffornf.iun, active. iun

difdiv.iun, dif2.iun, dif.iun

div.iun, drv.iun, ds.iun

err. iun, ff.iun, nf.iun, ts.iun

dz.iun, order. drv, amp2.iun

rdiv.iun, difdb.iun, asci.iun

scale. dz, add. iun, ec.iun

USWBOTH ffornf.iun

USWFFNF ffornf.iun ffornf.iun

USWTOAMP ampordb.grd

USWTODB ampordb.grd

USWTODS dsorts.iun

USWTOFF ffornf.iun

USWTONF ffornf.iun

USWTONON ampordb.grd

USWTOTS dsorts.iun

^ Output from module UDS is written to file FORT.DSa:, where x denotes a single digit. Consequently these unit numbers do not fit into a purely integer unit

numbering scheme.

23
Table 6

0

1

2

a

b

cd

e

f

g

ik

1m

n

o

P

r

s

tw

X

y

zas

bd

ca

cb

cc

ch

cm

crda

db

df

ds

dx

List of Symbols Used by PNFC Subroutines

initialization designator

one dimensional, subsequent operation designator,

alternate procedure designator

two dimensional

”a”, access, array, ascii, amplitude

”b”, backward, binary

change, convert to, column, complex, constant, copy

data, derivative, difference, dimensional, direct (access),

disk (as a storage location), double precision

exponential, even

far, field, file, forward, formated, function

gamma, generate

imaginary, imaginary part, integer

k (integer constant), wave number, spectrum space k

1 (integer constant)

m (integer constant), maximum, minimum, minus, multiple

near (fresnel region), negative quantity

odd, or

parameter(s), phase, plot, plus, power, print, product, pseudo

read, real (single precision), real part, row

shift, shifted, single precision, store, sum, plural designation

taylor (series), times, transform

weight, weighted, write

coordinate (distance along x axis), general variable designation

name change letter (to avoid conflicts)

coordinate (distance along y axis)

coordinate (distance along z axis)

ascii

binary data

complex array ”a”

complex array ”b”

complex constant

character variable

centimeter

create

direct access

decibel

difference

direct sum

derivative with respect to x, increment in x direction

24
dy

dz

ec

eq

fF

fp

fs

hd

hi

im

ik

iy

jx

In

mk

mm

mx

nf

or

Pf

ph

rcrd

re

rzsm

sq

to

ts

ud

un

wl

wn

xp

amp

add

ary

asc

box

cos

chk

cnt

dat

dif

derivative with respect to y, increment in y direction

derivative with respect to z, increment in z direction, z error terms

error correction

equality

far field

fioating point

files

header

high

imaginary

third index of three dimensional array

first (column) index of an array

second (row) index of an array

logarithm

make

maximum/minimurri

maximum

near field

or

plot file

phase

real constant

read

real

real dz array

sum

square, squared

to

t aylor series

update

unit number, ’’unorm”

wave length

wave number

exponential

amplitude

add

array

ascii

box

cosine

check

center

file extension designation for two-dimensional plot files

difference

25
div

dnf

dot

drv

end

err exp

fbt

fFt

fil

fit

fun

get

grd

hst

iof

img

inp

ins

int

iun

leq

log

mak

mul

mod

out

par

per

pff

pit

ply

prg

prn

pws

scl

set

sft

sin

str

aray

bndr

char

gama

divide

derivative of near field

dot product (of two vectors)

derivative

end

error, error field

exponent

forward/backward transform

fast fourier transform

file

filter

function

get

file extension designation for perspective-plot files

history

input/output file

imaginary

input

insertion

integrate

integer unit number

less than or equal

logarithm

make

multiply

modulate, modulated by

output

parameter

periodic

psuedo far field

plot

polynomial

program

print

plane-wave spectrum

scale

set, setup

shift

sine

store

array

boundry

character

gamma

26
gamm gamma

file file

fils files

find find

fltr filter

func function

grid grid (coordinate grid)

init initalize

limt limit

loss loss

make make

mult multiply

mess message

pint print

rndm random

swap swap

unit unit

gamma gamma

polyn polynomial

ratio ratio

const constant

Ingth length

range

timer

range

gather

laplcan Laplacian

27
TABLE 7

ACPCFFD

ACPCNFD

ADABIOF

ADABPAR

ADDBOX

AMPDIF2

APDSETl

CABD

CABDIOF

CABDPAR

CADACB

CADDl

CADD2

CAEIPH2

CAEIPHC

CAPCCDl

CAPRI

CAPRIl

CAPRNT

CARAYMX2

CARCBD2

CATOCB2

CBDTODB

CCA2B1

CDFSETl

CDIFl

CDIF2

CDIVDS2

CDOT

CGATHER

CHKEQFP

CHKEQI

CHKLEQI

CHKPARO

CHKPARl

CHKPAR2

List of Subroutines of the PNFC

introduce Amplitude Change and Phase Change to Far-Field Data

introduce Amplitute Change and Phase Change to Near-Field Data

get the Input Output File for Ascii to Direct Access Binary routines

read the PARameters for the Ascii to Direct Access Binary conversion

ADD a BOX function of amplitude EPS to the complex CDATA

form a real array equal to the difference between the absolute values of two

complex arrays

convert to A-P prior to taking Difference between SElected columns or rows

from Two 2- dimensional arrays created from 3- dimensional array

Convert two Ascii data sets to self- documented complex Binary Data set

get the Input Output File for the Conversion of Ascii to Binary Data

read PARameters for the Conversion of Ascii to Binary Data routines

Convert 2 Ascii data sets to self-document Direct-Access Complex Binary

Complex ADDition of 1 dimensional complex arrays

Complex ADDition of 2 dimensional complex arrays

Complex Array times E to power I times Phase, phase 2 dim. real array

Complex Array times Exponential I times Phase Constant

Complex Array Plus Complex Constant, 1 Dimensional

Convert Amplitude-Phase format complex numbers to Real-Imaginary format

Convert A-P format complex numbers to R-I format, 1 dimensional

find max and min values of a Complex Amplitude-Phase array and pRiNT

find the Complex ARrAY MaXimum, for a 2 dimensional array

Complex Array plus Real weight times Complex array B, dbl. precision

copy a Complex array CA TO CB, for 2 dimensional arrays

read a Complex Binary data set, converting from R-I TO A-P, amp in dB

copy a Complex Column of data from array A 2 dim. to array B 1 dim.

form Complex DiFerence of SElected columns or rows of Two arrays formed

from a 3-dimensional’s sub-arrays, then convert from R-I to A-P

Complex DiFerence of 1 dimensional complex arrays

Complex DiFerence of 2 dimensional complex arrays

Complex Division of single precision array by Double precision array

Complex Dot product returned in complex ANSwer

sequentially copy regularly spaced elements of one array to another

CHecK for EQuality between two Floating Point numbers: stop if unequal

CHecK for EQuality between two Integer numbers: stop if unequal

CHecK if Less than or EQual relates two Integer numbers: stop otherwise

CHecK if one integer is less than or equal to another: stop otherwise

CHecK if two integers are less than or equal to two others: else stop

CHecK if two integers are less than or equal to two others: else stop

28
CHLNGTH

CIMGSTR

CINITl

CINIT2

CIRCFLT

CMULDS2

CMULRD2

CMULTl

CMULT2

CMULTR2

CNIMCCl

CNTCACB

CONST

CONSTAX

COS2

COS3

COS4

COSAX

COSAX2

COSX

CRA2B1

CRATI02

CRIAP

CRIAPl

CRNFERR

CSMWCPl

CSMWCP2

CSUMl

CSUM2

CSUMCPl

CSUMCP2

CSUMIK2

CSUMRWl

CSUMRW2

CSWCPE2

CXPCLOG

DABDIOF

DABDPAR

DATORBl

DBl

DB2

DCLN2

DNFDX

determine number of CHaracters up to a blank in a character variable

a Complex array’s IMaGinary part is SToRed in a real array

Complex INITialization of 1 dimenstional array with a complex constant

Complex INITialization of 2 dimenstional array with a complex constant

CIRCular FiLTer of CDATA

Complex MULtiplication of a Double precision complex array by a Single

precision complex array in 2 dimensions

Complex MULtiplication of Real Double precision array by complex array

Complex MULTiplication of complex arrays in 1 dimension

Complex MULTiplication of complex arrays in 2 dimensions

Complex MULTiplication of Real array by complex array in 2 dimensions

add a Complex Constant to Negative Imaginary part of Complex array

CeNTer the data in a zero padded array by copying it from CA to CB

return the constant unity for the value of a function

return the constant unity for the value of a function

calculate the function COSine squared of x

calculate the function COSine cubed of x

calculate the function COSine of x raised to the fourth power

calculate the function COS(A*X)

calculate the function COSine squared of A*X

calculate the function COS(X)

copy a Complex Row of data from array A 2 dim. to array B 1 dim.

Complex RATIO of two arrays in 2 dimensions

Complex Real- Imaginary format numbers to Amplitude-Phase format, 2 dim.

Complex Real- Imaginary format numbers to Amplitude-Phase format, 1 dim.

CReate ERRor Near Field via multiple Fourier transforms for all z dist.

Complex SuM of Weighted Complex Product real and complex arrays, 1 dim.

Complex SuM of Weighted Complex Product real and complex arrays, 2 dim.

Complex SUM in 1 dimension

Complex SUM in 2 dimensions

Complex SUM of Complex and real array Products, 1 dimensional result

Complex SUM of Complex and real array Products, 2 dimensional result

Complex SUM of complex array over 3rd dimension, 2 dimensional result

Complex SUM of a Real Weight times a complex array in 1 dimension

Complex SUM of a Real Weight times a complex array in 2 dimensions

Weighted Complex Sum of ComPlex times real to Exponent in 2 dimensions

add a Complex EXPonent array to the Complex LOGarithm of array CDATA

get the Direct Access Binary Data Input Output File

obtain Direct Access Binary Data processing PARameters

copy a Double precision Array TO a Real array in 1 dimension

convert real part of amplitude-phase-format complex array to dB, 1 dim.

convert real part of amplitude-phase-format complex array to dB, 2 dim.

Double-precision Complex Logarithm of complex array in 2 dimensions

Derivative of Near Field with respect to X, a scan plane coordinate

29
DNFDY

DNFDZ

DNFDZE

DNFDZO

DSPWS

ECEXP

EIGAMAZ

ERRMESS

FAXSBYS

FBTIOF

FBTPAR

FFNF

FFNFZXY

FFPFF

FFTFFT

FILSIOF

FILSPAR

FINDEND

FLTEIGZ

FLTGAMA

FLTLIMT

FLTPWSG

FLTRHIK

FRBW

FRGRD

FRRAD

FRRADHD

FUNAXBY

FUNCSCL

FUNCXY

FWDCRAl

FWRADl

FWRAD2

GAMMASQ

GETFILE

GETWN

GRDDACB

GRID

Derivative of Near Field with respect to Y, a scan plane coordinate

multiple Derivatives of Near Field with respect to Z, coordinate variable

orthogonal to the scan plane

Derivatives of Near Field with respect to Z, Even orders

Derivatives of Near Field with respect to Z, Odd orders

Direct Sum of Plane Wave Spectrum with log of spectrum as input data

compute E to a Complex EXPonential

create the array E raised to the power i times GAMma times Z

print a set of ERRor MESSages in accord with the origin of call

generate an array equal to a Function of A times Shifted coordinate X multiplied by a function of B times Shifted coordinate Y

get Input Output File for real to complex binary data read routines

read PARameters for real to complex binary data read routines

given a Far- Field, compute the corresponding Near-Field using the FFT

given Far-Field, compute variable z-distance Near-Field via direct sum

given a Far-Field, obtain the Pseudo Far-Field

Fast Fourier Transform followed by inverse Fast Fourier Transform

get the Input Output File for reading designated data output file names

read the names of designated data-output files

skip to the end of a file

filter an array according to criteria regarding array GAMMA2

set array GAMMA2 to zero whenever its value is less than some constant

obtain data-point-spacing criteria for limiting plane-wave spectrum

FiLTer sum of logarithm of Plane-Wave Spectrum plus i Gamma z FiLTeR High far-held frequencies in K-space in near-held calculation; change

from near-held plane at ZO to near-held plane at Z1

perform a Formated Read and a Binary Write of a Real DATAset

perform a Formated Read of a .GRD DATAset with conversion from decibels

to amplitude

perform a FoRmated Read of a Real Ascii Dataset

perform a FoRmated Read of a Real Ascii Dataset with HeaDer information

generate an array equal to a FUNction of A times coordinate variable X

multiplied by a function of B times coordinate variable Y

calculate a SCaLed grid-increment

generate an array equal to a FUNCtion in X times a function in Y

Formated Write of Double precision array Converted to Real Array, 1 dim.

Formated Write of Real Ascii Data in 1 dimension, self documented

Formated Write of Real Ascii Data in 2 dimensions, self documented

calculate real double precision array GAMMA**2

obtain the next hie name from a hle-name array

given a frequency, calculate a wavenumber

read amp and phase ,GRD hies and write out a Direct-Access Complex Binary Data hie

set up a GRID using single precision along a single axis

30
GRIDD

HSTDFDB

HSTDIF

HSTDIV

HSTDRV

HSTDS

HSTEC

HSTFFNF

HSTMKDZ

HSTNFFF

HSTTS

HSTUNO

HSTUNl

INPDABP

INPDACB

INPDRVP

INPDZP

INPFBT

INPFFP

INPFFPO

INPFILS

INPGRDP

INPNFP

INPNFPO

INPRGBD

INPTSP

INSLOSS

INTNF3

lUNIT

lYJXCNT

LAPLCAN

LNPPWS

MAKEDZ

MAKPFF

MDARBl

MDNFDX

MDNFDY

MDNFDZ

MDNFDZE

MDNFDZO

MIGAMMZ

MKGAMMA

MKPERDZ

set up a GRID using Double precision along a single axis

append file information to HiSTory file from program UDIFDB

append file information to HiSTory file from program UDIFGBD

append file information to HiSTory file from program UDIVCBD

append file information to HiSTory file from program UDERIV

append file information to HiSTory file from program UDS

append file information to HiSTory file from program UERRCOR

append file information to HiSTory file from program URDFFNF

append file information to HiSTory file from program UMAKEDZ

append file information to HiSTory file from program URDNFFF

append file information to HiSTory file from program UTS

append file information to HiSTory file from program UNORMO

append file information to HiSTory file from program UNORMl

INPut Direct-Access Binary data-processing Parameters from a file

INPut Direct- Access Gomplex Binary data and parameters from a file

INPut a subset of the direct-access pinary file for program UDERIV

INPut a subset of the direct-access binary file for program UMAKEDZ

INPut complex binary data by reading two real ascii files

INPut Far-Field Parameter subset of direct-access binary data file

INPut Far-Field Parameters and data from direct-access binary file

get the file containing a list of file names and INPut the FILe nameS

INPut a subset of the direct-access binary file for program UCBDGRD

INPut Near-Field Parameter subset of direct-access binary data file

INPut Near-Field Parameters and data from direct-access binary file

INPut two Real data sets into a Gomplex Binary Data array

INPut a subset of the direct-access binary file for program UTS

convert INSertion LOSS from decibels to amplitude and scale data array

INTegral of Near Field with respect to Z

function call to increment by 1 the current Integer UNIT number

determine the distance between the CeNTers of a line and a line segment

along X or Y axes

calculate the LAPLaCiAN of a near field; store in adjacent location

add i gamma times z to Logarithm of Plane-Wave Spectrum and filter

MAKE a function DZ, which is a function of X and Y

MAKe a Pseudo Far Field equal to the Fourier transform of box function

copy two Double precision Arrays to Real arrays in 1 dimension

Multiple Derivatives of the Near Field with respect to X

Multiple Derivatives of the Near Field with respect to Y

Multiple Derivatives of the Near Field with respect to Z

Multiple derivatives of the Near Field with respect to Z, Even orders

Multiple derivatives of the Near Field with respect to Z, Odd orders

calculate the array Minus i times GAMMa times Z

MaKe (create) the arrays GAMMA**2 and KY, KX

MaKe a function DZ, which is a PERmutated function of X and Y

31
MKPLYDZ

MMICA

MMRCA

NF

NFFF

NFMODX

NFMODY

NFPFF

OUTASC

OUTDACB

OUTDPS

OUTGRD

OUTPFSO

OUTPFSl

OUTRGRD

PCCRGRD

PERFUNG

PFCORR

PFCRAP

PFFFF

PFFNF

PFREIM

PFSET

PLTFILE

POLYN

POLYNXY

PPWSNF

PRDGTG2

PRDRTG2

PRDTG2

PRNGORR

MaKe a PoLYnomial function DZ of X and Y

get the Minimum and Maximum of the Imaginary part of a Complex Array

get the Minimum and Maximum of the Real part of a Complex Array

create a complex array equal to a FUNCtion in X times a function in Y

given a Near-Field, compute the corresponding Far-Field

MODulate a complex array with a function of X

MODulate a complex array with a function of Y

given a Near-Field, obtain the corresponding Psudo Far-Field

convert a complex array of R-I format to A-P format and OUTput the result as two ASCii data files

OUTput a Direct Access Complex Binary data file

OUTput a complex array to Disk storage, the Printout file, and/or a Storage

array

setup to OUTput amplitude and phase of a complex array to a .GRD file

get 4 file names and OUTput 4 arrays as .PLT files

OUTput 4 amplitude and phase arrays formed from a column and a row of

a complex array as .PLT Files

OUTput a Real array to a .GRD file for input to ’surfer’ graphics codes

for a Complex array. Print a Column and/or Row of amplitude and phase

values and then output the amplitude and pahse data to two .GRD files

dummy routine to select the name of a FUNCtion to be evaluated

obtain a Column OR Row of data and store the real or imaginary part for

submital to a Plot File

I obtain one dim. Amp. and Phase arrays from a Column and a Row of a

complex array for submital to a Plot File

given a Psudo Far-Field, obtain the corresponding Far-Field

given a Psudo Far-Field, obtain the corresponding Near-Field

obtain Real or Imaginary part of 1 dim. complex array and copy to 2nd

column of a real 2 dim. array

Plot File SETup: collect column or row data from a complex array and

convert to R-I format (or A-P format)

output a real .PLT file for PLoTing multiple two-dimensional curves

function call to sum a POLYNomial of a single variable

calculate an array equal to a POLYNomial function of X added to a polynomial function of Y

given log of Plane-Wave Spectrum, calculate Near Field via direct sum

raise to a Power a Real Double precision Column array; then Times a Complex array: 2 dimensional result

raise to a Power a Real Double precision Row array; then Times a Complex

array: 2 dimensional result

raise to a Power a Real 2 dimensional Double precision array: then Times a

Complex array: 2 dimensional result

PRiNt out the amplitude and phase of a Column OR a Row of complex array

32
PRNPLT

PRNRCOR

PRNTCID

PRNTRID

RADDRC2

RANGED

RANGES

RARYMM2

RCA2B1

RCBD2

RCBDIOF

RCBDPAR

RCBDSET

RDCBDl

RDCBD2

RDDABP

RDDACBD

RDIF2

RDOT

RDRBD2

REARANG

RINITl

RMULT2

RNDM

RNDMDZ

RRA2B1

RZTORCl

RZTORC2

SCLCCl

SCLCC2

SCLRCl

SCLRR2

SETBNDR

SETFILS

SETFIOF

SETFPAR

SETTSZ

SFTCACB

PRiNt and output to 4 .PLT files the amp. and phase of a column and a row

of a complex array

PRiNt out a Real-array’s Column OR Row

PRINT the maximum amplitude of a Complex array and one column of Data

PRINT maximum and minimum values of a real array and one column of

Data

Real array ADDed to a Real Constant, 2 dimensional

lower and upper RANGE values of a Double precision 1 dimensional array

lower and upper RANGE values of a Single precision 1 dimensional array

get a Real ARraY’s Maximum and Minimum values, 2 dimensional array

copy a Real Column of data from array A 2 dim. to array B 1 dim.

Read in a Real binary dataset and store as a Complex Binary Dataset in a

2 dimensional array

get the Input Output File name for inputing 2 Real Binary data sets into a

Complex array

Read PARameters and file names for inputing 2 Real Binary data sets into

a Complex array

Set up to read two Real Binary data sets into a Complex array

Read in a Real Binary data set into a Complex 1 dimensional array

ReaD a Complex Binary data set into a 2 dimensional array

ReaD a Direct Access Binary data set for the set Parameters

ReaD a Direct Access Complex Binary Data set

get the Real Difference of two dimensional real arrays

for two Real arrays form their DOT product

ReaD a Real Binary data set into a 2 dimensional array

amplitude, phase, distance correction and swap to obtain far-held data

Real INITialization of 1 dimenstional array with a real constant

Real MULTiplication of real arrays in 2 dimensions

function call to return a RANDoM number

calculate a real array DZ all of whose elements are RANDoMly obtained

copy a Real Row of data from array A 2 dim. to array B 1 dim.

Raise a 1 dimensional array TO a Real Constant power

Raise a 2 dimensional array TO a Real Constant power

SCaLe by a Complex Constant a Complex array in 1 dimension

SCaLe by a Complex Constant a Complex array in 2 dimension

SCaLe by a Real Constant a Complex array in 1 dimension

SCaLe by a Real Constant a Real array in 1 dimension

SET the BouNDaRy regions of complex array CDATA to complex constant

CC

SET up to read a list of FILES containing formated-output hie names

get the Input Output File for reading formated-data-output hie names

read the names of designated formated-data-output hies

SET up the necessary arrays for TayLoR series in Z calculations

ShiFT the location of Complex data in zero padded array to array center

33
SFTRARB

SIN4X

SWAP

TIMER

TIMERS

TODAY

TSZK

TSZKl

TSZSLM

TSZSLMO

TSZSLMl

UDASCUN

UDDSIUN

UDDZIUN

UDFFIUN

UDFIUN

UDNFIUN

WCBDl

WCBD2

WDACBD

WLTOCM

WRBD2

WRCHKF

XCHAR

XSCHAR

XYGRIDS

ShiFT the location of Real data in zero padded array to array center

calculate the function SINe of X raised to the fourth power

switch begining to end Array-element Positions of both rows and columns

store system TIME on first call, return time difference on second call

multiple TIME initilizations, time differences returned on second call

write current date to screen

add TayLoR Series (in Z) term of order K to existing CDATA array

obtain sum of Kth Taylor Series term with CDATA then output partial sum

Taylor Series in Z Summation from Low order to Max order added to CDATA

initialize Taylor Series in Z with terms Summed from Low to Max order

Taylor Series in Z Sum from Low to Max order, each partial sum output

UpDate file record of ASCii output-file UNits

UpDate Direct-Sum Integer-UNit-number file of output-name extensions

UpDate file record of DZ file-name extensions that have been created

UpDate file record of existing Far-Field file-name extensions

UpDate File-Index Unit Number file

UpDate file record of existing Near-Field file-name extensions

Write an unformatted Complex Binary Data set, which is 1 dimensional

Write an unformatted Complex Binary Data set, which is 2 dimensional

Write a Direct Access Complex Binary Dataset which is self- documented

given a frequency, convert from Wave-Lengths to CentiMeters

Write an unformatted Real Binary Data set, which is 2 dimensional

WRite a CHecK list of parameters to the standard print file

express an integer modulus 100 as a CHARacter variable

eXpress an integer modulus 10 as a Single CHARacter variable

set up both X and Y CRIDs using Single precision

34
Appendix A

Creating the Original Direct Access Binary Dataset

Two modules are provided for inputing ascii data files to create direct-access

complex binary datasets. The module UAPDACB reads in two ascii files, one containing amplitude data and one containing phase data. For these files, the data in

each column precedes the data in each succeeding column. The required structure

of these ascii files is seen by inspection of subroutine FRRAD or subroutine FRRADHD (the latter assumes that a 120 character HeaDer preceedes the ascii data).

Alternately, module UDBPDACB is used to read two ascii files, one containing amplitude data expressed in decibels and one containing phase data. Both files are

assumed to have been set up as .GRD files suitable for input to the system plot

package. For these files, the data in each row proceeds the data in each succeeding

row. The structure of these ascii files is seen by inspection of subroutine FRGRD.

The parameters associated with the binary datasets created by these modules are

obtained from a user-supplied parameter file, which also contains the names of the

two ascii input files, a format specification for the ascii input data, and the name

of the binary output file. This user-supplied parameter file is specified in the file

ADAB.IOF. The parameter file entries are seen by inspection of subroutine ADABPAR, which reads the file. The parameters occupying the first seven records of the

direct-access binary file are defined in the following table:

List of Parameters Included in the Direct Access Binary Datasets

LENGTH

FFORNF

LABEL

NY, NX

DY, DX

FREQ

ZO

the LENGTH of each record in the file, nominally equal to 8*NY

(required for Direct Access files)

data type specifier distinguishes between Far-Field OR Near-Field data

character variable of up to 120 characters identifying the file

the number of respective columns and rows in the complex data array

incremental data point spacing in near-field plane for Y and X axes

operating frequency expressed in gigahertz

z-axis distance in centimeters to the neai;-field measurement plane

35
Appendix B

System Initialization

At the beginning of any research project the system has to be initialized to

properly set the the system parameters and the far-field and near-field unit numbers. This is accomplished by executing the module UINITUN, which will write

the following table to the screen:

THE INITIAL SETTINGS are:

ampordb.grd: ampordb=

filter. ff: cksqrd=

order. drv: idrvinc,iorder=

scale. dz: scalinc,dzscale=

fun.dz: funtype=

active. iun: iactive=

add.iun: iadd=

amp2.iun: iunamp2=

asci.iun: iunasci=

difdiv.iun: idifdiv=

dif2.iun: iundif2=

dif.iun: iundif=

difdb.iun: iundfdb=

div.iun: iundiv=

drv. iun: iundrv=

ds.iun: iundsO,iundsl=

dz.iun: iundz==

ec.iun: iunec=

err. iun: iunerr=

ff.iun: iunff=

nf.iun: iunnf=

rdiv.iun: iunrdiv=

ts.iun: iunts=

dB

O.OOOOOOOE-fOO

1

O.OOOOOOOE+00

per

0

0

0

7

1

0

0

0

0

0

-1

61

0

0

60

40

0

0

0

0.1000000

0

STOP: UINITUN: normal termination

In the above table the first entries on each line give the name of the file where the

information is recorded, the second entries give the name of the fortran variable(s) in

the modules that contain the value(s), which are shown last. The key abbreviations

in the file names and variable names can be deciphered by consulting Table 1. For

example, iunasci specifies the current setting of the ascii output unit number, and

iundz specifies the unit number of the dz dataset. Many of the unit numbers are set

to 0, simply signifying that no data has yet been created for these fields. There are

a few remaining variables included in the table that have special meanings. These

36
are defined below:

ampordb

cksqrd

idrivinc

iorder

funtype

iundsO

iundsl

.GRD files will be created in dB; it can also be set to amp

filter limit for truncating plane-wave spectrum

increment by which iorder is increased whenever order, drv is accessed by

module UDERIV

order of derivative calculated by module UDERIV

TYPE of FUNction used by module UMAKEDZ to create incremental

scalar field. It may have the value per (periodic), poly (polynomial), or

ran (random) function

initial value of iundsl: set to -1 when first initialized, thereafter equal to 0

single digit used as the last character in the filename extension, exclusively

used by module UDS

37
Appendix C

System Status Reports

After the execution of any module one can request a system status report

to examine the system parameter settings and the unit number settings. This is

accomplished by executing USHOWUN. One might do this to check the sequence

of executions for correctness and to decide what data management steps one needs

to take to access the next dataset needed to continue the research correctly. When

USHOWUN is executed after URDNFFF and UMAKEDZ have been executed only

once the following table is displayed:

THE CURRENT SETTINGS are:

ampordb.grd: dB

filter.fF: O.OOOOOOOE+00

order.drv: 1 0

scale. dz: O.OOOOOOOE+00 0.2000000

ampff,invfF: 1987.822 5.0306314E-04

ampnf,invnf: 1.059250 9.4406420E-01

ffornf: ff

fun.dz: per

active. iun: 0

add.iun: 0

amp2.iun: 0

asci.iun: 7 9

inc difdiv: 1

dif2.iun: 0

dif.iun: 0

difdb.iun: 0

div.iun: 0

drv.iun: 0

ds.iun: -1 0

dz.iun: 61 61

ec.iun: 0

err. iun: 0

ff.iun: 60 60

nf.iun: 40 40

rdiv.iun: 0

ts.iun: 0

STOP: USHOWUN: unit status report complete

38
Most of features and entries in the above table have been explained in Appendix

A. Here, however, some of the entries show 2 unit numbers. The combinations of

2 equal unit numbers signifies that the modules writing these unit numbers have

only been executed once, thereby making the initial unit numbers, as defined in

Appendix A, the current unit numbers.

After creating all the datasets required by the error correction research problem

(see Section 4), USHOWUN can be executed to get an overview of the system status.

The output table appears as below:

THE CURRENT SETTINGS are:

ampordb.grd: dB

filter. ff: O.OOOOOOOE+00

order.drv: 1 0

scale. dz: O.OOOOOOOE-fOO 0.2000000

ampff,invff: 1987.822 5.0306314E-04

ampnf,invnf: 1.059250 9.4406420E-01

ffornf: ff

fun.dz: per

active. iun: 59

add.iun: 60

amp2.iun: 0

asci.iun: 7 17

inc difdiv: 1

dif2.iun: 0

dif.iun: 0

difdb.iun: 0

div.iun: 0

drv.iun: 0

ds.iun: -1 0

dz.iun: 61 61

ec.iun: 42

err. iun: 0

ff.iun: 60 56

nf.iun: 40 44

rdiv.iun: 0

ts.iun: 41

STOP: USHOWUN: unit status report complete

Now we see that two unequal unit numbers appear in some of the entries.

These indicate the range of unit numbers for the particular type of field, {ffov nf),

that exist after repeated executions of the various modules. The first unit number

indicates the initial unit number created and the last number indicates the current

39
value of the unit number. The dataset referred to by the current value of the unit

number will be automatically accessed if the value in active. iun is 0. In addition, all

special types of near fields that have been created during the course of the research

are recorded in their respective unit number files. For example, the entry under

ts.iun is 41, meaning that the dataset with filename fort. 4contains the error- contaminated near field that was created using the Taylor series method.

40
Appendix D

An index of PNFC subroutines and the calling sequences in these routines.

ACPCFFD

ACPCNFD

ADABIOF

ADABPAR

ADDBOX

AMPDIF2

chlngth

errmess

APDSETl cca2bl cra2bl criapl capril cdifl

CABD

CABDIOF

CABDPAR

CADACB

CADDl

CADD2

CAEIPH2

CAEIPHC

CAPCCDl

CAPRI

CAPRIl

cabdiof cabdpar frbw

chlngth

errmess

adabiof adabpar frradhd capri wdacbd

CAPRNT

CARAYMX2

CARCBD2

CATOCB2

mmrca prntrld mmica

CBDTODB

CCA2B1

rdcbd2 criapl dbl

CDFSETl

CDIFl

CDIF2

CDIVDS2

CDOT

CGATHER

CHKEQFP

CHKEQI

CHKLEQI

CHKPARO

CHKPARl

CHKPAR2

CHLNGTH

GIMGSTR

CINITl

CINIT2

cca2bl cra2bl cdifl criapl capril

41
CIRCFLT

CMULDS2

CMULRD2

CMULTl

CMULT2

CMULTR2

CNIMCCl

CNTCACB : iyjxcnt sftcacb

CONST

CONSTAX

COS2

COS3

COS4

COSAX

COSAX2

COSX

CRA2B1

CRATI02

CRIAP

CRIAPl

CRNFERR : nfpfF catocb2 fFnf

CSMWCPl

CSMWCP2

CSUMl

CSUM2

CSUMCPl

CSUMCP2

CSUMIK2

CSUMRWl

CSUMRW2

CSWCPE2

CXPCLOG

DABDIOF

DABDPAR

DATORBl

DBl

DB2

DCLN2

DNFDX

DNFDY

DNFDZ

DNFDZE

DNFDZO

: chlngth

: chkparO chkparl

catocb2 prdrtc2 sclccl fourt acpcnfd swap

catocb2 prdctc2 sclccl fourt acpcnfd swap

dnfdze cmulds2

catocb2 prdrtc2 fourt acpcnfd swap sclrcl

migammz cmulds2 dnfdze

42
DSPWS

ECEXP

EIGAMAZ

ERRMESS

FAXSBYS

FBTIOF

FBTPAR

fx fy (unspecified functions)

chlngth

FFNF

FFNFZXY

FFPFF

FFTFFT

FILSIOF

FILSPAR

FINDEND

FLTEIGZ

FLTGAMA

FLTLIMT

ffpff pffnf

dcln2 migammz ppwsnf sclcc2

eigamaz fltlimt flteigz cmulds2

sclrr2 fourt

FLTPWSG

FLTRHIK

FRBW

FRGRD

FRRAD

FRRADHD

fltlimt

nfff ffnf

FUNAXBY

FUNCSCL

fx fy (unspecified functions)

FUNCXY

FWDCRAl

FWRADl

FWRAD2

fx fy (unspecified functions)

datorbl fwradl

GAMMASQ

GETFILE

GETWN

GRDDACB

GRID

GRIDD

adabiof adabpar frgrd capri wdacbd

HSTDFDB

HSTDIF

HSTDIV

HSTDRV

HSTDS

findend

findend

findend

findend

findend

43
HSTEC

HSTFFNF

HSTMKDZ

HSTNFFF

HSTTS

HSTUNO

HSTUNl

findend

findend

findend

findend

findend

findend

findend

INPDABP

INPDACB

INPDRVP

INPDZP

INPFBT

INPFFP

INPFFPO

INPFILS

INPGRDP

INPNFP

INPNFPO

INPRCBD

INPTSP

INSLOSS

INTNF3

lUNIT

lYJXCNT

dabdiof dabdpar rddabp getwn wrchkf

dabdiof dabdpar rddacbd getwn wrchkf

dabdiof dabdpar rddabp

dabdiof dabdpar rddabp

fbtiof fbtpar rcbdset

dabdiof dabdpar rddabp

dabdiof dabdpar rddacbd

filsiof filspar

dabdiof dabdpar rddabp

dabdiof dabdpar rddabp

dabdiof dabdpar rddacbd

rcbdiof rcbdpar rcbdset

dabdiof dabdpar rddabp

sclccl

migammz fourt swap cdivds2 acpcffd acpcnfd

LAPLCAN

LNPPWS

nfpff dnfdze dnfdx cadd2 dnfdy pffnf

carcbd2 fltpwsg

MAKFDZ

MAKPFF

MDARBl

MDNFDX

MDNFDY

MDNFDZ

MDNFDZF

MDNFDZO

MIGAMMZ

grid funaxby sclrr2

cinitl addbox nfpff

datorbl

dnfdx

dnfdy

mdnfdze mdnfdzo

dnfdze

cmulds2 mdnfdze

MKGAMMA

MKPFRDZ

MKPLYDZ

MMICA

MMRCA

gridd gammasq

grid faxsbys rarymm2 sclrr2

grid polynxy rarymm2 sclrr2

44
NF

NFFF : nfpfFpfFfF

NFMODX

NFMODY

NFPFF : setbndr fourt swap acpcfFd

OUTASC

OUTDACB

OUTDPS

OUTGRD

OUTPFSO

OUTPFSl

OUTRGRD

fwrad2

setfils wdacbd

prncorr catocb2 wcbd2

criap dbl cnimccl mmrca getfile outrgrd mmica

getfile pltfile

pfcrap outpfsO

PCCRGRD

PERFUNC

PFCORR

PFCRAP

PFFFF

PFFNF

PFREIM

PFSET

PLTFILE

POLYN

POLYNXY

PPWSNF

PRDCTC2

PRDRTC2

PRDTC2

PRGTSZ

PRNCORR

PRNPLT

PRNRCOR

PRNTCID

PRNTRID

: caraymx2 prncorr outgrd

: cosax2, etc.

: pfset pfreim

: pfcorr pfreim

: migammz cxpclog ecexp

: fourt acpcnfd swap

: cca2bl cra2bl criap 1 capril

: polyn

: Inppws dspws

catocb2 ffnf tszSLMO

cca2bl criap 1 cra2bl

prncorr outpfsl

rca2bl rra2bl

caraymx2

RADDRC2

RANGED

RANGES

RARYMM2

RCA2B1

RCBD2 : errmess

RCBDIOF : chlngth

RCBDPAR

45
RCBDSET : rcbd2

RDCBDl

RDCBD2

RDDABP : chkpar2 errmess

RDDACBD : chkpar2 errmess

RDIF2

RDOT

RDRBD2

REARANG : swap

RINITl

RMULT2

RNDM

RNDMDZ : rndm

RRA2B1

RZTORCl

RZTORC2

SCLCCl

SCLCC2

SCLRCl

SCLRR2

SETBNDR

SETFILS

SETFIOF

SETFPAR

SETTSZ

SFTCACB

SFTRARB

SIN4X

SWAP

TIMER

TIMERS

TSZK

TSZKl

TSZS03

TSZSLM

TSZSLMO

TSZSLMl

UDASCUN

UDDSIUN

UDDZIUN

UDFFIUN

; cinitl

: setfiof setfpar

: mkgamma fitgamma migammz catocb2 nfpfF

sec-100()

sec-100()

dnfdzo dnfdze cswcpe2

tszK outdps

catocb2 nfpfF dnfdzo dnfdze cswcpe2

dnfdzo dnfdze cswcpe2

settsz tszSLM

dnfdz cswcpe2 criap caprnt catocb2 wcbd2

46
UDFIUN

UDNFIUN

WCBDl

WCBD2

WDACBD

WLTOCM

WRBD2

WRCHKF

XCHAR

XSCHAR

XYGRIDS

: wltocm

: grid
NIST-1 14A

(REV. 3-89)

U.S. DEPARTMENT OF COMMERCE

NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY

BIBLIOGRAPHIC DATA SHEET

1. PUBLICATION OR REPORT NUMBER

NTSTTR H9-']929

PERFORMING ORGANIZATION REPORT NUMBER

3. PUBUCATION DATE

October 1989

4. TITLE AND SUBTITLE

Planar Near-Field Codes for Personal Computers

5. AUTHOR(S)

Loraijt A. Muth and Richard L. Lewis

6. PERFORMING ORGANIZATION (IF JOINT OR OTHER THAN NIST, SEE INSTRUCTIONS)

U.S. DEPARTMENT OF COMMERCE

NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY

GAITHERSBURG, MD 20899

7. CONTRACT/GRANT NUMBER

8. TYPE OF REPORT AND PERIOD COVERED

9. SPONSORING ORGANIZATION NAME AND COMPLETE ADDRESS (STREET, CITY, STATE, ZIP) Sponsored, in part, by

Air Force Guidance and Metrology Center

Newark Air Force Base, Ohio 43057

(Contract SD10-WPD-B238)

10. SUPPLEMENTARY NOTES

DOCUMENT DESCRIBES A COMPUTER PROGRAM; SF-185, FIPS SOFTWARE SUMMARY, IS ATTACHED.

11. ABSTRACT (A 200-WORD OR LESS FACTUAL SUMMARY OF MOST SIGNIFICANT INFORMATION. IF DOCUMENT INCLUDES A SIGNIFICANT BIBUOGRAPHY OR

LITERATURE SURVEY, MENTION IT HERE.)

We have developed planar near-field codes, written in Fortran, to serve as a research tool in antenna metrology. We describe some of the inner workings of

the codes, the data management schemes, and the structure of the input/output

sections to enable scientists and programmers to use these codes effectively.

The structure of the codes is seen to be open, so that a user can incorporate

a new application into the package for future use with relative ease. The large

number of subroutines currently in existence are briefly described, and a table

showing the interdependence among these subroutines is constructed. Some basic

research problems, such as transformation of a near field to the far field and

probe position error correction, are carried out from start to finish, to illustrate

use and effectiveness of these codes. Sample outputs are shown., The advantage

of a high degree of modularization is demonstrated by the use of DOS batch files

to execute Fortran modules in a desired sequence.

12. KEY WORDS (6 TO 12 ENTRIES; ALPHABETICAL ORDER; CAPITALIZE ONLY PROPER NAMES; AND SEPARATE KEY WORDS BY SEMICOLONS)

antenna metrology; data management; planar near-field codes; research tool;

subroutines

13. AVAILABIUTY

UNUMITED

FOR OFFICIAL DISTRIBUTION. DO NOT RELEASE TO NATIONAL TECHNICAL INFORMATION SERVICE (NTIS).

X

X

ORDER FROM SUPERINTENDENT OF DOCUMENTS, U.S. GOVERNMENT PRINTING OFFICE,

WASHINGTON, DC 20402. ORDER FROM NATIONAL TECHNICAL INFORMATION SERVICE (NTIS), SPRINGFIELD, VA 22161.

14. NUMBER OF PRINTED PAGES

52

15. PRICE

ELECTRONIC FORM

<r u 5 GOVERNMENT PRINTING OFFICE 1QR9-Jacket 773-846/25021 Region R


IR 89-3930

CANCELLED

UNAVAILABLE FOR BINDING
I

-V