World Data Center A consists of the Coordination Office and the following eight Subcenters:

**COORDINATION OFFICE**
World Data Center A
National Academy of Sciences
2101 Constitution Avenue, NW
Washington, D.C. 20418 USA
[Telephone: (202) 334-3359]

**GLACIOLOGY (Snow and Ice)**
World Data Center A: Glaciology
(Snow and Ice)
Cooperative Inst. for Research in Environmental Sciences
University of Colorado
Boulder, Colorado 80309 USA
Telephone: (303) 492-5171

**MARINE GEOLOGY AND GEOPHYSICS**
(Gravity, Magnetics, Bathymetry, Seismic Profiles, Marine Sediment, and Rock Analyses):
World Data Center A for Marine Geology and Geophysics
NOAA, E/GC3
325 Broadway
Boulder, Colorado 80303 USA
Telephone: (303) 497-6487

**METEOROLOGY (and Nuclear Radiation)**
World Data Center A: Meteorology
National Climatic Data Center
NOAA, E/CC
Federal Building
Asheville, North Carolina 28801 USA
Telephone: (704) 259-0682

**OCEANOGRAPHY**
World Data Center A: Oceanography
National Oceanographic Data Center
NOAA, E/OC
2001 Wisconsin Avenue, NW
Page Bldg. 1, Rm. 414
Washington, D.C. 20235 USA
Telephone: (202) 634-7510

**ROCKETS AND SATELLITES**
World Data Center A: Rockets and Satellites
Goddard Space Flight Center
Code 601
Greenbelt, Maryland 20771 USA
Telephone: (301) 344-6695

**ROTATION OF THE EARTH**
World Data Center A: Rotation of the Earth
U.S. Naval Observatory
Washington, D.C. 20390 USA
Telephone: (202) 653-1507

**SOLAR-TERRESTRIAL PHYSICS (Solar and Interplanetary Phenomena, Ionospheric Phenomena, Flare-Associated Events, Geomagnetic Variations, Aurora, Cosmic Rays, Airglow):**
World Data Center A for Solar-Terrestrial Physics
NOAA, E/GC2
325 Broadway
Boulder, Colorado 80303 USA
Telephone: (303) 497-6323

**SOLID-EARTH GEOPHYSICS (Seismology, Tsunamis, Gravimetry, Earth Tides, Recent Movements of the Earth's Crust, Magnetic Measurements, Paleomagnetism and Archeomagnetism, Volcanology, Geothermics):**
World Data Center A for Solid-Earth Geophysics
NOAA, E/GC1
325 Broadway
Boulder, Colorado 80303 USA
Telephone: (303) 497-6521

World Data Centers conduct international exchange of geophysical observations in accordance with the principles set forth by the International Council of Scientific Unions. WDC-A is established in the United States under the auspices of the National Academy of Sciences. Communications regarding data interchange matters in general and World Data Center A as a whole should be addressed to World Data Center A, Coordination Office (see address above). Inquiries and communications concerning data in specific disciplines should be addressed to the appropriate subcenter listed above.
IONOGRAM ANALYSIS WITH THE GENERALISED PROGRAM POLAN
Profiles calculated from digital data obtained with the NOAA Dynasonde.

The program used includes automatic identification and analysis of sporadic E traces. Error boxes at the layer peaks are based on the peak fitting errors returned by POLAN. The center curve is the normal analysis in which POLAN selects only those extraordinary ray data which are useful for start and valley calculations. The right hand curve uses all ordinary and extraordinary data -- this is not normally recommended since differences in echo occurrence, and horizontal separation of the rays, can produce a distorted profile.

Acknowledgements: Some of the work described in this report was carried out while the author was a guest worker at the NOAA Space Environment Laboratories, Boulder, Colorado. I am grateful to Dr. L. F. McNamara for his assistance in the final preparation of this report.
WORLD DATA CENTER A
for
Solar-Terrestrial Physics

REPORT UAG-93

IONOGRAM ANALYSIS
WITH THE GENERALISED PROGRAM POLAN

by
J.E. TITHERIDGE
Physics Department
The University of Auckland
Private Bag, Auckland,
New Zealand

December 1985

U.S. DEPARTMENT OF COMMERCE
NATIONAL OCEANIC AND ATMOSPHERIC ADMINISTRATION
NATIONAL ENVIRONMENTAL SATELLITE, DATA, AND INFORMATION SERVICE
National Geophysical Data Center
Boulder, CO 80303 USA
World Data Centers conduct international exchange of geophysical observations in accordance with the principles set forth by the International Council of Scientific Unions (ICSU). They were established in 1957 by the International Geophysical Year Committee (CSAGI) as part of the fundamental international planning for the IGY program to collect data from the numerous and widespread IGY observational programs and to make such data readily accessible to interested scientists and scholars for an indefinite period of time. WDC-A was established in the U.S.A.; WDC-B, in the U.S.S.R.; and WDC-C, in Western Europe, Australia, and Japan. This new system for exchanging geophysical data was found to be very effective, and the operations of the World Data Centers were extended by ICSU on a continuing basis to other international programs; the WDC's were under the supervision of the Comite International de Geophysique (CIG) for the period 1960 to 1967 and are now supervised by the ICSU Panel on World Data Centres.

The current plans for continued international exchange of geophysical data through the World Data Centers are set forth in the Fourth Consolidated Guide to International Data Exchange through the World Data Centres, issued by the ICSU Panel on World Data Centres. These plans are broadly similar to those adopted under ICSU auspices for the IGY and subsequent international programs.

Functions and Responsibilities of WDC's

The World Data Centers collect data and publications for the following disciplines: Glaciology; Meteorology; Oceanography; Rockets and Satellites; Solar-Terrestrial Physics disciplines (Solar and Interplanetary Phenomena, Ionospheric Phenomena, Flare Associated Events, Geomagnetic Phenomena, Aurora, Cosmic Rays, Airglow); Solid-Earth Geophysics disciplines (Seismology, Tsunamis, Marine Geology and Geophysics, Gravimetry, Earth Tides, Recent Movements of the Earth's Crust, Rotation of the Earth, Magnetic Measurements, Paleomagnetism and Archeomagnetism, Volcanology, Geothermics). In planning for the various scientific programs, decisions on data exchange were made by the scientific community through the international scientific unions and committees. In each discipline the specialists themselves determined the nature and form of data exchange, based on their needs as research workers. Thus the type and amount of data in the WDC's differ from discipline to discipline.

The objects of establishing several World Data Centers for collecting observational data were: (1) to insure against loss of data by the catastrophic destruction of a single center, (2) to meet the geographical convenience of, and provide easy communication for, workers in different parts of the world. Each WDC is responsible for: (1) endeavoring to collect a complete set of data in the field or discipline for which it is responsible, (2) safekeeping of the incoming data, (3) correct copying and reproduction of data, maintaining adequate standards of clarity and durability, (4) supplying copies to other WDC's of data not received directly, (5) preparation of catalogs of all data in its charge, and (6) making data in the WDC's available to the scientific community. The WDC's conduct their operation at no expense to ICSU or to the ICSU family of unions and committees.

World Data Center A

World Data Center A, for which the National Academy of Sciences through the Geophysics Research Board and its Committee on Data Interchange and Data Centers has over-all responsibility, consists of the WDC-A Coordination Office and seven subcenters at scientific institutions in various parts of the United States. The GRB periodically reviews the activities of WDC-A and has conducted several studies on the effectiveness of the WDC system. As a result of these reviews and studies some of the subcenters of WDC-A have been relocated so that they could more effectively serve the scientific community. The addresses of the WDC-A subcenters and Coordination Office are given inside the front cover.

The data received by WDC-A have been made available to the scientific community in various ways: (1) reports containing data and results of experiments have been compiled, published, and widely distributed; (2) synoptic type data on cards, microfilm, or tables are available for use at the subcenters and for loan to scientists; (3) copies of data and reports are provided upon request.
# TABLE OF CONTENTS

| Section                                                                 | Page |
|------------------------------------------------------------------------|------|
| Frontispiece and acknowledgements                                      |      |
| ABSTRACT                                                               | 1    |
| LIST OF FIGURES AND TABLES                                             | 2    |
| TERMINOLOGY                                                            | 4    |
| 1. INTRODUCTION                                                        | 6    |
| 2. IONOGRAM ANALYSIS PROCEDURES                                        |      |
|   2.1 Lamination Methods                                               | 8    |
|   2.2 Single Polynomial Methods                                        | 8    |
|   2.3 Overlapping Polynomials                                           | 9    |
|   2.4 Least-Squares Solutions                                          | 10   |
| 3. SELECTION OF AN $N(H)$ METHOD                                       |      |
|   3.1 Rapid Estimation of Layer Constants                              | 11   |
|   3.2 Calculation of Monotonic Profiles                                | 11   |
|   3.3 Full Calculations                                                | 12   |
| 4. A GENERALISED FORMULATION                                           |      |
|   4.1 Outline                                                          | 13   |
|   4.2 The Basic Equations                                              | 13   |
|   4.3 Calculation Procedures                                           | 15   |
| 5. THE PROGRAM POLAN                                                   |      |
|   5.1 General Characteristics                                          | 16   |
|   5.2 The Standard Modes of Analysis                                   | 17   |
|   5.3 Curve Fitting Procedures                                         | 19   |
|   5.4 The Layer Peak                                                   | 21   |
|   5.5 The Simplified Program SPOLAN                                    | 22   |
| 6. STARTING PROCEDURES FOR THE ORDINARY RAY                            |      |
|   6.1 Outline                                                          | 23   |
|   6.2 The Methods Used in POLAN                                        | 24   |
|   6.3 Daytime Starting Models                                          | 25   |
|   6.4 A Night-time Starting Model                                      | 27   |
| 7. VALLEY PROCEDURES FOR THE ORDINARY RAY                              |      |
|   7.1 Outline                                                          | 28   |
|   7.2 The Standard Valley                                              | 28   |
|   7.3 Addition of Physical Constraints                                 | 30   |
|   7.4 Valley Options in POLAN                                          | 33   |
| 8. START CALCULATIONS USING THE EXTRAORDINARY RAY                      |      |
|   8.1 Practically Obtainable Information                               | 36   |
|   8.2 Inclusion of Extraordinary-Ray Data                              | 37   |
|   8.3 The Slab Start in POLAN                                          | 39   |
|   8.4 Physical Constraints and Height Iteration                        | 41   |
|   8.5 The Choice of Scaling Frequencies                                | 45   |
|   8.6 Other Start Procedures                                           | 49   |
| 9. VALLEY CALCULATIONS USING THE EXTRAORDINARY RAY                     |      |
|   9.1 Introduction                                                     | 53   |
|   9.2 The Normal Analysis - Calculation of Valley Width                | 54   |
|   9.3 Calculation of Valley Width and Depth                            | 56   |
|   9.4 Results With Test Model Ionograms                                | 58   |
## 10. USING POLAN

| Section | Page |
|---------|------|
| 10.1 Implementation | 63 |
| 10.2 POLAN Input Data | 64 |
| 10.3 POLAN Output Data | 67 |
| 10.4 Selection and Scaling of Data | 69 |
| 10.5 Selection of a Value for START | 73 |

## 11. SCALING AND ANALYSIS WITH THE PROGRAM SCION

| Section | Page |
|---------|------|
| 11.1 Outline | 74 |
| 11.2 Entering Initial Specifications | 75 |
| 11.3 Defining the Ionogram Coordinates | 75 |
| 11.4 Scaling the Ordinary-Ray Trace | 77 |

## REFERENCES

| Section | Page |
|---------|------|
| REFERENCES | 79 |

## APPENDIX A. THE ABSOLUTE ACCURACY OF THE CALCULATED PROFILES

| Section | Page |
|---------|------|
| A.1 Relative accuracies with smooth virtual height curves | 81 |
| A.2 The analysis of irregular profiles | 83 |
| A.3 The effect of errors in the virtual height data | 85 |

## APPENDIX B. DEPENDENCE OF THE GROUP REFRACTIVE INDEX ON DIP ANGLE

| Section | Page |
|---------|------|
| B.1 Values of group index | 88 |
| B.2 Information obtainable using O and X rays | 91 |
| B.3 The reduction of integration errors at high dip angles | 93 |

## APPENDIX C. THE EFFECTS OF A VARYING GYROFREQUENCY

| Section | Page |
|---------|------|
| C.1 Values of gyrofrequency in the ionosphere | 96 |
| C.2 Changes near reflection | 97 |
| C.3 Retardation in the underlying region | 99 |
| C.4 Model studies | 102 |
| C.5 The choice of gyrofrequency for the underlying regions | 104 |

## APPENDIX D. GROUP INDEX CALCULATIONS WITHIN POLAN

| Section | Page |
|---------|------|
| D.1 Calculation of the virtual height coefficients - The subroutine COEFIC | 108 |
| D.2 Delay in the underlying ionisation - The subroutine REDUCE | 111 |
| D.3 Calculation of the group refractive index - The subroutine GIND | 114 |

## APPENDIX E. THE CONSTRUCTION OF POLAN

| Section | Page |
|---------|------|
| E.1 Logic Flow | 116 |
| E.2 Start and Valley Procedures | 122 |
| E.3 Program Parameters | 125 |

## APPENDIX F. PROGRAM LISTINGS

| Section | Page |
|---------|------|
| F.1 The main subroutine POLAN | 128 |
| F.2 The subroutines SETUP, SELDAT and STAVAL | 134 |
| F.3 The subroutines COEFIC, ADJUST and REDUCE | 141 |
| F.4 The subroutines PEAK, TRACE, SOLVE, SUMVAL and GIND | 148 |
| F.5 The program SCION | 154 |

## APPENDIX G. STANDARD TEST DATA AND RESULTS

| Section | Page |
|---------|------|
| G.1 The mainline program POLRUN | 161 |
| G.2 Standard test data | 163 |
| G.3 Standard results and discussion | 167 |

## APPENDIX H. THE SIMPLIFIED PROGRAM SPOLAN

| Section | Page |
|---------|------|
| H.1 Construction | 178 |
| H.2 Test Results | 179 |
| H.3 Listings | 183 |
ABSTRACT. Different methods for the real-height analysis of ionograms, and their fields of application, are surveyed. A flexible new procedure is developed to give maximum accuracy and reliability in an automatic, one-pass analysis. The program POLAN uses polynomial real-height sections of any required degree, fitting any number of data points. By choice of a single parameter (MODE) it can reproduce all current methods from linear-laminations to single or overlapping polynomials. In addition a wide range of least-squares modes are available; these are preferable for most purposes, particularly with oversampled data (as from digital ionosondes). The mode of analysis changes automatically within the program to give an optimised least-squares calculation in the start, peak and valley regions. Physically unacceptable solutions are adjusted by imposing limits on the profile parameters. The new profile coefficients (and the new fitting error) are obtained directly and rapidly from the previous solution. This permits repeated application of the adjustments, as required, and cancellation of any change if it produces an unacceptably large increase in the virtual-height fitting error.

The information available using combined ordinary and extraordinary ray data is studied under different conditions. Procedures are developed which can solve the underlying and valley ambiguities with high accuracy, given suitable data, and which can detect and reject bad data. Physically reasonable models are incorporated into the least-squares start and valley calculations. This ensures an acceptable, standardised form for the profiles in these regions when only ordinary ray data are available. With good ordinary and extraordinary ray data POLAN produces the maximum amount of information which can be obtained about the unobserved regions, and results are almost independent of the physical models. With poor or inconsistent data, giving a less well-defined solution, results become increasingly biased towards the physical model so that acceptable results are obtained under most conditions.

Many of the techniques used in POLAN are new. Procedures and models developed for the start, peak and valley regions are described in reasonable detail, along with the precautions found to be necessary for maximum accuracy with extraordinary ray data. Mathematical procedures for ensuring full accuracy at all dip angles are described in the appendices. Optimum rules for scaling data are also developed and the practical use of POLAN is detailed. All programs are listed in the appendices, along with standard test data and the corresponding outputs. Copies of the programs are available on magnetic media from World Data Center A.
SUMMARY LIST OF FIGURES AND TABLES

SECTIONS 1 TO 4 - No figures or tables.

SECTION 5 - THE PROGRAM POLAN

TABLE 1. Parameters for the standard modes of analysis.  
FIGURE 1. The standard modes of analysis in POLAN.
TABLE 2. Calculation times for each mode of POLAN.
TABLE 3. Fitted heights and weights for each mode.

SECTION 6 - START CALCULATIONS USING THE ORDINARY RAY

FIGURE 2. The start extrapolation procedure using ordinary-ray data only.
TABLE 4. Model starting heights for the analysis of daytime ionograms.
FIGURE 3. Model starting frequencies (FN) for the analysis of daytime ionograms.
FIGURE 4. Model starting heights for the analysis of night-time ionograms.

SECTION 7 - VALLEY CALCULATIONS USING THE ORDINARY RAY

FIGURE 5. Possible real-height profiles corresponding to the same virtual height curve.
FIGURE 6. The form and notation of the standard valley.
TABLE 5. Parameters for the standard valley.
FIGURE 7. Profiles formed by the superposition of model Chapman layers.
FIGURE 8. Results from the analysis of dual Chapman-layer profiles.
FIGURE 9. Real-height changes due to a change in the assumed width of the E/F valley.

SECTION 8 - START CALCULATIONS USING EXTRAORDINARY RAY DATA

FIGURE 10. Parameters for the slab start profile used with extraordinary ray data.
FIGURE 11. Slab start results at varying fmin.
TABLE 6. Results from the slab-start calculation of Figure 12.
FIGURE 12. Analysis of a difficult profile, with the addition of physical constraints.
FIGURE 13. Adjustments made by POLAN to compensate for bad data.
TABLE 7. Real height errors obtained using different scaling intervals.
TABLE 8. Real height errors obtained with different values of fmin.
FIGURE 14. Virtual heights and gradients at low frequencies.
FIGURE 15. Polynomial start results, for different values of fmin.
TABLE 9. Real-height errors obtained with the polynomial start.
TABLE 10. The X-ray frequency shift used for starting corrections in SPOLAN.
FIGURE 16. Results from the single-point starting correction in SPOLAN.

SECTION 9 - VALLEY CALCULATIONS USING EXTRAORDINARY RAY DATA

FIGURE 17. The shape of the standard valley model, for different values of VWIDTH.
FIGURE 18. Variations obtained by changing the depth of the model valley.
FIGURE 19. Profiles used to investigate valley calculation procedures.
FIGURE 20. Results from 2-parameter valley calculations, at dip angles from 0 to 90°. 59
FIGURE 21. Results at two different valley depths, for dip angles from 0 to 90°. 59
FIGURE 22. Changes in real height and fitting error as the assumed valley depth varies. 60
FIGURE 23. The virtual-height fitting error as a function of assumed valley depth. 61

SECTION 10 - THE USE OF POLAN
FIGURE 24. Scaling points for a typical daytime ionogram. 71
FIGURE 25. Regions where the O-ray trace should not be scaled. 71

SECTION 11 - THE PROGRAM SCION FOR DIGITISING DATA
FIGURE 26. Ionogram layout for digitising, with "off-scale" areas. 76

APPENDIX A - THE ACCURACY OF N(h) CALCULATIONS
TABLE A1. Real-height errors for a Chapman layer, with modes 1 to 7 of POLAN. 81
TABLE A2. Real-height errors for a parabolic layer, for modes 1 to 7. 82
FIGURE A1. The real height profile used to produce a large cusp. 83
TABLE A3. Errors produced by a large cusp, for modes 1 to 6 of POLAN. 84
TABLE A4. Cusp errors obtained with different scaled frequency intervals. 85
FIGURE A2. Changes in real height caused by changes in the starting correction. 87

APPENDIX B - DIP ANGLE VARIATIONS
FIGURE B1. Relative group delays of the extraordinary and ordinary rays. 89
FIGURE B2. The group delay ratio $R_{x,o}$ as a function of dip angle. 89
FIGURE B3. Polynomial fits to the O- and X-ray group refractive indices. 90
TABLE B1. Errors in the calculated real-height profile 92
FIGURE B4. The effect of random errors in a slab start analysis. 93
FIGURE B5. Division of the group-index integration range, at high dip angles. 94
FIGURE B6. Errors obtained with accurate virtual-height data at different dip angles. 95

APPENDIX C - FH HEIGHT VARIATION
FIGURE C1. Measured values of gyrofrequency in the ionosphere. 96
TABLE C1. Changes in real and virtual height of a reflecting layer. 98
FIGURE C2. Changes in the X-ray virtual height due to a decrease in FH. 99
TABLE C2. The relative group retardation of O and X rays. 100
FIGURE C3. The equivalent monotonic distribution for an underlying layer. 101
FIGURE C4. Virtual heights for a low layer and its equivalent monotonic distribution. 101
TABLE C4. Errors in the slab start calculation, using fixed values of FH. 102
FIGURE C5. Night E-region profiles used in developing rules for start calculations. 103
FIGURE C6. Slab start calculations using a fixed value of gyrofrequency. 105
FIGURE C7. Errors obtained from a model ionogram using different values of FH. 105
FIGURE C8. The separation of "underlying" and "reflection" regions for FH. 106
1. Physical Parameters.

I or DIP is the magnetic dip angle, in degrees.
FB or FH is the electron gyrofrequency, in MHz.
FB is the gyrofrequency at ground level, given in the call to POLAN. This is made negative if the gyrofrequency is to be height independent.
FH is the current value of FB, corresponding to the height FHHT.
FN = the plasma frequency in MHz.
F = the wave frequency in MHz. Positive values are used for ordinary (O) ray data, and negative values for the extraordinary (X) ray.
FR = the plasma frequency at reflection for the wave of frequency F. Thus FR = F for the O ray, and FR^2 = F(F + FH) for X rays (where F is negative).
HR = the real height of reflection (h_i) for the wave of frequency F_i.
fmin = the lowest frequency in the given O-ray virtual-height data.
h'min = the lowest virtual height for the ordinary ray. This may be at a frequency greater than fmin.
G = the real-height gradient dh/dFN.
T = (1 - FN^2/FR^2).5, varying from T = 1 below the ionosphere to T = 0 at the reflection height HR.
μ is the phase refractive index, varying from 1 at FN = 0 to 0 at the height of reflection.
μ' is the group refractive index, varying from 1 at FN = 0 to sec(1)/T (for the O ray) at FN = FR.
χ is the solar zenith angle (Section 6.3).
f_o, f_x are corresponding ordinary and extraordinary ray frequencies (reflected at the same value of plasma frequency).
h'_o, h'_x are virtual heights for the ordinary and extraordinary rays.

2. Discrete Data Arrays.

f_1, f_2, f_3,... f_k,... (FC), (FCX) Scaled frequencies.
h'_1, h'_2, h'_3,... h'_k... Scaled virtual heights.
h_1, h_2, h_3,... h_k,... HM Calculated real heights.
FC, FCX are critical frequencies for the O and X rays respectively.
k is the index of the current 'origin' (f_k,h_k) to which the next step of the real height calculation is referenced. KR is used in place of k within POLAN.
h''n (where n > k) is the 'reduced virtual height', equal to h'_n minus the group retardation due to those parts of the profile below the current origin (f_k,h_k).

FV, HT are the data arrays used in POLAN.
Virtual-height data are initially moved up to start at FV(30), HT(30).
Real-height data starts at FV(1), HT(1) and, as calculations progress, extends to overwrite the used virtual-heights.
FA, HA is the origin for the current real-height polynomial.
KR is the index of the current real-height origin, so that FA = FV(KR) and HA = HT(KR).
KV is the corresponding index into the virtual-height data, so that (normally)
FV(KV) = FA, and HT(KV) is the reduced virtual height at the frequency FA.

F_i, H_i, H'_i are discrete points within the range of the current real-height polynomial.
i is a relative index, beginning at the current origin where FA = F_o, HA = H_o.
Thus the polynomial calculation uses frequencies F_i = f_{k+i} for i = 1 to MV.
These correspond to frequencies FV(KR+1) to FV(KR+MV) in the given data array FV.
H_i are the calculated real heights at the frequencies F_i.
H'_i are the reduced virtual heights, equal to the scaled virtual heights h'_k+i less the group retardation in that section of the profile with plasma frequencies FN < F_o.

3. Profile Calculations.

The fitted real height expression is:

\[ h - HA = \sum_{j=1}^{MT} q_j (FN - FA)^j \]

giving real height h as a function of plasma frequency FN.

FA, HA define the origin of the current polynomial, i.e. FA = f_k = FV(KR) and HA = h_k = HT(KR).
q_j or q(j) are the polynomial coefficients for the current real height step.
AMODE is an input parameter specifying one of ten standard types of analysis, corresponding to different values of NT, NV, NR and NH (Section 5.2).

The number of frequencies used:

NV is the number of O-ray virtual-height data points (above FA) to which the polynomial is to be fitted.
NF is the number of O-ray points actually used; normally equal to NV or to the number of O-ray points available before a layer peak.
NX is the number of X-ray data points used (in start and valley calculations). This is commonly equal to the number available in the range FA to FM + 0.1 MHz; points corresponding to FN > FM + 0.1 MHz are deleted.
MV = NX + NF is the total number of virtual heights fitted.
FM = FV(MF) is the highest O-ray frequency used in the current step.
MF = KR + MV is the index corresponding to FM in the data arrays FV, HT.
MX = KR + NX is the index of the highest X ray used.

The number of terms used:

NT is the initial number of terms to be used in the polynomial real height expression.
MT is the number of polynomial terms actually used within POLAN. This is normally equal to NT + (NX+1)/2, with a maximum value of MV + NR.
JM is the total number of real-height terms calculated, normally equal to MT. An additional term q(JM) [with JM = MT+1] is included at a valley, or with an X-ray start calculation, to provide a calculated shift or offset h - HA = q(JM) in the height of the origin FA.
NR is the number of known real heights above FA to be included in the polynomial fit (Section 5.2).
If NR is negative, fitting is to 1 real height below FA and to |NR|-1 heights above FA.
NH is the number of new real heights to be calculated. This is equal to the number of points the origin is advanced for the next step. NH = 1 for Modes 1 to 6, except just before a peak when NH = NF so that real heights are calculated at all fitted (O-ray) frequencies.

4. Start, Peak and Valley Calculations.

f_s, h_s is the starting point for the profile calculation, with f_s <= fmin and h_s <= h'min.
f_s is normally 0.5 MHz, for an O-ray calculation.

START is an input parameter specifying, normally, a model starting height (h_s). Alternatively START may specify the value of f_s for a fixed starting height of 90, 110, 130, 150 or 170 km (Section 6.3). START = 0 gives an extrapolated value of h_s, while START = -1. sets f_s = fmin and h_s = h'min.

FC is (i) a scaled O-ray critical frequency,
or (ii) the final calculated critical frequency of a layer peak.
FCX is a scaled X-ray critical frequency (Section 5.4).
SH is the calculated scale height of a (Chapman-layer) peak.
HMAX is the calculated peak height.
TCONT is the total electron content of the ionosphere up to the layer peak (including contributions from any lower layers).
HVAL is the virtual height corresponding to a critical frequency, and must be less than 30. If the given value h'(FC) is zero, HVAL is set equal to the parameter VALLEY in the call to POLAN.
VWIDTH is the overall width of the valley in km, equal to the height range over which the plasma frequency is less than the value FC for the underlying peak.
VDEPTH is the depth of a valley in MHz.
SHA is a model scale height for the neutral atmosphere, given by SHA = h/4 - 20 km (Section 7.2).
The 'standard valley' has a width of 2.SHA = HMAX/2 - 40 km, where HMAX is the height of the underlying peak.
VPEAK is the ratio (scale height above a peak)/(calculated scale height SH below the peak).
VPEAK is currently set equal to 1.4, at the beginning of STAVAL, corresponding to a 40% increase in scale height above the peak.
PARHT is the height range for the initial parabolic section of the valley, extending from the layer peak to the valley bottom, with a scale height of 1.4 SH.
VBASE specifies the extent of the flat valley bottom, as a fraction of the distance (VWIDTH-PARHT) above the parabolic section. VBASE is currently set equal to 0.6. Above this flat section FN increases linearly from FV to FC, in a distance 0.4(VWIDTH-PARHT).
1. INTRODUCTION

The sweep-frequency ionosonde is a basic tool for ionospheric research. It produces records which can, in theory, be analysed to give the variation of electron density with height up to the peak of the ionosphere. Such electron-density profiles provide most of the information required for studies of the ionosphere and its effect on radio communications. Only a minute fraction of the recorded ionograms are analysed in this way, however, because of the effort required and the uncertain accuracy. To improve this situation we must make better use of the computing power now available, to reduce the need for manual selection of data and for careful appraisal of the results.

An ideal procedure for routine ionogram analysis should give consistently good results without operator intervention. This requires some built-in "intelligence" and adaptability. With high quality data we want the highest attainable accuracy. With normal data the procedure should have criteria for judging the acceptability of each individual point or profile parameter. It should be able to test, impose and remove physical constraints, and to smooth, de-weight, or reject bad data. Where a section of the profile cannot be calculated directly (such as the underlying, peak or valley regions) the procedure should use a defined physically-based model. Thus it should automatically do the "best" thing, in a consistent fashion, with widely varying types of data; if a normal best is not possible it should explain why and do the next-best.

The POLynomial ANalysis program POLAN is an attempt to meet some of these requirements. It provides an accurate and flexible procedure with adjustable resolution and the ability to mix physically desirable conditions with observed data in a weighted least-squares solution. The analysis can adapt readily to changes in the density and quality of data points, and respond in different ways to different situations. For routine work POLAN may be used as a "black box" with only the virtual height data, the magnetic dip angle and the gyrofrequency as required inputs. Optimised default procedures are then used in the analysis. If the input data is not self-consistent, and implies some physically unacceptable feature in the profile, this is noted and corrected. All results are obtained in a fully automatic, one-pass analysis.

POLAN is designed to reproduce current techniques (using linear laminations, parabolic laminations, single polynomials or fourth-order overlapping polynomials) by selection of a single parameter. It also provides a wide range of high order procedures, which are preferable for most work. When extraordinary ray data are not available, clearly defined and physically reasonable models are used for the start and valley regions. This allows direct comparison of results obtained under different conditions. When extraordinary ray data are available these are combined with the ordinary data in optimised procedures to resolve the starting and valley ambiguities. The physical models are included in the least-squares solutions for these regions, so that ill-defined data will give reasonable results (based primarily on the models). Peak parameters are determined by a least squares Chapman-layer fit to avoid the systematic scale height error inherent in a parabolic-peak approximation. Observed ordinary and extraordinary ray critical frequencies may be included in the peak calculation, to obtain best estimates of the critical frequency $F_C$, the probable error in $F_C$, the peak height and the scale height at the peak. With this careful combination of extraordinary ray data and physical constraints, POLAN is well suited to studies of the ionospheric scale height, the size of the valley between the E, F1 and F2 layers, and of ionisation below the night F layer.

A simplified version of POLAN, called SPOLAN, is described in appendix H. This reduces the extraordinary-ray calculations to a single-point starting correction. The layer peaks are parabolic, and some other refinements are omitted to give a much shorter and more understandable program. POLAN and SPOLAN are written as subroutines, so that a user may retain his own input and output data formats. The calling sequence, and the returned parameters, are the same for both programs.

Many new procedures are used in POLAN, to deal with problem areas in the $N(h)$ calculation. These procedures are described in sufficient detail to give an understanding of the theory behind them, and the practical application. The main aims of this report are, however:

- to offer some guidance in the selection of an appropriate method of ionogram analysis;
- to give an understanding of the general principles and approach used in POLAN;
- to provide the information required for effective use of POLAN; and
- to provide detailed documentation of the programs POLAN and SPOLAN so that they may be implemented with a minimum of frustration.

Section 2 below outlines the different procedures currently available for the analysis of ionograms, the relation between them, and development of the least-squares polynomial approach. POLAN is not always the best choice. When a simplified representation of the ionosphere is adequate, or when data can be used at a fixed series of frequencies, a simpler procedure may be more efficient as discussed in Section 3. A mathematical outline of POLAN is given in Section 4, and a general discussion of the procedures involved is in Section 5. Sections 6 to 9 discuss the start and valley
procedures employed with ordinary and with ordinary-plus-extraordinary ray data. In these regions a single defined solution is generally not possible, so physically desirable features are combined with the data in a least-squares solution. Sections 4 to 9, and Appendices A to C, summarise much unpublished work which provides the basis for the techniques used in POLAN. The practical use of POLAN is described in Section 10, while Section 11 describes a typical system for scaling, correction and analysis of ionosonde data.

Documentation of POLAN and the associated subprograms is given in Appendices D to F; these provide logic flow tables, variable descriptions and computer listings. Appendix G gives standard test data and the resulting output, so that correct operation of the main features of POLAN can be verified. The data also illustrate some of the refinements available in POLAN for obtaining maximum information and accuracy in different situations. All programs and test data are available from World Data Center A.

For a given set of virtual-height data, real-height analysis using POLAN takes roughly twice as long as a simple lamination analysis. For a given overall accuracy, however, POLAN requires only about half as many data points. Thus there is little final difference in computing time, and there can be a worthwhile saving in the time required for scaling the ionograms. No problems have been found in running POLAN on a minicomputer. About 40kB of memory are required with a PDP-11. The 24-bit accuracy of such machines is sufficient for all modes of analysis, because of the stable procedure used to solve the simultaneous equations. Comparison of results from a PDP-11 and from a larger computer with 40-bit accuracy shows very few instances in which the calculated real heights differ by more than 0.001 km.

In normal operation results are obtained using a polynomial representation of the real-height profile, fitted to several points each side of the section being calculated. This provides an accurate interpolation between scaled frequencies, which is necessary for an accurate analysis. Virtual height data define primarily the real-height gradients at the scaled frequencies. Real heights are therefore defined most accurately between the scaled frequencies (Titheridge, 1979). Thus when an accurate analysis is used to obtain real heights at the scaled frequencies, it is dealing directly with the most difficult points. Tests have shown that direct second difference interpolation is then sufficient to reproduce the profile between scaled frequencies with little or no increase in the mean error. Results obtained by POLAN are therefore normally stored as arrays giving the scaled frequencies and corresponding real heights. Some extrapolated points are added above the layer peaks, for simpler calculation of mean profiles and to give smooth plots with second or third order parametric interpolation (which is necessary to cope with non-monotonic profiles). The frontispiece shows some examples obtained with fully automatic processing and plotting of digital ionosonde data.

For some purposes a mathematical representation of the calculated profiles is convenient. This has recently been provided for in POLAN, as outlined in section 2.4 and appendix G.3. The basic architecture of POLAN is flexible and expandable. Further development depends on increased experience in defining physical constraints, on formulating judgement criteria for difficult conditions and specifying appropriate courses of action. Users of POLAN can help in this development by informing the author of difficult data types, how these might be identified, and ways in which they might best be treated. Users are also urged to register with the author so that they will receive any further information on new developments or suggested program changes.
2. IONOGRAM ANALYSIS PROCEDURES

2.1 Lamination Methods

(a) First order.

The virtual height \( h' \) and the real height \( h_r \), for a radio wave incident vertically on the ionosphere, are connected by the relation

\[
h'(f) = \int \mu' dh.
\]

(1)

The group refractive index \( \mu' \) is a complicated function of the wave frequency \( f \), the plasma frequency \( F_N \), the magnetic gyrofrequency \( F_B \) and the magnetic dip angle \( I \). There is therefore no analytic solution of (1). For accurate calculations the integral must be determined numerically using some model for the variation of plasma frequency \( F_N \) with height \( h \). Once this is done the virtual heights \( h_i' \), at any required series of frequencies \( f_i \), can be expressed in terms of the model parameters. If the virtual heights \( h_i' \) are measured, the set of equations can be inverted to obtain the parameters defining the variation of \( F_N \) with height.

The normal procedure is to use the virtual heights \( h_i' \) measured at a series of frequencies \( f_i \) (where \( i = 1 \) to \( n \)) to determine the real heights of reflection \( h_i \) at those frequencies. In the "linear lamination" method the plasma frequency \( F_N \) (or the electron density, proportional to \( F_N^2 \)) is assumed to increase linearly with height between successive observed frequencies. The model ionosphere is then defined by \( n \) parameters which are determined from the \( n \) measured virtual heights by inverting the matrix of equations relating \( h_i' \) and \( h_i \) (Budden 1955), or by using a step-by-step solution (Thomas 1959). The resulting profile is of limited accuracy, unless \( n \) is very large, with gradient discontinuities at the measured frequencies. In regions where the gradient \( dh/dF_N \) is increasing with height (as near the peak of a layer) the calculated profile is too high. The corresponding virtual-height curve agrees with observations at the measured frequencies, but is too high elsewhere.

(b) Second order.

The simplest method for improving the profile accuracy is to calculate real heights \( h_i \) at frequencies between the virtual-height frequencies. Since linear laminations define the gradient, and hence the virtual height, most accurately near the centre of the laminations, this "linear offset" analysis gives an order of magnitude improvement in the relation between real and virtual heights (Titheridge, 1979). The resulting accuracy is equivalent to that obtained by other second order techniques, while the stability of the analysis is appreciably better. Calculated points correspond to a second order analysis so that intermediate heights must be determined by second order interpolation rather than by use of the linear laminations.

The commonest second order procedure at present represents the real-height profile by a series of parabolic laminations. Successive laminations are matched at the end points, corresponding to the observed frequencies, so that both the real height and the gradient are continuous (Paul 1960, 1967; Paul and Wright 1963; Doupnik and Schmerling, 1965). The profile is then defined, as before, by \( n \) parameters which can be determined from the \( n \) measured virtual heights. Like the linear offset method, this analysis gives results which are about 10 times more accurate than those obtained from the linear lamination analysis. The results are least accurate in regions where the gradient is not varying linearly with height, as near the peak of the layers and at any points of inflection (corresponding to cusps on the virtual-height records).

2.2 Single-Polynomial Methods

It is not practicable to reduce errors further by using higher order expressions for the profile between calculated points, if these expressions define independent laminations which are matched only at the ends. Such a procedure becomes increasingly unstable as the order of the expressions increases; even the parabolic lamination analysis is appreciably less stable than the linear offset method. The problem is essentially one of interpolating between specified points \( (h_i, f_i) \) to determine the integral in (1). Such interpolation is most accurately done by using expressions fitted over a number of points on either side of the interval being considered; this gives considerably greater stability than using independent high-order expressions for each interval, fitted only by matching derivatives at the end points.
The ultimate model for single-layer calculations would seem to be one which maintained the continuity of all derivatives at all points. This implies the use of a single mathematical expression to represent the entire profile. The mathematics implicit in this idea are tractable provided that the adopted expression is differentiable. For any set of scaling frequencies a matrix of coefficients can then be obtained giving the real height at each frequency directly in terms of the observed virtual heights. With the entire real-height profile represented by a single analytic expression, coefficients can be determined which give any required parameters of the real-height profile directly. Thus the peak height, the scale height at the peak and the sub-peak electron content can be obtained directly from the measured virtual heights without the need for calculating any other aspects of the profile.

Increased accuracy is obtained by requiring a parabolic peak at the observed critical frequency. For a single-layer ionogram the results are then quite acceptable with only a small number of data points; a 5-point analysis gives values of peak height which are an order of magnitude more accurate than those obtained using Kelso-Schmerling coefficients (Titheridge, 1966). Tables are available for the analysis of ionograms taken anywhere in the world, using 5 or 6 measured virtual heights (Titheridge, 1969; Piggott and Rawer, 1972). With this number of points the results are completely stable, and by choosing either the 5- or 6-point frequency grid large cusps on the ionogram can be avoided. Coefficients are also given for the analysis of night-time ionograms, using 5 ordinary and 1 extraordinary ray measurement; the resulting profile is then approximately corrected for the effects of group retardation in the night-time E region.

2.3 Overlapping Polynomials

Accurate calculations require accurate interpolation between observed frequencies. The Kelso method applies Gaussian interpolation to the virtual heights. In other methods interpolation is done in the real-height domain, since the real-height curve is considerably smoother. As in most problems of fitting discrete data points, accuracy is initially improved by an increase in the order of the interpolating polynomial. A limit is reached, however, beyond which the results become unstable. There is therefore an optimum number of terms \( n \) for the polynomial. When the number of data points to be fitted is greater than \( n \), a different interpolating polynomial is used for each interval. For maximum accuracy, the polynomial should be fitted to data on BOTH sides of the interval considered.

In many problems interpolation polynomials with 4 to 6 terms are about optimum. For ionogram analysis, oscillatory tendencies begin with 7 terms at large magnetic dip angles, and with 6 terms near the equator (Titheridge, 1975a). Five terms were therefore adopted for the polynomial used to represent the real-height curve between successive data points. This gives the fourth-order overlapping polynomial analysis LA POL (Titheridge, 1967b, 1974a). In this method the real height between two given frequencies is represented by a fourth order polynomial, which is fitted to two points on either side of the interval considered. Gradients are also matched at the ends of each interval. This gives five constraints which are used to determine the five parameters for each polynomial.

Procedures can be constructed in which the polynomial is defined by real heights at a number of points on either side of the interval considered, and by specified derivatives at some of these points. Virtual heights \( h_i \) are then expressed in terms of the polynomial coefficients, using (1), and the resulting equations inverted to obtain the real-height parameters. The computational complexity of this process can, however, become prohibitive. With fourth-order polynomials, and virtual heights measured at 60 frequencies, the 300 parameters defining the real-height profile would be obtained by solving a set of 300 simultaneous equations. This cannot be done efficiently or accurately. Matching of derivatives at frequencies above the central interval of each polynomial is therefore replaced by matching of virtual heights. There seems little if any disadvantage in this approach, which enables a simple step-by-step analysis. The virtual-height data contains all that is known about the profile; virtual-height matching therefore implies a simultaneous matching of all available information, whether this relates to true heights or to derivatives.

Successive polynomials fit the same real height at the joining points, since the real height calculated from one section is used as a constraint in the next. If two adjacent polynomials are also required to give the same virtual height at the joining point, the gradients must match closely at that point (since the virtual height at any frequency depends most closely on the gradient at that frequency). With 5-term polynomials we get 5 simultaneous equations at each step. Shifting the origin to the last calculated real height gives well-conditioned 4 x 4 matrices, and errors in the matrix inversion of less than 1 part in \( 10^6 \) using standard 24 bit precision (Titheridge, 1967b).

In tests using a number of different real-height profiles with various frequency intervals and dip angles, the 5-term overlapping-polynomial analysis gives results which are 100 to 1000 times more accurate than using parabolic laminations (Titheridge, 1975a, 1978). The stability of the analysis,
measured by the amplitude of spurious real-height oscillations following a cusp or discontinuity in the virtual-height curve, is 20% to 50% better than for the parabolic analysis (Titheridge, 1982).

The ability to interpolate a point of inflection between successive frequencies makes the careful selection of reading frequencies unnecessary, and a fixed grid can be used for scaling ionograms. This considerably speeds up the scaling and, since coefficients need be calculated only once (for a given station) calculation of the real-height curve takes typically less than one second. Both fixed and variable frequency modes, with an optional one-point extraordinary-ray starting correction and insertion of a model E-F valley, are provided in the programme LAPOL (Titheridge, 1974a).

2.4 Least-Squares Solutions

Further improvement in real-height calculations requires the incorporation of more data points, which are smoothed to remove the jitter caused by random errors. This smoothing can be done manually, or by some algorithm which is applied prior to the N(h) analysis. A preferable procedure, however, is to obtain the real-height profile as a direct least-squares fit to all of the data points. In a polynomial analysis this means that the number of terms in the polynomial \( n \) is less than the number of fitted data points \( m \). There is no limit on the value of \( m \), while the detail required in the profile is set independently by the value of \( n \). As a result of the least-squares procedure, fitted polynomials are completely stable for values of \( n \) up to at least 20 (when a stable mathematical procedure is used to solve the equations).

For single-layer ionograms, all available data can be fitted in a single step. This is particularly valuable for the analysis of topside ionograms where full use can be made of fragmentary ordinary and extraordinary ray traces. These are incorporated into a single analysis which interpolates smoothly across any unobserved regions, and can give any desired number of points on the real-height profile (Titheridge and Lobb, 1977).

With daytime bottomside ionograms, single-polynomial solutions are obtained first for the E region and then for the F region. By incorporating a model valley into the analytic expression for the upper section, and using all available ordinary and extraordinary ray data for the F region, the best-fitting valley width and F region real-height profile are obtained directly (Lobb and Titheridge, 1977a). Generalisation of this approach to allow overlapping polynomials, fitting an arbitrary number of data points, yields the program POLAN described in Section 4.

In its normal form POLAN produces results giving the real heights \( h \) at the plasma frequencies \( f_N \) corresponding to the scaled data frequencies. Some studies require values for the vertical gradient of plasma density in the ionosphere. Virtual-height data define this gradient accurately at the plasma frequencies \( f_N \) corresponding to the scaled data frequencies. Real heights at these frequencies are calculated in section C5 of POLAN by the statement

\[
HT(KRM) = HA + SUMVAL(MQ, Q, DELTF, 1)
\]

where \( DELTF = f_N - FA \). Preceding this statement with a line

\[
GRAD(KRM) = SUMVAL(MQ, Q, DELTF, 2)
\]

will store correct values for the gradients \( dh/df_N \) at the same frequencies. The array GRAD must be added to the POLAN parameters, with the same dimension as the present frequency, height arrays FV and HT.

A recent modification to POLAN can provide a consistent mathematical representation for each calculated profile. Real-height polynomials of any required order (up to 15 for the final layer, or 10 for lower layers) are obtained for each layer, as outlined in appendix G.3. Results are exactly the same as if Chebyshev polynomials (of the same order) had been used, since both provide the unique solution with the best least-squares fit to the virtual-height data. A separate polynomial is required for the E layer, and also for the F1 layer if it has a distinct critical frequency, since polynomials in \( f_N \) cannot include a valley. 5 or 6 terms are generally adequate for the E or F1 layers, with about 8 terms for the F2 layer. The constant term in each expression is suitably adjusted to allow for any valley, as described in section G.3.
3. SELECTION OF AN N(h) METHOD

Choice of an appropriate method of N(h) analysis depends on the amount and accuracy of the desired profile information. This in turn is dictated by the application. Three main groups, requiring different levels of accuracy, may be distinguished and are discussed in 3.1 to 3.3 below. A fourth area is the automated analysis of digital ionograms. This requires additional program checks for poor or nonsensical data, to prevent premature program termination, and methods for dealing correctly with Sporadic E reflections. A modified subroutine DPOLAN has been developed for this purpose and is available (with little documentation) from the author.

3.1 Rapid Estimation of Layer Constants

Some studies require only first-order estimates of the height and thickness of the ionospheric layers. These would include the examination of large-scale variations, or the correction of other measurements (such as total electron content and transionospheric U.H.F. propagation) for the approximate effects of the sub-peak ionosphere. The rapid single-polynomial analysis was designed specifically for such purposes. Only 5 or 6 virtual heights need be scaled, at frequencies defined by a grid onto which the ionogram is projected. The measurements may be processed on a programmable calculator using published coefficients (Titheridge, 1969), or with a simple computer program and coefficients calculated (or obtained from the author) for a particular site. Results give directly the peak height of the layer, the scale height at the peak, the sub-peak electron content, and the approximate real heights at the scaled frequencies.

The method and the scaling frequencies are designed for maximum accuracy, with minimum effort, near the peak of a layer. In this region results approach those from a normal monotonic lamination analysis. Real heights are not accurate near the peak of an underlying layer, particularly when there is an appreciable valley between the two layers. This is an inevitable result of the smoothed representation used at lower frequencies. Thus when realistic profile shapes are required across underlying peaks or cusp regions the single-polynomial analysis should not be used.

The accuracy of the single-polynomial analysis has been investigated by McNamara (1976), by comparing the results with true profiles including (for the daytime F layer) an underlying E-F valley. Results should more appropriately be compared with the equivalent monotonic profile, since this is what the method is attempting to emulate. The larger errors obtained near the valley region are then removed. Correctly used the single-polynomial analysis gives good estimates of the main characteristics of the ionospheric layers, and saves a great deal of time when more detailed profile information is not required.

3.2 Calculation of Monotonic Profiles

Many studies require some knowledge of the variation of electron density with height below the peaks of the layers, but are satisfied with a monotonic representation. This category has, perforce, included most studies to date, since few current procedures will consistently allow for low-density or valley ionisation. Neglect of the low-density (underlying) ionisation is most serious at night, when only the F layer is observed. Results are then typically 5 to 50 km too high at the lowest frequencies, and 1 to 10 km too high at the layer peak. Neglect of the valley between the daytime E and F layers gives calculated heights which are commonly 10 to 50 km too low at frequencies above foE, and about 5 km too low near the peak of the F layer. The errors due to these unobserved regions vary smoothly with frequency; at frequencies more than 1 MHz above fmin (night) or foE (day) the real-height errors vary approximately as $1/f^2$.

Reasonably accurate monotonic profiles require virtual-height data at frequency intervals of about 0.1 to 0.5 MHz. The smaller intervals are used near foE, and possibly near foF1 and foF2. The total number of points scaled is commonly between 15 (at night) and 50 (for day-time ionograms with several cusps) when a polynomial analysis is used. The linear lamination method needs considerably smaller frequency intervals to avoid systematic errors in regions of large profile curvature. Several alternative procedures are available which reduce this curvature error by a factor of 20 to 100, with little increase in computing time or complexity. A good example is the parabolic lamination analysis described by Paul (1977). The linear offset procedure (Titheridge, 1979) gives similar results with a very compact program.

Use of the overlapping-polynomial program LAPOL (Section 2.3) can reduce costs appreciably. The ability to change profile curvature between scaled frequencies gives greater accuracy, and makes the choice of scaling frequencies less important. Virtual heights may therefore be scaled at fixed frequencies, and analysed with precalculated coefficients (Titheridge, 1967b, 1974a). This gives an extremely fast analysis (one second per ionogram, on a minicomputer) at the cost of a somewhat larger
program than the preceding methods. Provision is made for a starting correction, using a single extraordinary ray point or the mean models of Section 6, and for inclusion of a model valley. LAPOL therefore provides a useful alternative to POLAN where speed, simple (manual) scaling and cost are important. Digital ionosondes providing large amounts of data at a fixed series of closely-spaced frequencies can also be analysed rapidly using the pre-calculated coefficients of LAPOL, in cases when the full incorporation of extraordinary ray data is not feasible or necessary.

When reduction of fluctuating errors is of prime importance an overlapping-cubic analysis (Titheridge, 1982) should be used. This is completely free from the spurious oscillations which can occur with parabolic or, to a lesser extent, with polynomial methods, as discussed in Appendix A.2. The overall accuracy is appreciably less than that obtained with the higher order modes in POLAN, but is somewhat better than with parabolic laminations. The cubic analysis can be programmed directly, or is available (with full start and valley treatments) as Mode 3 of POLAN.

3.3 Full Calculations

For many studies the calculated electron-density profile must be as accurate and reliable as possible, given the vagaries of ionosonde data. A least-squares analysis is required, with adjustable range for the overlapping real-height sections, adjustable weights for the data points, and a least-squares calculation of all layer peak parameters. The largest errors are then due to the unobserved regions, at frequencies below fmin and in the valley between two layers.

Use of a starting correction to allow for low-density underlying ionisation is particularly important at night. The problem cannot be avoided by obtaining virtual-height data from the night-time E layer, since the E and F layers are generally separated by a wide valley. Extrapolation of the ordinary ray trace is also unreliable: increased underlying ionisation will often increase an extrapolated starting height, when it should be decreased. A true starting correction requires extraordinary-ray measurements at frequencies well below the critical frequency of the lowest observed layer, so that retardation relates primarily to the underlying ionisation. If suitable data are not available some mean model for the underlying ionisation must be used. This has been discussed recently by McNamara (1978a, 1979), and corrected models are given in Sections 6.3 and 6.4 of this report.

Allowance must be made for the presence of a valley between the daytime E and F layers. Using combined ordinary and extraordinary ray data, profile heights can be calculated which are correct to within a few km at the base of the F layer, and to within 1 km near the peak. In most cases only one meaningful valley parameter can be determined; this corresponds most closely to the overall width, or the total electron content (Lobb and Titheridge, 1977a). The analysis procedure should therefore assume some fixed, reasonably realistic model for the shape of the electron-density variation in the valley region. Combined ordinary and extraordinary ray data are then used to determine, primarily, the overall width of the valley. Useful calculations require (i) that the value of foE is known to within about 1%; (ii) that F-layer traces are available for both rays at frequencies sufficiently close to foE that the E layer group retardation is apparent; and (iii) that there are no large horizontal variations in the ionosphere. When the necessary data are not available, the analysis should include some standard valley correction. Physical criteria can be included in the solution to give an improved estimate of the most likely correction, as discussed in Section 7.3.

POLAN was designed to fulfil the above requirements, and does so to a greater extent than other current procedures. Results are obtained by a one-pass analysis under all conditions, and physical criteria are introduced to control variations in the observed regions. It therefore seems the preferred method for accurate studies.
4. A GENERALISED FORMULATION

4.1 Outline

All methods of analysis mentioned above can be considered as polynomial techniques, differing only in the order of the polynomial and in the applied constraints. Thus the linear lamination approach determines a first-order polynomial fitted to the last calculated real height and the next virtual height. The parabolic lamination analysis uses a second-order polynomial fitting the real height and gradient at the last calculated point, and the virtual height at the next. The fourth-order overlapping polynomial analysis fits the two previous real heights, the virtual height at the last calculated point, and the virtual heights at the next two points.

To encompass these and any further desirable extensions to higher orders, analysis procedures have been formulated in a completely general form. This is described in Section 4.2, where the equations are given which define a polynomial of order NT, fitting NR real heights and NV virtual heights. By specifying different values for NT, NR and NV we obtain polynomial methods of any desired order, including the linear and parabolic lamination methods. If NR = 0, and NV is the total number of virtual-height observations, we have a single polynomial analysis. In all cases use of NT = NR+NV gives profiles which exactly fit the virtual-height data.

Setting NT less than NR+NV gives a least-squares solution. This opens up a range of possible methods which incorporate some smoothing of the experimental data. Use of a least-squares procedure removes the difficulty which occurs when a large number of virtual heights is used, that if the frequency interval is made too small then errors in the virtual heights give an unrealistic jitter in the calculated real heights (e.g. Becker, 1967). Least-squares modes should thus be particularly valuable for use with digital ionosondes. The ability to obtain a least-squares result over any section of the profile can also be exploited to good effect in coping with the start and valley problems.

When a large number of data points is available, there is no need to use a separate polynomial for each interval between scaled frequencies. Expressions fitted over any desired frequency range can be used to calculate a further NH real heights. Current lamination procedures use NH = 1. With digital ionosondes or automatic scaling procedures, larger values may be employed with advantage. Thus if the amount of available data is increased by a factor of 3, polynomials may be fitted over the same frequency range as before (which will now involve 3 times as many data points) with each successive step in the analysis calculating 3 new real heights.

Observed virtual heights are affected by the amount of underlying ionisation, with plasma frequencies less than the lowest observed frequency fmin, and by the size of any valleys between the ionospheric layers. To within normal experimental accuracy the effect of these regions can be defined by two suitably chosen parameters (Section 8). So for starting or valley calculations, two additional terms are added to the real-height expression; these represent basically the total amount of "unseen" ionisation, and the ionisation gradient near the top of the unobserved region. When only ordinary ray data are available, these terms are obtained from some mean model of the underlying or valley region. With suitable extraordinary ray measurements, at NX frequencies say, we get NV+NX equations from which to determine NT+2 real-height coefficients (where NT is the number of terms in the polynomial real-height expression). For reliable results the ordinary and extraordinary ray data should correspond to similar plasma frequencies at reflection, and a least-squares analysis is used with NT+2 < NV+NX.

4.2 The Basic Equations

At each step in the analysis, the variation of plasma frequency FN with height H is given by:

\[ H - HA = \sum_{j=1}^{NT} q_j \cdot (FN - FA)_j \]  

(2)

The point FA,HA is the origin for the real-height polynomial. It is assumed that the real-height profile is known up to the height HA; and that the virtual heights at frequencies greater than FA have been corrected for the group delay of the rays in the underlying sections, to give the reduced virtual heights h". The value of NT (the number of terms in the polynomial real-height expression) defines the order of the analysis.
If we have progressed \( k \) points through the real-height profile, then \( FA = f_k \) and \( HA = h_k \). Equation (2) is used to calculate the real and virtual heights at the frequencies \( f(k+i) \) for \( i = 1 \) to \( NV \), where \( NV \) is the number of virtual heights fitted in each step.

Writing \( F_i = f(k+i) \) we have

\[
h''(k+i) - HA = \int_{FA}^{FR} \mu'(F_i, FN) \cdot dh/dFN \cdot dFN
\]

\[
= \sum_{j=1}^{NT} q_j \cdot B(i,j)
\]

where

\[
B(i,j) = \int_{FA}^{FR} \mu'(F_i, FN) \cdot (FN - FA)^{j-1} \cdot dFN.
\]

\( FR \) is the plasma frequency at reflection, equal to \( F_i \) for the ordinary ray or to \( (F_i(F_i - FB))^{0.5} \) for the extraordinary ray.

Real height coefficients \( C(i,j) \) are also calculated such that

\[
h(k+i) - HA = \sum_{j=1}^{NT} q_j \cdot C(i,j)
\]

where

\[
C(i,j) = (F_i - FA)^j.
\]

These coefficients are determined for frequencies \( F_i \) from \( f(k+1) \) to \( f(k+NV) \).

Setting \( B(i+NV,j) = C(i,j) \) we have the set of equations

\[
\begin{align*}
B(1,1)q_1 + B(1,2)q_2 + \ldots + B(1,NV)q_{NT} &= h''(k+1) - HA \\
B(2,1)q_1 + B(2,2)q_2 + \ldots &= h''(k+2) - HA \\
&\vdots \\
B(NV,1)q_1 + B(NV,2)q_2 + \ldots &= h''(k+NV) - HA \\
B(NV+1,1)q_1 + B(NV+1,2)q_2 + \ldots &= h(k+1) - HA \\
&\vdots \\
B(2NV,1)q_1 + B(2NV,2)q_2 + \ldots &= h(k+NV) - HA
\end{align*}
\]

These may be written

\[
[B] \cdot [Q] = \begin{bmatrix} H'' \\ H \end{bmatrix}
\]

where \( [B] \) is a \( 2NV \times NT \) matrix, \( [Q] \) is a \( NT \times 1 \) column vector, and \( H'', H \) are \( NV \times 1 \) column vectors. Numerical calculation of the coefficients \( B(i,j) \) using the subroutine COEFIC is described in Appendix D.1.

In the real-height vector, only the first \( NR \) values are known (where \( NR \) depends on the mode of analysis). Thus right-hand sides are known for the first \( NV+NR \) rows in (8), corresponding to the first \( NV+NR \) equations in the set (7). These rows are solved to obtain the parameters \( q_j \) which define the real-height polynomial (2). Using these parameters the next \( NH \) rows are evaluated to give \( NH \) real heights; \( NH \) is generally equal to 1 but can be greater for the first polynomial (Section 6) and for higher order modes (Section 5.3). The index \( k \) is incremented by the number of new real heights calculated, giving new values for \( FA \) and \( HA \), and the process repeated until the entire real-height curve has been calculated.

A linear lamination analysis is obtained by setting \( NT = NV = 1 \) and \( NR = 0 \). Thus at each step a first order polynomial is determined, extending from the last known real height and fitted to the next virtual height. The parabolic lamination procedure is obtained by setting \( NT = 2 \), \( NV = 1 \) and \( NR = -1 \). The -1 is used as an indicator in the program to use a gradient expression

\[
\sum_j (FN - FA)^{j-1} \cdot q_j = GA
\]
after the single virtual-height equation and before the single real-height equation in the set (7). GA is the gradient at FA calculated from the previous polynomial. This departure from the normal scheme is to give exact agreement with the standard parabolic-lamination analysis, which matches gradients rather than virtual heights at the end points.

Higher order methods of analysis are obtained simply by increasing the values of NT, NV and NR. For the standard fourth-order overlapping polynomial analysis (Titheridge, 1967b) we set NT = 4, NV = 3 and NR = 1. This gives a five term polynomial (including the constant), fitted to the last two calculated real heights \( h(k) \) [= HA] and \( h(k+1) \), and to the three virtual heights \( h'(k+1) \), \( h'(k+2) \), and \( h'(k+3) \). The real-height expression for \( h(k+3) \), available in the set (7), is not specifically required. It does, however, give a good estimate of this height so that the correct value of gyrofrequency can be used for the next step in the analysis.

### 4.3 Calculation Procedures

The subroutine COEFIC (Appendix D.1) is called at each step to calculate the coefficients B(i,j) for the simultaneous equations (7). For the real-height conditions (5) the coefficients are simple functions of frequency. The virtual-height equations involve group index integrals (4), which are evaluated using 5- or 12-point Gaussian integration depending on the desired accuracy. At high latitudes both 5 and 12 point integrals are employed, over different sections of the integration range, in a way which reduces errors by a factor of 10 to 100 at dip angles of 78 to 88° (Appendix B.3). At a given frequency the NT polynomial integrals are obtained from the same 5, 12 or 17 calculated values of \( \mu' \). Calculation time therefore depends primarily on the number of virtual heights (NV) fitted at each step, and not on the number of terms in the fitted polynomial.

Solution of the simultaneous equations is carried out by the subroutine SOLVE (Appendix F.4). This gives an exact solution if NT = NV+NR, and a least-squares solution if NT < NV+NR. The calculation uses orthogonal Householder transformations, giving accurate results for values of NT up to at least 15. From the calculated real-height coefficients any required features of the profile (such as the heights or gradients at any required frequencies, and the total electron content) can be obtained.

For least-squares solutions we want the calculated polynomial to agree closely with the NR known real heights, and less accurately with the given virtual heights. This is accomplished by multiplying the first NV rows in (7) by a weighting factor WVIRT. Tests show that WVIRT should be less than 0.1 for good matching of successive polynomials under all conditions. The value WVIRT = 0.05 has therefore been adopted. The relative fitting accuracies of the virtual and real heights depends on the square of this weight, and also on the square of the relative size of the coefficients B(i,j) in the equations (7). Combining these effects gives a relative fitting accuracy of about 0.02. Thus for a typical analysis using real (inaccurate) data a calculated least-squares polynomial will fit the previously determined real heights to within about 0.01 km, and will agree with the virtual-height data to within 0.5 km.

When an exact polynomial fit is being used (NT = NV+NR) or when real-height equations are not included in the set being solved (as in the start or valley calculations) the value of WVIRT has no effect on the results. When extraordinary ray data are being used to overcome the starting or valley ambiguity additional weights are used to give slightly less importance to the extraordinary ray measurements, and greater importance to the last ordinary ray virtual height to ensure a smooth continuation with following ordinary ray measurements.
5. THE PROGRAM POLAN

5.1 General Characteristics

The Fortran program POLAN has been constructed using a small number of generalised subroutines. This allows many different modes of analysis, and changes in mode can be made at any time. Calculations normally proceed in a stepwise fashion to obtain successive, overlapping sections of the real-height profile. At any given stage calculations are referred to a known real-height point FA, HA called the origin. The next real-height section passes through the origin, and is defined by the polynomial expression

\[ h - HA = \sum_{j=1}^{NT} q_j (FN - FA)^j \]  

Different modes of analysis are then specified in terms of the following parameters:

- \( NT \) = the number of coefficients \( q_j \) in the polynomial real-height expression;
- \( NV \) = the number of virtual heights used in each step;
- \( NR \) = the number of known real heights used in each step;
- \( NH \) = the number of new real heights to calculate from the polynomial expression.

Calculations begin from some defined starting point \((f_S, h_S)\), where \( f_S \) is normally less than the lowest scaled frequency \( f_1 \). For the first step of the analysis (the calculation of the first polynomial segment) no further real heights are known, so that \( NR = 0 \). The analysis can use any number of virtual heights \((NV)\) to calculate any required number of real heights \((NH, <= NV)\). Thus the fourth-order analysis obtains three real heights \((h_1\) to \(h_3\)) by fitting a four-term polynomial from the point \((f_S, h_S)\) to the first four virtual heights. For the next step the origin is advanced two points, to \((f_2, h_2)\). One further real height is then known and successive polynomials are determined using \( NT = 4 \), \( NV = 3 \) and \( NR = 1 \).

When the origin for the real-height expansion is at the \( k \)th point in the array of frequencies \((FV)\) and heights \((HR)\), we have \( FA = FV(k) \) and \( HA = HR(k) \). The coefficients in the real height expansion are then determined by the real heights \( HR(k+1) \) to \( HR(k+NR) \), and the virtual heights \( HV(k+1) \) to \( HV(k+NV) \). This provides \( NR+NV \) constraints to determine the \( NT \) coefficients \( q \). If \( NT = NR+NV \) we have an exact solution, and if \( NT < NR+NV \) we get a least-squares solution. The number of terms \( NT \) which can be used for a real-height expansion is limited to 15 in POLAN, by the dimensions of the arrays B and Q. The total number of constraints \((NR+NV)\) is similarly limited to 30.

The real-height expansion is not continued across a critical frequency in any mode. A critical frequency or cusp is indicated by a virtual height of less than 30 (as described in Section 5.4). When this is encountered the value of \( NV \) is reduced to equal the number of available virtual height measurements before the critical frequency. For Mode 10 (a single-polynomial analysis) \( NV \) is normally reduced from the maximum specified value (30) to the number of data points available before the next critical frequency. Thus with a multi-layer ionogram, each layer is represented by a separate analytical expression.

An important question in real-height calculations is the presence of instabilities in the results, as shown by the presence of spurious oscillations. Only Mode 1 (linear laminations) and Mode 3 (overlapping cubics) are completely free from this effect. All modes which maintain some continuity of gradient between successive sections give some spurious oscillations when used to analyse irregular virtual-height data. This question has been investigated by considering the form of real height curves fitted to discontinuous data; by analysing virtual-height data corresponding to idealized delta, step and ramp type discontinuities; and by the analysis of typical cusped ionograms (Titheridge, 1982). In all cases the amplitude of spurious oscillations is largest for Mode 2 (the parabolic lamination analysis) in which successive segments are matched only at the end points. Compared with Mode 2, oscillations are 20% to 60% less for Mode 4, and 50% to 90% less for the higher order least-squares modes.
5.2 The Standard Modes of Analysis

Ten standard modes of analysis are provided in POLAN. These use values of NT, NV, NR and NH defined in the data arrays IT, IV, IR and IH. Other modes can be used, if desired, by simply changing the constants in these arrays. Each array contains 20 values. The first ten are used for the first real-height expansion, at the beginning of the analysis or after a peak, when no further real heights are known and NR = 0. At the end of this first step, after NH real heights have been calculated and the index k advanced by this amount, k is stepped back by a number given in the data array IR. Thereafter the second ten values in the arrays IT, IV, IR and IH define the values of NT, NV, NR and NH to be used in continuing the analysis. The values of these constants for each mode are listed in Table 1, with a brief outline of the resulting analysis.

Real-height sections determined by the different standard modes of analysis are illustrated in Fig. 1. Vertical lines show the origin of the expansion at the frequency FA. Solid dots represent known real heights, open circles are calculated real heights, and crosses represent fitted virtual heights. Mode 1 corresponds to the linear lamination analysis, in which a linear section is calculated from the last known real height to fit the next virtual height. Thus we calculate a polynomial with NT = 1 terms, using NR = 0 further real heights and NV = 1 further virtual heights; the result is used to determine NH = 1 further real heights. The new section of the real-height profile which is determined in this step is shown as a heavy line in Fig. 1.

A negative value of NR is used in some modes. This signals that one of the real heights to be fitted is at the frequency just below FA. This is the case for Mode 3 and Modes 5 to 9 in Fig. 1. An exception is made of Mode 2; to give exact agreement with the normal parabolic lamination analysis, NR = -1 here is taken to mean that the gradient dh/dFN is fitted at the frequency FA. Mode 2 then calculates a polynomial with NT = 2 terms fitting the initial gradient (as determined from the previous lamination) and the next virtual height.

Mode 4 corresponds to the five-term overlapping polynomial analysis described previously (Titheridge, 1967b). In the present context this reduces to NT = 4 terms to be determined in the expansion (2), since the constant is automatically set to make the polynomial pass through the point (FA,HA). The four terms are determined from the next one real-height and three virtual heights. The polynomial is, therefore, fitted to data covering three successive frequency intervals as shown in Fig. 1. The result is used to calculate a further section of the real-height curve over the centre interval shown by a heavy line. This is somewhat similar to a representation by spline functions, with the polynomial function in each interval matching adjacent functions in both value and gradient at the end points and in value at one further point each side. In the present implementation, however, gradient matching is replaced by virtual height matching (which it closely resembles) and the additional point fitted at the high frequency end is a virtual height and not a real height. These changes make possible the stepwise solution which can cope with any number of data points.

For each of Modes 1 to 4 we have NT = NV + |NR|. Thus the number of terms determined is equal to the number of constraints, and the resulting profile will match the given virtual-height data exactly (apart from the effect of limited numerical accuracy in the calculations). For each of Modes 5 to 10, NT < NV + |NR| and we get a least-squares solution. The calculated polynomials pass exactly through the origin (the known point FA,HA), but will not in general give an exact fit to the virtual-height data. A good fit to the previously calculated real heights is imposed by giving greater weight to the real-height equations (as discussed in Section 4.3).

Mode 5 gives the procedure currently recommended for most purposes. This uses a polynomial fitted over two frequency intervals on either side of the real-height section to be determined. It gives appreciably greater accuracy than Mode 4, and slightly worse in general than Mode 6.

Modes 7 to 9 are similar to Mode 6, except that each calculated real-height segment covers two or three data points. Thus the polynomials are obtained from a least-squares fit to a larger number of points, and are used to calculate two or three real heights at each step. This gives a faster analysis with smoother results. These procedures should be suitable for analysing data from digital ionosondes, when large numbers of data points are available. With irregular data it could be desirable to reduce the number of terms in the polynomial; thus an analysis of the type shown for Mode 9, but with NT reduced to about 5, will use three times the normal amount of data and produce only the normal amount of resolution in the results.

Mode 10 determines a single analytic real-height expression for each layer. It is defined in POLAN by NT = 73, NV = 30, NR = 0 and NH = 30. This permits up to 30 virtual-height data points to be included in the analysis. The limit is set by the dimensions of the array B(32,17) in POLAN, and can be changed to enable any number NMAX of virtual heights to be used by altering the first dimension to NMAX+2. Values of NT > 20 are interpreted in POLAN as giving a percentage of (NV+2); thus Mode 10 as currently defined uses NT = 0.73(NV+2) terms in the analytic real height expression. This always gives a least-squares solution, including all the ordinary and extraordinary ray data for a given layer.
Table 1. The standard modes of analysis incorporated in POLAN and in SPOLAN, as illustrated in Fig. 1. The polynomials used have NT terms, plus the constant term which is automatically included by taking the origin for the polynomial at a known real-height point FA,HA. These terms are determined by a (least-squares) fit to the virtual-height data at the next NV frequencies above FA, and to known real heights at NR frequencies above FA. If NR is negative, the fit is to one real height below FA, and |NR|-1 real heights above FA. NH gives the number of new real heights calculated at each step.

| MODE | NT | NV | NR | NH | DESCRIPTION |
|------|----|----|----|----|-------------|
| 1    | 1  | 1  | 0  | 1  | The normal linear lamination analysis. |
| 2    | 2  | 1  | -1 | 1  | Parabolic laminations, fitting the last real height and gradient. |
| 3    | 3  | 2  | -1 | 1  | Overlapping cubics, fitting no previous gradients or virtual heights and so completely free of oscillations. |
| 4    | 4  | 3  | 1  | 1  | The five-term overlapping-polynomial analysis described in Radio Science 1967 p.1169, in which 5 terms (including the constant) fit 3 virtual plus 2 real points (including HA). |
| 5    | 5  | 4  | -2 | 1  | A six-term fit to 3 real and 4 virtual-height data points; the first least-squares analysis and the normal default procedure. |
| 6    | 6  | 5  | -3 | 1  | A 7-term least-squares fit to 4 real and 5 virtual heights; slightly more accurate (and slower) than Mode 5 in general. |
| 7    | 6  | 7  | -3 | 2  | 7 terms fitted to 4 real and 7 virtual height points, advancing two points at each step. |
| 8    | 6  | 8  | -4 | 2  | 7 terms fitted to 5 real and 8 virtual heights, advancing 2 points at each step; for smoothing and analysis of dense data. |
| 9    | 7  | 13 | -6 | 3  | 8 terms fitted to 7 real and 13 virtual heights, advancing 3 points at each step; for smoothing and analysis of high-density data. |
| 10   | (73)| 30 | -3 | 28 | A single polynomial, with NT = 0.73(NV+2) terms, fitted to all NV heights for each layer. (Current limits are NV < 30, NT < 28). |

Figure 1. The standard modes of analysis in POLAN. Vertical lines show the origin of the polynomial real-height expression, of NT terms, which is calculated to fit NV virtual heights (shown by crosses) and NR known real heights (solid dots). Real heights which are calculated from the polynomial expression are shown as circles.
The time taken by an analysis depends primarily on the number of group refractive index calculations, and hence on the number of virtual-height calculations. Each cross in Fig. 1 represents a frequency at which the virtual-height integral must be evaluated, to advance the analysis one step. The time depends only slightly on the number of terms used in the real-height expansion, since (for a given i) all the terms $B(i,j)$ where $j = 1$ to $NT$ are obtained from the same set of group indices (Appendix D.1). The overall time for each mode is, therefore, roughly proportional to the value of NV, divided by the value of NH (the number of new real heights calculated at each step). This gives the approximate relative times $\frac{NV}{NH}$ listed for each value of MODE in Table 2. Following columns give the measured times for the analysis of an ionogram with 20, 40, 60 or 90 scaled data points, on a Burroughs B6700 computer. The first set of times is obtained by specifying a value of MODE from 1 to 10. This gives five-point integrals (except for Modes 9 and 10) which are generally adequate at low and medium latitudes. As shown at the bottom of Table 2 the mean times for modes 1 to 8 are given (to within a few percent, at $N > 20$) by the expression $T = 60N + 0.8N^2$ msec, where $N$ is the number of virtual-height data points.

For maximum accuracy 12-point integrals are specified, by calling POLAN with the value of MODE increased by 10 (Appendix D.1). Modes 9 and 10 always use 12-point integrals, since they include a large number of data points at each step, so times and results are the same whether Mode 9, 10 or Mode 19, 20 is specified. A zero value for MODE uses the default value MODE = 5 at dip angles up to 60°; this changes automatically to MODE = 15 (for 12-point integrals) at dip angles of 60° or more. Modes 9 to 20 also shift automatically to 17-point integration when required, to maintain accuracy at dip angles up to 90° (Appendix B.3). Using 12-point integrals the mean times in Table 2 are approximately equal to $T = 80N + 0.8N^2$ msec. Thus for a normal mix of 5 and 12-point integrals, changes in the number $N$ of scaled virtual heights causes the time required for a real-height calculation to vary approximately as $N(1+N/90)$.

### 5.3 Curve Fitting Procedures

The accuracy of real-height calculations depends on the accuracy with which we represent the shape of the profile, between the frequencies at which virtual heights are known. All high-order modes of polynomial analysis are designed to fit one or more virtual heights beyond the point at which the next real height is to be calculated. Thus the shape of a calculated profile segment is determined using data from both sides of the segment, rather than from only the known (lower) part of the profile. This corresponds to the use of central rather than one-sided interpolation, for estimating gradient changes in the calculated section, and is the main reason for the increased accuracy and flexibility of overlapping-polynomial methods.

The different modes in POLAN correspond to different selections of the points to be fitted at each step of the calculation. A polynomial expression, with NT terms, is fitted to data at a succession of given frequencies $F_i$. The origin of the polynomial is taken at the frequency $F_0$, and the fitted frequencies correspond to values of $i$ from 0 or -1 up to NV. Over approximately the first half of this range, fitting is to previously-calculated real heights. At all values of $i$ from 1 to NV the polynomial is fitted to values of virtual height $H'_j$ (corrected for group retardation due to ionisation at plasma frequencies less than $F_0$). Thus in the first half (approximately) of the range the polynomial is required to have the same real height and the same slope as the previously-calculated sections. In the second half of the range only virtual-height data are known. This does, however, contain all the information which is available about the profile, so by fitting the virtual-height data we are matching all available information.

For modes 1 to 4 the number of polynomial terms which define each real-height section is equal to the number of heights (real and virtual) included in the analysis. The result is therefore an exact fit to the NV virtual heights and NR known real heights. With the higher order modes the number of defining quantities $(NV + |NR|)$ is greater than the number of terms NT used in the real height expansion (9). This gives a least-squares fit, with some smoothing of the virtual-height data. Real-height equations are given a larger weight in the analysis, so that the known real heights are fitted almost exactly.

Virtual-height points at each end of a calculated profile segment (the heavy lines in Fig. 1) should be fitted accurately. Points at higher and lower frequencies are required only to indicate the general trend of the profile, and are given less weight in least-squares modes of analysis. This causes the gradients at the ends of the calculated segment to be defined more closely, at the expense of points further away. Individual data points also enter and pass out of the calculation region more gradually, when the weights are varied, so that spurious fluctuations are minimised.

The effective weights given to the real and virtual-height data points are shown in Table 3, for each of the least-squares modes of analysis. For real-height points the weight is effectively infinite at $F_0$, corresponding to the origin $(FA,HA)$ in (9). The weight is large at known real
Table 2. Calculation times in seconds, for the analysis of ordinary-ray virtual-height data with 20, 40, 60 and 90 scaled points using a Burroughs B6700 computer.

| MODE | NV/NH | Five-point integrals | 12-point (MODE+10) |
|------|-------|----------------------|--------------------|
|      |       | N = 20   40   60   90 | N = 20   40   60   90 |
| 1    | 1     | 0.6  1.5  3.1  6.2 | 0.7  1.8  3.5  6.8 |
| 2    | 1     | 0.7  1.7  3.5  6.6 | 0.8  2.0  3.9  7.3 |
| 3    | 2     | 0.9  2.4  4.5  8.4 | 1.2  3.0  5.4  9.7 |
| 4    | 3     | 1.2  3.2  5.8 10.3 | 1.6  4.0  7.2 12.3 |
| 5    | 4     | 1.6  4.2  7.7 13.3 | 2.2  5.4  9.6 16.0 |
| 6    | 5     | 1.7  4.8  8.5 15.2 | 2.4  6.2 10.6 18.0 |
| 7    | 3.5   | 1.2  3.3  5.8 10.7 | 1.6  4.0  7.0 12.1 |
| 8    | 4     | 1.8  4.7  8.5 15.2 | 2.5  5.7 10.0 17.0 |
| 9    | 4.3   | 3.1  8.1 14.4 24.5 | 3.1  8.1 14.4 24.5 |
| 10   | 1     | 2.1  2.8  4.2  8.4 | 2.1  2.8  4.2  8.4 |

Mean for Modes 1-8: 1.3 3.6 6.5 11.8

cf. \((60+.8N)N/1000 = 1.5 3.7 6.5 11.9\)

\((80+.8N)N/1000 = 1.9 4.5 7.7 13.7\)

Table 3. Fitted real heights \(H\) and reduced virtual heights \(V\) for the least-squares modes of analysis 5 to 10. Values of \(F_n\) refer to the nth frequency in the current step, measured from the origin at \(FA = FO\). Asterisks show additional real heights to be calculated at each step, with dashes indicating the profile segment which must be interpolated accurately. The numbers under each \(H\) and \(V\) indicate the total relative effective weight given to that quantity in the calculation. Weights o are effectively infinite.

Frequency: F-1 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13

**MODE 5**
Real ht: H-1 HO H1 ---*
Weight: 4 o 20
Virt. ht:
weight: V1 V2 V3 V4
1.0 1.5 1.0 0.5

**MODE 6:**
H-1 HO H1 H2 ---*
4 o 20 20
V1 V2 V3 V4 V5
0.5 1.0 1.5 1.0 0.5

**MODE 7:**
H-1 HO H1 H2 ---*-----*
4 o 20 20
V1 V2 V3 V4 V5 V6 V7
0.3 0.7 1.0 1.3 1.0 0.7 0.3

**MODE 8:**
H-1 HO H1 H2 H3 ---*-----*-----*
4 o 20 20 20
V1 V2 V3 V4 V5 V6 V7 V8
0.3 0.7 1.0 1.3 1.3 1.0 0.7 0.3

**MODE 9:**
H-1 HO H1 H2 H3 H4 H5 ---*-----*-----*-----*
4 o 20 20 20 20 20
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.2 1.0 0.8 0.6 0.4 0.2

**MODE 10:**
Virt. height: h0 h'1 h'2 h'3 h'4 h'5 h'6 h'7 h'8 h'9 h'10
weight: o 1 1 1 1 1 1 1 1 1
heights above $F_0$, to ensure a smooth fit to previous segments. Real-height points below the origin have a reduced weight. Virtual-height weights are varied linearly from the ends of the current segment, and within a segment the weight employed is the lower of the values from the two linear variations. Thus for Modes 6 to 9 the weights are larger towards the centre and end of the profile segment to be calculated; this is desirable since a real-height interval is defined most accurately by virtual heights in this region (Titheridge, 1979). The weights are calculated and applied within the subroutine COEFIC, as described in Appendix D.l. Allowance is made for the dependence of the overall effective weight on the square of the mean size of the coefficients, and on the square of the multiplying factor, in determining factors to give the effective weights listed in Table 3.

5.4 The Layer Peak

For each ionospheric layer, real heights are calculated directly only up to some frequency $FM$ which is less than the critical frequency $FC$. Continuation of the profile, up to and across the layer peak, requires some assumption about the shape of the peak section. This is commonly taken to be parabolic. The last few calculated points can then be used to determine the effective scale height $SH$, the peak height $HM$, and (if it has not been scaled) the critical frequency $FC$. This procedure is used in the simplified program SPOLAN (using a fit to calculated gradients, since these are defined most accurately).

The peak-calculation procedure in POLAN uses a somewhat different approach. It was designed specifically to incorporate the following features, for maximum accuracy and reliability.

- (a) Chapman theory (applicable to the E region) and diffusion calculations (for the F layer peak) show that the peaks have basically the shape of an $\alpha$-Chapman layer. For this layer, use of the parabolic approximation gives a consistent error of about -13% in the calculated scale heights (and -2km in $HM$, -0.01 MHz in $FC$). POLAN therefore uses a true Chapman-layer peak.

- (b) Virtual heights just before a peak generally show large group retardation. Thus they define primarily the gradient of the real-height profile. The calculated peak curvature should therefore depend only on the calculated gradients, at the scaled frequencies.

- (c) Peak parameters are obtained by a least-squares calculation using at least five profile points (when the data permit). Higher frequencies are given most weight, since they reflect the peak shape most closely. At the lower frequency end of the fitted range the weights decrease to zero. Results then depend only slightly on points further from the peak, and do not change abruptly with different scaling frequencies.

- (d) Critical frequencies can often be scaled from an ionogram with worthwhile accuracy. Provision is therefore made for the use of scaled ordinary or extraordinary-ray values. The scaled values are not assumed to be correct, but provide additional input to the least-squares calculation.

- (e) An estimate of the accuracy of the peak parameters is required.

- (f) As the amount of data available near the peak decreases, the calculated peak parameters must not become erratic or absurd but should tend smoothly towards some well-defined model.

Implementation of (a) to (f) involves formulation of the peak equations with plasma frequency $FN$ as a function of height $h$ (instead of the usual $h$ as a function of $FN$). This gives well-behaved functions which change slowly across the peak; it simplifies use of the Chapman-layer expression; and it enables critical frequency measurements to be incorporated directly into a least-squares solution. The basic equations involve only the scaled frequencies $F_j$ and the gradients $dh/dFN$ at $F_j$. The least-squares solution gives $\ln(FC)$ and $SH$, and the standard errors in these quantities. The peak height $HM$ is then obtained by fitting the calculated peak shape to the last few calculated heights.

The Chapman peak is expressed (exactly) as a parabolic peak plus a correcting term. The latter is determined by iteration, beginning with a model value $SHA$ for the scale height. Only one iteration is used, so that the results still have some dependence on $SHA$. The correcting term disappears at the peak, and is large at lower frequencies. Thus when good data are available to within about 8% of the critical frequency, the final scale height $SH$ is almost independent of $SHA$. When the highest scaled frequencies are further below $FC$, the calculated $SH$ is increasingly biased towards $SHA$. This fulfils condition (f) above; as the available data get too far from the peak to give a reliable estimate of peak curvature, the assumed curvature (defined by the scale height) tends to the model value.
Any scaled value of the ordinary-ray critical frequency is included in the least-squares solution, weighted so that the calculated FC will be shifted approximately half way to the scaled value. A scaled X-ray critical frequency FCX may also be given following the O-ray value. If the O-ray critical frequency is not scaled it must be replaced by zero (or the value of FCX must be negative), so that POLAN will recognise the next value as an X ray. Critical frequencies are identified by an associated virtual height of zero (or less than 30 km in absolute value). The first peak iteration provides a good estimate of the height, and hence the gyrofrequency, to use in converting FCX to the corresponding plasma frequency.

The model scale height currently used in POLAN is given by SHA = HN/4 - 20 km, where HN is the last calculated real height. This gives reasonable mean values, and corresponds to the valley model of Section 7. If the calculated gradient at HN is not appreciably greater than the value at the centre of the fitted frequency range, the curvature is considered insufficient for accurate calculations and POLAN sets SH = SHA. This condition is signaled by printing SH negative in the output listing. FC is still obtained by fitting a Chapman peak to the profile gradients, but the use of a fixed scale height prevents unreasonable extrapolations.

A further check is made after the first least-squares solution. If the calculated peak height exceeds HN + SH, or the gradient is not increasing rapidly at HN, the solution is not iterated. This condition occurs when the highest scaled frequency is less than 0.84FC. In this case calculation of SH (and FC) based entirely on the profile data is less reliable, so the final result is left with a heavier weight towards the model scale height SHA. With these precautions useful peak parameters are obtained under most conditions, and misleading results are avoided.

5.5 The Simplified Program SPOLAN

All procedures discussed in this report are incorporated in the computer program POLAN, described in Appendices D to F. A simpler program SPOLAN is also available, and is described in Appendix H. SPOLAN was developed to provide: (i) a shorter and faster alternative to POLAN, when extraordinary-ray calculations are not required; and (ii) a clearer demonstration of the basic logic used in POLAN.

By removing all extraordinary-ray calculations from SPOLAN the size and complexity of the program are considerably reduced. A parabolic peak-fitting procedure is used to obtain the scale height and the critical frequency from the gradients at the last two calculated points. This replaces the more accurate iterative Chapman peak calculation used by POLAN. SPOLAN also assumes a simple model valley between layers. Accuracy will be reduced at high latitudes since SPOLAN does not include the special procedure developed to counter integration errors at dip angles above 70° (Appendix B.3). A fixed order of integration (6-point Gaussian) is used instead of the 5- or 12-point options in POLAN; thus use of "MODE + 10" to increase the integration accuracy has no effect with SPOLAN. Finally SPOLAN uses a fixed value of gyrofrequency FB at all heights. This does not appreciably affect results for the ordinary ray provided that a suitable value of FB (corresponding to a height of about 150 to 200 km) is used.

Apart from the above points SPOLAN incorporates all the features of POLAN which are applicable to ordinary-ray analysis. From a user's viewpoint the programs POLAN and SPOLAN are identical when only ordinary-ray data are used. A SPOLAN user may therefore readily change to POLAN when increased accuracy at high dip angles, more accurate layer peaks, or more accurate start and valley calculations (using extraordinary rays) are desired.
6. STARTING PROCEDURES FOR THE ORDINARY RAY

6.1 Outline

Ionograms do not provide measurements at frequencies below some minimum value $f_1$. Thus there is an "unobserved" section of the electron density profile, for plasma frequencies FN from 0 to $f_1$. When extraordinary-ray measurements are available at low frequencies, the amount of ionisation in the unobserved region can be estimated and the remainder of the profile correctly calculated. This is described in Section 8. When only ordinary-ray data are available there is an infinite number of profiles, with different variations in the unobserved region, which can exactly reproduce the observed virtual heights (e.g. curves d and e in Fig. 5, Section 7). Physical arguments and previous experience must therefore be used to obtain a reasonable starting assumption. Different possible methods have been reviewed previously (Titheridge, 1975a). When suitable extraordinary ray measurements are not available, the best procedure for obtaining a consistent series of results seems to be the use of a starting point $(h_S, f_S)$ based on a synoptic model of the underlying region.

Four distinct starting procedures are available in POLAN for use in the absence of extraordinary-ray data. These are fully defined by the single input parameter START, as described in Section 6.2. The methods are:

- (a) The normal default, using a start based on extrapolation of the observed virtual heights.
- (b) The preferred method, using previous experience to define an appropriate mean starting height at a fixed plasma frequency of 0.5 MHz.
- (c) An alternative model start, in which the plasma frequency is chosen at a fixed height.
- (d) A direct start, primarily for test purposes; this assumes that there is no ionisation with FN less than the lowest scaled frequency $f_1$.

When $f_1$ is large the first polynomial calculated in starts (a) to (c) covers a large frequency range in which there are no observations. Some unphysical variations could then be obtained. To ensure a smooth, monotonic start giving approximately the same results with all modes of analysis and with changes in $f_1$, two constraints are added to define the profile shape in the unobserved region. These constraints are:

(i) An additional virtual height point is included at the frequency $f_0 = (f_S + f_1)/2$. The corresponding virtual height $h'_0$ is obtained by extrapolating the initial virtual heights back to this frequency, as shown in Fig. 2.

(ii) The initial gradient $dh/dFN$, at the point $(f_S, h_S)$, is given a value that would produce a virtual height of about $h'_0$ at frequencies just above $h_S$. This is obtained from the relation (Titheridge, 1985b).

$$\frac{dh}{df_N} = (1 + 1.8/f_1).(h'_0 - h_S).$$

![Figure 2](image)

Figure 2. The start procedure using ordinary-ray data only. $h_S$ is obtained by linear extrapolation of the (maximum) slope indicated by the first three virtual heights. The circled virtual-height point at $f_0$ is added to ensure a smooth, physically acceptable profile in the "unseen" region from $f_S$ to $f_1$.
6.2 The Methods Used in POLAN

(a) START = 0.0

If START is zero the analysis begins from an initial real-height point \((f_S, h_S)\), where \(h_S\) is determined by extrapolating the initial section of the ordinary-ray trace linearly down to zero frequency. This is the default procedure, illustrated in Fig. 2. The starting frequency \(f_S\) is normally 0.5 MHz, but is kept less than 0.6\(f_1\) to ensure a sufficient range for the starting correction. Extrapolation is based on the first three ordinary-ray points, and the absolute value of \((h'_3 - h'_1)/(f_3 - f_1)\) is used so that curling up of the trace at low frequencies (which is produced by an underlying layer with FN close to \(f_1\)) also gives a downwards correction to the starting point. If \(h'\min\) is the lowest of the first 3 virtual heights, the starting height is effectively

\[ h_S = h'\min - f_{\min}|dh'/df|. \]

This gives a low value of \(h_S\), showing the presence of appreciable underlying ionisation, if the O-ray trace is turning downwards (due to reducing real heights) or upwards (due to increasing group retardation) as we approach \(f_{\min}\). To prevent unreasonable extrapolations, upper and lower limits are placed on the value of \(h_S\) using the expression

\[ h'\min/4 + 55 < h_S < h'\min/2 + 60 \text{ km} \]

where \(h'\min\) is the lowest observed virtual height. These limits agree roughly with the night-time models of Section 6.4. Careful use of a limited extrapolation of this type generally gives a worthwhile improvement, although results are less consistent than with the model procedure (b).

(b) START > 44.0

When START is greater than 44 it gives a model starting height to be used. Thus the analysis begins from a real-height point \((f_S, h_S)\) where \(h_S = \text{START}\). \(f_S\) is nominally 0.5 MHz, but is kept below 0.6\(f_1\), as in (a). The value of START will depend on some mean diurnal model, and varies in general from about 90 km near noon to 150 km after midnight. The selection of a suitable value of START, for different times, seasons and latitudes, is discussed in Section 6.3(b). The given value of START is modified within POLAN, if required, to be compatible with the observed virtual heights. This is done by making \(h_S\) less than 0.6\(h'\min + 0.4h'_S\) where \(h'\min\) is the minimum observed virtual height and \(h'_S\) is the extrapolated value obtained in (a) above.

(c) 0.0 < START < 44.0

Positive values of START less than 44.0 are used to define an initial plasma frequency \(f_S\) from which to start the analysis, at a fixed height \(h_S\) which is usually 90 km. This allows use of the (fixed-height, variable-FN) synoptic starting model of McNamara (1979). In POLAN the fixed height can also be set at 110, 130, 150 or 170 km, to allow greater accuracy with night ionograms where a starting height of 90 km (with a very low density) is too far below the base of the observed F layer to be useful or reliable. The different heights and densities are specified by the parameter START as follows:

For: \(0 < \text{START} < 10.\),
Use: \(f_S = \text{START MHz}, h_S = 90 \text{ km}. \)

For: \(10 < \text{START} < 20.\),
\(f_S = \text{START - 10 MHz}, h_S = 110 \text{ km}. \)

For: \(20 < \text{START} < 30.\),
\(f_S = \text{START - 20 MHz}, h_S = 130 \text{ km}. \)

For: \(30 < \text{START} < 40.\),
\(f_S = \text{START - 30 MHz}, h_S = 150 \text{ km}. \)

For: \(40 < \text{START} < 44.\),
\(f_S = \text{START - 40 MHz}, h_S = 170 \text{ km}. \)

(d) START < 0.

If START = -1.0, underlying ionisation is ignored and calculations begin directly from the first scaled point \((f_1, h_1)\). This gives the ionosphere a flat base at the height \(h_1 = h'\min\), and variations due to underlying ionisation are excluded from the analysis. START = -1.0 can also be used to obtain any starting point not covered by options (a) to (c) above, by entering the desired starting point as the first data point \((f_1, h_1)\). Calculations differ from use of the standard options in that the additional point (i) in Section 6.1 is not added, and the constraint (ii) is not applied to the initial gradient.

Values of START less than -1.0 are used to specify a polynomial start for the analysis of combined ordinary and extraordinary ray data, as described in Section 8.6.1.
6.3 Day-time Starting Models

(a) The data base

Ionograms normally contain no reflections from heights below about 100 km, and seldom show extraordinary-ray traces for the lower E region. Corrections for group retardation occurring in the daytime D region must therefore be based on other information. 700 experimental electron-density profiles of the D and lower E regions have been compiled into a computer accessible library by McNamara (1978a). Profiles corresponding to undisturbed conditions were used in a multiple regression analysis to obtain expressions giving the mean variations (at a fixed height or density) with solar zenith angle, season, latitude and solar cycle (McNamara, 1979). From these expressions mean results have been derived for use in the model starts (b) and (c) of Section 6.2, as described below. Note that the data base is heavily weighted to the North American region, so the models will be less representative elsewhere.

(b) The Variable Starting-Height Model

The recommended procedure for the incorporation of model starting data is use of a variable starting height $h_S$ at a fixed starting frequency $f_S$. From the D-region data base McNamara (1979) obtained the height at a fixed plasma frequency of 0.5 MHz as

$$h_{0.5} = 91.5 - (5.6 \cos X \pm 1.4 \cos S + 0.027R)$$

(10)

with a residual standard deviation of 3.8 km. The + and - signs apply to the Northern and Southern Hemispheres respectively. $X$ is the solar zenith angle, and $R$ is the 12-month smoothed sunspot number. Seasonal changes depend on the parameter $S = 30M - 15$ degrees, where $M$ is the month. For a station at latitude $\theta$, and a local time of $T$ hours from noon, the zenith angle is given by

$$\cos X = \sin D \cdot \sin \theta + \cos D \cdot \cos \theta \cdot \cos A$$

where the hour angle $A = 15.T$ degrees and the solar declination $D = 23.44 \cos S$ degrees.

At $R = 50$ this expression gives the heights shown in Table 4. At each latitude the change from summer to equinox to winter has been linearised so that it may be expressed in the form $h_S = h_{eq} + \Delta h$, where $h_{eq} + \Delta h$, $h_{eq}$ and $h_{eq} - \Delta h$ apply to midsummer, equinox and midwinter respectively. This makes interpolation more convenient, and introduces an additional error of not more than 0.3 km at any point. Note that the sign of the seasonal variation changes at high latitudes near noon.

Table 4. Starting heights $h_S$ for use at a fixed plasma frequency $f_S$ of 0.5 MHz, in the analysis of daytime ionograms. Main tabulated values apply to the equinoxes. These are followed by the corrections required at midsummer and at midwinter, using the upper and lower signs respectively.

| Latitude | (a) Hours from Local Noon | (b) Hours after Sunrise or before Sunset |
|----------|--------------------------|----------------------------------------|
|          | 0                        | 2                                      | 3                                      | 4                                      | 5                                      | hr |
| ±10°     | 84.8±1.0                 | 85.6±1.0                              | 86.4±1.0                              | 87.5±1.0                              | 88.8±1.0                              | km |
| ±30°     | 85.6 ± .2                | 86.2 ± .2                             | 86.9 ± .2                             | 87.8 ± .3                             | 89.0 ± .3                             |    |
| ±50°     | 86.7 ± .3                | 87.2 ± .3                             | 87.8 ± .3                             | 88.5 ± .3                             | 89.3 ± .2                             |    |
| ±70°     | 88.3 ± .7                | 88.6 ± .7                             | 88.9 ± .7                             | 89.3 ± .7                             | 89.7 ± .6                             |    |

| Latitude | 2.0                      | 1.5                                    | 1.0                                    | 0.5                                    | 0.0                                    | hr |
|----------|--------------------------|----------------------------------------|----------------------------------------|----------------------------------------|----------------------------------------|    |
| ±10°     | 87.5±1.3                 | 88.1±1.4                              | 88.8±1.4                              | 89.5±1.4                              | 90.2±1.4                              | km |
| ±30°     | 87.8±1.2                 | 88.4±1.3                              | 89.0±1.4                              | 89.6±1.4                              | 90.2±1.4                              |    |
| ±50°     | 88.5±1.1                 | 89.0±1.2                              | 89.4±1.3                              | 89.8±1.4                              | 90.2±1.4                              |    |
| ±70°     | 89.4±0.9                 | 89.6±1.0                              | 89.8±1.2                              | 90.0±1.3                              | 90.2±1.4                              |    |
Table 4 is used only when a normal E layer trace is visible. At local times more than two hours from sunrise or sunset, $h_s$ is obtained from the upper section (a) of the table. Within two hours of sunrise or sunset the lower section (b) should be used. The two sections agree closely near the equinoxes but the seasonal variation increases near sunrise/sunset, becoming +/-1.4 km (at all latitudes) at $\chi = 90^\circ$. The final solar-cycle term of equation (10) is not included in Table 4. It adds a further change of +1.4 km at solar minimum, and -1.4 km at solar maximum ($R = 100$).

Use of Table 4 to estimate the required starting height $h_s$, to the nearest km, is straightforward. The rise in $h_s$ towards sunrise or sunset follows the natural movement of the E layer. Thus the height range over which the correction is applied is rather more constant than for procedure (c). The frequency range is also more constant, extending from 0.5 MHz to the value of $f_{min}$ on the ionogram; this is typically about 1.5 MHz (the top of the broadcast band) throughout the day. For most work it is therefore recommended that the parameter START in POLAN be set equal to a height obtained from Table 4, for the analysis of daytime ionograms when the E layer trace is visible. This automatically gives the fixed $f_s$ (of 0.5 MHz), variable $h_s$ starting procedure of Section 6.1(b).

(c) The Variable Starting-Frequency Model

From the same D-region data base McNamara (1979) used undisturbed densities at a height of 90 km to derive an expression giving the mean variation of log(electron-density) with solar zenith angle and with season. There were no significant overall changes with latitude or with solar cycle. Expressing these results in terms of the peak plasma frequency $F_N$, and making some simplifications (which introduce errors of less than 5%) gives the result

$$ (F_N)_{90\text{km}} = 0.43 \left(1 + 2.5 \cos^2 \chi \right) \left(1 + 0.2 \cos S \right) $$

where $S = 30M - 15$ degrees and $M$ is the month. For the Southern Hemisphere the last factor becomes $(1 - 0.2 \cos S)$. Results from (11) for summer, equinox and winter conditions are plotted in Fig. 3.

The height of 90 km is always slightly below the traces obtained from a normal E layer. This makes it a good overall choice for a daytime starting height (e.g. Wright et al., 1975). For $N(h)$ calculations during the day, when a normal E layer is observed, the parameter START in POLAN may be set equal to the estimated value of $F_N$ at a height of 90 km. This automatically gives the fixed $h_s$ (90 km), variable $F_N$ starting procedure of Section 6.2(c). In the absence of other information, $F_N$ is obtained from (11) or from the curves in Fig. 3. The latter are calculated from (11) and represent the current best estimate of the mean value of $(F_N)_{90}$ under quiet conditions. An indication of the changes which occur in various types of disturbance is given by McNamara (1978c). At night, the value of 90 km is much too low for reliable calculations with a fixed-height starting model. The starting height can therefore be altered to 110, 130, 150 or 170 km if desired, by appropriate choice of the parameter START, as described in Section 6.2(c).

Figure 3. Mean starting frequencies ($F_N$) for the analysis of daytime ionograms, using a fixed starting height of 90 km.
6.4 A Night-time Starting Model

During the night the base of the F layer is generally at a height near 200 km. A starting point near 90 km then leaves a large region with no observations. Calculated profiles will be ill-defined over this region, giving variable and unreliable results. Observations of the night E layer provide no help, since these are still at a comparatively low height with a wide valley between the night E and the low F layers.

In the absence of extraordinary-ray data, some mean model should therefore be assumed to provide a starting point in the height range 130 to 180 km. A procedure described previously (Titheridge, 1967b, 1975a) used a constant starting frequency $f_S$ of 0.5 MHz. The corresponding height $h_S$ was taken as 90 km during the day (agreeing with the mean daytime results of Section 6.2(b)). $h_S$ becomes about 120 km after sunset, when the E layer trace is not visible. It increases to about 150 km near midnight, and remains at this value until shortly before sunrise. Results give a reasonably continuous and consistent sequence of profiles, with an approximately correct allowance for mean changes in the night E region. The recommended values of $h_S$ were, however, based on comparisons with a fairly small number of profiles obtained using good ordinary and extraordinary-ray traces; primarily the mean night-time sequence for Slough described in Titheridge (1959c).

McNamara (1979) has considered this problem using the collection of about 100 experimental night-time profiles, for heights from about 80 to 280 km, given by Knight (1972). He gives starting points $(h_S, f_S)$ which lie on the mean electron density profiles, with $h_S$ equal to or greater than 150 km. Thus they make no allowance for ionisation below $h_S$. Correcting for this effect gives the circles plotted in Fig. 4. The zenith angle scale, at the top of the figure, corresponds exactly to the lower hourly scale at a latitude of 48° (at the equinoxes), and the scales are approximately correct for all low and middle latitudes. The drop of 60 km in $h_S$ between $\chi = 100°$ and $\chi = 90°$ is similar to the drop of 50 km in the real height of the F region profile at FN = 1.5 MHz. The rise of 150 km in the value of $h_S$ in the two hours after sunset also roughly parallels the rise of 30 km in the real height at 1.5 MHz. With a fixed starting frequency $f_S$ of 0.5 MHz the extent of the underlying "unseen" section of the calculated profiles is therefore roughly constant, in both height and frequency range, throughout the night. Figure 4 is also in reasonable agreement with the previously recommended starting points at 0.5 MHz, of 90 km during the day (when the E layer is visible), 120 km after sunset or before sunrise, and 150 km near midnight.

It is therefore recommended that starting heights from Fig. 4 be used for the analysis of night-time ionograms in the absence of extraordinary-ray data. In the program POLAN this is achieved by setting the parameter START equal to the height read from Fig. 4, at the appropriate hour $T$. When the day-time E layer trace can be scaled, START is equal to about 90 km as shown by the straight lines for summer and winter in Fig. 4. These lines correspond to the heights of Table 4(b). The abrupt decrease in $h_S$ when the E layer trace disappears at sunset counteracts the effect of the sudden increase in the lowest measured virtual height, and so helps to maintain reasonable continuity in the calculated heights of the F layer.

![Figure 4](image)

Figure 4. The starting height $h_S$ for use at a fixed frequency $f_S$ of 0.5 MHz, at night (heavy line) and when the normal E layer is visible near sunrise and sunset (thin lines labelled for summer and winter).
7. VALLEY PROCEDURES FOR THE ORDINARY RAY

7.1 Outline

Where the virtual-height trace on an ionogram is discontinuous we have the possibility of a non-monotonic $N(h)$ profile. This problem arises primarily in the analysis of daytime ionograms, when a valley or decrease in electron density commonly occurs between the E and F layers. Uncertainty as to how this "unseen" region should best be treated, in routine ionogram analysis, has caused most workers to ignore the problem. Thus most of the profiles which have been calculated to date give the monotonic real height which satisfies the ordinary-ray virtual-height data. This procedure has the merit of being straightforward and well-defined. It has the fault of producing an answer which is an extreme case - the lower limit to the range of possible profiles - and so is always too low. Using POLAN, the monotonic profile can be obtained by setting the parameter VALLEY equal to 10.0 (as in Section 7.4).

There is not and cannot be any purely mathematical procedure for determining the "correct" profile from the range of possible solutions, using the ordinary ray only. Thus curves a, b, and c in Fig. 5 give real heights for the lower F region which vary over a range of 100 km. All three curves agree exactly with the given virtual-height curve and so are equally valid mathematical solutions. The full range of possible real-height curves extends from the monotonic (no valley) solution to the largest valley which is consistent with a positive value of $\frac{dN}{dh}$ at the base of the upper layer. Selection between different solutions must be based purely on physical grounds, having regard to the reasonableness or physical likeliness of different types of profile. To allow meaningful comparison of results, the selection should follow some consistent procedure.

When suitable extraordinary-ray data are available, some information can be obtained about the valley region. At best two parameters can be estimated, relating basically to the overall width of the valley and to the relative amount of high density ionisation (Section 9.1 and Appendix B.2). In most cases only one parameter can be reliably determined. We then use some model for the shape of the valley, to give suitable proportions of high and low density ionisation, and determine the single valley-width parameter VWIDTH.

Ordinary-ray calculations use a similar approach. A standard valley shape is defined as in Section 7.2. This has physically reasonable values for the decrease of FN above the peak of the lower layer, for the mean depth of the valley, and for the gradient $\frac{dN}{dh}$ at the top of the valley region. The valley problem then reduces to the choice of a suitable value for VWIDTH. This can be specified directly, for an individual profile or for a whole run, by appropriate choice of the parameter VALLEY in POLAN. Upper and lower limit profiles can also be obtained as described in Section 7.4. For most work, however, it seems preferable to obtain VWIDTH by including physically-desirable conditions as part of the least-squares analysis. This seems the best general approach, and perhaps the only feasible or useful one, for selecting between the wide range of possible valley profiles in the absence of extraordinary-ray data.

The construction of POLAN makes direct incorporation of constraints on the real-height profile no more difficult than the use of standard virtual-height data. Any number of constraints can be used, as necessary conditions or as desirable attributes of the profile. Necessary conditions specify limits on the allowable range for one or more of the real-height parameters $q$; these conditions are described in Section 7.3.3 and are imposed after the normal solution of the virtual-height equations. Desirable attributes are included directly, with some appropriate weight, in the set of equations for the least-squares solution.

Section 7.3.2 describes the physical constraints used in POLAN for valley calculations. The first constraint requires the valley width to be about twice the neutral scale height; this condition is given a weight such that it strongly influences the calculation of VWIDTH, but does not predetermine it. Further equations, with smaller weights, require a smooth transition from the valley region to the following profile. All equations are combined in the normal (default) valley procedure to determine VWIDTH. Different valleys, and upper or lower limit profiles, can also be obtained using a non-zero value of the input parameter VALLEY as described in Section 7.4.

7.2 The Standard Valley

The vertical scale of an electron density profile is governed primarily by the local scale height SHA of the neutral atmosphere. Thus for both E and F layers the peak thickness is proportional to the scale height of neutral gases which govern the height variations of production, loss and diffusion (e.g. Titheridge, 1973). The vertical separation of the E and F layers, and the width of the valley between them, will also (in the idealised case) be proportional to the mean scale height of the neutral gas.
Figure 5. Some of the infinite number of possible real-height profiles (solid lines) corresponding to the same virtual-height curve (broken lines).

POLAN uses a model atmospheric scale height SHA related to true height h by

\[ \text{SHA} = \frac{h}{4} - 20 \text{ km}. \]  

(12)

The valley width is taken as

\[ \text{VWIDTH} = 2\text{SHA} = \frac{\text{HMAX}}{2} - 40 \text{ km} \]

(13)

where HMAX is the height of the underlying peak. These relations give reasonable values for the scale height and for the valley width, in both the E and F1 regions, as shown by Table 5.

Table 5. Parameters for the standard valley defined by equations (12) to (14).

| Height of underlying peak: HMAX | 100 | 110 | 120 | 160 | 180 | 200 | km. |
|--------------------------------|-----|-----|-----|-----|-----|-----|-----|
| Model scale height: SHA        | 5   | 7.5 | 10  | 20  | 25  | 30  | km. |
| Standard Valley: VWIDTH         | 10  | 15  | 20  | 40  | 50  | 60  | km. |
| VDEPTH                         | 0.03| 0.05| 0.08| 0.21| 0.29| 0.36| MHz |

The shape of the assumed valley is shown in Fig. 6. The peak section calculated for the lower layer is extrapolated upwards to the point where the plasma frequency drops to FC - VDEPTH. The scale height SH used in this extrapolation is 40% greater than the value calculated for the lower part of the peak. This makes allowance for the normal increase in SH with height, and gives a shape which closely matches the peaks obtained with overlapping Chapman layers. From the top of the parabolic section the electron density profile consists of two linear segments reaching a plasma frequency FC at a height HMAX + VWIDTH. Occasionally insertion of this model valley will result in negative values of the gradient dh/DFN just above the valley; the valley width is then automatically reduced, as described in Section 7.3.3.
Rocket and backscatter profiles indicate nearly full daytime valleys under most conditions. The default depth for the standard E/F region valley is therefore taken as $VDEPTH = 0.05$ MHz, at VWIDTH = 20 km. The mean depth will vary with the valley width, as in Fig. 7. When VWIDTH becomes small, the approximately parabolic peak of the underlying layer forces VDEPTH to decrease rapidly, approximately as VWIDTH$^2$. For larger valleys VDEPTH will change more slowly with the overall valley width, to agree with rocket and backscatter results (summarised in Lobb and Titheridge, 1977a) which indicate a maximum depth of about 0.2foE. Widest valleys should still be deepest on the average, however, or the irregular variations shown by most direct measurements in the valley region would lead to the common appearance of intermediate traces on the ionograms. Valley depth is very much less important than valley width in obtaining correct heights for the F region (Section 9), so the model needs only approximate values for VDEPTH.

At small values of valley width, VDEPTH is made proportional to VWIDTH$^2$. This keeps an approximately constant shape for the valley, with the initial parabolic section (a range PARHT in Fig. 6) a constant fraction of the total width. For larger valleys the depth is made proportional to width. This is accomplished using

$$VDEPTH = 0.008 \frac{VWIDTH^2}{(20 + VWIDTH)}$$  \hspace{1cm} (14)

where VWIDTH is obtained from (13). Valley constants calculated from (13) and (14) are shown in Table 5. The constants in (14) can be changed if required, as described in Section 9.4. To ensure that valley depths never become impossibly large, the actual depth used in the calculations is $VDEPTH.FC/(VDEPTH + FC)$ where FC is the critical frequency of the underlying peak. For normal valleys with VDEPTH much less than FC this has no significant effect. It can be important, however, when attempting to calculate the valley depth using extraordinary-ray data (Section 9.3). The constants in (14) can be changed if required, to use different valley shapes, as described in Section 7.4.

### 7.3 Addition of Physical Constraints

#### 7.3.1 The real-height equation

Throughout most of a calculated profile, each real-height section is defined by the relation

$$H - HA = \sum_{j=1}^{NT} q_j (FN - FA)_j$$

This gives a polynomial passing through a known real-height point (HA,FA). The coefficients $q_j$ are obtained by solving a number of virtual and real-height equations as described in Section 5.1. For general start or valley calculations we do not have a known starting height for the polynomial segment, so an additional (constant) term is included in the real-height expression giving

$$H - HA = \sum_{j=1}^{NT} q_j (FN - FA)_j + q(JM)$$  \hspace{1cm} (15)

where JM = NT + 1.

The term $q(JM)$ gives a constant offset to the calculated real heights. This is negative when used to allow for a starting correction (Section 8), and positive to allow for a valley above the peak of a layer. The constant term is added at the end of the real-height expression so that

(a) the form of the first NT terms is unchanged;

(b) the value of $q(JM)$ can be adjusted readily after the initial solution, without affecting any other constraints which may have been added; and

(c) other constraints which may be applied after the initial solution (Section 7.3.3) will over-ride a previous definition of $q(JM)$.

The values of $q_j$ ($j = 1$ to JM) are obtained by solving the set of simultaneous equations stored in the matrix B of Section 4.2. The equations are specified by coefficients $B(i,j)$ where $i = 1$ to M and $j = 1$ to JM+1; the terms $B(i,JM+1)$ contain the right-hand sides of the equations (7), corresponding to the left side of equation (15). The M rows of coefficients are calculated by a subroutine COEFIC (Appendix D.1) which also sets following rows of B to zero. Any required constraints can be specified in these following rows, and the value of M incremented by the number of added constraints. The subroutine SOLVE then calculates the coefficients $q_j$ in (12) as a least-squares solution of the M simultaneous equations, including the added constraints.
7.3.2 Added valley equations

Physically desirable features of the valley region, and of its relation to other parts of the profile, are expressed analytically and included with the virtual-height equations in the least-squares solution. These added equations relate the real-height coefficients \( q(j) \) to the standard valley parameters VWIDTH and VDEPTH. POLAN currently adds 4 equations of this sort for ordinary-ray valley calculations, representing the following three conditions:

(a) The valley width.

The overall width of the standard valley in Fig. 6 is \( VWIDTH = q(JM) + PARHT \). The parabolic distance PARHT is calculated from the value of VDEPTH and the scale height of the underlying peak, as in Section 7.2. The valley-width equation added to the set of simultaneous linear equations is then:

\[
q(JM) = VWIDTH - PARHT
\]

This equation has a weight 1.0, as for the virtual-height data points, so the equality is indicated but not enforced in the least-squares solution. The weight is increased to 100 when the parameter VALLEY (or HVAL, Section 7.4) is less than -2.0, indicating that a specific valley width is required. When extraordinary-ray data are used to determine the valley width, as in Section 9, the weight given to the condition (16) is reduced to 0.04.

(b) Gradient continuity

With a reasonably realistic model for the variation of electron density with height in the valley region, we expect a reasonable match between the gradient at the top of the valley and the initial real-height slope \( q(1) \), at the point D in Fig. 6. An exact match is obtained if \( q(1) = 0.4q(JM)/VDEPTH \), since the section CD covers a range of 0.4\( q(JM) \) in height and VDEPTH in frequency. There is normally some negative curvature of the real-height profile in this region, so the relation used in POLAN is \( q(1) = 0.25q(JM)/VDEPTH \). Using a weight of 0.4² for the least-squares solution, the added equation becomes:

\[
0.4q(1) - 0.1q(JM)/VDEPTH = 0.
\]

(c) Profile smoothness

Implausible E/F valleys can require rapid changes in dh/dFN, at the bottom of the F layer, to give agreement with observed virtual-height curves. The true profile is unlikely to have large fluctuating gradients in this region, where the scale height is reasonably large and the electron density is increasing rapidly. Thus we would like the initial real-height section above a valley to be represented by the lowest order of polynomial which gives reasonable agreement with observed virtual heights. Linear and parabolic sections are not sufficiently flexible in general for reliable results. When four or more terms are used in the real-height polynomial, the preference for a low-order representation in (15) is expressed by the relation

\[
0.5q(NT) = 0.
\]

With higher order methods, using NT > 4, POLAN adds in addition the relation

\[
0.15q(NT-1) = 0.
\]

The effective weights of 0.5² and 0.15² given to these relations express a desirable tendency rather than a requirement.

7.3.3 Limiting constraints

After the valley calculation, results are checked to ensure that profile parameters are within physically reasonable limits. Unacceptable parameters are fixed at the limiting value, and the other parameters adjusted to obtain a new least-squares solution (using the subroutines ADJUST and SOLVE). Limits are imposed in the following order:

(a) F-region gradient

The gradient dh/dFN of the real-height profile is large at the top of a valley (the point T in Fig. 7). This is partly a consequence of fairly shallow valleys. Examination of theoretical and experimental profiles suggests \( dh/dFN > 10 \text{ km/MHz} \) at all times, and \( dh/dFN > 20 \text{ km/MHz} \) nearly always.
Figure 7. Profiles formed by the superposition of a Chapman E layer, with HMAX = 110 km, SH = 10 km and FC = 3.0 MHz, and a Chapman F1 layer with SH = 20 km.

An absolute minimum slope can be calculated directly. For a given valley size the gradient is least when the ratio of scale heights for the upper and lower layers is least. For the F1 and E layers, consisting of O⁺ and O₂⁺ ions respectively, the scale heights have a ratio of 2:1 for isothermal conditions; in fact the temperature increases with height so the scale height ratio will always exceed 2:1. Using SH = 10 km for the upper E region, the smallest scale height for the F1 layer is 20 km. With this value, varying the height of the F region peak gives the family of valleys shown in Fig. 7. These are calculated for foE/foF1 = 0.66 since minimum gradients are obtained near this (minimum) condition. Curves A, B and C in Fig. 7 have gradients dh/dFN of 56, 17 and 11.5 km/MHz respectively, at the points T. The last figure is for a valley width of 39 km, and an unreasonably large depth of 0.77 (due to the neglect of other ionising processes in the valley region).

The six model test profiles used by URSI W.G. G/6/2 (McNamara and Titheridge, 1977) have gradients at the top of the valley equal to 100, 90, 70, 62, 41 and 19 km/MHz. The last value corresponds to an overlapping-Chapman model with a large valley depth of 0.88 MHz. The condition dh/dFN > 15 km/MHz therefore seems a reasonable requirement at the top of the E/F1 valley. For an F1/F2 valley the slope will be considerably greater. For valleys within the E region the slopes may be less. The local scale height SHA (Section 7.2) is therefore taken as the lower limit for the value of dh/dFN above a valley. At heights of 120, 140, 160 and 180 km this gives minimum gradients of 10, 15, 20 and 25 km/MHz respectively.

Values of dh/dFN become too small when the calculated valley is too wide. After each valley calculation in POLAN, results are checked to see if the gradient term q₁ is greater than SHA. If not, the equation 10q₁ = 10SHA is added. The new least-squares solution then has a gradient q₁ = SHA; a decreased curvature term q₂; and a decreased valley width parameter q(JM). q₂ and q(JM) are further checked as in (b) and (c) below. The altered valley width is then used to calculate a new value for the valley depth, and the complete calculation is repeated once (as in Section 7.3.4).
(b) F-region curvature.

The curvature of the real-height profile at the top of the valley region is negative for physically reasonable profiles. For the profiles A, B and C of Fig. 7 the values of \( \frac{d^2h}{dF^2} \) at the point T are -640, -2.5 and -0.1 km/MHz\(^2\) respectively. The deep V-shaped valley of C seems quite untypical of experimental profiles. Shallower valleys with the same width will have negative curvatures, similar to profile B, above the valley. The constraint currently adopted in POLAN is \( \frac{d^2h}{dF^2} < -3 \text{ km/MHz}^2 \), or \( q_2 < -1.5 \). The purpose of this constraint is to rule out profiles of the type shown by the dotted line in Fig. 7. This is an alternative solution of the virtual-height trace corresponding to profile B; the too-small value of dh/dFN above the valley, the positive curvature, and the gradient discontinuity at T' all suggest that this solution is physically implausible. In practice the limit on \( q_2 \) is seldom invoked by POLAN, since condition (a) above normally ensures compliance with (b).

(c) Valley Width.

Adjustments (a) and (b) above reduce the valley width to an acceptable value, if it was initially too large. Occasionally the data lead to a too-small valley width, giving \( q(JM) \) negative so that VWIDTH < PARHT. The equation \( 10q(JM) = 1.0 \) is then added to the least-squares solution, forcing \( q(JM) = 0.1 \) and VWIDTH - PARHT = 0.1 km. The decreased value of VWIDTH gives a smaller valley depth, and hence a smaller VWIDTH, in the next iteration.

7.3.4 Valley depth iteration

The first valley calculation uses a depth VDEPTH obtained from (14), assuming the standard value of VWIDTH. Solution of the augmented set of equations gives the profile parameters \( q(1) \) to \( q(JM) \), and a new value for VWIDTH. To maintain approximately the standard valley shape, the valley depth must now be altered to correspond to the calculated width. This is done by inserting the new VWIDTH in (14) to give a new value for VDEPTH. The full set of simultaneous equations is then recalculated and solved to obtain final values for the profile parameters. Further iterations are not necessary since valley depth is less important than width in defining the heights of the upper layers (as discussed in Section 9).

7.4 Valley Options in POLAN

Section 7.3 describes the normal valley calculation used in POLAN when extraordinary-ray data are not provided. The result is obtained by a least-squares solution of the virtual-height equations along with several additional equations which bias the results towards the standard valley model. This is the default procedure, obtained when:

(i) the final parameter VALLEY in the subroutine call to POLAN is zero, and

(ii) the virtual height \( h'(FC) \) corresponding to the critical frequency FC of the lower layer is zero. This data point is used to mark the transition between layers; the value of FC may be scaled or zero, as in Section 10.2.

Other options are obtained by specifying a non-zero value for VALLEY or for \( h'(FC) \). The type of analysis is controlled by a parameter HVAL within POLAN. This is normally set by the parameter VALLEY in the call to POLAN. If in any data set the height \( h'(FC) \) is non-zero, however, HVAL is set equal to \( h'(FC) \) for that analysis. Thus to use a particular valley analysis throughout a run, the main program sets the required constant in VALLEY. For individual profiles the type of analysis can be changed by giving a non-zero value for \( h'(FC) \).

The different types of analysis are defined below. In all cases positive values of VALLEY (or of \( h'(FC) \)) apply scaling factors to the standard valley, to increase or decrease the width and depth. Values of 5.0 or 10.0 give the extreme upper and lower limit profiles. Negative values of VALLEY specify absolute values of valley width and/or depth to be used in the analysis. The value of \( |h'(FC)| \) must always be less than 30, to show that it is not a measured virtual height.

(a) VALLEY = 0.0 or 1.0 gives the normal analysis, with additional equations included in the least-squares solution (Section 7.3.2) so that the result will tend towards the standard valley model. (The added physical constraints can be omitted by using a negative value for AMODE, as described in Section 10.2.2.)
(b) VALLEY = 0.1 to 5.0 uses the normal valley analysis, but with the standard valley width multiplied by the factor VALLEY. If the resulting width proves too large for compatibility with the virtual-height data, the initial gradient \( q_1 \) at the start of the following profile section is too small; this will be corrected automatically by setting \( q_1 \) equal to the minimum allowed value (Section 7.3.3), and adjusting the other real-height parameters to obtain a new least-squares solution. Thus the width is reduced as required until an acceptable gradient is obtained above the valley. A new (smaller) value of VDEPTH is then calculated, and the analysis is iterated once.

(c) VALLEY = 5.0 is used to give a maximum-valley result, and an upper-limit profile. This is the extreme case of (b). A valley width of 5 times the standard value is almost always impossibly large, and so will be reduced to obtain reasonable positive values of dh/dFN above the valley. Thus the final result has the greatest width which will give a physically acceptable profile for the upper layer. Typical results are shown by dotted lines in Fig. 8.

(d) VALLEY = 10.0 is used to specify a monotonic result, with no valley. This gives the lower limit to the range of possible real-height profiles (the chain lines in Fig. 8).

(e) VALLEY = -0.01 to -0.99 specifies that the calculations are to use a valley depth VDEPTH = |VALLEY| MHz, instead of the value obtained from equation (14). The valley width remains standard.

(f) VALLEY = -1.0 requests a two-parameter calculation of valley depth and width, when extraordinary ray data are available, as described in Section 9.3. Using VALLEY = -1.X forces the depth iteration to begin from VDEPTH = 0.X MHz, and is used primarily for tests of the type described in Section 9.4.

(g) VALLEY = -N, where N is an integer in the range 2 to 30, specifies a valley width of 5N km. This value is enforced by using a weight of 10 with the corresponding equation (16) in the least-squares solution.

(h) VALLEY = -W.D, where W and D are non-zero, is a combination of (e) and (f). The calculation uses a valley width of 5W km and a depth of 0.D MHz. Thus VALLEY = -6.75 gives a profile with VWIDTH = 30 km and VDEPTH = 0.75 MHz.

When the value of VALLEY (or of h'(FC)) is less than -2.0, the weight given to the valley-width equation in the least-squares solution is increased from WVAL = 1.0 to WVAL = 10.0. Results will then conform closely to the specified values of VWIDTH and VDEPTH.

The effects of changes in valley width on the calculated F-region real heights are shown in Fig. 9. Since the equations defining the real-height profile are linear (Section 3), the changes in real height are proportional to the changes in valley width. This is strictly true only for a fixed value of valley depth. The effect of depth variations is small, however, so the curves of Fig. 9 apply with reasonable accuracy for all but very deep valleys. The curves shown are calculated for typical E-layer critical frequencies of 3.1 MHz at 30° dip and 1.4 MHz at 70° dip. Ordinary ray calculations are not very sensitive to changes in magnetic field and, when variations in FB are ignored, depend only on the ratio f/FC. Fig. 9 may therefore be used to estimate the effect of changes in the assumed valley width, on the calculated real heights of the upper layer, under most conditions. Using the broken line in Fig. 9 gives the following approximate result: the change in calculated real height \( \Delta h \) above a valley, due to a change DWIDTH in the assumed valley width, is

\[
\Delta h = 0.8 \text{DWIDTH} \cdot (\text{FC}/f)^2
\]

where \( f \) is the plasma frequency at which the real height is calculated and FC is the critical frequency of the underlying peak. For plasma frequencies greater than 2FC the real-height error decreases approximately as 1/f, as shown by the dotted line in Fig. 9, giving

\[
\Delta h = 0.4 \text{DWIDTH} \cdot \text{FC}/f
\]

Changes can be made in the shape of the valley used by POLAN, by modifying the valley constants which are stored as DATA statements in the program STAVAL (Appendix F.2). The valley has a parabolic section covering a height range PARHT in Fig. 6. This distance is calculated using a scale height which is greater than that of the sub-peak profile by a factor VPEAK. Above this is a flat valley base extending over a distance \((1-\text{VBASE}) \cdot q(\text{JM})\). The constants normally used are VPEAK = 1.4 and VBASE = 0.6. By altering these values a wide range of different shapes can be obtained. Thus a simple triangular valley is obtained if VPEAK = VBASE = 0.0, and a rectangular valley if VPEAK = 0 and VBASE = 1.0. The relation between the depth and width of the valley is set by equation 14 which uses the constants VDEEP = 0.008 and VCONST = 20. Variation of these parameters (by changing the DATA statement in STAVAL) will change the ratio of depth to width for all valleys. For example, setting VDEEP = 0.016 will double the depths of all the valleys shown in Fig. 17 (section 9.2). Setting VCONST = 0.0 will make the valley depth directly proportional to the calculated width.
Figure 9. Changes in the calculated real heights of the F layer, due to an increase of 10 km in the assumed width of the E/F valley, at magnetic dip angles of 30° and 70°. FC is the E layer critical frequency. Broken and dotted lines show, for comparison, real height changes proportional to $1/f^2$ and $1/f$ respectively.
8. START CALCULATIONS USING THE EXTRAORDINARY RAY

8.1 Practically Obtainable Information

Ionograms give the virtual heights of the ordinary (O) and extraordinary (X) rays only down to some limiting frequency $f_{\text{min}}$. For the X ray we define $f_{\text{min}}$ as the plasma frequency $F_N$ at which the lowest observed frequency is reflected, and will assume in the meantime that this is similar to the frequency of the lowest O ray. Reflections are not obtained from the ionised region with $F_N < f_{\text{min}}$. Information about this underlying region can however be obtained from the difference in the virtual heights of observed O and X rays. For this purpose we consider "corresponding" O and X frequencies, which are reflected at the same real height and have the same value of plasma frequency at reflection FR. The wave frequencies $f_O$ and $f_X$ of the corresponding rays are related by

$$FR = f_O = (f_X(f_X - FH))^{0.5} \quad (20)$$

where FH is the gyrofrequency. The group retardations for corresponding O and X rays are then

$$h'_O(FR) - HR = \int (\mu'_O(FR,FN) - 1) \frac{dh}{dFN}.dFN \quad (21a)$$

$$h'_X(FR) - HR = \int (\mu'_X(FR,FN) - 1) \frac{dh}{dFN}.dFN \quad (21b)$$

The group refractive index $\mu'$ is a function of the wave frequency $f$ (or equivalently the plasma frequency FR at reflection), the plasma frequency $F_N$, and the magnetic field constants gyrofrequency (FH) and dip angle ($I$). For vertical propagation at a given site the dip angle is constant. The height variations of FH are considered in Appendix C, and will be ignored here. $\mu'$ then depends only on FR and $F_N$. The form of this dependence is quite different for the O and X rays. The ratio

$$R_{X,O} = \frac{\mu'_X - 1}{\mu'_O - 1} \quad (22)$$

also varies considerably with FR, at fixed $F_N$ (Appendix B.1). Thus the effective weights $(\mu'-1)$ in (21a) and (21b) are different functions of $F_N$, and the form of these functions changes as FR varies.

Ionisation in the unobserved region at $F_N < f_{\text{min}}$ is represented by an equivalent monotonic profile, which has only one height at each value of $F_N$. It can then be shown that an exact knowledge of the functions $h'_X(FR)$ and $h'_O(FR)$ over any finite interval $FR_1$ to $FR_2$ is sufficient (in theory) to define the function $\frac{dh}{dFN}$ for all $FR < FR_2$. In practice we do not have an exact mathematical function for the virtual heights, but a small number of data points with finite errors. The extent of the information which can be obtained about the underlying region then depends on the size of the difference $\mu'_O - \mu'_X$, and the amount by which it varies with $F_N$ and with FR. Observed values of $h'_X$ and $h'_O$ give no information about the distribution of ionisation in any region where $R_{X,O}$ (equation 22) does not change significantly with $F_N$.

Group index calculations (Appendix B.1) show that $R_{X,O}$ is approximately independent of $F_N$, at a given FR, when $F_N < 0.7FR$. This is true for all frequencies FR at dip angles less than 30° or greater than 60°. At intermediate dip angles it is true for $FR > 2FH$. Under these conditions, and taking FR as the minimum observed frequency $f_{\text{min}}$, no information about the distribution of ionisation at $F_N < 0.7f_{\text{min}}$ can be obtained from the observed O and X-ray virtual heights. This is true for any method of analysis. Thus a basic requirement for a stable analysis procedure, producing consistent results, is that it should not attempt to determine the distribution of ionisation in the region where $F_N < 0.7f_{\text{min}}$.

For dip angles near 67°, the variations of $\mu'_O$ and $\mu'_X$ with $F_N$ can be closely approximated by expressions of the form $\mu' = 1 + a.FN^2 + b.FN^8$, for $F_N < 0.9FR$ (Appendix B.2). a and b are independent of $F_N$, at a given frequency FR. Group delays due to this region are therefore defined (to within about 1%) by the integrals of $FN^2$ and $FN^8$. So for the region with $F_N < 0.9f_{\text{min}}$ only these two parameters can be determined.

At dip angles near 80° the ratio $R_{X,O}$ in (22) is approximately equal to $8.5FH/FR$, for $0 < F_N < 0.98FR$ (Appendix B.1). Observed delays then give only one piece of information about the ionisation with $F_N < 0.98f_{\text{min}}$. At dip angles near 30° the ratio $R_{X,O}$ is approximately constant, at a given FR, for all plasma frequencies $F_N$ less than FR (Titheridge, 1974b). Only one parameter can then be obtained relating to the unseen ionisation. This single parameter is, however, sufficient to correct the real heights at $F_N > f_{\text{min}}$ for the effect of the underlying region.
We conclude that, under most conditions, not more than two independent parameters can be obtained for the underlying region at $FN < 0.9f_{\text{min}}$. One of these parameters normally defines the total electron content of this region, while the second gives some distribution function. Analysis of practical ionograms (Titheridge, 1959b,c) shows that the total content is generally well defined, while the second parameter is obtainable with only marginal accuracy.

For the region with $0.9f_{\text{min}} < FN < f_{\text{min}}$ a single parameter will normally suffice, to define the mean gradient just below $f_{\text{min}}$. Thus a total of two or three parameters is fully sufficient to fit all available information about the underlying region. The only exception to this (apart possibly from calculations at dip angles near 50°) occurs when the group retardations become very large near $f_{\text{min}}$, showing the presence of an underlying peak -- as discussed in Section 8.5.2. Paul and Smith (1968) also conclude that generally only 1 or 2 parameters can be determined for 'unseen' regions. Tests carried out by Gulyaeva (1973) showed clearly that the use of many parameters for the unobserved regions led to unreliable or ambiguous results in many cases; restriction to a one-parameter model avoided most of these problems. Note that a special problem arises at dip angles near 35°, such that start and valley calculations of reasonable accuracy become almost impossible for ionograms taken at dip angles between 33° and 38° (Appendix B.2).

### 8.2 Inclusion of Extraordinary Ray Data

#### 8.2.1 The general approach

Real-height calculations based primarily on O-ray data can be adjusted iteratively to optimise agreement with a number of X-ray measurements. The process consists essentially of making successive modifications to the profile shape at $FN < f_{\text{min}}$, to obtain best agreement between observed and calculated X-ray virtual heights. The final result is a profile which exactly fits the O-ray data, and gives some best overall fit to the X-ray data. Iterative adjustment of the profile in this way is described by Lockwood (1969, for the topside case when X data are analysed and iteratively adjusted to fit O-ray observations), by Gulyaeva (1972, 1973), by Becker (1978) and by Paul (in Gulyaeva et al, 1978). Howe and McKinnis (1967) use a least-squares fit to O and X data, repeating this with different frequency intervals for the underlying region until results appear satisfactory.

Iteration can be avoided if the model for the underlying ionisation does not include any variable frequencies. A single least-squares solution can then be obtained incorporating both O and X data. This is the method used in POLAN. Neither O nor X rays are fitted exactly, but the overall RMS error will be appreciably less than if the fitting errors were confined to only one component. The two components may be given different weights, by adjustment of the constant WVIRTX in POLAN; the relative weight given to X-ray measurements varies as $(WVIRTX)^2$. In a combined O and X ray fit, the total number of real-height terms being calculated is normally greater than the number of O rays used. A small value for WVIRTX will then give a result in which the O-ray data are fitted (almost) exactly, and the RMS deviation is minimised for the X-ray data. Thus we can obtain, in one step, the types of solution provided by most of the iterative procedures mentioned above.

In general, when highly retarded X traces are avoided, it can be shown that use of similar weights for both the O and X data gives maximum stability and insensitivity to measurement errors. POLAN therefore begins an analysis with WVIRTX = 1.0. If there is an apparent conflict between O and X data, WVIRTX is reduced to 0.5 so that O-ray virtual heights are fitted 4 times more accurately than the X data. This gives results similar to those from the iterative approach, with a decreased sensitivity to (for instance) errors in FH or the effects of magneto-ionic path splitting. Thus the analysis is automatically adjusted to reflect the relative degree of confidence placed in the X-ray data.

#### 8.2.2 Implementation in POLAN

The virtual-height equations in the set (7), used to define a given polynomial, can include both ordinary (O) and extraordinary (X) rays. X-ray data are identified in the calculations by using negative frequencies; this automatically gives the right sign at all points in the group index subroutine (Appendix D.3). Calculation of the coefficients $B(i,j)$ then requires no special considerations other than using the correct upper limit of integration in (4) - this must be the plasma frequency at reflection FR, equal to $(f_j(f_j + FH))^{0.5}$ when the wave frequency $f_j$ is negative. The optimum value of FH for use in start calculations is discussed in Appendix C.

With O-ray data only, the frequency up to which the starting polynomial extends is determined by the number of data points (NV) used by the specified mode of analysis (Section 5.2). If X-ray data are also available the range of the polynomial generally is not altered; those X-ray points which fall within this range (or within 0.1 MHz of the top frequency) are included, and any outside this
range are ignored. This is in agreement with the general philosophy of building choices into the program wherever possible, rather than depending on the judgement of an operator.

If the number of accepted X-ray points is NX, an additional NX virtual height equations appear at the beginning of the set (7). Thus the total number of equations to be solved becomes NV = NF + NX where NF is the number of O-ray data points. The value of NT (the number of terms in the fitted polynomial) is increased by \((NX + 1)/2\) over the value originally specified. One further term is added corresponding to the constant in the polynomial expansion, to allow adjustment of the starting height (Section 8.3.1). Thus for the standard analysis (MODE = 5) a start with O-ray data only uses a 4-term polynomial fitted to the first 5 virtual heights. If one or two X-ray points are added, this becomes 6 terms fitting 6 or 7 heights. With equally-spaced O and X data we get NX = 5, and POLAN fits 8 real-height terms to 10 virtual heights (5 O-ray plus 5 X-ray). Equations which bias an ill-defined result towards an acceptable model starting height are also included in the least-squares analysis, as described in Section 8.4.

The number of real heights determined from the first polynomial is always less than the number of O-ray data points used to calculate the polynomial coefficients. Thus for a Mode 5 analysis, the start calculation is used to determine only the real heights \(h_1\) to \(h_3\) at the O ray frequencies \(f_1\) to \(f_3\). These heights depend on both O and X-ray data. The next step in the analysis calculates a polynomial passing through \(h_1\), \(h_2\) and \(h_3\) and giving a least-squares fit to the O-ray virtual heights \(h'_3\), \(h'_4\), \(h'_5\) and \(h'_6\). This polynomial defines the next real height \(h_4\) at the frequency \(f_4\). The accurate fit to \(h_1\), \(h_2\) and \(h_3\) ensures a smooth continuation, so that \(h_4\) still has a considerable dependence on the X-ray data used to determine the first three heights. O-ray virtual heights \(h'_4\) and \(h'_5\) are used in both the first step of the analysis (in conjunction with X-ray data) and in the second step (without X-ray data). This gives a smooth transition from initial heights, which depend on both O and X data, to a profile variation (at high frequencies) governed by the O-ray only. The net result is similar to the procedure used by Wright (1967), who instructs operators to scale additional O-ray data at the top of an O/X fitting region.

### 8.2.3 Data selection within POLAN

With data scaled at a normal frequency interval \(\Delta f\) of about 0.1 MHz (Section 8.5), the points used in a starting calculation cover a frequency range of about 0.4 MHz. When virtual heights are changing only slowly above \(f_{min}\) the value of \(\Delta f\) may be increased, giving a corresponding increase in the fitted range. When virtual heights increase rapidly near \(f_{min}\) it is not correct to use smaller values of \(\Delta f\), in an attempt to obtain greater accuracy by defining the changes in \(h'\) more closely. Such changes are due to the proximity of an underlying peak, and this section of the trace is best omitted (Section 8.5.2). Values of \(\Delta f\) appreciably less than 0.1 MHz may, however, be desirable for two reasons:

(a) Experimental errors in the measurement of \(h'\) and of \(f\) can be reduced by scaling additional points to be smoothed in the least-squares fitting process.

(b) Virtual heights may begin to increase rapidly with increasing frequency, within 0.4 MHz of \(f_{min}\), due to the presence of a cusp or peak on the ionogram. Such data should not be used in the start calculation, since changes in \(h'\) will depend more on the changing gradient near reflection than on the density of underlying ionisation. Thus at least 5 O-ray points should always be scaled before appreciable peak retardation begins. (An example of the large errors produced by including cusp data which does not exactly fit the assumed value of FH is given in Section 8.4.2(b).)

Starting data may be provided at frequency intervals appreciably less than 0.1 MHz for either of the above two reasons, or through an operator mistakenly trying to define a rapid increase in \(h'\) near \(f_{min}\). These cases are treated appropriately in POLAN by the following steps.

(i) The specified number of O-ray frequencies (NF, equal to 5 for the normal analysis) is selected. Each point is checked, in the normal way, to ensure a monotonic frequency variation and an absence of 'singular' points corresponding to a cusp, restart or peak. If \([h'(NF) - h'(NF-1)] > 200[f(NF) - f(NF-1)]\) the last point is deleted, in accordance with (b) above.

(ii) If the number of initial X rays (NX) is not zero, and the NF selected O-ray points cover a frequency range of less than 0.4 MHz, the next O-ray point \(f(NF+1)\) is checked. If satisfactory, and if the value of \([h'(NF+1) - h'(NF)]/[f(NF+1) - f(NF)]\) is less than 30 km/MHz, NF is incremented by one to include the additional point.

(iii) Step (ii) is repeated until either the range of frequencies exceeds 0.4 MHz, or the gradient of the virtual height curve exceeds 30 km/MHz. Any X-ray points which are reflected at plasma frequencies more than 0.05 MHz greater than the last included O ray are then deleted.
Two constants are used in this selection process. These are the minimum desirable frequency range for the start calculation (FFIT, normally 0.4 MHz), and the maximum positive virtual-height gradient to be allowed at the top of the range (GFIT, normally 30 km/MHz). The 'normal' values are set by a DATA statement at the beginning of POLAN, and may be changed as required for particular studies.

8.3 The Slab Start in POLAN

8.3.1 The start model

The main start model used in POLAN for X-ray calculations is shown in Fig. 10. F1 is the lowest plasma frequency from which reflections were obtained. The starting model consists of a polynomial beginning at FA = 0.6F1, and an underlying slab with FN increasing linearly from 0.3F1 to 0.6F1. This gives two basic parameters for the underlying ionisation, of the general type described in Section 8.1. The linear slab section serves to produce the correct total amount of low-density ionisation. The initial section of the polynomial from 0.6F1 to F1 defines the mean gradient dh/dFN near 0.8F1, and gives a continuous variation of all derivatives through the lowest observed frequency F1. After a slab start real heights are calculated at FN = 0.3F1, 0.6F1 and 0.8F1.

With O-ray data only, calculations start from a height obtained by linear extrapolation of the first three O-ray measurements (Section 6.2). With X-ray data the same linear extrapolation is used, but it is continued only down to the frequency 0.8F1. The height HA obtained in this way is taken as the origin for the starting calculation, at the frequency FA = 0.6F1. This limited extrapolation gives a minimum amount of correction, so that HA gives a reasonable upper limit for the true height at 0.6F1. Physically reasonable results can then be assured by requiring that the final starting height be less than HA, as described in Section 8.4.

The real-height section above the starting frequency FA is represented by

\[ h - HA = \sum_{j=1}^{MT-1} q(j) \cdot (f - FA)^j + q(MT+1) \]  

(23)

The term \( q(MT) \) corresponds to the thickness of the underlying slab, from FN = 0.3F1 to 0.6F1. This term does not appear in (23) since the corresponding coefficients B(i,MT) are zero in the real height arrays (equations 5 to 8). For the virtual-height arrays the coefficients B(i,MT) give the mean value of \( (\mu' - 1) \) in the linear slab, at the frequency Fi. The calculated value of \( q(MT) \) then gives the thickness of the slab.

The final term in (23), at \( j = MT+1 \), provides the constant term required to allow a shift in the starting height of the polynomial. Thus the calculated value of \( q(MT+1) \) gives the real-height correction at the frequency FA (Fig. 10). For this term both the real and virtual height coefficients B(i,MT+1), in equations 5 to 8, are equal to unity. The constant term is placed at the end of the expansion so that:

(a) the initial terms are the same for both O and X-ray calculations, and
(b) the coefficient \( q(MT+1) \) is readily modified or removed from the least-squares solution, if the calculated value is physically unreasonable.

8.3.2 Test examples

Two test models were developed for evaluating start procedures. These are based on Arecibo backscatter data (McNamara and Titheridge, 1977) and are shown by the solid lines in Fig. 11. Corresponding virtual heights \( h'_o \) and \( h'_x \), for a dip angle of 20°, are given in Fig. 15 (Section 8.6.1). The first model incorporates a slowly-changing gradient above 0.5 MHz, and much of the group retardation \( (h' - h) \) is due to the fairly large gradient dh/dFN in the reflecting region. The second model (Fig. 11b) has a smaller and more constant gradient in the reflecting region, with a rapid increase in the gradient (and in the resulting group retardation) at frequencies below 1.0 MHz.

The dotted section in Fig. 11(a) is the equivalent monotonic representation for the underlying ionisation. This gives exactly the same virtual heights for both O and X rays (at frequencies above 0.6 MHz) as the true profile. Thus it is an exactly equivalent solution of the given virtual height data, and is the result towards which an ideal analysis should tend. The slab start calculation with fmin = 1.0 MHz, giving the circled real heights at 0.3, 0.6 and 0.8 MHz, does represent this equivalent profile quite accurately.
Figure 10. The general form of the Slab Start profile, using virtual-height data down to a minimum (plasma) frequency $F_1$.

Figure 11. Solid lines show the model real-height profiles 3A and 3B. Circles (joined by continuous lines), crosses (with heavy broken lines) and triangles (with thin broken lines) give the calculated real-height profiles at an angle of 20° using data down to $f_{\text{min}} = 1.0$, 1.5 and 2.0 MHz respectively. Results at 70° dip are shown by solid symbols wherever these can be distinguished from the 20° results.
Calculations using $f_{\text{min}} = 1.5$ or $2.0$ give a simplified representation of the underlying ionisation, shown by the broken lines in Fig. 11(a). These approximate profiles still give quite closely the correct value for the integral of $F N^2 dh$. They fit the observed virtual heights, at all frequencies, to well within experimental error. The data set for profile 3B at Dip $70^\circ$ would not be analysed from $1.0$ MHz, as discussed in Section 8.5.2. The maximum R.M.S. fitting error for the other 11 calculations in Fig. 11 is $DEVN = 0.01$ km. The mean value is $DEVN = 0.003$ km. So no further information is obtainable about the unobserved region, at $FN < f_{\text{min}}$, even if all virtual heights are known to an accuracy of about 3 metres (i.e. to 1 part in $10^5$).

Using O and X data at the normal frequency spacing of about $0.1$ MHz, the default mode 5 in POLAN selects 5 O-ray points and 5 X-ray points for the slab start calculation (Section 8.2.3). This gives an 8-term polynomial. Calculations were also repeated using 7 terms. For each model and value of $f_{\text{min}}$ (apart from the case discussed in Section 8.4.2(b)) the four independently calculated results for the thickness of the low-density slab agreed to about $\pm 10\%$. Values for the electron content at $FN < 0.8f_{\text{min}}$ agreed to within $\pm 1.1\%$. This confirms that only the total amount of ionisation, and not the distribution, is important at $FN < 0.8f_{\text{min}}$. Calculated heights at $0.6f_{\text{min}}$ had a mean spread of $\pm 1.8$ km within each group. The solution is therefore stable and well-defined in the unobserved region. In the observed region all calculated heights were accurate to within about $0.1$ km at a dip angle of $20^\circ$, and $0.5$ km at Dip $70^\circ$, for all values of $f_{\text{min}}$.

Values of $h'x$ differ appreciably at dip angles of $20^\circ$ and $70^\circ$ -- particularly for model 3B. The change of dip angle gives a large change in the relative importance of different densities of underlying ionisation, as discussed in Appendix B.1. The good consistency of the calculated model for the unseen region, with changes in dip angle and in the degree of the fitted polynomial, shows that we have a reliable, well-defined result. Calculations under a wide range of conditions show that the real-height errors vary smoothly with dip angle (apart from an increase near dip $35^\circ$, as in Appendix B.2). For dip angles near $29^\circ$ good accuracy is still obtained in the observed region although the distribution at $FN < f_{\text{min}}$ can be quite unreliable, as discussed in Section 8.1. The mean accuracy of the calculated heights in the observed region is slightly better than for the polynomial start of Section 8.6. Variations in the unseen region are, however, only about half as large. This increased consistency is the main reason for preferring the slab start in POLAN.

### 8.4 Physical Constraints and Height Iteration

#### 8.4.1 Constraints included in the least-squares solution

Start calculations begin from a height $HA$ at a starting frequency $FA$ (Fig. 10). With O-ray data only, $HA$ is set equal to an estimated starting height $HS$. At START = 0., $HS$ is calculated from a limited extrapolation of the initial virtual-height trace. For more reliable and consistent results, START is used to enter a suitable model starting height (obtained from the results of Sections 6.3 and 6.4).

When X-ray data are used in a start calculation, $HA$ is set equal to a reasonable upper limit for the real-height at the frequency $FA$ (as described in Section 8.3.1). The combined O/X analysis then calculates the real-height correction $q(MT+1)$ at this frequency, and the thickness $q(MT)$ of a linear slab representing the total amount of underlying ionisation (as in Fig. 10). This calculation makes no direct use of the model starting height $HS$. With good data the least-squares solution of the virtual-height equations gives well-defined results for the parameters $q_j$, corresponding to a sharp minimum in the RMS virtual-height fitting error. Data are normally less than ideal, however. The absence of X-ray data at low frequencies, off-vertical propagation of some rays, and other errors produce increased uncertainty in the least-squares solution. Results still give the values of $q$ for which the real-height profile best fits the virtual-height data, but this fit may be nearly as good (or as bad) for a considerable range of values.

With poor data we would like results to be biased towards the O-ray model, by an amount which increases as the broadness of the minimum in the least-squares solution increases. This is achieved by adding further equations to the least-squares solution, setting $q(MT)$ and $q(MT+1)$ to values which agree with the model O-ray starting height $HS$. These equations are given some low weight, so that they have little effect on a well-defined X-ray calculation. An ill-defined solution will, however, be shifted towards the model values of $q(MT)$ and $q(MT+1)$.

To include physical conditions in a combined O and X-ray starting calculation, the following equations are added to the set of virtual-height equations used in the least-squares solution.

$$q(MT+1) = 1.6 \times (HS - HA)$$

$$0.3q(MT) = 0.1HS - 6$$
\[0.3q(MT-1) = 0.\]  

(26)

The first two conditions define a slab start profile (Fig. 10) which corresponds approximately to the O-ray profile with a starting height HS (at the starting frequency \(f_S\), normally 0.5 MHz). The third condition indicates that we would prefer the last term in the polynomial real-height expression to be small (giving a lower-order solution, if the data do not require otherwise). The factor 0.3 in (26) gives this relation a small effective weight in the analysis, only one tenth of that for equations (24) and (25).

Both sides of equations (24) to (26) are multiplied by a weighting factor WS when they are added to the set of simultaneous equations in the matrix B (Section 7.3). When HS is estimated by extrapolation of the initial O-ray trace, we use WS = 0.1. The added conditions then have a weight of 0.01, so that they normally have little effect on the solution. When HS is defined by an entered model value of START, the weight WS is increased to 0.5. The calculated profile will then be biased considerably towards the starting model, whenever the data by themselves would give an ill-defined or ambiguous result.

Note that the above constraints have NOT been included in any of the examples discussed within Section 8 of this report. Thus Figs. 11 to 16 show results which depend only on the virtual-height data. Incorporation of equations 24 to 26 in the least-squares solution, using any reasonable value for HS, considerably reduces the variations obtained with poor data.

### 8.4.2 Limits placed on the calculated profile

With a simple two-parameter representation of the underlying ionisation, as in Fig. 10, physically reasonable virtual-height data always produce physically reasonable results. We can therefore require that basic physical criteria are satisfied in the unobserved region. Occasionally, with bad input data, a physically acceptable shape cannot be obtained without incurring a large increase in the virtual-height fitting error. In such cases some unphysical variations are allowed in the unobserved region, to give a better-defined profile at \(f > f_{min}\). Adjustment of the solution to impose some physical restriction is done accurately and rapidly by adding a further equation into the previous least-squares solution, using the subroutine SOLVE (Appendix F.4). This gives new values for all real-height parameters \(q(j)\), and for the virtual-height fitting error DEVN. Several modifications of a calculated profile can therefore be tried, adding or adjusting constraints until the solution is physically acceptable, with no significant increase in computation time.

Application of physical limits gives an automatic reduction in the effects of bad data in almost all cases. Conditions (i) to (vii) below are applied by the subroutine ADJUST immediately after the first real-height solution. (iv) and (v) are checked in section CX2 of the subroutine STAVAL. Conditions are applied in the order shown, so that (iii) is not checked until a solution has been obtained which satisfies (i) and (ii). In most cases curing one bad condition (e.g. a negative initial gradient) will also bring about conformity with the following conditions. The real-height parameters directly involved in checks (i), (ii) and (iii-v) are \(q(1)\), \(q(MT)\) and \(q(MT+1)\) respectively. When applied in this order the addition of one constraint (by the subroutine SOLVE) retains all previous constraints. Each constraint is added to the set of simultaneous equations with a weight of 20 so that the new condition is closely met by the new least-squares solution. The large weight ensures that addition of subsequent constraints does not significantly alter the previously-constrained parameters. The constraints applied are:

(i) The initial gradient \(q(1) = dh/dFN\) must be greater than 2.0 km/MHz. Thus if initially \(q(1) < 2.0\), the condition \(q(1) = 2.0\) is imposed on the solution.

(ii) The thickness of the slab of underlying ionisation, \(q(MT)\), must be positive. If initial calculations give a negative result the condition \(q(MT) = 0.1\) is imposed.

(iii) The calculated height at the frequency FA must be less than HA. This requires that the last parameter \(q(MT+1)\) in the real-height expansion must be negative.

(iv) Within the observed range, successive calculated real heights must give a mean gradient \(\Delta h/\Delta f\) greater than 2.0 km/MHz.

(v) Finally, if a height-dependent gyrofrequency is being used, the entire starting calculation is repeated using the previously-calculated real heights to obtain a more accurate value of FH for each ray. Iteration continues until the changes in real height are less than 2 km (giving an accuracy of better than 0.1% in the value of FH at reflection). Optimum values of FH for use in the unseen region are described in Appendix C.5.

With the overlapping-polynomial approach, the highest frequencies employed in each step of the calculation serve only to ensure the correct overall trend for the upper part of the real-height segment. Thus the number NH of final real heights determined in each step is normally less than the
number of O-ray data points. Check (iv) is applied only to the first NH calculated heights, to ensure an acceptable profile. If the check fails, the start offset \( q(MT+1) \) is reduced by an amount equal to the greater of \( (10 \text{ km}, 0.5|q(MT+1)|) \). Programming is arranged so that application of this new constraint automatically removes any previous constraints on \( q(MT+1) \). Real heights are then recalculated. Check (iv) is iterated (a maximum of 10 times) lowering the starting height until each final real-height step corresponds to a mean gradient of greater than 2.0 km/MHz.

The above checks take place automatically, adjusting the start solution to obtain a result giving the best (least-squares) match with the given data, subject to the requirement of a physically reasonable profile in both the observed and unobserved regions. With good data correctly scaled, the first direct solution of the virtual-height equations seldom requires any adjustment. With poor data the calculated profile is not well-defined; this is indicated by a large value for the RMS virtual-height fitting error \( \text{DEVN} \). The adjustments necessary to obtain a physically meaningful profile then cause little increase in \( \text{DEVN} \), so that the final result represents an almost equally good mathematical solution of the given data.

A physically acceptable profile is always demanded in the observed region at \( FN > f_{\min} \). On rare occasions the initial least-squares solution is physically impossible in the unobserved region, but is well-defined in the sense that any changes cause a large increase in the fit parameter \( \text{DEVN} \). This implies that the true distribution of underlying ionisation involves large gradient changes just below \( f_{\min} \). These cannot be adequately modelled by a monotonic two-parameter distribution (Section 8.5.2). This case is allowed for by examining the increase in \( \text{DEVN} \) caused by an application of constraint (ii). If \( \text{DEVN} \) increases by more than 25% when the slab thickness is set to zero, the constraint is removed to allow a negative value of \( q(MT) \). Real heights in the unseen region then decrease from 0.3\( f_{\min} \) to 0.6\( f_{\min} \), and increase rapidly at \( FN > 0.6f_{\min} \). Real heights in the observed range (\( FN > f_{\min} \)) are calculated using this unphysical variation of unseen ionisation. The true calculated start parameters, with a negative value for SLAB, are listed by POLAN. To avoid upsetting operators or plotting routines, however, the final real-height and frequency arrays returned by POLAN are modified to a monotonic variation with the same total electron content. This entails replacing the initial points by a flat base, extending up to a plasma frequency slightly greater than the original starting frequency \( FA \) (as in the example of Fig. 12).

POLAN normally lists only the final start, valley and peak parameters. When the input parameter LIST is non-zero, additional information is printed as detailed in Section 10.3.2. This includes the initial parameters \( q \), any adjustments made (in checks (i) to (v) above), the reason for the adjustment and the resulting increase in \( \text{DEVN} \). Thus with poor data, for which the best mathematical solution is physically undesirable, we get an overall best-guess solution and a listing of the adjustments which have been made. If these adjustments are large, the possibility of scaling errors should be examined.

### 8.4.3 Examples

Note that all the calculations described within Section 8 are made without including the physical constraints of Section 8.4.1 in the least-squares solution; thus the variations shown in Figs. 12 and 13 have not been restricted by any assumptions about the expected size of the starting correction.

(a) Using accurate data.

Of the calculations described in Section 8.2.2, only analysis of the difficult model 3B with \( f_{\min} < 1.1 \text{ MHz} \) gives unphysical start parameters. The extreme case occurs at dip 70° and is shown in Fig. 12. Direct application of the slab start calculation gives the variation shown by the continuous line. This attempts to simulate peak retardation by giving the maximum amount of high density ionisation (compatible with a smooth polynomial variation down to 0.6 MHz), plus a large negative amount of ionisation at \( FN < 0.6 \text{ MHz} \). The result fits O and X virtual-height data to well within experimental error, and gives good accuracy in the observed region, as shown by the "direct" results in Table 6.

**TABLE 6.** Results from the slab start calculation of Figure 12, where "Direct" results are plotted as a continuous line and "Adjusted" results as a broken line.

| Analysis | \( q(MT) \) | Virtual-height error \( \text{DEVN} \) | Real-height error at \( f = \) |
|----------|------------|---------------------------------|------------------|
|          |            |                                 | 1.0   | 1.2   | 1.5   | 2.0   | MHz |
| Direct   | -310       | 0.07                            | -0.42 | -0.32 | -0.23 | -0.13 | km  |
| Adjusted | 0          | 0.34                            | +3.07 | +0.12 | -0.43 | -0.65 | km  |
Figure 12. The test profile 3B (heavy line) analysed at dip 70°, using O and X-ray data at intervals of 0.1 MHz in FN from fmin = 1.0 MHz. The fine line is the direct result of a 'slab start' calculation. Imposing physical constraints on this result gives the broken-line variation.

Figure 13. Analysis of ionogram data at a dip angle of 57°, using a too-small value of the gyro-frequency FH. The horizontal scale is proportional to FN². Profile A is the first result of the start calculation. Automatic corrections for initial gradient and start offset produce B and C. Elimination of negative gradients then gives E, where the calculated real heights are marked +. Analysis using the correct value of FH, with (automatic) rejection of the fifth O-ray point from the start calculation, gives the profile F which fits all virtual heights to within 1 km.
The calculated parameter \( q(MT) \), giving the thickness of the low-density slab, has a physically impossible negative value in the first calculation. POLAN then automatically adjusts the solution so that \( q(MT) \) is zero, giving the broken-line profile in Fig. 12. As shown by the bottom line of Table 6, this appreciably increases the real-height errors and considerably increases the virtual-height fitting error DEVN. The latter effect shows that the original unphysical profile was not an ill-defined solution, but a genuine (and worthwhile) attempt to cope with a difficult distribution of underlying ionisation. The constraint \( q(MT) = 0 \) is therefore removed, and the original solution accepted. The start constants are listed as:

"START CORRECTION = -289 km, SLAB = -310 km".

Data in the real-height array are, however, modified as shown by the dotted line in Fig. 12. This gives a flat base with a height and plasma frequency (0.67 MHz) calculated to give the same total electron content as the original (continuous line) calculation.

(b) With bad data.

Common data errors, and the resulting treatment, are illustrated in Fig. 13. Circles and crosses show O and X ray data, scaled from a Canberra ionogram, plotted against the plasma frequency at reflection. This was done using the given ground value of FH (1.52 MHz) extrapolated to 140 km. The main data error is immediately apparent; while the O ray shows considerable cusp retardation at 3.5 MHz, the corresponding X-ray cusp occurs at a considerably higher plasma frequency. Thus the value of FH is incorrect. The "ground" value of 1.52 is in fact the E-region value. Allowance for this error moves the X-ray points down (in plasma frequency) as shown by the dotted line, so that they become compatible with the O data; direct analysis then gives the profile F shown by the fine line.

A second error in the data of Fig. 13 is the scaling of only three O-ray points before cusp retardation becomes important. This violates condition (iv) of 8.5.3.

A normal start calculation (with POLAN Mode 5) uses 5 values of \( h'_o \), and the conditions of Section 8.2.3 include all 4 values of \( h'_x \) in Fig. 13. Direct formulation and solution of the virtual-height equations gives the real-height curve A (plotted on a reduced scale). Application of check (i) above sets \( q(1) = 2.0 \text{ km/MHz} \) giving curve B. Check (iii) reduces the starting height of the polynomial to give curve C. Application of these two checks in the reverse order would give D; a worse result than C since imposition of check (iii) removes the initial negative gradient, and \( q(1) \) is not set equal to 2.0. In the considerable change from A to C or D the virtual-height fitting error DEVN increases by only 20% (from 2.9 to 3.5 km) showing that the original highly distorted profile was not well-defined.

Curve C is further adjusted downwards by condition (iv) above to give the result E. This increases the virtual-height fitting error by a further 30%, and gives (with no operator intervention) a reasonable result from very bad data. The final downwards adjustment of the polynomial starting point (HA,FA) has produced a physically impossible height increase at lower frequencies. This is well below the observed part of the profile, and has been required to cope with the (physically impossible) data. It is therefore not deleted from the mathematical solution, which is used to calculate following heights. The final output arrays are, however, adjusted as shown by the dotted line to give a more usable variation at low frequencies (as in 8.4.1).

The current version of POLAN checks the mean gradient \( dh'/dFN \) corresponding to the highest two frequencies used in a start calculation. If this gradient exceeds 200 km/MHz, the last point is rejected (Section 8.2.3). With the data of Fig. 13 this automatic check limits the start calculation to four O-rays and three X-rays. Analysis with the incorrect value of FH then gives a result which is appreciably more acceptable in the unseen region. In addition, inclusion of the physical constraints described in Section 8.4.1 greatly reduces unphysical variations of the type shown in Fig. 13.

### 8.5 The Choice of Scaling Frequencies

Corrections for underlying ionisation are based on the difference \( h'_x - h'_o \) for O and X rays reflected at approximately the same plasma frequency FR. A first order correction for delay in the underlying region is often all that can be reliably obtained. In this case only a single value of \( h'_x \) is necessary. Provided the profile is not changing rapidly near fmin, and there are no underlying peaks with plasma densities greater than about 0.7fmin, this single measurement is sufficient to determine the overall effect of the low-density ionisation. Scaling of additional points then contributes little to the theoretical accuracy, but will help to minimise the effects of experimental errors.
With difficult ionograms (as in 8.5.2 below) accurate results must use two parameters for the underlying ionisation. This requires a minimum of two scaled values of $h'_x$, which define the rate at which $h'_x - h'_o$ changes with frequency. To determine this change accurately, measurements must cover a minimum frequency range of about 0.2 MHz. The difference $h'_x - h'_o$ due to underlying ionisation decreases rapidly with increasing frequency, so that use of a frequency range greater than 0.7 MHz adds little information about the unseen region, and has the disadvantage of including greater variations in the gradient at reflection.

The test models 3A and 3B used previously are derived from real data and represent the two basic types of underlying profile. They are therefore appropriate for investigating the effect of different scaling rules. Model 3A gives slowly-varying virtual heights near fmin, as considered in 8.5.1. For model 3B the virtual heights increase rapidly at low frequencies, and scaling rules for this case are discussed in Section 8.5.2. Recommended scaling rules derived from these and other tests, and from the studies of Appendix B, are summarised in Section 10.4.

### 8.5.1 Ionograms with $h'$ varying slowly near fmin

Using either the polynomial start (Section 8.6.1) or the slab start in POLAN, calculated real heights for model 3A are accurate to within about 0.1 km for all dip angles and for values of fmin from about 0.8 to 2.5 MHz. This is shown, for representative low and high dip angles, in Fig. 11. The virtual-height data are fitted with an RMS error of less than 5 metres over the above range of fmin and for most reasonable scaling intervals. Results are then limited by experimental accuracy, and scaling requirements are: (i) use data at the lowest available frequencies, where $h'_x - h'_o$ is greatest, and (ii) use a frequency interval $\Delta f$ sufficiently large that successive scalings represent essentially independent measurements.

O-ray data are normally scaled at a frequency interval $\Delta f$ of about 0.1 MHz. When the trace is irregular or ill-defined, additional points should be scaled in the range from fmin to fmin + 0.4 MHz. Such points are automatically included in a start calculation by POLAN, without any increase in the degree of the fitted polynomial, to give increased smoothing of random errors (Section 8.2.3). Scaling intervals less than 0.1 MHz are also used (throughout the ionogram) whenever maximum accuracy is required regardless of scaling and computer time. Such data would usually be analysed using MODE > 5 in POLAN to give additional point-to-point smoothing of the data. On some occasions small initial values of $\Delta f$ are required to obtain at least 5 virtual heights before the retardation due to an observed cusp or peak becomes appreciable; this is discussed in Section 8.2.3.

With slowly-varying virtual heights, scaling 3 to 5 X-ray points is adequate. The plasma frequencies at reflection ($FR_x$) for these points should conform to one or both of the relations

$$FR_x < f_{\text{min}} + 0.45 \text{ MHz}$$

or

$$FR_x < FM + 0.05 \text{ MHz}$$

where fmin and FM are the frequencies of the first and fifth scaled O rays. Thus X-ray data should normally begin at a wave frequency $f_x$ within 1 MHz of fmin. As with the O ray, only points well below observed cusps or peaks should be included.

Occasionally X-ray traces will be observed only at $FR_x > f_{\text{min}} + 0.45$ MHz. About three points are then scaled, at intervals of 0.05 to 0.1 MHz from the lowest usable frequency. A careful operator will also increase the frequency interval for the scaled O-ray points, so that FM satisfies (27b). If this is not done, however, POLAN will automatically include additional O-ray points in the start calculation until the highest O-ray frequency (FM) is greater than the first value of $FR_x$. All X rays with $FR_x > FM + 0.05$ are then accepted. This automatic adjustment brings at least one, and generally 2 or 3, X-ray points into the range of the start calculation.

### 8.5.2 Ionograms with $h'$ increasing near fmin

The occurrence of a large, rapid increase in group retardation for both the O and X rays near fmin indicates the presence of an underlying peak, with a critical frequency $FC_S$ exceeding about 0.8fmin. In the equivalent monotonic profile this corresponds to an abrupt change from a small to an infinite value of $dh/dFN$. The assumption of a smoothly-changing gradient below fmin is therefore violated, and additional parameters must be introduced if this part of the trace is to be analysed.

If the underlying critical frequency $FC_S$ is greater than about 0.9fmin, observed O and X traces near fmin are highly retarded. Analysis of these sections could yield information on the density and thickness of the peak. However the situation is essentially the same as that described by Lobb and Titheridge (1977a) in connection with "restart" calculations above an E/F layer valley. The use of data at frequencies within 0.1 MHz of foE gives increased errors in the calculated F-layer.
heights, unless the value of foE is known to within 1%. This precision is barely obtainable when E-layer virtual heights are observed; it is quite unobtainable when foE < fmin. Traces which are highly retarded by the presence of an underlying peak should therefore not be included; whatever the method of analysis, uncertainties in the critical frequency of this unseen peak will decrease the overall reliability. X-ray data at low frequencies can also be unreliable because of errors in the assumed value of the gyrofrequency.

A large amount of ionisation with FN just less than fmin causes h'x, in particular, to become very large at the lowest observed frequencies. Several different approaches could be adopted to the scaling of such records.

(a) Use normal procedures, scaling at a frequency interval of about 0.1 MHz from fmin.

(b) Include additional values of h'x to define the variation near fmin more accurately.

(c) Use smaller frequency intervals Δf for both O and X rays, to define the initial retarded traces accurately.

(d) Use increased values of Δf so that results depend more on the overall shape of the virtual height curves, and less on the detailed variation of retardation at low frequencies.

(e) Omit the initial, highly-retarded values of h'x, which depend primarily on the parameters of the underlying peak. Retain all O-ray data, since this is less affected by underlying retardation and relates more directly to the real-height gradients near reflection.

(f) Retain low frequency X-ray data, which is more directly related to the unseen ionisation, but omit the O-ray data which contains a mixture of underlying and reflection-gradient effects.

(g) Omit initial sections of both O and X traces.

The test model 3B of Fig. 11, analysed from fmin = 1.0, provides a realistic example of the most difficult type of profile. The relative contributions to h'o and h'x of different parts of an underlying profile change appreciably from low to high dip angles (Appendix B.1). Calculations using model 3B at dip angles of 20° and 70° therefore provide a reasonable basis for comparing the overall merits of different scaling procedures.

Figure 14 shows the virtual-height curves for model 3B, at the two dip angles, on a logarithmic frequency scale from 0.9 to 2.7 MHz. Points corresponding to virtual-height gradients of 100, 200 and 500 km/MHz are labelled. Broken lines show the values of h'x plotted against the plasma frequency at reflection (FR). 42 different sets of accurate virtual-height data were calculated from model 3B, corresponding to different scaling rules. Each set was analysed by the normal Mode 5 slab start in POLAN, using five O-ray points. Thus the check in POLAN which includes additional points if the fitted range is less than 0.4 MHz (Section 8.2.2) was disabled to show directly the effects of changing f. The physical conditions of Section 8.4.1 were also omitted. Conclusions from different groupings of the calculations are summarised in (i) to (iv) below.

(i) For the first group of results FRmin was constant at 1.0 MHz, and a different (fixed) value of Δf was used for each calculation. The real-height errors Dh vary smoothly above 1.0 MHz. Results are summarised in Table 7 in the form Dh2 (DEVN), where Dh2 is the real-height error at 2.0 MHz and DEVN is the RMS error with which the virtual-height data is fitted.

The real-height errors increase considerably at small and large values of Δf, and are a minimum near Δf = 0.1 MHz. The sign of the errors changes from 20° to 70° because of the dip angle variations discussed in Appendix B.1. DEVN also has a minimum, giving the most stable and accurately-defined solution, for intervals near 0.1 MHz. At the smallest frequency intervals DEVN tends to zero since the length of the fitted profile segment tends to zero, and accuracy degenerates to that of a one-point fit; thus Dh increases, even although DEVN is small, when Δf gets too small. A frequency interval Δf of about 0.1 MHz therefore appears optimum, when a fixed number of points (5 for each ray) is scaled from the lowest observed frequencies. Even with precise data, errors increase if we use small scaling intervals to define accurately a small section of the highly retarded trace near fmin. With practical data the errors will increase even more. Use of a large fitting range gives too large a mixture of underlying retardation and reflection gradient variations, and accuracy is again reduced. These considerations rule out approaches (c) and (d) above.

**TABLE 7.** Real-height errors Dh2, and the RMS virtual-height fitting errors (DEVN) using a fixed minimum plasma frequency of 1.0 MHz for both O and X rays.

| Scaling Interval Δf | .05 | .07 | .10 | .14 | .20 |
|---------------------|-----|-----|-----|-----|-----|
| DIP 20: Dh2 (DEVN)  | +.90 (.03) | -.29 (.04) | +.23 (.01) | -.29 (.02) | -.46 (.06) |
| DIP 70: Dh2 (DEVN)  | -4.4 (.04) | 1.23 (.23) | -.13 (.07) | 2.54 (.22) | 5.49 (.42) |

47
Figure 14. Virtual heights for the ordinary and extraordinary rays, calculated using the model profile 3B, at dip angles of 20° and 70°.

(ii) The second group of calculations used a few closely spaced points near FRmin, with Δf = 0.1 MHz at higher frequencies. This scaling attempts to maintain approximately constant virtual-height changes between data points, giving both adequate detail in the retarded sections and a reasonable overall frequency range. Results show an overall increase in both DEVN and Dh as additional points are added, at FRmin = 1.0 and at FRmin = 1.2. Thus approach (b) above does not help.

(iii) Omitting the largest virtual height (the X-ray point at FR = 1 MHz) gives good results at dip 20°, and bad at dip 70°. Increasing FRmin to 1.1 MHz for both O and X rays gives results which are less dependent on Δf. Omission of the next X-ray point, at FR = 1.1 MHz, makes things worse again. Thus approach (e) above, where only the largest (X-ray) virtual heights are omitted, is incorrect.

(iv) Increasing the minimum scaled frequency for both O and X rays, and retaining a constant frequency interval Δf of 0.1 MHz, gives the results summarised in Table 8. With FRmin = 0.9 we see clearly the bad effect of including a greatly retarded trace (which would not normally be visible). Increasing FRmin above 1.0 MHz gives a general increase in accuracy at dip 20°, and little overall change at 70°. The virtual-height fitting error DEVN does, however, decrease considerably at both dip angles. This indicates a well-defined, stable solution which is not sensitive to changes in Δf.

It should be noted that, with accurate data and an accurate analysis procedure, there is NO loss of real-height accuracy (in the observed region) for values of FRmin up to 1.5 MHz. At higher frequencies, however, the difference between the group retardations of the O and X components decreases and results are limited by experimental errors in h'x - h'o.

TABLE 8. Real-height errors Dh at 2.0 MHz, and the virtual-height fitting errors (DEVN, in brackets) for calculations using different minimum plasma frequencies FRmin, with Δf = 0.1 MHz.

| FRmin | 0.9 | 1.0 | 1.1 | 1.2 | 1.5 | 2.0 |
|-------|-----|-----|-----|-----|-----|-----|
| DIP 20: | 3.11 (20) | .23 (.01) | -.08 (.01) | -.22 (.00) | .00 (.00) | .07 (.00) km |
| DIP 70: | -3.49 (.59) | -.13 (.07) | 1.18 (.02) | .81 (.02) | .54 (.01) | -.80 (.01) km |
We conclude that low-frequency points should be omitted when (and only when) they show retardation effects increasing rapidly towards low frequencies. Scaling rules are of importance primarily with difficult data - of which the model 3B analysed above is a good example. For this model, virtual-height data are best omitted at frequencies below about 1.3 MHz. The curves of Fig. 14 show a gradient \( \frac{dh'}{dFN} \) of -200 km/MHz for the X ray at this frequency, at both dip angles. This gradient is therefore adopted as defining the lowest frequency at which X-ray data should be scaled. Gradients are generally less for the O ray. O-ray data should, nevertheless, not be scaled to appreciably lower plasma frequencies than the X-ray data. This has been shown in the discussion under (iii) above, and is also seen in other results. Using \( FR_{\text{min}} = 1.2 \) MHz for the X ray, addition of an O-ray data point at 1.1 MHz increases the errors by a factor of 1.7 at dip 20° and a factor of 6.9 at dip 70°.

### 8.6 Other Start Procedures

#### 8.6.1 The polynomial start in POLAN

A simple procedure for including ionisation with \( FN < f_{\text{min}} \) is to start the first real-height polynomial from some frequency \( f_S \) (typically about 0.5 MHz) which is well below \( f_{\text{min}} \). No other changes in the normal analysis of Section 5 are required, apart from the addition of a constant term to equation (9) to allow calculation of the starting height \( h_S \) at the frequency \( f_S \). The result is a single analytic expression describing the ionisation from \( FN = f_S \) up to the highest frequency FM used in the start calculation. This procedure is requested by using a negative value for the parameter START in POLAN. The absolute value of START specifies the mean field height, as described in Appendix C.5.

The broken lines in Fig. 15 show the real heights obtained by the polynomial start procedure with \( f_S = 0.5 \) MHz and \( f_{\text{min}} \) equal to the common value of 1.5 MHz. In the observed region (\( FN > f_{\text{min}} \)) the accuracy is good. In the unobserved range the calculated polynomial cannot be expected to follow the true profile closely. It does, however, give approximately correct values for the total amount of underlying ionisation and for the gradient at \( f_{\text{min}} \). As has been shown (Section 8.1) these two quantities contain all that can normally be determined about the underlying ionisation.

![Figure 15](image)

**Figure 15.** Polynomial start results for two model profiles. The virtual heights \( h'_o \) and \( h'_x \) are plotted as a function of the plasma frequency at reflection, for a dip angle \( I \) of 20°. Real heights calculated from \( f_{\text{min}} = 1.0, 1.5 \) and 2.0 MHz are shown as circles, broken lines and triangles respectively. Corresponding results at \( I = 70° \) are shown by solid dots, continuous lines and solid triangles.
Circles and triangles are used in Fig. 15 to show the virtual-height data used, and the calculated real heights, for values of fmin equal to 1.0 and 2.0 MHz respectively. Data points are used at a fixed interval of 0.1 MHz in FN. The RMS errors with which the calculated start polynomials fit the virtual-height data, and the real-height errors at 3 fixed frequencies, are given in Table 9 using three values of fmin for each model. At a dip angle of 20°, 5 of the 6 calculated profiles are accurate to within 0.1 km at frequencies above 1.5 MHz, and match the given virtual height data to within a few metres. At 70° dip angle the real-height errors increase to about 0.5 km - again with the exception of model 3B analysed from 1.0 MHz.

Table 9 shows that in all cases the accuracy at a given frequency increases as fmin is increased, from 1.0 to 1.5 to 2.0 MHz. This occurs because the assumption of a simple distribution for the underlying ionisation, with no large fluctuations in gradient at 0.7fmin < FN < fmin, becomes progressively more accurate. The one unacceptable result is the high dip angle analysis of model 3B from fmin = 1.0 MHz. In this case the underlying ionisation has a broad peak with FN exceeding 0.8fmin. This violates the basic assumption that the underlying ionisation can be represented by a smooth variation of dh/dFN at FN > 0.7fmin. The single-polynomial representation is unable to produce the sharp corner required, just below fmin, to match the test profile. The occurrence of this condition is clearly signaled by the rapid increase of the X-ray virtual height near fmin, showing that a higher value of fmin should be used (Section 8.5.2).

The polynomial start provides a single analytic expression extending from the beginning of the real-height profile, at \((h_S, f_S)\), to above fmin. It gives reliable results with good accuracy under most conditions, and reasonable results under all conditions (when physical constraints are applied, as in Section 8.4, to avoid implausible results due to bad data). However, as shown in Section 8.1, not more than two (or occasionally three) independent parameters relating to the underlying ionisation can normally be found. So for reliable and consistent results it is preferable to use only two or three variables below fmin. A polynomial start used with the normal mode 5 analysis in POLAN fits an 8-term polynomial to 5 O-ray and 5 X-ray data points. The effective number of free parameters below fmin is difficult to define, and does not appear constant. Calculated profiles suggest up to 4 effective variables in this region on occasion. The slab start model is therefore the preferred procedure in POLAN. However, the continuously varying gradient of the polynomial start is desirable for some work. In this case the parameter START in POLAN is made negative (less than -1.0). For \(1.0 < (-\text{START}) \leq 3.0\), the calculated start profile is of the form illustrated in Fig. 15 with \(f_S = (-\text{START})-1\) MHz and an additional real height calculated at a frequency of \(0.5(f_S + f_{\text{min}})\). If the value of START is less than -3.0, POLAN uses a polynomial start from the frequency \(f_S\) used for the normal O-ray start.

### TABLE 9. Polynomial start results. The RMS deviation in the virtual-height fitting error (DEVN), and the calculated real-height errors at 1.5, 2.0 and 2.5 MHz, resulting from analysis of the two test profiles using \(f_S = 0.5\) MHz.

| MODEL | fmin | Errors at 20° dip angle | Errors at 70° dip angle |
|-------|------|-------------------------|-------------------------|
|       |      | DEVN | 1.5 | 2.0 | 2.5 | DEVN | 1.5 | 2.0 | 2.5 | MHz |
| 3A    | 1.0 MHz | 0.01 | 0.12 | 0.10 | 0.08 | 0.03 | -1.01 | -0.68 | -0.51 | km |
|       | 1.5   | 0.00 | 0.05 | 0.06 | 0.03 | 0.00 | -0.46 | -0.30 | -0.23 |
|       | 2.0   | 0.00 | 0.01 | 0.03 | 0.04 | 0.00 | -0.21 | -0.18 | -0.13 |
| 3B    | 1.0 MHz | 0.04 | -0.75 | -0.77 | -0.69 | 0.40 | 9.58 | 6.34 | 4.64 | km |
|       | 1.5   | 0.00 | -0.02 | -0.05 | -0.04 | 0.00 | 0.79 | 0.52 | 0.32 |
|       | 2.0   | 0.00 | -0.15 | 0.03 | 0.04 | 0.00 | -0.38 | -0.16 | -0.11 |

#### 8.6.2 The single-point starting correction in SPOLAN

The ordinary ray analysis (Section 6) uses an artificial starting point \((h_S, f_S)\), at a frequency \(f_S\) which is nominally 0.5 MHz but constrained to lie between 0.35 and 0.6 times fmin. The calculated profile then includes enough of the "low-density" region at \(FN < 0.7fmin\) to represent adequately any reasonable amount of low-density ionisation. When only O rays are available, the starting height \(h_S\) is obtained from synoptic models. A single X-ray measurement may however be used to determine \(h_S\) such that an approximately correct allowance is made for both the total amount of underlying ionisation and the ionisation gradient near fmin (Titheridge, 1975b).
The single-point correction is invoked in SPOLAN by providing \((h'_x, -f_x)\) as the first point in the input data. The negative frequency is used to denote an X-ray measurement. SPOLAN then calculates the starting height \(h_S\) and sets \((h_S, f_S)\) as the first data point. This is followed by an additional point \((h'_o, f_o)\), where \(f_o = 1/2(f_S + f_{min})\) and \(h'_o = h'_{min}\). The correct value of \(h_S\) is obtained from the relation

\[
h_S = h'_{min} - C.(FH/f_S)(h'_x - h'_{min})
\]

where

\[
C = A + B \cos (0.041I - 0.25)
\]

\[
A = -0.265 + 0.19(f_{min}/FH) + 1.08(f_{min}/FH)^2
\]

\[
B = 1.40 - 2.80(f_{min}/FH) + 1.47(f_{min}/FH)^2
\]

and the dip angle \(I\) is in degrees.

When group retardation near \(f_{min}\) is caused primarily by low-density ionisation, \(h'_x\) does not vary rapidly with frequency and the precise value of \(f_x\) is not important. To allow in addition for gradients near \(f_{min}\), the value of \(f_x\) must correspond to a plasma frequency \(FN_x = f_{min} + DF\) where the value of \(DF\) is obtained from Table 10. For given values of \(FH\) and \(I\), this Table is used to determine \(DF\) as a function of \(f_{min}\). The frequencies \(f_x\) at which \(h'_x\) is scaled are then determined from the normal relation

\[
f_x = (FN^2 + FH^2/4)^{0.5} + FH/2
\]

where

\[
FN = f_{min} + DF.
\]

For best accuracy the above correspondence between \(f_x\) and \(f_{min}\) should be maintained. This is generally straightforward since night-time X-ray traces commonly extend to a lower plasma frequency (although a higher wave frequency) than for the O-ray. When an X trace does not continue down to the desired scaling frequency \(f_x\), we may (i) extrapolate the observed trace down to \(f_x\), or (ii) scale the lowest observed frequency, as \(f_x\), and commence O-ray scalings from the corresponding value of \(f_{min}\).

Procedure (i) is appropriate when the X trace varies smoothly and the extrapolation required is not unreasonable. When \(h'_x\) is beginning to increase rapidly at the lowest frequencies, approach (ii) should be used. In many cases a compromise is adopted: \(h'_x\) is extrapolated as far as seems safe, and O rays are scaled from the corresponding value of \(f_{min}\) given (in accordance with (30)) by

\[
f_{min} = (f_x(f_x - FH))^2 - DF.
\]

When \(h'_x\) begins to increase rapidly at low frequencies, and disappears (through absorption) before reaching the value of \(f_x\) required by (30), some available O-ray data are ignored. However, it is shown in Section 8.5.2 that scaling of virtual heights which are strongly affected by the presence of an underlying peak does not increase the accuracy of calculated real heights in the observed range.

Calculated real heights with and without the single-point correction are shown by the lower and upper dotted lines in Fig. 16. In the unobserved region at \(FN < f_{min}\) the corrected profile may bear little resemblance to the true variation. The total electron content of this region is reproduced reasonably well, however, so that the F layer heights are obtained with good accuracy. Note that while the upper curves in Fig. 16 show the complete virtual-height traces for the X ray (plotted as a function of the plasma frequency at reflection), only the single value marked by a cross is used in the analysis. The calculated profile continues smoothly below \(f_{min}\), with a monotonically increasing gradient, down to the starting frequency \(f_S\). The result has approximately the correct values for the total electron content and for the gradient near \(f_{min}\), and agrees exactly with all the given O-ray data and with the single X-ray measurement.

**TABLE 10.** The frequency shift \(DF/FH\) required to determine the extraordinary ray frequency \(f_x\) in equation (30).

| Dip angle \(I\) | 5   | 20  | 30  | 40  | 50  | 60  | 70  | 80° |
|-----------------|-----|-----|-----|-----|-----|-----|-----|-----|
| \(f_{min} = FH\) | -0.032 | -0.026 | -0.013 | 0.020 | 0.077 | 0.162 | 0.256 | 0.355 |
| \(f_{min} = (7/6)FH\) | -0.078 | -0.054 | -0.016 | 0.048 | 0.134 | 0.233 | 0.329 | 0.401 |
| \(f_{min} = (8/6)FH\) | -0.115 | -0.075 | -0.016 | 0.071 | 0.174 | 0.281 | 0.379 | 0.444 |
| \(f_{min} = (9/6)FH\) | -0.145 | -0.088 | -0.011 | 0.092 | 0.205 | 0.317 | 0.413 | 0.480 |
Figure 16. Analysis of the two basic types of start profile, at a dip angle of 70°. Upper dotted lines show the result of a direct O-ray analysis from $f_{\text{min}} = FH = 1.2$ MHz. The lower dotted lines are obtained using the single-point procedure in SPOLAN, with a starting frequency $f_S$ of 0.6 MHz.
9. VALLEY CALCULATIONS USING EXTRAORDINARY RAY DATA

9.1 Introduction

Cusp type discontinuities on an ionogram are normally caused by a peak or local maximum in the electron-density profile. Reflections are not obtained from the region of decreased density above a peak, so that there is an unobserved region (called a valley) between observed ionospheric layers. The width of the valley is the height range over which the plasma frequency is less than the value at the underlying peak. The valley depth gives a measure of the amount by which the plasma frequency in the valley is less than the peak value. For accurate calculations of the real heights at higher frequencies we need to know the width and depth of the valley, and (when the valley depth is not small) the approximate shape of the profile in the valley region. There is no analytic procedure which can obtain this information from a single $h'(f)$ trace. When only ordinary ray data are available we must therefore use some model for the valley region, as discussed in Section 7.

When both ordinary and extraordinary ray data are available at frequencies slightly above the critical frequency of the lower layer, some information about the valley can be obtained from an ionogram. In theory, and neglecting the variation of gyrofrequency with height, corresponding sections of the two traces (i.e. sections corresponding to the same range of plasma frequencies at reflection) can be used to determine exactly the effect of the valley. Such an exact solution would give the true heights for the upper layer, and all moments of the ionisation in the valley. In practice, however, only one or two valley parameters can be determined. This is similar to the problem in defining the underlying ionisation at the start of an analysis, as discussed in Section 8.1. Additional problems appear at dip angles near 30°, where only a single parameter can be determined, and at dip angles near 35° where practical X-ray calculations become almost impossible (Appendix B.2).

With the accuracy of current ionosondes only one parameter can normally be determined (Lobb and Titheridge, 1977a). Attempts to determine additional parameters do not yield any increase in accuracy and have two undesirable consequences.

(1) Using a given amount of data, additional valley information is obtained basically by placing additional constraints on the observed part of the profile. This generally gives a less satisfactory solution, with an unphysical valley distribution and (if the total number of parameters being determined is held constant) an increase in the RMS error with which the virtual heights are fitted.

(2) Too much flexibility in the unobserved (and therefore ill-defined) valley region leads to less stability in the solution. Small changes in any of the data points, changes in the number of data points used in the valley solution, or changes in the total number of parameters determined, can then cause large variations in the calculated real heights in the observed region.

Both effects have been demonstrated in Section 8 when considering the starting problem; use of the two-parameter slab start in place of the more flexible polynomial start gives an improvement in the accuracy with which the virtual heights are fitted, and halves the variation in the calculated heights between different modes of analysis. In valley calculations using practical ionograms, different assumptions about the valley shape give calculated widths varying by about 15% (Titheridge, 1959b and later calculations). Errors in the calculated F-region heights are a similar percentage of the uncorrected error. Thus only a one-parameter valley calculation is normally feasible, and this reduces the errors in calculated F-layer heights by a factor of about 5. For most work, optimum accuracy and reliability are achieved by the use of a fixed but reasonably sophisticated model for the valley shape.

The parameter of most importance in valley calculations is the width of the valley. This should therefore be the single parameter which is determined. For optimum results the valley model should define reasonable values for other parameters which affect the overall group retardation; these are the curvature above the peak of the lower layer, the mean electron density in the valley, and the electron density gradient at the upper edge of the valley. The profile obtained will then be physically reasonable in all important aspects. The one-parameter analysis selects one of a single family of valleys, of similar shape but differing in width. This family is based on the "Standard Valley" used in ordinary-ray analysis and described in Section 7.2. A wide range of different forms for the valley region can be obtained, if required for particular studies, by suitable choice of the input parameter VALLEY as described in Section 10.2.

Calculations using a single polynomial representation for the upper part of the valley and the lower part of the F layer give more variable results, because of the greater variability which is possible in the unobserved valley region. The same problem arises if the valley region is represented by a number of parabolic sections of arbitrary gradient and curvature (as in Howe and McKinnis, 1967);
this gives physically impossible valley distributions in most cases, with unacceptable errors in the calculated real heights at higher frequencies. At the other extreme use of a simple triangular valley (as in the simplified program SPOLAN) is found to give good results under most conditions but, since it does not provide a realistic amount of group retardation, is less accurate if virtual-height data are used at frequencies within about 0.05 MHz of the critical frequency of the lower layer.

9.2 The Normal Analysis - Calculation of Valley Width.

The model adopted for the valley shape is shown in Fig. 17. For a given valley depth the real-height profile in the valley region is defined by three sections:

(i) A parabolic section extending from the peak of the lower layer to the depth VDEPTH. This section has a scale height 40% greater than that calculated from the virtual-height data for the lower layer. The parabolic section covers a height interval PARHT which depends only on VDEPTH and the scale height (as described in Section 7.2).

(ii) A slab of ionisation with a constant plasma frequency FC-VDEPTH extending over a height range 0.6q(JM), where q(JM) = VWIDTH - PARHT.

(iii) A section in which the electron density increases linearly with height (and FN increases from FC-VDEPTH to FC) in a distance 0.4q(JM).

For an E layer with HMAX = 120 km, the standard valley used in the absence of X-ray data has an overall width of 20 km and a depth of 0.08 MHz. This is described in Section 7, and shown by the thick line in Fig. 17. For wider valleys the depth is increased to maintain a reasonable shape for the valley region. At small values of VWIDTH the depth is varied as (VWIDTH)^2, while for larger widths the depth becomes proportional to width (as described in Section 7.2). This gives acceptable values for both the mean depth and the gradient dFN/dh at the top of the valley, and provides a single family of standard valleys as shown in Fig. 17.

Figure 17. The shape of the standard valley, for different values of the single parameter VWIDTH. The dotted line shows a possible form for the true variation of plasma frequency with height in an E-F valley; this will give (very closely) the same virtual heights as the solid line model. A to D show the four points which are added to the calculated real height data, to define the valley region.
The models in Fig. 17 are a reasonable match to the valleys obtained by superposing two Chapman layers, and give similar gradients at the top of the valley. The valley depths are slightly less than those obtained with superposed Chapman layers; however the Chapman models allow for only two distinct production mechanisms with no other ionisation sources acting between the layers. Back-scatter measurements suggest that the valley profile is rarely a simple curve with a single minimum, and may generally be closer to the flat-bottomed shape given by the continuous lines in Fig. 17.

A least-squares calculation of valley width is possible only if the valley depth VDEPTH is first specified. An iterative procedure is therefore required, to maintain the fixed relation between valley depth and valley width. Calculations start by assuming VWIDTH = HMAX/2-40 km, where HMAX is the height of the underlying peak (as in Section 7.2). The corresponding depth is obtained from

\[ VDEPTH = 0.008 \times \frac{VWIDTH^2}{(20 + VWIDTH)} \text{ MHz} \]  

followed by

\[ VDEPTH = VDEPTH.FC/(VDEPTH + FC) \]

to ensure that the depth remains less than the critical frequency FC of the lower layer. Polynomial coefficients can then be calculated, and a least-squares analysis used to determine the value of VWIDTH which gives the best fit to the ordinary and extraordinary ray virtual-height data. A revised estimate of the depth is then obtained from the above relations, and the analysis repeated to obtain a new value of VWIDTH. Virtual heights depend primarily on the width of the valley, so the calculated width changes by only about 10% (in a typical case) for an increase of four times in the assumed depth. Thus a third calculation, after a second adjustment of the valley depth using (14), is sufficiently accurate to be used as the final result.

At each stage of the calculation the RMS fitting error, between the given virtual-height data and the virtual heights corresponding to the calculated profile, is obtained. If in the second or third calculation this error shows a significant increase, the previous calculation is adopted as the correct answer. This check will, for instance, prevent the valley depth from being increased above 0.05 MHz when analysing data corresponding to a wide but abnormally shallow valley. A "significant" increase in the error parameter DEVN is currently defined in POLAN to be an increase of more than 10%. Smaller increases commonly result from inaccuracies in the data, and do not provide a sufficiently clear indication to justify departures from the normal valley shape.

For each assumed depth, the calculation of valley width proceeds as follows. The real-height profile for the bottom of the upper layer is defined by a polynomial which includes a constant term, giving

\[ h - HA = \sum_{j=1}^{NT} q(j) \cdot (FN-FA)^j + q(JM) \quad \text{where} \quad JM = NT+1. \]

The origin for this polynomial is at FA = FC and HA = HMAX+PARHT. The virtual-height equations of Section 4.2 then become

\[ h''(k+i) - HA = \sum_{j=1}^{JM} q(j) \cdot B(i,j) \]

where \( B(i,JM) \) gives the delay for a valley section (B to D in Fig. 17) of unit thickness. The least-squares solution of these equations, which include both ordinary and extraordinary ray frequencies, gives (i) the normal parameters \( q(1) \) to \( q(NT) \), which define the polynomial section at FN > FC, and (ii) the value of \( q(JM) \) which raises the starting height of the polynomial.

Results obtained depend sensitively on the value of the gyrofrequency FB used in the calculation, since this affects not only the values of \( \mu' \) but also the plasma densities at which the extraordinary rays are reflected. For calculating the delay in the valley region, the gyrofrequency at the height HMAX is used. If NX is the number of X-ray virtual heights employed in the analysis, the gyrofrequency used when integrating \( \mu' \) over the upper polynomial section corresponds to the height of reflection of the ray number \( 1 + NX/3 \). This height FHHT is the height of reflection of the first X-ray if NX = 1 or 2, the second X-ray for NX = 3, 4 or 5, and so on. The correct value of FHHT is not known at the start, so calculation of the coefficients \( B(i,j) \), the parameters \( q_j \) and the height of reflection FHHT is iterated until FHHT changes by less than 2 km. (The maximum allowed change is set by the parameter HXERR in a DATA statement in the subroutine STAVAL.)
9.3 Calculation of Valley Width and Depth

With accurate virtual-height data and a reasonable model for the shape of the valley region, it is sometimes possible to obtain more accurate results by determining two parameters for the valley region. In all numerical tests using exact model ionograms, a two-parameter analysis as described below is feasible and yields results of good accuracy. If typical experimental errors are introduced, however, the usefulness of a two-parameter analysis becomes doubtful. This problem has been discussed elsewhere (Lobb and Titheridge, 1977a) where it is shown, for example, that an error of 1% in the estimated value of the critical frequency of the lower layer makes determination of a second valley parameter unreliable. In such cases it is better to use the one-parameter analysis, determining only the valley width and assuming some physically reasonable shape for the valley. Attempts to determine two valley parameters from inexact data generally gives less accurate results, for both the valley region and the height of the upper layer, than use of a single-parameter analysis. This confirms the general philosophy of Section 8.1, adopted in POLAN, that the number of parameters used to represent the unobserved regions of the ionosphere should be kept to a minimum.

The least-squares valley calculation used in POLAN provides directly the RMS error $DEVN$ between the given virtual-height data and the virtual heights corresponding to the calculated profile. In most practical work the one-parameter valley calculation of Section 9.2 yields values of $DEVN$ which are less than the experimental error in the virtual heights. The resulting profile then fits the observations to within experimental error and no further information can be obtained. In some cases, however, using carefully selected ionograms and careful scaling, the values of $DEVN$ may be greater than the expected experimental error. This suggests that the actual valley shape departs significantly from the one-parameter model. Increased accuracy in the calculated real heights, and additional information about the valley, may then be obtainable. For this purpose an iteration with different valley depths can be used to minimize $DEVN$ and obtain a second valley parameter. The procedure described below appears to be about optimum for obtaining two independent parameters, since the valley model incorporates no unnecessary features and so maintains a physically reasonable shape at all times. It should be emphasized, however, that this analysis is recommended only for specific studies of carefully selected ionograms. Routine determination of two parameters will not be possible until ionograms give a meaningful accuracy of better than about 0.05% in frequency and 0.5 km in height. A discussion of typical errors with current ionosondes is given by Koehler and McNamara (1975).

A parameter VALLEY is included in the call to the N(h) analysis subroutine POLAN. This is zero or one for a normal analysis. Other values can be used to redefine the standard valley inserted in an ordinary ray analysis (Section 7.4), and the shape of the valley used in a one-parameter valley analysis. If POLAN is called with VALLEY = -1.0, and adequate X-ray data are provided, the valley width and depth are determined independently. For each value of VWIDTH there is a family of allowed valleys, as shown in Fig. 18. Independent calculation of the two parameters VWIDTH and VDEPTH involves the following steps.

(a) The valley depth VDEPTH is set equal to 0.1001 MHz. The real and virtual height coefficients (Section 4.2) are then calculated by the subroutine COEFIC, and the corresponding real-height coefficients obtained by the subroutine SOLVE. Keeping the same value of VDEPTH this solution is iterated (as described in Section 9.2) until the height FHHT used to define the gyrofrequency near reflection changes by less than 2 km.

(b) The calculations in (a) are repeated using VDEPTH = 0.6006 MHz. (Odd values of depth are used so that these preliminary cycles can be clearly identified within POLAN).

(c) Results from (a) and (b) are compared, and valley depth iteration begins from whichever value of VDEPTH gave the best fit to the virtual-height data (i.e. the smallest value for the RMS fit error $DEVN$). This preliminary selection of a starting point for the iteration of VDEPTH is used to avoid spurious minima in $DEVN$, as discussed in Section 9.4 below.

(d) The valley depth VDEPTH is multiplied by a factor DVAL = 1.0 + 0.5 cos(0.86DIP). This changes the depth by a factor of 1.5 at low latitudes, dropping to 1.2 at high latitudes where the minima in $DEVN$ are narrower. Calling of COEFIC and SOLVE then gives new values for the valley width VWIDTH and the fitting error $DEVN$. If $DEVN$ is increased compared with the previous calculation then the values of VWIDTH and $DEVN$ from steps (c) and (d) are exchanged, and DVAL is replaced by 1/DVAL so that the depth will decrease on successive iterations.

(e) VDEPTH is multiplied by DVAL and the analysis repeated to give new values of VWIDTH and of $DEVN$. This step is repeated until $DEVN$ stops decreasing (or decreases by less than 3% between successive steps; possibly because of a broad, ill-defined minimum).

(f) At this stage we use the last three values of VDEPTH, which differ by the factor DVAL, and the corresponding values of $DEVN$. Second difference interpolation is applied to these results to determine the exact depth for which the error would be a minimum. If $DEVN$ had begun to increase, this minimum will be in the range of the last three values of VDEPTH. If the bracketed condition in (e)
Figure 18. Variations in the model valley, obtained by changing the valley depth VDEPTH at a fixed value of valley width. The heavy line shows the "standard" relation between depth and width, as assumed in the one-parameter analysis of Section 9.2.

Figure 19. Three of the many profiles used to investigate valley calculation procedures. V2 and V5 correspond to the valley profiles 2 and 5 used in the URSI tests (and described in McNamara and Titheridge, 1977). Profile 4BWIDE originated as overlapping Chapman layers, giving a 20-km wide valley with a depth of 0.055 MHz. Four slabs of constant density were then added at the bottom of the valley; each slab covered a height range of 5 km and the plasma frequencies were 0.04, 0.08, 0.10 and 0.15 MHz less than the E-layer critical frequency (foE = 3.53 MHz).
had been employed, however, the minimum may be outside this range; it is not allowed to extend more than an additional factor of DVAL.5. When the depth corresponding to minimum DEVN is determined, one further calculation gives the final values for the width of the valley and the RMS fitting error.

At each stage the width and depth of the valley, the value of DEVN and the number of terms and frequencies used in the analysis are listed. The total number of iterations (including the inner loop which is used at each step to reach a correct value of FHHT) is also counted and listed; if this count reaches 25 the iteration is abandoned. At the completion of the valley calculation the points A to D in Fig. 17 are added to the real-height array, followed by the real heights for the upper layer.

Checks similar to those described in Section 7.3.3 are applied to ensure that a physically reasonable result is obtained. The first check is carried out at each step, to ensure that the gradient of the polynomial section (from D in Fig. 17) is greater than 2.0 km/MHz. If a bad value occurs, the weight given to the X-ray data is reduced (by a factor of 4) and the analysis repeated. If the profile gradient is still too small the solution is modified by reducing the offset term q(JM); this lowers the starting point (D in Fig. 17) for the real-height polynomial. With some types of contradictory O and X data this can fail to increase the gradient at higher frequencies; the message "DATA AND GYROFREQUENCY INCOMPATIBLE AT F = xx.xx" is then printed, and no further valley iterations are attempted.

If the distance q(JM) is less than PARHT/2 (Fig.17) the weight given to the X-ray data is decreased, the value of VDEPTH is halved, and a new solution is obtained. Halving of VDEPTH and recalculation of q(JM) is repeated until q(JM) > PARHT/2. This ensures a physically reasonable shape for the final valley region. The variations obtained as the depth of the valley changes, at a fixed value of valley width, are shown in Fig. 18.

9.4 Results With Test Model Ionograms

In the absence of X-ray data, POLAN inserts a defined "standard valley" between successive ionospheric layers. The size and depth of this valley depend on the height of the underlying peak, as described in Section 7.2. When X-ray data are provided (and the parameter VALLEY is zero or one) a valley is selected from the family shown in Fig. 17. Selection is done essentially by determining the width that gives the smallest RMS deviation (DEVN) between the given virtual-height data and virtual heights corresponding to the calculated profile. To calculate the width we must assume some value for the valley depth. Results are iterated, adjusting the depth to maintain the standard relation between valley depth and width, to obtain a final result of the type shown in Fig. 17.

Errors in the resulting profile, due to differences between the true and assumed shape of the valley region, can be estimated by repeating the calculations for different (fixed) values of valley depth. Calculations of this type have been carried out for a wide range of different valley profiles. Fig. 19 shows three of the profiles used, for which results are described below. Profile V2 gives a smooth analytic variation obtained with two overlapping Chapman layers. The valley region in V5 contains much irregular structure, corresponding to variations measured on one occasion by the Arecibo backscatter sounder. 4BWIDE represents a particularly difficult type of profile; the wide, shallow valley contains large, semi-random variations in density, and above the valley region the profile gradient changes rapidly.

All calculations described in this section were carried out without including any of the "physical constraints" described in Section 7.3, so the results shown represent a purely mathematical solution to the valley problem. The physical constraints, normally included in the set of least-squares equations solved by POLAN, affect the results to a varying degree. With good data, and dip angles not near 30°, there is a sharp minimum in the variation of virtual-height fitting error with valley depth (as at dip = 75° in Fig. 22(a)). This gives a well-defined solution for the valley region. Inclusion of the physical constraints then increases the RMS fitting error but produces little change in the calculated profile. Where the virtual-height error varies only slowly with the assumed shape of the valley (as at dip = 30° in Fig. 22(a)) the data do not give a clearly-defined valley. Inclusion of the physical constraints then gives a profile which tends towards the "standard" values of depth and width, since this change produces little increase in the virtual-height fitting error.

Figure 20 summarises the results of analysing accurate virtual-height data calculated from profile V2, at 41 different dip angles. A frequency interval of 0.05 MHz was used above the critical frequency of the lower layer (at foE = 4.05 MHz). The full iterative 2-parameter analysis of Section 9.3 was applied to determine valley width and depth independently, for two different modes of POLAN. Results fit the virtual-height data to within about 0.01 km (Fig. 20b) so that use of a more sophisticated valley model, corresponding to the introduction of a third valley parameter, can not be justified. The calculated real heights just above the valley are about 0.2 to 0.7 km too large (Fig.
Figure 20. Results from two-parameter valley calculations using accurate virtual-height data corresponding to profile V2. o and + show the results obtained using two different modes (5 and 6) in POLAN.

(a) The calculated height above the valley, at a plasma frequency $F_N = f_{oE} + 0.15$ MHz.

(b) The accuracy with which the calculated profile fits the virtual-height data.

Figure 21. Analysis of the virtual-height data from profile V2, which has an effective valley depth of about 0.04 MHz. Results shown were calculated using fixed valley depths of 0.025 MHz (solid lines and dots), and 0.1 MHz (broken lines and circles). The discontinuity at 63° dip is due to the change in POLAN to a double-integration procedure at high dip angles (as discussed in Appendix B.3).
This represents the achievable limit of accuracy in valley calculations. At higher frequencies the errors decrease smoothly, approximately as $1/f^2$, as shown in Fig. 9 of Section 7.4.

Results for a one-parameter calculation of valley width only, assuming a fixed value of valley depth, are shown in Fig. 21. Solid lines and dots are the results obtained assuming a valley depth of 0.025 MHz - about half the true value - while broken lines and circles are for an assumed valley depth of 0.1 MHz. For one-parameter calculations the results obtained from modes 5 and 6 of POLAN are very similar, and Fig. 21 gives the mean values from both modes. Calculations were repeated for 47 different dip angles, plotted individually in Fig. 21(c), to define adequately the fluctuations near dip 34° and at high dip angles.

The virtual-height fitting errors are considerably greater in Fig. 21(c) than in Fig. 20(b). The increase is by a factor of about 30 at high dip angles, where the RMS deviation varies rapidly with the assumed valley depth (as shown in Fig. 22 below). The mean virtual-height error in Fig. 21(c) increases by a factor of about 5 from middle to high latitudes, while the real-height error increases by a factor of about 2. At dip angles between about 30° and 40° the real-height errors tend to increase, and change rapidly with dip angle. This effect is studied in Appendix B.2. It occurs with all profiles, and prevents useful X-ray calculations being made at dip angles near 35°.

The calculated valley widths in Fig. 21(b) are typically 25% too small at VDEPTH = 0.1 MHz, and 15% too high at VDEPTH = 0.025 MHz. This gives real-height errors of about ±3 km at the top of the valley (where the plasma frequency FN is equal to the value foE in the underlying peak). The calculated gradients at this point also vary, in the opposite direction, so that the real-height error decreases rapidly just above the valley. At a plasma frequency of foE + 0.15 MHz, near the centre of the frequency range used in the valley calculation, the mean real-height error is about +0.5 km. This error remains between 0.0 and +1.0 km at most dip angles, for any value of VDEPTH within a factor of two of the correct value.

The effects of changes in the assumed valley depth are shown in detail in Fig. 22. Virtual height data corresponding to profile V5 at dip angles of 30° and 75° (from McNamara and Titheridge, 1977) were analysed using a total of 110 different values for the valley depth VDEPTH. Each calculation corresponds to a single pass through the valley calculation in POLAN, without iteration and without the "physical constraints" normally included in the least-squares solution. Eight parameters, corresponding to the valley width VWIDTH and a 7-term polynomial for the reflecting region, are determined by a least-squares fit to the first 6 O-ray and 6 X-ray virtual heights. These heights are for plasma frequencies (at reflection) at intervals of 0.05 MHz above the critical frequency foE of the lower layer.

Figure 22. Analysis of virtual-height data corresponding to the profile V5, at two values of dip angle, using different assumed values for the valley depth. Ordinary and extraordinary ray data were used at six frequencies, corresponding to plasma frequencies at reflection from foE + 0.05 MHz to foE + 0.3 MHz in steps of 0.05 MHz. Chain lines show the true values of VDEPTH, VWIDTH and real height (at foE+0.3 MHz). Arrows mark the values corresponding to a minimum in the RMS virtual-height fitting error.
The curves in Fig. 22(a) give the RMS deviation with which the best profile, for a given assumed valley depth, fits the 12 virtual-height data points. At dip 75° (fine line) there is a clearly defined minimum deviation, at a depth VDEPTH of 0.13 MHz. This is less than the approximate mean depth of 0.17 MHz for the valley in profile V5. Since, however, profile V5 differs considerably from the POLAN model, and fluctuates considerably in the valley region, this difference is not very significant. Fig 22(b) shows that the valley width corresponding to the minimum deviation is accurate to within 1%, and the calculated real height at foE + 0.3 MHz is accurate to 0.5 km.

Incorrect values of VDEPTH typically give virtual-height fitting errors of about 0.3 km at a dip angle of 75°. The valley width and the calculated heights of the lower F layer have errors of several km. These results are representative of the many different profiles studied. The dotted curve in Fig. 22(b) shows the relation between valley depth and width assumed by the "standard valley" model used for a one-parameter analysis. The intercept between this curve and the lower continuous curves in Fig. 22(b) defines the depth which would be assumed in the one-parameter analysis. This depth is 0.065 MHz at dip 75°, giving errors of -1.1 km in valley width and -1.0 km in F-layer height (at foE+0.3 MHz).

At dip 30° little information can be obtained about the valley depth. The virtual-height data can be fitted with a maximum RMS error of 0.04 km for all valley depths from 2.5 to 0.05 MHz, as shown by the heavy line in Fig. 22(a). (The increase at small depths is caused by the check in POLAN which disallows a negative value of dh/dFN above the valley). With normal data, calculated profiles fit the data to a high degree of accuracy for any reasonable valley depth. The calculated value of VWIDTH, shown by the lower solid curve in Fig. 22(b), is almost independent of the assumed depth. The real height at foE+0.3 MHz (upper curve) also varies only slowly with depth; for any assumed depth between 2.5 and 0.05 MHz this error is between +0.5 and -2.5 km. The error of 0.6 km corresponding to the profile with smallest RMS deviation is approximately the same as for the 75° case.

These results confirm that for dip angles between about 26° and 30° the distribution of ionisation in the unseen regions cannot be found reliably, so that only a single-parameter valley calculation is justified (Appendix B and Titheridge, 1974b). The poor determination of valley shape does not, however, reduce the accuracy of calculated real heights in the observed frequency range. The results shown use data at frequency intervals Δf of about 0.05 MHz above foE, representing the closest scaling which is reasonable in most practical cases. Increased accuracy can be obtained, with the model data, by reducing Δf to 0.03 MHz; this gives real-height errors at foE+0.3 MHz of less than 0.1 km for both dip angles.

Figure 23. The variation of virtual-height fitting error with the assumed valley depth, for calculations at a dip angle of 52° and frequency intervals Δf of 0.1 and 0.05 MHz.
We conclude from these studies that for most work the valley region should be represented by only one parameter, to select one valley from some physically-reasonable family. Real-height errors above the valley will then be roughly 10 to 20% of the valley width. This assumes the existence of good virtual-height data, for both the ordinary and extraordinary rays, at frequencies near foE+0.1 MHz. With excellent data, and at dip angles outside the range 25° to 38°, use of a second valley parameter (which represents basically the mean depth of the valley) can reduce real-height errors to a few percent of the valley width.

In some cases the virtual-height fitting error plotted as a function of VDEPTH does not have a single minimum. This occurs most often at medium to high dip angles, and with wide, shallow valleys. Results for profile 4BWIDE analysed at dip 52° are shown in Fig. 23. Calculations used 6 virtual heights, for each component, at frequency intervals $\Delta f$ of 0.05 MHz (broken lines) and 0.1 MHz (solid lines) above the critical frequency of the lower layer. There is a well-marked minimum close to the true valley depth (shown by the chain line) for both data sets. The two-parameter valley calculation, in which VDEPTH is adjusted to find the minimum value of DEVN, normally gives a good estimate of valley depth and an accurate profile for the upper layer. Poor results are obtained, however, if $\Delta f = 0.1$ MHz and iteration begins from a too-large initial depth. The calculation can then settle at the spurious minimum near VDEPTH = 0.6 MHz. Commencing iterations from a small value of VDEPTH does not cure this problem with all profiles. Two-parameter calculations in POLAN therefore begin by calculating the fit errors at the two values of VDEPTH shown by the dotted lines in Fig. 23. The depth giving the smaller value of DEVN is then chosen as the starting point for the iterative calculation. This procedure successfully finds the correct minimum, corresponding approximately to the correct valley depth, in all cases studied.
10. USING POLAN

10.1 Implementation

The subroutine POLAN uses 11 associated subprograms, as listed in Appendices F.2 to F.4. A short mainline program is also required to read the virtual-height data for each ionogram from a file, to call POLAN with appropriate parameters, and to store the resulting real-height data. All programs are written in FORTRAN, and conform to both the old FORTRAN IV (1966) and the new FORTRAN 77 standards. The complete set of programs will compile and run on a minicomputer with 56 kbytes (28 kwords on a PDP11) of RAM. These programs are available from the World Data Center-A; or from the author on IBM interchange format 8" diskettes or IBM PC-compatible 5 1/4" diskettes.

A simple mainline program POLRUN, for reading and processing prepared data files, is given in Appendix G.1. A more sophisticated program SCION for the scaling and analysis of ionograms is described in Section 11 and listed in Appendix F.5. This program accepts data from a digitiser, corrects for non-linearities and for skewed axes, and converts the result into frequency, height arrays. Ordinary and extraordinary ray data are then interleaved in the way required by POLAN, with ionospheric layers separated by a zero virtual height, and analysed. The scaled virtual-height data and the calculated real heights are written to output files.

When setting up a new ionogram analysis system, data can be scaled directly in the order used by POLAN. The general procedure will then be as outlined below. It is assumed that data entry uses a digitising table connected to a microcomputer or other programmable controller. Digitisation of "off-scale" areas, or direct keyboard entry, is used to set flags to show the nature of the data that follows. Flags are normally required to indicate "ORDINARY RAY DATA Follows"; "EXTRAORDINARY RAY DATA Follows"; "Scaled CRITICAL FREQUENCY"; and "END OF LAYER". Overall "End Of Data" is conveniently signalled by two successive "End Of Layer" flags.

Before scaling a set of ionograms, station identification is entered from the keyboard. This must include the latitude of the station, if the analysis is to calculate the value of START for a consistent model starting height (as outlined in Section 10.5). Alternatives to this calculation are (i) use of a fixed value of START for all ionograms (- a zero value will give the extrapolated starting height discussed in Section 6.2); or (ii) a separate value of start can be entered for each ionogram (in step (a1) below). The magnetic dip angle and the ground value of gyrofrequency are also entered at this stage. Steps (a) to (c) below are then followed for each ionogram.

(a)-- Preliminary.

(a1) Ionogram header data is entered from the keyboard. This must include the date and time of the ionogram if the mainline program is to calculate the value of START. Alternatively the value of START to be used for this ionogram can be entered at this stage. Determination of an appropriate value is discussed in Section 10.5.

(a2) Points are digitised to define the frequency and height scales. This will be similar to the procedure described in Section 11.3

(b)-- Starting the analysis.

(b1) Examine the low frequency section of the ionogram, identifying the lowest usable frequency (fmin) for the O-ray. Sporadic-E traces are ignored. If the X-ray trace can not be identified at frequencies less than about fmin+1.0 MHz, proceed to (b2) below. Set the flag for X-RAY DATA. Digitise X-ray points. The first point is at the lowest frequency possible. This is followed by about 4 further points at frequency intervals of about 0.1 MHz, giving a reasonable representation of the start of the X trace. There is no advantage in scaling X-ray points to higher frequencies; they will be ignored by POLAN. More detailed rules for data selection at this point are given in Section 10.4.3.

(b2) Set the flag for O-RAY DATA. Digitise points beginning (normally) at the lowest frequency fmin, and using a frequency interval of about 0.1 MHz. Spacing may be increased smoothly to 0.2 MHz or more at higher frequencies where the virtual heights are varying slowly. Where the virtual heights are increasing rapidly, near the peak of the layer, spacing may be reduced to about 0.05 Mhz with good data. Care must be taken to scale the frequency axis as accurately as possible near a layer peak (particularly if X-ray data will be used for calculating the size of the following valley).

When a gap occurs in an otherwise smooth section of the trace, there is no advantage in scaling points more closely at the ends of the missing region. POLAN will interpolate across the gap using several points from each side, and these points are best not concentrated in a small frequency range.
(c)-- End of a layer.

When a critical frequency can be identified by virtual heights which increase rapidly from below (near the peak of the lower layer) and from higher frequencies (reflected from the following layer), then an operator's estimate of the critical frequency is included in the analysis. This is particularly worthwhile when a vertical cursor can be adjusted to provide an approximate asymptote to virtual height traces at higher and lower frequencies. In this situation, flag "CRITICAL FREQUENCY" and digitise the estimated O-ray critical frequency FCO. If X-ray data also provide a good estimate of the critical frequency, flag "X-RAY DATA", flag "CRITICAL FREQUENCY" and scale the estimated X-ray frequency FCX. For scaled critical frequencies the controlling program inserts a zero value for the virtual height at the scaled frequency. X-ray points are indicated by making the scaled frequency negative in the normal way.

10.2 POLAN Input Data

10.2.1 Normal data

POLAN carries out the complete real-height analysis for one ionogram in response to the FORTRAN statement:

CALL POLAN (NDIM, FV, HT, FB, DIP, START, AMODE, VALLEY, LIST).

The first three parameters in this statement define the input virtual-height data, and (when POLAN returns) the calculated real-height profile. The next two parameters, FB and DIP, are required to specify the magnetic field constants. The remaining four parameters can be zero for most work, although for optimum results the parameter START should be used to specify a model starting height for the calculation. The meaning and use of the 9 parameters in the call to POLAN are described below.

(1) NDIM gives the maximum dimension of the data arrays FV, HT. This is set in the calling program so that the array dimensions may be varied to suit the amount of data being used and the size of the computer. Note that the number of data points given in these arrays must not exceed NDIM-32. NDIM must be given as a named variable (not just a number) since it is altered by POLAN to give the number of calculated real-height points returned after the analysis.

(2,3) FV and HT are arrays containing the frequency (f) and virtual-height (h') data to be analysed. Ordinary-ray data must be given in order of increasing frequency. This is checked by POLAN, to detect data errors. The end of the data for any one layer is indicated by a virtual height which is zero (or less than 30 km in absolute value; a non-zero value is used to modify the following valley calculation, as described in Section 7.4). The corresponding frequency - the critical frequency of the layer - is entered normally if it has been scaled; otherwise a frequency of 0.0 is given. If a valley is not wanted above an intermediate layer, the virtual height at the critical frequency is entered as 10.0; analysis of the next layer will then start from the height of the peak of the intermediate layer. (The same effect can be obtained by using a non-zero value for VALLEY, as described below.) The final end-of-data is signalled by two zero virtual heights. At the end of the analysis POLAN returns with frequencies and corresponding real heights in the arrays FV and HT; and NDIM gives the number of such data pairs.

Overall ordering of the input data in the arrays FV and HT is

\[
\begin{align*}
\text{FV:} & \quad (-F, \ldots -F,) \quad F, \ldots F, \quad 0, \quad (-F, \ldots -F,) \quad F, \ldots F, \quad 0, \quad 0 \\
\text{HT:} & \quad (-H, \ldots -H,) \quad H, \ldots H, \quad 0, \quad (-H, \ldots -H,) \quad H, \ldots H, \quad 0, \quad 0
\end{align*}
\]

The sections in brackets are included only when extraordinary ray data are used for the start and valley calculations. The layer terminators, marked by *, correspond to a point (0, 0) as shown when critical frequencies are not scaled. If a critical frequency is scaled the terminator becomes (FC, 0), where FC is positive for the O-ray and negative for the X-ray. If both O and X-ray critical frequencies are scaled there are two terminator points: (FC, 0) followed by (-FCX,0).

(4) FB gives the gyrofrequency at the ground in MHz. The program then assumes an inverse cube variation with height corresponding to the relation

\[
FH = FB.(1 + h/6371.2)^{-3}.
\]

To use a constant value of gyrofrequency in the analysis, FB is set equal to minus the desired value (as in Section 10.2.2).
(5) DIP gives the magnetic dip angle in degrees. The same value is used at all heights.

(6) START is used by POLAN to define the starting height, for an O-ray analysis. The real-height calculations normally begin from a starting frequency $f_S$ of about 0.5 MHz. If START = 0, POLAN derives a starting height $h_S$ to use at this frequency, by extrapolating the first few virtual height data points and limiting the result to a reasonable range. It is normally preferable to enter a model value for the starting height; this is done by setting START = $h_S$ where $h_S$ must be greater than 44 km. The given value is reduced if necessary to be compatible with the initial virtual-height data. Procedures for determining a suitable value of START are described in Section 10.5 below.

For a combined O and X-ray start calculation, START is used to give the mean height at which to calculate the gyrofrequency for the underlying region. This mean height has been found to be very close to the optimum starting height for an O-ray calculation (Appendix C.5), so that the normal model values of START are still appropriate. Start calculations using X-ray data also incorporate any model value of START in the least-squares solution, with a low effective weight, so that indeterminate data will not give unreasonable results. Thus for all calculations, with or without X-ray data, best results will normally be obtained by specifying a value of START determined as in Section 10.5.

(7) AMODE specifies the type of analysis, and may be zero for all routine calculations. POLAN then uses the mode 5 analysis (changing to mode 15 at high dip angles) which appears most suitable for general work. This default setting can be changed by altering the two lines "IF (MODE.EQ.0 . . ." in section Cl.l of POLAN. Other possibilities, ranging from a linear lamination analysis to a single-polynomial calculation (using a single analytic expression for each layer) are obtained by setting AMODE equal to some value from 1 to 9, as described in Section 5.2. If maximum numerical accuracy is required the normal 5-point integrals must be replaced by 12-point integrals; this is achieved by adding 10 to AMODE, giving a value in the range 11 to 19.

(8) VALLEY should be zero for most routine calculations. POLAN then inserts between layers a valley selected from the "standard" family shown in Fig. 17. The width (in km) and depth (in MHz) of this valley depend on the height of the underlying peak, and will normally be close to the values given in Table 5 of Section 7. To omit valleys altogether, giving a monotonic profile, set VALLEY = 10.0. The result gives a lower limit to the range of possible profiles for the upper layer. An upper limit, corresponding approximately to the maximum feasible valley width, is obtained by setting VALLEY = 5.0. Other variations to the standard valley shape are summarised in (8) below. Note that the value of VALLEY can be overridden for a particular ionogram by inserting a non-zero virtual height at the final data point for the previous layer, as described in Section 7.4.

(9) LIST is zero to produce the normal summary listing during the run of POLAN. This includes information relating to an extraordinary ray start calculation, a valley calculation, and the parameters at a layer peak (Section 10.3.2). Data errors also produce a printed line. Other values of LIST suppress the output or give more detail of the analysis steps, as described in (9) below.

10.2.2 Further options (ignore these until you are familiar with the program)

Any of the input parameters in the call to POLAN (other than NDIM) can be made negative, or modified in some other way. This signals some departure from the standard analysis procedure, as described below. Many other features of the calculations can also be changed. Interested workers should study the appropriate sections of this report and the program listings.

(1) NDIM is not modified. It must always be a "variable" giving the maximum dimensions of the data arrays FV, HT as set in the calling program. The number of data points must be less than NDIM-32.

(2) FV: Negative frequencies are used to denote extraordinary-ray data. Such points immediately precede the ordinary ray data for each layer, in the arrays FV and HT. Within each set of X-ray data, the absolute values of frequency should increase monotonically; this is used by POLAN as a check on data integrity.

(3) HT: A negative virtual height $h'_i$ is used to allow a gradient discontinuity in the N(h) profile. Heights will be calculated up to the corresponding frequency $f_i$, using a virtual height $|h'_i|$ at this frequency. Calculations then continue with a new polynomial beginning from the calculated real height $h_i$ at the frequency $f_i$. The result has a discontinuity in the gradient dh/dFN, and in all higher derivatives, at $f_i$. This procedure has been recommended for use with parabolic lamination calculations (e.g. Wright, 1967). It is not normally required with higher order modes of analysis, in which points of inflection can occur between scaled frequencies, and tests show that with all methods it is generally better not to scale the cusp (Section 10.4.1; and Titheridge, 1982).
(4) FB: A negative value of the gyrofrequency FB gives an analysis in which the gyrofrequency is assumed to be independent of height. This is useful mainly for carrying out tests using model ionograms which have been calculated assuming a constant gyrofrequency. The value of FB should apply to a height of about 150-200 km for night-time ionograms, or about 100 km if X-ray data are being used for an E-layer start calculation.

(5) DIP: Calculated starting and valley corrections using extraordinary-ray data are normally subject to physical constraints, discussed in Sections 8.4 and 7.3. The initial gradient dh/dFN of the polynomial section must be positive, the width of the valley or the starting height correction must be positive, and in the slab start the thickness of the underlying slab of ionisation must be positive. These restrictions can be omitted by setting DIP negative.

(6) START: Corrections for underlying ionisation can be suppressed by setting START = -1.0. Analysis of O-ray data then begins from the first scaled frequency $f_1$, with a real height equal to the least of the first three virtual heights. Calculation of a starting correction using extraordinary-ray data, whenever this is given, is not affected. Values of START less than -1.0 cause X-ray calculations to use the polynomial start procedure of Section 8.6.1. START can be set equal to minus the model O-ray starting height, to give the normal model start with O-ray data and a polynomial start when X-ray data are provided. Values of START in the range -1.1 to -3.0 cause the polynomial start to begin at a frequency of -START-1 MHz. Note that the polynomial start gives increased flexibility in the unseen region, when fmin is large, and so tends to give more variable results. The uses of START are described more fully in Sections 6.2 (for O-ray data) and 8.6 (for X-ray data).

(7) AMODE: Starting and valley calculations using combined O- and X-ray data normally incorporate several physically-desirable conditions in the least-squares solution (Sections 8.4 and 7.3). These conditions are omitted if the value of AMODE is negative. The calculated profile will then be a better fit to the virtual-height data, but (with medium or poor quality data) may be a less reasonable result on physical grounds. Thus to obtain the unrestricted best-fitting profile, using the normal (default) mode of analysis, set DIP negative and AMODE = -5.

(8) VALLEY: With ordinary ray data, the parameter VALLEY can be used to adjust the size of the valley inserted above a layer peak. To increase or decrease the width of the valley, set the parameter VALLEY equal to the required scaling factor (which must be in the range 0.1 to 5.0). If the resulting valley width is unrealistically large, it will produce a small or negative value for the real-height gradient dh/dFN just above the valley; the width of the valley is then automatically reduced, to give a gradient equal to the local scale height (Section 7.3.3). In all cases (when VALLEY is not negative) the depth of the valley is varied as the width changes, so that the final valley represents a selection from the family of "standard" valleys shown in Fig. 17. Specific values of width and/or depth can also be set for the valley region by using negative values for VALLEY, as described in Section 7.4.

With extraordinary ray data the one-parameter valley calculation is recommended for general use. This is the default procedure obtained when VALLEY = 0.0 or 1.0. It selects the best-fitting valley from the family shown in Fig. 17, by determining the width that gives the smallest RMS deviation between the given virtual height data and virtual heights corresponding to the calculated profile. For detailed studies using high quality data, when it is desired to obtain the maximum possible amount of information from an ionogram (and in particular when it is suspected that a wide but abnormally shallow valley may be present) the two-parameter analysis can be used (with caution). This is obtained by setting VALLEY = -1. The width and depth of the valley are then determined separately. Results obtained give a reduced RMS deviation between the given virtual height data and those corresponding to the calculated real height profile. However, since the data are never exact, the calculated profile is not necessarily better than the normal one-parameter result.

(9) LIST: If LIST = -1 all direct printed output from POLAN is suppressed. At LIST = 1 the subroutine TRACE is called to list the real-height constants at each step. Larger values of LIST (up to LIST = 5) produce fuller trace output for debugging purposes. Adding 10 to the value of LIST restricts the added trace outputs to the start and valley calculations.
10.3 POLAN Output Data

10.3.1 Data returned within the program.

The subroutine POLAN is called with frequency and virtual height data in the arrays FV and HT. It returns with frequencies and corresponding real heights in these arrays. The returned frequencies will differ from the given data frequencies since extraordinary-ray points have been deleted, and additional real-height points have been added to define better the start, valley and final peak sections of the profile.

For an O-ray start, the real-height profile begins with a polynomial section from a frequency which is normally 0.5 MHz, but is constrained to lie in the range $0.35f_{\text{min}}$ to $0.6f_{\text{min}}$, (where $f_{\text{min}}$ is the lowest scaled frequency). A further point is added at a frequency of $0.6f_{\text{min}}+0.2$ MHz. With an X-ray start, the low-density ionisation is represented by a linear-in-FN lamination from $0.3f_{\text{min}}$ to $0.6f_{\text{min}}$. The polynomial real-height profile starts at $0.6f_{\text{min}}$, and a further point is added at $0.8f_{\text{min}}$ to define this adequately. Heights given at plasma frequencies less than $f_{\text{min}}$ should not be taken as a true representation of the profile shape. They serve only to give approximately correct values for the total amount of underlying ionisation and for the ionisation gradient near $f_{\text{min}}$.

In each valley region, above a layer peak, four additional points are inserted. The first two are at plasma frequencies of $FC-V/2$ and $FC-V$, where $V$ is the valley depth. These points define a parabolic continuation of the layer peak, with a scale height of 1.4 SH. The next point, also at $FN = FC-V$, shows the extent of the flat valley-bottom region (illustrated in Fig. 6). Finally a point at $FN = FC$ defines the top of the valley, and the start of the next layer. The shape of the valley and the ratio of depth to width are essentially defined by models (since these quantities can be determined directly only by careful analysis of unusually good O and X data). For O-ray calculations the valley width is also basically a model value, dependent on the mean neutral scale height, the value of SH for the underlying peak, and the gradient and curvature at the base of the next layer. When X-ray data are used in a valley calculation the width is a directly calculated parameter, biased to a varying extent by the models so that an ill-defined calculation will not yield absurd results (Section 8.4).

Three points are added after the peak of the final layer, at distances of 0.5, 1.0 and 1.5 scale heights above the peak. These give an exact Chapman-layer extrapolation of the calculated peak, assuming a typical scale height gradient $\frac{dSH}{dh}$ of 0.1. They show the initial variation in the topside ionosphere, and simplify the averaging of profiles with different peak heights.

POLAN returns with the first subroutine parameter (NDIM) altered to a value $N$ which gives the array position of the last profile point. Thus the last calculated real-height point is $HT(N)$, $FV(N)$. Other information is returned in the following two elements of the arrays:

- $FV(N+1)$ = twice the standard error in the calculated critical frequency.
- $HT(N+1)$ = twice the standard error in the calculated peak height $H_{\text{MAX}}$.
- $FV(N+2)$ = the total electron content of the calculated profile up to the height $H_{\text{MAX}}$. This is obtained by exact integration of the individual polynomial real-height expressions, and is given in units of $10^{10}$ electrons/m$^2$.
- $HT(N+2)$ = the calculated scale height SH for the peak of the final layer.
- $FV(N+3) = HT(N+3) = 0.0$ to terminate the output data.

Note that these errors indicate only the accuracy of the least-squares peak fit. Consistent data errors near the peak can lead to incorrect peak parameters with a small standard error. The error in $H_{\text{MAX}}$ also does not include the effect of real-height errors produced at lower frequencies (from incorrect values for the start and valley regions, for example).

10.3.2 Printed outputs from POLAN

If the input parameter LIST is negative, POLAN produces no printed output and the only results available are those returned through the calling parameters and described in Section 10.3.1. In a normal calculation with LIST = 0, four types of printed output occur.

(i) If there is a data error, detected as an incorrect sequence of ordinary-ray frequencies in the array FV, the program prints:
DATA ERROR AT F = XX.XXX YY.YYY

The two successive frequencies listed are in an incorrect relation. For X-ray data, denoted by negative frequencies, an error is detected if a value of |f| is less than that for the first X-ray point for the layer considered. When a data error is found POLAN returns with all previously calculated (and presumably correct) real-height data in the arrays FV(I) and HT(I), where I = 1 to N. That these data do not correspond to a complete analysis is indicated by a zero value for SH in HT(N+2). The printed output shows the above error message, and no peak listing.

(ii) If extraordinary-ray data are given at the start of the analysis, the constants involved in the start calculation are listed in a line of the following form, where bracketed values represent numerical data.

\[(NC) \text{ start offset} = (A) \text{ km}, \quad \text{slab (B) km. devn (D) km} \\
(NT) \text{ terms fitting (NO) O + (NX) X rays + (NP). hx = (FHHT).}\]

\(NC\) gives the number of iteration cycles required in the calculation. This is normally 1 when the gyrofrequency is constant with height, and 2 or 3 if it is varying.

\(A\) gives the amount by which the calculated starting height for the first polynomial is less than the initial value obtained from a limited extrapolation of the ordinary-ray virtual heights. A zero value of \(A\) indicates that the calculations originally gave a negative value, which was set equal to zero.

\(B\) is the thickness of the underlying slab of ionisation (from FN = 0.3f₁ to FN = 0.6f₁). This is zero if the data initially gave a negative value or if a polynomial start is being used.

\(D\) is the RMS deviation between the given virtual height data and virtual heights calculated from the final real height curve. \(D\) gives approximately the error with which the ordinary-ray virtual heights are fitted. For extraordinary-ray data the mean error is about 2\(D\), because of the reduced weight given to X-ray data in the least-squares solution.

\(NT\), \(NO\) and \(NX\) give the number of variables determined in the starting calculation, and the number of ordinary and extraordinary-ray data points used in the calculation. \(NP\) is the number of equations representing physical constraints. Thus the total number of equations included in the solution is \(NO + NX + NP\); if this is greater than \(NT\) then a least-squares calculation has been used.

\(FHHT\) is the calculated height of reflection of the first or second extraordinary-ray frequency. This is the height used to calculate the value of gyrofrequency to use in the analysis. Calculations using X-ray data and a height-varying gyrofrequency are iterated until FHHT changes by less than 2 km.

(iii) For each layer peak a line is printed giving the critical frequency at the peak in MHz; the peak height in km; the calculated scale height (printed negative if an unreasonable value was replaced by a model value); and the slab thickness (equal to the total electron content divided by the peak density) in km. Some error indications are also given for the peak parameters; these are as described in Section 10.3.1.

(iv) A valley is inserted between successive layers (unless O-ray data only are provided, and a zero valley is specified by using VALLEY = 10.0). At each valley calculation the following line is printed.

\[(NC) \text{ VALLEY (W) KM WIDE, (V) MHz DEEP. DEVN (D) km.} \\
(NT) \text{ TERMS FITTING (NO) O + (NX) X RAYS + (NP). HX = (FHHT).}\]

\(NC\) is the number of iteration cycles used in the analysis; this exceeds 2 only for X-trace calculations. \(W\) is the distance from the peak of the underlying layer to the point with the same density in the upper layer. \(V\) represents roughly the mean decrease of plasma density in the valley. \(D\) is the RMS virtual-height fitting error in the valley calculation. POLAN has fitted an expression with \(NT\) variables to a set of \(NO + NX + NP\) simultaneous equations, making use of \(NO\) scaled O-ray data points, \(NX\) X-ray points, and \(NP\) physical constraints. The latter represent semi-empirical relations between the size and shape of the valley, the neutral scale height, the plasma scale height SH, and the gradient at the base of the following layer.

\(FHHT\) gives the height of reflection of the first or second extraordinary ray used in the analysis, or the first ordinary ray if there are no X-ray data. For X-ray calculations with a height varying gyrofrequency, each step in the valley analysis is iterated until FHHT changes by less than 2 km.
An extraordinary-ray valley analysis always produces several listed lines. For a one-parameter analysis there are normally three lines. These correspond to the initial valley depth \( V \), and two subsequent corrections in which \( V \) is scaled approximately as \( W^2 \) (Section 7.2). If the RMS deviation \( D \) increases too much on the third iteration the previous calculation is repeated, giving a fourth printed line which is identical to the second. For a two-parameter valley analysis the first two lines are the same as for the one-parameter analysis. Thereafter further lines are listed corresponding to changes by a factor of about 1.4 in the assumed depth, until a minimum of \( D \) is found. A final line using the depth \( V \) interpolated for minimum deviation is then obtained.

### 10.4 Selection and Scaling of Data

#### 10.4.1 General considerations

The amount of data which need be scaled from an ionogram, to obtain near-optimum accuracy in the calculated real heights, depends primarily on the ionogram. Thus the rules outlined here for data selection are applicable to most methods of analysis. Polynomial methods are however somewhat less dependent on the choice of data, compared with lamination methods, since they can interpolate a point of inflection between scaled frequencies.

The effects of using different frequency intervals \( Df \) with ordinary (O-)ray data have been studied elsewhere (Titheridge, 1982). Smaller values of \( Df \) are required where the virtual heights are changing most rapidly, as near the F1-layer cusp in Fig. 24. If the scaling interval is too large we get a fluctuating error in the cusp region, and an overall error at higher frequencies. These errors are approximately the same for all methods of analysis. With a typical cusp, real-height errors at and above the cusp begin to decrease at \( Df \approx 0.15 \text{ MHz} \) for polynomial calculations, and at \( Df \approx 0.09 \) using parabolic laminations. Errors are typically about 1.2 km at \( Df = 0.2 \text{ MHz} \), 0.5 km at \( Df = 0.1 \), and 0.1 km at \( Df = 0.05 \text{ MHz} \) (using the default mode of POLAN). Thus a frequency interval of about 0.1 MHz is normally adequate.

POLAN will allow the real-height gradient to be discontinuous at a cusp, if \( h' \) is made negative at the cusp frequency (Section 10.2.2). Tests show, however, that this increases the real-height errors with all methods of analysis (Titheridge, 1982). Best overall results are obtained with model ionograms when the cusp lies approximately midway between scaled frequencies, as shown in Fig. 24. This will also be the best procedure with practical ionograms since the virtual height at the cusp is not a stable and accurately measurable quantity.

The careful selection of data points is most important for calculations involving the "unseen" regions in the ionosphere. These are the underlying or start region where the plasma frequency \( FN \) is less than the minimum observed frequency \( f_{\text{min}} \), and the valley region between ionospheric layers where \( FN \) is less than the critical frequency \( FC \) of the underlying peak. For an accurate real-height profile we must determine the extent of these regions using combined ordinary and extraordinary ray measurements. The choice of scaling frequencies for start and valley calculations is investigated in Sections 8.5 and 9.4. Some checks are carried out within POLAN, as described in Section 8.2.3, to eliminate unhelpful or possibly harmful data from the start and valley calculations.

Sporadic traces should not be digitised. These traces are characterised by a sharp cusp (generally in the E layer), a short rapid decrease in \( h' \), and a flat section of varying length with no significant increase in \( h' \) at the high frequency end. They are produced by thin, near-horizontal ledges superposed on the main \( N(h) \) profile. If the main E-layer trace can also be seen (i.e. the sporadic layer is transparent) this main layer should be scaled. More commonly the sporadic layer blocks out a section of the true E layer trace. There will then be a gap in the series of scaled points, as shown in Fig. 24. Do not scale additional points at the ends of the gap. The overlapping polynomial procedure in POLAN will provide a smooth interpolation across the gap, and this interpolation is preferably not restricted to points over a narrow frequency range at each end. Typical scaling points for an ionogram which includes short sporadic-E traces are shown in Fig. 24.

#### 10.4.2 Selection of ordinary ray data

Ionogram scaling normally begins at the lowest observed O-ray frequency \( f_{\text{min}} \). The first few points are scaled at a frequency interval of about 0.1 MHz, so that the first 5 points cover a frequency range of about 0.4 MHz. This is particularly important when X-ray are to be used in the start calculation. At least 4 points should be scaled before retardation caused by the following layer peak becomes large; this will occasionally require the use of an initial frequency spacing less than 0.1 MHz. When the trace is irregular or ill-defined at low frequencies, additional points may be scaled in the range from \( f_{\text{min}} \) to \( f_{\text{min}} + 0.4 \text{ MHz} \). POLAN includes such points in a start calculation automatically, with most modes of analysis (Section 8.2.3).
After the first 5 points, the scaling interval may be increased to 0.2 MHz or more in regions where the virtual height is changing slowly. Near critical frequencies or sharp cusps the frequency interval is decreased so that the height changes are less than about 10 km between successive points. A minimum practical or worthwhile frequency interval is about 0.05 MHz. Abrupt changes in Df should be avoided (so that calculation of a real-height segment is not unduly weighted by data at one end of the segment).

In some night-time ionograms the virtual heights increase rapidly towards fmin. Decreased values of Df should not be used in this region in an attempt to obtain greater accuracy by defining the changes in h' more closely. If the initial changes in h' exceed about 20 km in an interval of 0.05 MHz, this part of the trace should be ignored. This is because a rapid increase in h' at low frequencies indicates retardation due to a dense underlying peak, which can not be allowed for accurately (Section 8.5.2). Thus the circled section of the trace in Fig. 25(a) is not scaled.

Digitizing continues up to the critical frequency defining the end of the first layer. Critical frequencies show as a rapid increase in h', tending to a vertical asymptote, followed by a break in the recorded trace. This is shown at foE and foF2 in Fig 24. If the position of the critical frequency can be judged with reasonable accuracy, using the increase in group heights for both the first and second layers, it should be scaled (at any convenient height). The E-layer trace in Fig. 24 does not provide a good indication of the position of the critical frequency, so scaling of foE is not desirable. If the F1-layer trace extended to lower frequencies, as shown by the dotted line, an estimated value of foE should be scaled. Scaled critical frequencies are not taken as exact but provide additional input to the least-squares peak calculation.

The second (F-layer) trace is digitised from just above foE up to the next critical frequency. This is normally foF2, although there may occasionally be a true discontinuity, and a critical frequency, at foF1. Any part of the F-layer trace between foE and foE+0.1 MHz, or with dh'/df < -200 km/MHz, should be ignored (as shown in Fig. 25b). This is because the virtual heights in this region depend more on the detailed shape of the E-layer peak than on the F-region heights; they are also more affected by horizontal gradients in the ionosphere. The first 5 or 6 F-layer points should cover a range of about 0.4 to 0.7 MHz, particularly if these data are to be used with corresponding X-ray data in a O/X valley calculation.

10.4.3 Selection of X-ray data, for start and valley calculations

X-ray data are used only when there is some important piece of information which cannot be obtained without them. Scaled X-ray data are therefore of three types:

(a) for start calculations, X traces which continue down to frequencies within about 1.0 MHz of the lowest observed O-ray frequency;

(b) for valley calculations, any X traces which show group retardation due to the underlying peak (so that virtual heights increase at the low frequency end of the trace);

(c) traces which give a useful measure of the critical frequency FCX of a layer peak. These provide additional input for the least-squares peak calculation in POLAN.

The frequencies used in start and valley calculations should be those at which the virtual heights depend primarily on the unseen ionisation (as discussed in Appendix B.2) and are not dominated by other effects. Thus, for example, valley calculations should not include measurements too close to the critical frequency of the underlying peak. Data at frequencies well above the region of interest are also best omitted. The difference h'x - h'o due to underlying ionisation decreases rapidly with increasing frequency, so use of a frequency range greater than about 0.7 MHz adds little information and may include unwanted variations in the gradient at reflection (Section 8.5.2). These basic considerations apply to all methods of real-height analysis.

If there is a suitable E-layer X-ray trace present for daytime ionograms, or a suitable F-layer X-ray trace present for night-time ionograms, a joint O-X solution may be found for the starting height. This is a rare event for daytime ionograms, but quite common for night-time ionograms. For good results, corresponding O and X rays should be reflected at approximately the same values of plasma frequency FN. That is, the O-ray frequencies fo and the X-ray frequencies fx should correspond approximately to the relation

\[ f_o^2 = f_x \cdot (f_x - FH) \]  

where FH is the gyrofrequency at the appropriate height (usually about 200 km at night). A table of corresponding values of fo and fx should be prepared as an aid to the selection of X-ray data.
Figure 24. A representative daytime ionogram showing E and F2 layers, and an F1 cusp. Thick and thin lines give the ordinary and extraordinary ray traces respectively. Corresponding scaled points are shown as o or x. Solid symbols are for scaled critical frequencies.

Figure 25. Night-time (a) and daytime (b) ionograms showing, as broken lines, the parts of the ordinary ray trace which should not be scaled. G is the absolute virtual-height gradient \(|\frac{dh'}{df}|\) in km/MHz.
If $f_{\text{min}}, f_{x\text{min}}$ are the lowest usable frequencies for the O, X traces respectively, and FB is the ground value of the gyrofrequency, we require (ideally) that $f_{x\text{min}} \approx f_{\text{min}} + 0.5 \text{FB}$. In practice O/X analysis is generally worthwhile if the X-ray trace is recorded down to a frequency $f_{x\text{min}}$ such that

$$f_{x\text{min}} < f_{\text{min}} + 0.5 \text{FB} + 0.5 \text{ MHz}. \quad (33)$$

It is occasionally helpful to omit some initial O-ray data, increasing the value of $f_{\text{min}}$ so that (33) holds. This should be done only when it leaves sufficient, accurate data for both O and X traces, without including any points affected by peak retardation. In the example of Fig. 25(a), the X-ray trace extends down to a frequency $f_{x\text{min}}$ of 2.2 MHz. This corresponds to a plasma frequency at reflection (FRx) of 1.62 MHz, at FH = 1.0. The X-ray trace is showing retardation from the underlying ionisation, so an X-ray start is definitely worthwhile. The marked section of the O-ray trace, at $f < 1.42 \text{ MHz}$, should not be scaled.

Five to eight points are scaled at the start of the X trace. These points should be at frequency intervals of about 0.1 to 0.05 MHz, covering a frequency range of about 0.5 MHz (Section 8.5). The maximum useful X-ray frequency for start calculations is

$$f_{x\text{max}} < f_{\text{min}} + \text{FB} + 0.6 \text{ MHz}. \quad (34)$$

X-ray data at wave frequencies higher than $f_{x\text{max}}$ are deemed 'not-useful' by POLAN, and will be omitted from the analysis.

X-ray data which are showing the effects of retardation in a following peak will be ignored by POLAN, and need not be scaled. As frequencies increase towards a layer peak, the virtual heights begin to increase rapidly. The group retardation of the O and X rays is then more dependent on the characteristics of the peak than on the underlying ionisation, and is not useful for starting calculations. POLAN normally ignores X data for which $dh'/dfx$ exceeds +40 km/MHz. When there is only a short frequency range between $f_{\text{min}}$ and the first critical frequency, it may be necessary to use smaller values of Df so that 5 points can be scaled before peak retardation becomes important (Section 8.2.3).

Very large virtual heights, at frequencies less than 0.1 MHz above a critical frequency, should not be scaled. Any such points are ignored by POLAN, since the virtual heights depend more on the precise density and thickness of the E layer peak than on the size of the E-F valley. These highly retarded rays also have larger horizontal deviations, and so are more likely to be affected by the presence of horizontal gradients in the ionosphere.

The use of extraordinary-ray data by POLAN is discussed more fully in Sections 8 and 9, and in Appendix B.2. Scaling rules are most important with difficult ionograms, and are designed for maximum reliability, consistency and accuracy under difficult conditions. Suitable rules for selection of start and valley data, incorporating the above considerations, are given below.

(i) Virtual height traces with $|dh'/df| > 200 \text{ km/MHz}$ are ignored in start and valley calculations (Section 8.5.2). With this proviso, scalings commence from the lowest observed frequencies.

(ii) About 5 X-ray points are scaled, using a frequency interval $Df > 0.05 \text{ MHz}$. X-ray data then cover a range of at least 0.2 MHz, to give a reasonable measure of the changes in $h'x - h'o$.

(iii) For both O and X rays we use frequency intervals $Df < 0.2 \text{ MHz}$, giving a maximum range of about 0.8 MHz for the 5 points (for each component) used in a start or valley calculation.

(iv) Scalings should not extend up to frequencies where there is appreciable retardation due to a cusp or peak. In some cases this will require use of a smaller value of Df, to obtain 5 points for a start calculation.

(v) If FR$x_{\text{min}}$ is the plasma frequency at reflection of the first scaled X ray, O rays should not be scaled at frequencies less than about $FRx_{\text{min}} - 0.2 \text{ MHz}$. Thus if $f_{x\text{min}}$ is the lowest usable X-ray frequency, O-rays are not scaled at frequencies below about $f_{x\text{min}} - 0.8 \text{ MHz}$.

(vi) If X traces are observed to plasma frequencies FRx lower than the minimum O-ray frequency $f_{\text{min}}$, they may be scaled down to a plasma frequency of about $f_{\text{min}} - 0.4 \text{ MHz}$ corresponding to a wave frequency of about $f_{\text{min}} + 0.3 \text{ MHz}$. This is subject to condition (i) above.

The reasons for (v) are the same as those incorporated in (iii). Information about the unseen ionisation is contained primarily in the quantity $h'x - h'o$, for O and X rays reflected near the same real height. Inclusion of lower O rays only, adds little information about the unseen region but increases the range (and hence the possible complexity) of the reflecting region used in the start calculation. (vi) allows a larger range of acceptance for X-ray data, without corresponding O rays, since the X rays are more affected by retardation in the unseen region.
For routine use, the above rules may be shortened to:

(a) Ignore low-frequency traces which are curling up with a gradient greater than 200 km/MHz.

(b) Ignore X traces showing retardation in a following peak.

(c) The lowest scaled frequencies $f_{\text{min}}$ (O-ray) and $f_{x\text{min}}$ (X-ray) should be such that

$$f_{\text{min}} + 0.3 < f_{x\text{min}} < f_{\text{min}} + 0.8 \text{ MHz}.$$  

(d) Scale O and X traces at a frequency interval of about 0.1 MHz.

### 10.5 Selection of a Value for START

When extraordinary ray data are available to calculate a starting correction, the value of START given in the call to POLAN (or calculated within POLAN, if the given value is zero) is used only to define a suitable mean height at which to calculate the gyrofrequency for the underlying ionisation. The normal O-ray values of START are quite appropriate for this purpose (Appendix C.5), so use of X-ray data requires no change in the input parameters to POLAN. The normal X-ray starting model consists of a linear slab or lamination covering a range of plasma frequencies from 0.3$f_{\text{min}}$ to 0.6$f_{\text{min}}$, where $f_{\text{min}}$ is the lowest plasma frequency at which a virtual height (O-ray or X-ray) is given. The first real-height polynomial then begins at 0.6$f_{\text{min}}$ (Section 8.3). If the parameter START is negative we get the alternative start correction consisting of a single real-height polynomial from a frequency of 0.5 MHz (or 0.8$f_{\text{min}}$ if this is less than 0.5 MHz; Section 8.6). This gives added flexibility in the start region when $f_{\text{min}}$ is large, and so tends to give more variable results.

Ordinary ray calculations begin with a real-height polynomial from a starting frequency $f_S$ which is less than the lowest data frequency $f_{\text{min}}$. $f_S$ is nominally 0.5 MHz, but is kept within the range 0.35$f_{\text{min}}$ to 0.6$f_{\text{min}}$. When START = 0, POLAN obtains a starting height $h_S$ by a bounded extrapolation of the first few virtual-height points, as described in Section 6.2(a). If no starting correction is desired, use START = -1.0. The real-height calculations then begin directly from the first scaled frequency, with a height equal to the lowest of the first three virtual heights.

Inadequate starting data is a common difficulty, and the main source of error in analysis of the daytime E layer and the night-time F layer. For maximum accuracy and reliability a model value of START should be used to define a suitable starting height $h_S$. The optimum value depends on local time, season and (to a lesser extent) on the latitude of the recording site. Suggested model values, derived from an analysis of published D region and night-time E region profiles, are described in Sections 6.3 and 6.4. For daytime conditions, when a normal E-layer trace is present, Table 4 is used to obtain a suitable, consistent model value for START. At night, when there is no E-layer trace, the value of START is obtained from Fig. 4. If the E-layer trace can be scaled, near sunrise and sunset, START is set equal to about 90 km (as shown by the thin lines in Fig. 4).

For some purposes an approximate mean starting correction is adequate. The following values of START, based on the results of Sections 6.3 and 6.4, can be used for stations at all latitudes and at all seasons.

- START = 80 km within a few hours of local noon.
- START = 88 km about 2 hr after sunrise, or 2 hr before sunset, when an E-layer trace is still present.
- START = 90 km near sunset and sunrise, when the E-layer trace is still observed.
- START = 80 km near sunset and sunrise when data begins in the F-region.
- START = 100 km at 1 hr after local sunset.
- START = 130 km at 2 hr after local sunset.
- START = 150 km from 4 hr after sunset to 1 hr before sunrise.

When only ordinary ray data are available, these entered values for START provide a model starting height $h_S$ which gives a consistent, mean allowance for the effects of low-density ionisation. When combined O and X ray data are used to calculate an improved starting correction, the same values of START provide a suitable mean height at which to calculate the gyrofrequency for the underlying ionisation (Appendix C.5).

When many ionograms are being analysed from one station, tables are prepared (from the data in Sections 6.3 and 6.4) giving the value of START as a function of season and local time. For more general use an approximation to these values of START can be calculated for each ionogram, within the analysis program. This requires that the station latitude, and the date and local time of each ionogram, have been entered as outlined in Section 10.1. The solar zenith angle $\chi$ is then calculated from the equation in Section 6.3(b). When $\chi$ is less than 95°, and virtual heights are recorded from the E layer, START is set equal to the value of $h_{0.5}$ calculated from equation 10 of Section 6.3. At night, when an E layer trace can not be scaled, the value of $\chi$ is used to obtain a suitable value of $h_S$ by numerical interpolation in the results of Figure 4.
11. SCALING AND ANALYSIS WITH THE PROGRAM SCION

11.1 Outline

In this section the practical use of POLAN is illustrated in terms of a specific implementation, using a programmable digitizer. The programs involved were developed originally by McNamara (1978, unpublished) for use at the WDC-A, Boulder. A similar system at the Ionospheric Prediction Service (Sydney), using a Summagraphics Bit Pad and an LSI11/03 computer, is described by McNamara (1982). All calculations use the standard or 'default' options in POLAN. The scaling procedure described here offers an alternative to the system outlined in Section 10.1, in which data are scaled directly in the order required by POLAN.

The complete analysis involves three stages:

(a) Digitize the ionogram, using a scaling table, to create a computer file with frequency, height data points in arbitrary units. This process will vary with the type of scaling table used. The digitised data are read line by line by the program SCION, and must be in the form detailed below and in the listing of SCION (Appendix F.5). Typical steps involved in the digitizing process are described in Sections 11.2 to 11.4 below.

(b) Correct the data points for non-linearities in the ionogram, convert them into actual frequencies and heights, and combine ordinary and extraordinary ray measurements into the form required by POLAN.

(c) Run POLAN to obtain the required $N(h)$ profile.

The digitizing procedure in step (a) was developed for use with a Hewlett Packard 9864A digitizer and digitizing table. An appropriate program was written for the associated HP 9821A calculator by McNamara. Descriptive headings (Section 11.2), coordinates (Section 11.3) and data points (Section 11.3) are entered into a file which we shall call NHDATA. At the end of each logical step in the digitizing process, identified by the digitizing of an "off-scale" point, the display flashes and a prompt message appears to indicate the next step.

Data points are recorded as 6 pairs of (frequency, height) coordinates per line of file. After 6 points, the system is inactive while a carriage return is executed. Do not digitize during this period. After the carriage return, the current prompt is repeated. When the complete ionogram has been digitized the entry (or TEXT) mode of the digitizer is terminated by control/C. The file is then packed (with the instruction PACK) and saved (by SAVE NHDATA). The resulting file NHDATA provides all input data for the program SCION. NHDATA may be edited as required, to alter the header data or to correct or delete scaled points, if the initial run with SCION appears unsatisfactory.

Step (b) above is performed by the program SCION, which takes its input data from the file NHDATA (on unit 6). Correction of the data points is carried out using the subroutines DESKEW and INTERP. DESKEW corrects all data pairs for departures of the ionogram axes from a rectangle parallel to the axes of the scaling table. INTERP converts the scaled and deskewed positions into frequencies and heights; this is done by 4-point polynomial interpolation in scaled frequency and height marker positions. Finally SCION combines the O- and X-ray data into the form required by POLAN (Section 10.2). The data points are printed by SCION, before and after correction, to provide a check on the overall scaling process. Listings of SCION, DESKEW and INTERP are given in Appendix F.5.

In step (c) SCION first prints the virtual-height data to be analysed, and writes it to an output file (on unit 7) for plotting purposes. POLAN is then called to carry out the real-height analysis, using the standard default modes. The type of analysis can be adjusted if required by altering the parameter AMODE in Section (G) of SCION; the use of AMODE is described in Section 10.2.1. During the analysis POLAN produces some printed output relating to the overall layer parameters; this is described in Section 10.3.2. After the analysis SCION lists the height, frequency points which define the calculated real-height profile. These results are also written to a computer file (unit=7) for plotting and interpretation.
11.2 Entering Initial Specifications

Throughout this section the digitizer should be in the "INTERNAL" mode, in which data are accepted directly from the keyboard. The display shows appropriate prompts at each stage to indicate the type of entry required.

The digitization procedure is initiated by the normal END, EXECUTE, RUN PROGRAM sequence on the HP9821A. The digitizing program first gives the prompt "HEADER", to remind the user to enter data describing the ionogram. This prompt may be ignored if desired, provided the appropriate 4 lines [(1) to (4) below] are added to the file NHDATA before its use by SCION.

PROMPT: HEADER???

Before any digitization has taken place, the terminal will be in the INTERNAL mode. If a previous ionogram has just been finished, switch from EXTERNAL to INTERNAL mode. Four lines of text should now be entered, corresponding to the first four READ instructions of SCION as detailed below.

(1) READ (6,901) IEXIT, HEADC - in FORMAT (I4, 19A4).

Use IEXIT = 1 if another ionogram is to be digitized, and IEXIT = 0 if all required ionograms have been digitised. IEXIT = 0 causes a normal stop of SCION. The 19A4 format is for any descriptive header HEADC, and is usually left blank if IEXIT = 0.

(2) READ (6,902) DIP, FB, START - in FORMAT (3F5.2).

DIP is the magnetic dip angle in degrees. FB is the gyrofrequency at ground level (in MHz), given by FB = 2.80 B where B is the magnetic field strength in gauss (1 gauss = 10^{-4} Tesla). POLAN assumes an inverse-cube variation of FB with height. Values of DIP and of the gyrofrequency FH at 200 km height can be obtained from the Atlas of Ionograms (report UAG-10). To use the height-varying gyrofrequency in POLAN, the ground value is calculated from FB = 1.097 FH. If a constant gyrofrequency FH is to be used at all heights, this value is entered as FB = -FH.

START is normally an assumed (model) real height at a plasma frequency of 0.5 MHz. Selection of a value for START is discussed in Sections 6.3 and 10.5.

(3) READ (6,904) (FM(I), I = 1,20) - in FORMAT (20F4.0).

This input specifies from 2 to 20 frequency marker values, in MHz, whose positions are to be digitized. The scale is assumed linear-in-ln(f) if only two markers are specified. Otherwise a four-point polynomial interpolation of ln(f) is used for the frequency scale. The markers actually digitized must correspond to those specified here, in number and in frequency. A common input sequence at this point will be 1, 2, 4, 8, 16.

(4) READ (6,904) (HM(I), I = 1,20) - in FORMAT (12F5.0).

Specify from 2 to 20 height marker values, in km, whose positions are to be digitized. The scale is assumed linear if only two markers are specified. With additional markers a 4-point height interpolation is used. The markers digitized must correspond to those specified here, in number and in height. If the height scale of the ionograms is accurately linear, the input here could be 100, 600. If there is any doubt about the height linearity a better sequence would be 0, 200, 400, 600.

11.3 Defining the Ionogram Coordinates

The digitizer is now switched to "EXTERNAL" and all further input is taken from the digitizing table. "End-of-layer" and "End-of-ionogram" information is entered by scaling points outside the normal area of the ionogram, as described below and in Section 11.4. The image or tracing to be scaled is of the general form shown in Fig. 26. In preparing a tracing, particular care must be taken in accurately identifying and tracing initial sections of the ordinary (O) and extraordinary (X) echoes. The corners (1) to (3) in Fig. 26 are formed by the intersection of two height markers, and two frequency markers or interference bands. The area to the bottom left of corner 1, called 'OFF-SCALE', is used to terminate each digitizing sequence. Areas to the top left of corner 2 and to the top right of corner 3 indicate the end of data from a given ionospheric layer. The corner areas must lie outside the area covered by the ionogram itself.
After scaling of the height markers, and switching the digitizer to EXTERNAL, the display shows

PROMPT: CORNERS?

Move the cursor well into the "off-scale" region (far bottom left) and press the "O" button. Then digitize the positions of the four corners of the tracing, clockwise from bottom left. These four points are used to "deskew" all later coordinates. Finally, digitize another "off-scale" point. This produces the next prompt:

PROMPT: FREQUENCY MARKERS?

Digitize the position of all frequency markers previously specified. The height at which the markers are digitized is not directly relevant. Using the points where the frequency markers cross the 200 km height line will generally give maximum accuracy with distorted ionograms. After 6 values have been entered, a carriage return is automatically inserted and the same prompt given again. After all the markers have been digitized, digitize an "off-scale" point; this will cause the next prompt:

PROMPT: HEIGHT MARKERS?

Digitize the position of all height markers previously specified. Again it is preferable to record the height markers at some frequency near the center of the section of the ionogram to be scaled. The marker series is terminated with another "off-scale" point.

Figure 26. An ionogram showing separate E, F1 and F2 layers, and the corner areas used to pass information to the digitiser program.
11.4 Scaling the Ionogram

11.4.1 Entry of ordinary ray data

PROMPT: O TRACE?

Ionogram scaling normally begins at the lowest observed ordinary (O) ray frequency $f_{\text{min}}$. The first few points are scaled at a frequency interval of about 0.1 MHz. Thereafter the interval may be increased, to 0.2 MHz or more, in regions where the virtual height is changing slowly. Enough data points should be digitized to permit accurate reproduction of the virtual height curve. Suggested rules for the selection of data to be scaled are summarised in Section 10.4.2.

Digitizing continues up to the critical frequency defining the end of the first layer ($f_{\text{OE}}$ in Fig 26). If the critical frequency can be defined accurately using traces from both the E and F layers it should be scaled, at any convenient height. The end of data from layer 1 is then indicated by scaling a point to the top right of corner (3). If the critical frequency is not scaled, end of data for layer 1 is indicated by scaling a point to the top left of corner (2).

For multi-layer ionograms, the second (F-layer) trace is digitised from just above $f_{\text{OE}}$ up to the next critical frequency. This is normally $f_{\text{OF2}}$, although there may occasionally be a true discontinuity, and a critical frequency, at $f_{\text{OF1}}$ (as in Fig. 26). Scaling of the second layer terminates with a "top left" point if the critical frequency is not scaled, or a "top right" point if the critical frequency is scaled.

Any additional layers are scaled in the same way, each data set terminating with a "top right" or "top left" point according as FC was or was not scaled. Finally, the end of the ordinary ray data is shown by digitizing an "off-scale" point. The digitizer program will then display a prompt for extraordinary ray data.

11.4.2. Entry of extraordinary ray data.

After the "off-scale" point signalling the end of O-ray data, any useful X-ray data should be scaled. The selection of 'useful' data is discussed in Section 10.4.3. For start calculations, 6 to 8 points are scaled at the low-frequency end of the X-ray trace, using a frequency interval of about 0.1 to 0.05 MHz. When X data are scaled, SCION can incorporate this correctly only if it can identify each of the layers used in the O ray scaling. So if there are no useful X data for one layer, two "top-left" points must be digitized. When useful X data are available they are digitized normally and terminated with either

(a) a "top-left" point if the trace does not give a useful estimate of the critical frequency FCx,

or

(b) scaling of the critical frequency followed by a "top-right" point.

Thus at least two points are digitized for each layer, even if the X trace is not present. Any scaled critical frequencies provide additional input for the least-squares peak calculation in POLAN.

The digitizer program assumes that O data have been scaled for three layers, called for convenience the E, F1 and F2 layers. Separate prompts are given for each layer, to help the operator in correctly terminating each data set. Data are digitized in order for each of the layers which were scaled with the O ray. Thus when only the night-time F layer is present, X-ray data for this layer are scaled in response to the first ("E-LAYER X?") prompt, and scaling is then terminated with an "off-scale" point.

Completion of the O-trace scaling by digitizing an "off-scale" point gives the first X-trace prompt:

PROMPT E-LAYER X?

If there is a suitable E-layer X-mode trace present for daytime ionograms, OR a suitable F-layer X-mode trace present for night-time ionograms, digitize 5 to 9 points on the initial part of the trace using a frequency interval of 0.1 to 0.05 MHz. If the X-trace gives a reasonable estimate of the (X-mode) critical frequency, this frequency should next be digitized followed by a "top-right" point. If the critical frequency is not scaled, terminate the data for the first layer with a "top-left" point.
If there was no second layer in the O-ray data, digitizing is terminated with an "off-scale" point. If the O data included a second layer, but there is no X-trace for this layer, digitize a "top-left" point; this is followed by an "off-scale" point if there are no further layers, or a second "top-left" point if a third layer is present.

When a suitable X trace is present for the second layer, digitize 5 to 9 points on the initial (downgoing) part of the trace. Finally digitize the X trace critical frequency and a "top-right" point, OR digitize a "top-left" point only.

Repeat the above digitizing sequence for any third layer. Note that the F1 and F2 portions of an ionogram should be treated as two separate layers only if they are truly separated, with an intervening valley. This occurs only when the F1 trace tends to a vertical asymptote (at foF1) and is not connected to the F2 trace, as in Fig. 26. In the example of Fig. 24 (Section 10.4.1) there is only one F layer.

Switch to INTERNAL and proceed as in (1) of Section 11.2. Thus if another ionogram is to be digitized, or the same one digitized again, key in the value one for IEXIT. Otherwise set IEXIT = 0 to terminate.

This completes the ionogram scaling.
REFERENCES

Becker, W. (1967), On the manual and digital computer methods used at Lindau for the conversion of multifrequency ionograms to electron density-height profiles, Radio Sci., 2, 1205-1232.

Becker, W. (1978), Conversion methods for $h'(f)$ to $N(h)$ used at Lindau, Appendix C of McNamara 1978(b).

Budden, K.G. (1955), A method for determining the variation of electron density with height ($N(z)$ curves) from curves of equivalent height against frequency ((h',f) curves), Physics of the Ionosphere, Rept. Phys. Soc. Conference, 332-339 (Phys. Soc. London).

Doupnik, J.R. and E.R. Schmerling (1965), The reduction of ionograms from the bottomside and topside, J. Atmosph. Terr. Phys., 27, 917-942.

Ellis, G.R. (1957), Measurement of the gyrofrequency in the F region, J. Atmosph. Terr. Phys., 11, 54-58.

Gulyaeva, T.L. (1972), On a non-ambiguous statement of the problem of computing the $N(h)$ profiles of the bottomside ionosphere, Geomagnetism and Aeronomy, 12, 551-553.

Gulyaeva, T.L. (1973), Computation of $N(h)$ profiles using the first and second order methods with a variable parameter in unobserved regions, in "Methods of computation and investigations of ionospheric $N(h)$ profiles", edited by B.S. Shapiro, T.L. Gulyaeva, and N.I. Potapova, Moscow, IZMIRAN, p.76-99.

Gulyaeva, T.L., W. Becker, L.F. McNamara, A.K. Paul, J.E. Titheridge and J.W. Wright (1978), Analysis of numerical ionograms. 2. The Starting Problem, Ionospheric Prediction Service Series X Reports IPS-X7, Sydney, Australia.

Howe, H.H. and D.E. McKinnis (1967), Ionospheric electron density profiles with continuous gradients and underlying ionization corrections, 2. Formulation for a digital computer, Radio Sci., 2, 1135-1158.

Koehler, J.A. and L.F. McNamara (1975), Frequency and virtual height errors in I.P.S. Ionograms, Ionospheric Prediction Service Series R Reports, IPS-R29, Sydney, Australia.

Knight, P. (1972), A classification of night-time electron-density profiles, J. Atmosph. Terr. Phys., 34, 401-410.

Lobb, R.J. and J.E. Titheridge (1977a), The valley problem in bottomside ionogram analysis, J. Atmosph. Terr. Phys., 39, 35-42.

Lobb, R.J. and J.E. Titheridge (1977b), The effects of travelling ionospheric disturbances on ionograms, J. Atmosph. Terr. Phys. 39, 129-138.

Lockwood, G.E.K. (1969), A computer-aided system for scaling topside ionograms, Proc. Inst. Elect. Electronics Eng., 57, 986-989.

Lyon, A.J. and A.J.G. Moorat (1956), Accurate height measurements using an ionospheric recorder, J. Atmosph. Terr. Phys., 8, 309-317.

McNamara, L.F. (1976), The accuracy of the single polynomial method of ionogram analysis, Ionospheric Prediction Service Series R Reports, IPS-R32, Sydney, Australia.

McNamara, L.F. and J.E. Titheridge (1977), Numerical ionograms for comparing methods of $N(h)$ analysis, Ionospheric Prediction Service Series X Reports, IPS-X5, Sydney, Australia.

McNamara L.F. (1978a), Ionospheric D-region profile data base, Report UAG-67, World Data Centre A for Solar Terrestrial Physics, NOAA, Boulder, CO 80303.

McNamara L.F. (1978b), A comparative study of methods of electron density profile analysis, Report UAG-68, World Data Centre A for Solar Terrestrial Physics, NOAA, Boulder, CO 80303.

McNamara L.F. (1978c), Selected disturbed D-region electron density profiles, Report UAG-69, World Data Centre A for Solar Terrestrial Physics, NOAA, Boulder, CO 80303.

McNamara, L.F. (1979), Model starting heights for $N(h)$ analyses of ionograms, J. Atmosph. Terr. Phys., 41, 543-548.

McNamara L.F. (1982), An Operational system for $N(h)$ analysis of vertical incidence ionograms, Internal Report, Ionospheric Prediction Service, Sydney, Australia.

Paul, A.K. (1960), Bestimmung der wahren aus der scheinbaren reflexionshohe, Arch. Elek. Ubertragung, 14, 468-476.

Paul, A.K. and J.W. Wright (1963), Some results of a new method for obtaining ionospheric $N(h)$ profiles with a bearing on the structure of the lower F region, J. Geophys. Res., 68, 5413-5420.

Paul, A.K. (1967), Ionospheric electron-density profiles with continuous gradients and underlying ionization corrections. I. The mathematical-physical problem of real-height determination from ionograms, Radio Sci., 2, 1127-1133.

Paul, A.K. and G.H. Smith (1968), Generalization of Abel's solution for both magnetoionic components in the real-height problem, Radio Sci., 3, 163-170.

Paul, A.K. (1977), A simplified inversion procedure for calculating electron density profiles from ionograms for use with minicomputers, Radio Sci., 12, 119-122.
Paul, A.K., T.L. Gulyaeva, L.F. McNamara, J.E. Titheridge and J.W. Wright. (1978), Analysis of numerical ionograms. 3. The valley problem, Ionospheric Prediction Service Series X Reports, IPS-X8, Sydney, Australia.

Piggott, W.R. and K. Rawer (1972), U.R.S.I. handbook of ionogram interpretation and reduction, Report UAG-23, National Geophysical and Solar-Terrestrial Data Centre, NOAA, Boulder, CO 80303.

Robinson, B.J. (1958), Ph.D. Thesis, University of Cambridge.

Shinn, D.H. and H.A. Whale (1952), Group velocities and group heights from the magneto-ionic theory, J. Atmosph. Terr. Phys. 2, 85-105.

Thomas, J.O. (1959), The distribution of electrons in the ionosphere, Proc. IRE., 47, No.2, 162-175.

Titheridge, J.E. (1959a), Ray paths in the ionosphere; approximate calculations in the presence of the earth's magnetic field, J. Atmosph. Terr. Phys., 14, 50-62.

Titheridge, J.E. (1959b), The use of the extraordinary ray in the analysis of ionospheric records, J. Atmosph. Terr. Phys., 17, 110-125.

Titheridge, J.E. (1959c), Ionisation below the night-time F layer, J. Atmosph. Terr. Phys., 17, 126-133.

Titheridge, J.E. (1961a), A new method for the analysis of ionospheric h'(f) records, J. Atmosph. Terr. Phys., 21, 1-12.

Titheridge, J.E. (1961b), The effect of collisions on the propagation of radio waves in the ionosphere, J. Atmosph. Terr. Phys., 22, 200-217.

Titheridge, J.E. (1966), The calculation of the heights of the peaks of the ionospheric layers, J. Atmosph. Terr. Phys., 28, 267-269.

Titheridge, J.E. (1967a), Calculation of the virtual height and absorption of radio waves in the ionosphere, Radio Science 2, 133-138.

Titheridge, J.E. (1967b), The overlapping-polynomial analysis of ionograms, Radio Science, 2, 1169-1175.

Titheridge, J.E. (1969), The single polynomial analysis of ionograms, Radio Science 3, 41-51.

Titheridge, J.E. (1974a), FORTRAN program LAPOL for the 5-term overlapping polynomial analysis of ionospheric virtual height records, Technical Report 74/2, Radio Research Centre, The University of Auckland, New Zealand.

Titheridge, J.E. (1974b), Direct analysis of ionograms at magnetic dip angles of 26 to 30 degrees, J. Atmosph. Terr. Phys., 36, 575-582.

Titheridge, J.E. (1975a), The relative accuracy of ionogram analysis techniques, Radio Science, 10, 589-599.

Titheridge, J.E. (1975b), The analysis of night-time ionograms, J. Atmosph. Terr. Phys., 37, 1571-1574.

Titheridge, J.E. and Lobb, R.J. (1977), A least-squares polynomial analysis and its application to topside ionograms, Radio Science 12, 451-459.

Titheridge, J.E. (1978), The generalised polynomial analysis of ionograms, Technical Report 78/1, Radio Research Centre, The University of Auckland, New Zealand.

Titheridge, J.E., W. Becker, L. Bossy, T.L. Gulyaeva, L.F. McNamara, and A.K. Paul (1978), Analysis of Numerical Ionograms. 1. Complete monotonic profiles and problems associated with the analysis of their ionograms, Ionospheric Prediction Service Series X reports, IPS-X6, Sydney, Australia.

Titheridge, J.E. (1979), Increased accuracy with simple methods of ionogram analysis, J. Atmosph. Terr. Phys., 41, 243-350.

Titheridge, J.E. (1982), The stability of ionogram analysis techniques, J. Atmosph. Terr. Phys., 44, 657-669.

Titheridge, J.E. (1985a), Ionogram analysis: Least squares fitting of a Chapman-layer peak, Radio Science 20, 247-256.

Titheridge, J.E. (1985b), Starting models for the real height analysis of ionograms, J. Atmosph. Terr. Phys., in press.

Wright, J.W. (1967), Ionospheric electron-density profiles with continuous gradients and underlying ionization corrections. III. Practical procedures and some instructive examples, Radio Sci., 2, 1159-1168.

Wright, J.W., A.K. Paul and E.A. Mechtly (1975), Electron density profiles from ionograms: Underlying ionization corrections and their comparison with rocket results, Radio Sci., 10, 255-270.
APPENDIX A. THE ACCURACY OF THE CALCULATED PROFILES

A.1 Relative Accuracies With Smooth Virtual Height Curves

The analysis of a finite number of exact virtual-height data points does not, in general, give exact real heights. Errors are introduced primarily through the inability of the analysis procedure to reproduce exactly the true variation of plasma frequency with height between the scaled frequencies. For the simplest method of analysis using linear laminations (Mode 1 in POLAN) results are good only when the true variation is approximately linear. Similarly the use of parabolic laminations (Mode 2) is satisfactory when the true gradient varies smoothly, but becomes inaccurate if the second derivative varies appreciably within one frequency interval $\Delta f$.

Errors in the linear lamination analysis can be estimated directly from the rate of change of gradient of the real-height profile (Titheridge, 1961a, Appendix). For higher order methods, however, direct calculations are difficult and relative accuracies must be determined by practical tests. Mode 1 of POLAN corresponds exactly to the widely-used linear lamination analysis. Mode 2 gives the parabolic lamination analysis; it is shown in Section 4.2 that this mode gives results which are effectively identical to those obtained from the best of the parabolic-lamination methods used by other workers. The different modes in POLAN can therefore be used to give an accurate assessment of the relative accuracy of the linear, parabolic and overlapping-polynomial techniques.

For an ionospheric real-height profile represented by $h = a + b.Fn + c.FN^2$, analysis of calculated virtual-height data gives exactly correct results (to within round-off error) for Modes 2 and above. For data corresponding to a profile $h = a + b.FN + c.FN^2 + d.FN^3 + e.FN^4$, all of the polynomial methods (Modes 4 to 9) produce the correct real heights while Modes 1 and 2 give appreciable errors. Comparison of different methods must therefore be done carefully, using profiles which cannot be represented by simple polynomial expressions. In the present work two profiles have been used to determine the relative errors of the different methods when applied to smoothly varying virtual-height data. These profiles are a parabolic layer and a Chapman layer, both with critical frequencies of 7.0 MHz. All calculations are for a dip angle of 67° and a gyrofrequency of 1.2 MHz; the changes at other dip angles are considered in Appendix B.3. The following precautions were taken to avoid including errors due to starting or peak effects in the comparison.

TABLE A1. The mean absolute errors (in metres) for a parabolic layer with a scale height SH of 75 km and a critical frequency FC of 7 MHz. The means include all frequencies up to FM-3$\Delta f$ (using virtual heights to FM for Mode 7, to FM-$\Delta f$ for Modes 5 and 6, and to FM-2$\Delta f$ for Modes 3 and 4). Values in italics give the mean error for each value of $\Delta f$, relative to Mode 2 (parabolic laminations).

| $\Delta f$ | FM | Mode = 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|-----------|----|----------|---|---|---|---|---|---|
| 0.1       | 6.85 | 195     | 1.28 | 0.38 | 0.03 | 0.02 | 0.03 | 0.01 |
|           | 6.9  | 201     | 1.44 | 0.48 | 0.04 | 0.02 | 0.04 | 0.01 |
|           |      | 146     | 1.00 | 0.32 | 0.026 | 0.015 | 0.026 | 0.007 |
| 0.2       | 6.7  | 351     | 3.52 | 2.66 | 0.08 | 0.07 | 0.04 | 0.05 |
|           | 6.8  | 359     | 3.94 | 3.08 | 0.12 | 0.10 | 0.05 | 0.07 |
|           |      | 95      | 1.00 | 0.77 | 0.027 | 0.023 | 0.012 | 0.015 |
| 0.3       | 6.6  | 493     | 6.34 | 4.60 | 0.20 | 0.17 | 0.05 | 0.09 |
|           | 6.7  | 489     | 6.74 | 5.00 | 0.24 | 0.23 | 0.07 | 0.14 |
|           |      | 75      | 1.00 | 0.73 | 0.034 | 0.031 | 0.009 | 0.018 |
| 0.4       | 6.4  | 559     | 8.12 | 5.17 | 0.28 | 0.25 | 0.07 | 0.12 |
|           | 6.6  | 568     | 9.17 | 6.48 | 0.38 | 0.40 | 0.11 | 0.20 |
|           |      | 65      | 1.00 | 0.67 | 0.038 | 0.038 | 0.010 | 0.019 |
| 0.5       | 6.3  | 532     | 8.90 | 6.62 | 0.37 | 0.37 | 0.15 | 0.16 |
|           | 6.5  | 621     | 11.07 | 8.77 | 0.52 | 0.60 | 0.23 | 0.29 |
|           |      | 58      | 1.00 | 0.77 | 0.045 | 0.049 | 0.019 | 0.023 |

Mean Relative: 88 1.00 0.65 .034 .031 .015 .016

Analysis order 1 2 3 4 5 6 7
Fitted data 1 2 3 4 6 8 11
(a) For the parabolic layer the virtual heights were calculated assuming no ionisation below the point where the plasma frequency $F_N = 0.9$ MHz. Analysis was started from 0.9 MHz, using START = -1 in POLAN to give an accurate direct start (Section 6.2(d)), and with several closely spaced data points at the beginning to ensure that all methods began accurately. For the Chapman layer, analysis began in the linear region commencing at 2.8 MHz and used virtual-height data which ignored ionisation below this point. A direct start was again used, with the inclusion of additional data points near 2.8 MHz to ensure an accurate start for all methods.

(b) Modes 5 and 6 use virtual heights at two frequencies above the frequency at which a real height is being calculated (Figure 1 of Section 5). Mode 7 uses three such points. So to obtain an accurate comparison of the basic analysis techniques at a fixed value of $\Delta f$, unaffected by peak fitting procedures, the last three calculated heights are ignored.

Virtual heights were calculated for the parabolic and Chapman layers, for different (constant) values of the frequency interval $\Delta f$ and different values of the highest frequency FM. These heights are accurate to within 0.2 metres, and involve no assumptions about profile shape. They were analysed with each of the single-step modes of POLAN (the Modes with NH = 1 in Table 1) and the absolute errors averaged to give the results shown in Tables A1 and A2.

The errors increase steadily as $\Delta f$ or FM increase. The relative errors for the different methods (shown in italics, for each frequency interval $\Delta f$) show an improvement of about 90 times between the linear and parabolic lamination techniques in Table A1. A further improvement of 30 to 60 times is obtained by the use of polynomial methods. In Table A2 there is an improvement of about 50 times when going from linear to parabolic laminations and a further improvement of 10 to 30 times for the polynomial methods.

The improvement from Mode 4 to Mode 5 is often small, due to the introduction of a least-squares fit rather than an exact fit. Mode 5 fits a five-term polynomial to six data points, giving some smoothing of the data which tends to increase errors when analysing precise data. Mode 6 uses six terms fitting eight data points (Table 1 and Figure 1). It therefore gives additional smoothing in general, although the incorporation of additional constraints still gives an increased accuracy. For Mode 7 (6 terms fitting 10 constraints) the least-squares smoothing is considerable and gives a slight decrease in accuracy when analysing precise data. With normal data containing fluctuating errors, however, the smoothing is a distinct advantage and we would expect this procedure to provide the most accurate real heights.

**TABLE A2.** Mean absolute errors in the calculated real heights of a Chapman layer with SH = 75 km and FC = 7 MHz. Values in italics give the mean error relative to mode 2.

| $\Delta f$ | FM | Mode = 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|-----------|----|----------|---|---|---|---|---|---|
| 0.1       | 6.85 | 96      | 1.56 | 0.89 | 0.09 | 0.03 | 0.03 | 0.02 |
|           | 6.9  | 101     | 1.76 | 1.25 | 0.11 | 0.03 | 0.04 | 0.02 |
|           |      | 59.3    | 1.00 | 0.64 | 0.060 | 0.018 | 0.021 | 0.012 |
| 0.2       | 6.7  | 136     | 4.34 | 2.03 | 0.15 | 0.06 | 0.03 | 0.04 |
|           | 6.8  | 149     | 4.76 | 2.86 | 0.21 | 0.10 | 0.05 | 0.08 |
|           |      | 31.3    | 1.00 | 0.54 | 0.040 | 0.018 | 0.009 | 0.013 |
| 0.3       | 6.6  | 146     | 7.48 | 3.42 | 0.28 | 0.20 | 0.06 | 0.12 |
|           | 6.7  | 166     | 8.37 | 4.31 | 0.36 | 0.30 | 0.09 | 0.19 |
|           |      | 19.7    | 1.00 | 0.49 | 0.040 | 0.032 | 0.009 | 0.020 |
| 0.4       | 6.4  | 119     | 9.97 | 4.07 | 0.37 | 0.31 | 0.10 | 0.14 |
|           | 6.6  | 158     | 12.38 | 6.40 | 0.56 | 0.59 | 0.18 | 0.31 |
|           |      | 12.4    | 1.00 | 0.47 | 0.042 | 0.040 | 0.013 | 0.020 |

Mean Relative 30.7 1.00 0.535 0.045 0.027 0.013 0.016
A.2 The Analysis of Irregular Profiles

The accuracy of an $N(h)$ analysis procedure depends on the accuracy of interpolation between real-height data points (Titheridge, 1975a). The accuracy improves (in general) as the order of the interpolating function increases, as long as instabilities are avoided. Instabilities show primarily as an oscillation in the calculated real-height points following a cusp or other discontinuity in the virtual-height data. This effect is minimised by using least-squares solutions with higher order polynomials.

The behaviour of different methods when applied to virtual-height data with cusps or other irregularities is investigated in Titheridge (1982). When the frequency interval $\Delta f$ is too wide to define adequately the changes in real or virtual height, all methods give a similar smooth profile across the cusp region. As $\Delta f$ decreases, however, the higher order methods give a more rapid improvement than the lamination techniques since they can more readily reproduce the inflections in the real-height profile.

Errors in the calculated profile across a cusp region give an incorrect gradient at the first frequency above a cusp. This gradient error propagates to higher frequencies in an oscillatory fashion, for all methods which require gradient continuity. The oscillations are appreciable only at the first 3 or 4 frequencies following a cusp, and are largest for the parabolic lamination procedure. The oscillations are reduced by a factor of about 1.5 for a fourth order polynomial analysis, and by a factor of about three for higher order least-squares methods. They are effectively zero for POLAN Mode 3 (as described in Titheridge, 1982).

A test profile adopted by U.R.S.I. Working Group G/6/2 (Titheridge et al., 1978) consists of two overlapping Chapman layers giving a virtual-height trace with a typical cusp. This is shown in Figure A1. Precise virtual-height data were analysed by different members using their own selection of data points and without prior knowledge of the correct result. Real heights were to be determined at a given series of frequencies; this required interpolation in the calculated real-height arrays and was designed to test accuracy at and between calculated points.

**FIGURE A1.** The real-height profile (consisting of two superposed Chapman layers) used to produce test ionograms with a large cusp at 4.2 MHz.
TABLE A3. The accuracy of real-height calculations for the model of Fig. A1, using 56 data points concentrated near the cusp. Errors (in metres) are for interpolated heights at 22 given frequencies, for an independent parabolic lamination analysis and for Modes 2 to 6 of POLAN.

| f(MHz) | Parabolic | POLAN2 | POLAN3 | POLAN4 | POLAN5 | POLAN6 |
|--------|-----------|--------|--------|--------|--------|--------|
| 0.905  | 5         | 1      | 1      | 1      | 1      | 1 m.   |
| 1.505  | 20        | 7      | 7      | 0      | 0      | 0      |
| 2.002  | 19        | 8      | 9      | 0      | 0      | 0      |
| 2.503  | 15        | 5      | 6      | -1     | 0      | -1     |
| 3.004  | 15        | 5      | 2      | -2     | -1     | -2     |
| 3.505  | 15        | 9      | -5     | -2     | -1     | -2     |
| 4.005  | 40        | 40     | -58    | -10    | -3     | -10    |
| 4.056  | 39        | 35     | -69    | -12    | -5     | -11    |
| 4.105  | 49        | 57     | -71    | -8     | 2      | 5      |
| 4.156  | 32        | 45     | -32    | -3     | 2      | 6      |
| 4.207  | 30        | 23     | -39    | -7     | -3     | -8     |
| 4.256  | 31        | 31     | -41    | -5     | -2     | -1     |
| 4.303  | 32        | 29     | -37    | -5     | -3     | -5     |
| 4.355  | 36        | 37     | -33    | -5     | -4     | -3     |
| 4.501  | 34        | 34     | -26    | -4     | -3     | -1     |
| 5.002  | 37        | 36     | -3     | -3     | -1     | 1      |
| 5.503  | 39        | 36     | -2     | -3     | -1     | 1      |
| 6.004  | 38        | 35     | -10    | -4     | -1     | -1     |
| 6.505  | 48        | 48     | -36    | -6     | -3     | -4     |
| 6.606  | 49        | 48     | -33    | -6     | -2     | -6     |
| 6.707  | 54        | 54     | -30    | -8     | -2     | -4     |
| 6.808  | 71        | 74     | -28    | -12    | -5     | -8     |

RMS Error = 36.9 37.1 33.6 6.0 2.5 4.9m.

The specified frequencies are given in the first column of Table A3. The next column shows the real-height errors in metres for the most successful of the parabolic-lamination results. This used minimum frequency spacings of 0.02 and 0.03 MHz across the cusp region (near 4.2 MHz). Results for POLAN Mode 2 using exactly the same virtual-height data are given in the third column of Table A3. The only consistent differences between columns 2 and 3 arise from the better start achieved by POLAN (probably due to the use of laminations parabolic in FN rather than in FN^2). Differences across the cusp region are caused entirely by the interpolation procedures. For the parabolic-lamination results, heights were obtained at the specified frequencies using the actual parabolic expressions determined for each interval. POLAN results used (in all cases) a second difference interpolation in the array of calculated real heights. This gives slightly less accuracy in irregular regions, but does not require any more information than is obtained in the calculated (height, frequency) arrays and so is the procedure normally used for determining intermediate points. If we compare heights at the frequencies used in the analysis, the parabolic-lamination and POLAN 2 results agree to within 1.5 m at all points between 4.0 and 5.0 MHz. Thus the analysis given by POLAN Mode 2 is representative of the best that can be achieved using parabolic laminations.

The RMS error for each method is given at the bottom of Table A3. By this measure POLAN 2 is identical to the parabolic lamination result. Compared with these methods the errors are smaller by a factor of 5 for POLAN 4, and a factor of 10 for POLAN 5. Maximum errors in the cusp region are reduced by a factor of 2 or 3 for POLAN 4, and 4 or 5 for POLAN 5. For POLAN 6 (which fits a 6-term polynomial to 8 data points) the increased smoothing given by the least-squares fit leads to increased errors in the region of greatest curvature (just below the cusp). This smoothing will, however, be an advantage in the presence of typical fluctuating data errors. [Note that Modes 4 to 6 were labelled 3 to 5 in the original test, and errors from 4.25 to 4.5 MHz were appreciably greater since POLAN then used only a linear-lamination approximation for underlying sections rather than the procedure described in Appendix D.2.]

Results obtained by analysing the same virtual-height profile using different, constant values of the frequency interval Δf are shown in Table A4. The errors given here are the mean absolute value and the RMS value of the errors at equally spaced data frequencies, from 1.0 to 6.8 MHz inclusive. Largest errors occur near the cusp, in all cases, since errors near the peak (at frequencies up to 6.8 MHz) are reasonably small with these values of Δf. The RMS error reflects primarily the maximum errors in the cusp region, while the mean error includes a larger contribution from the post-cusp error.
TABLE A4. The error in metres obtained by analysing virtual-height data for the profile of Figure A1, at a dip angle of 67°, for three different values of scaled frequency interval $\Delta f$. Solid type gives the mean absolute error, and the RMS error, from 1.0 to 6.8 MHz inclusive. Values in italics show the average of the Mean and RMS values, relative to the results for Mode 2 (parabolic laminations).

| POLAN Mode | 1   | 2   | 3   | 4   | 5   | 6   | 7   |
|------------|-----|-----|-----|-----|-----|-----|-----|
| $\Delta f=0.1$ |     |     |     |     |     |     |     |
| Mean:      | 353 | 63.6| 31.6| 16.9| 19.8| 16.7| 39.4|
| RMS:       | 491 | 80.8| 54.3| 40.3| 36.2| 28.7| 76.9|
| Relative:  | 5.84| 1.00| 0.59| 0.40| 0.39| 0.31| 0.80|
| $\Delta f=0.05$ |    |     |     |     |     |     |     |
| Mean:      | 223 | 25.2| 13.7| 5.5 | 7.3 | 6.6 | 5.7 |
| RMS:       | 305 | 28.5| 21.0| 9.1 | 11.9| 11.2| 9.3 |
| Relative:  | 9.83| 1.00| 0.65| 0.27| 0.36| 0.33| 0.28|
| $\Delta f=0.025$ |   |     |     |     |     |     |     |
| Mean:      | 306 | 25.3| 20.1| 3.7 | 2.3 | 2.4 | 2.9 |
| RMS:       | 393 | 30.5| 27.8| 4.9 | 3.8 | 3.8 | 4.8 |
| Relative:  | 12.53| 1.00| 0.86| 0.15| 0.11| 0.11| 0.14|

All errors in Table A4 are appreciably less for the higher order methods. The difference is least at $\Delta f = 0.1$ MHz, where the given data is insufficient to define the real-height variations and all methods give a smoothed profile. At smaller values of $\Delta f$ the higher order methods improve more rapidly, showing the greater ease with which they follow complex profile variations. We therefore conclude that the analysis order represented by POLAN Mode 5 or Mode 6 gives an appreciable improvement on procedures currently in use (which correspond to Modes 1 and 2), for both smooth and irregular profiles, at large and small scaling intervals. The overlapping-cubic procedure (Mode 3) eliminates any oscillatory tendencies with irregular profiles. Such tendencies are, however, quite small with the higher order polynomials. The higher modes are therefore generally preferred.

A.3 The Effect of Errors in the Virtual Height Data

(i) Basic errors in virtual height

There are several possible sources of error in the basic relation giving $h'$ as an integral of $\mu' dh$. Even in the absence of collisions, the ray theory assumed becomes inapplicable near the peak of a layer; the errors are however appreciable only within about 0.01% of the critical frequency, and so are of little concern.

Collisions made by electrons in the ionosphere reduce $\mu'$ in the region near reflection, and can considerably decrease the height $h'$ obtained by a direct integration of the real part of $\mu'$. Under these conditions, however, $\mu$ is not zero at any real height and ray theory fails. In the absence of a magnetic field, and replacing the true profile by a linear approximation near reflection, integration in the complex plane shows that collisions have zero effect on the true value of $h'$ (Titheridge, 1961b). Numerical calculations show that this result is generally applicable. An exact virtual height is obtained by integrating the complex value of $\mu'$, including the collision terms, up to the complex height at which $\mu' = 0$. At all dip angles this gives, to within 0.1%, the same result as integrating the no-collision expression for $\mu'$ up to the classical reflection height (Titheridge, 1967a). The effect of collisions should therefore be ignored at all stages in the analysis.

A further assumption inherent in the expression for $h'$, that of a vertically propagating ray, can cause considerable errors. With an inclined magnetic field the O and X rays are deviated horizontally in opposite directions through a distance of typically 20 km (Titheridge, 1959a). The horizontal displacement is largest in the F region, so that the value of foF2 measured at mid latitudes commonly applies to a point about 40 km polewards of the observing site. This deviation does not affect the virtual heights for a horizontally stratified ionosphere, when the wave-normal remains vertical.
throughout. Errors will occur, however, if the ionosphere is not horizontally uniform, and detailed comparisons of $h'x$ and $h'o$ to obtain information about the unseen regions will become unreliable.

The presence of large irregularities in the ionosphere can cause horizontal deviations of over 100 km (Lobb and Titheridge, 1977b). The rays avoid regions of decreased density, so a decrease travelling over a station may pass unseen on the ionograms. A similar increase will appear perhaps 200 km larger (horizontally) than its true dimensions. In either case, when there is an irregularity within a few hundred km of the station, ionograms do not give a reliable measure of even the overhead critical frequency. Ray-tracing calculations show that, in the presence of a wave-like disturbance, ionogram analysis gives most nearly the profile of the undisturbed ionosphere.

Experimental limitations restrict the accuracy of measured virtual heights. Serious errors arise from the effect of pulse delay in the receiver, and from changes in the width of the recorded trace with echo amplitude. Since measurements are normally made to the leading edge of the echo, these effects cause the measured heights to be too large and to vary irregularly by as much as 10 or 20 km. Many ionograms have a zero error of about 10 km, due to delay in the receiver; this error can be determined by comparing the heights of multiple reflections. The effect of variations in the width of the $h'(f)$ trace has been studied, for a particular ionospheric recorder, by Lyon and Moorat (1956). They found that the height measured to the leading edge of the echo changed by about one quarter of the total change in the echo width. For other ionosondes the change in the position of the leading edge may be as much as half the change in the width of the recorded trace (e.g. Koehler and McNamara, 1975). For accurate results this variation should be determined and a corresponding correction made when scaling the virtual heights.

The size of typical virtual-height errors $\Delta h'$ has been considered by Koehler and McNamara (1975). Uncertainties in the correction for receiver delay, and in the zero height correction, produce virtual-height errors of about $\pm 1$ km for strong echos and $\pm 2$ km for weak echos. The errors become largest where the virtual heights are changing most rapidly, through increased difficulty in defining the leading edge of the echo and because small errors in frequency give large errors in the corresponding virtual heights. The uncertainty in scaled frequencies is commonly 1 or 2 percent of the frequency. Using cross-wires locked in the frequency direction, repeated scaling of the same point by different persons showed random variations in virtual height (with two typical ionograms) through a range of about $0.5 + 0.001(dh'/dlnf)$ km, where $lnf$ is the natural logarithm of the frequency in MHz. Errors in scaling the positions of the frequency markers add a further uncertainty of perhaps 0.1% in the frequency axis, corresponding to a virtual-height error of about $0.001(dh'/dlnf)$ km.

An exercise carried out within U.R.S.I. W.G. G/6/2 consisted of scaling a good-quality midlatitude ionogram by different members. Results showed variations in virtual height of $\pm 2$ km in the E region and $\pm 5$ km in the F region, where the virtual-height trace was approximately horizontal. The variations increased near critical frequencies. Thus for typical ionograms and good quality echos we expect overall fluctuations in virtual-height, due to scaling errors, of roughly

$$\Delta h' \approx 2.0 + 0.001(dh'/dlnf) \text{ km in the E region},$$

and

$$\Delta h' \approx 4.0 + 0.002(dh'/dlnf) \text{ km in the F region}.$$  

The gradient $dh'/dlnf$ is typically about 5000 km near a cusp, giving RMS errors in virtual height of 3 to 10 km. Data acquired directly from modern digital ionosondes will eliminate most of these scaling errors, although changes in echo amplitude may still give spurious changes in the recorded virtual heights with some instruments.

(ii) Resulting errors in the real height

The accuracy of a calculated $N(h)$ profile depends on the amount and accuracy of the given virtual-height data and on the accuracy of the $N(h)$ analysis procedure. It can be shown (Titheridge, 1975a) that errors in the given virtual heights produce approximately the same changes in the calculated real heights for all methods of analysis. Using a frequency spacing $\Delta f$ of 0.2 MHz, an isolated error $\Delta h'$ in one virtual height produces a real-height error $\Delta h$ with a mean value of about $0.06\Delta h'$, at about 10 successive frequencies. For different values of $\Delta f$, the errors were found to vary approximately as $\Delta f^{0.6}$. The real-height error $\Delta h$ is therefore

$$\Delta h \approx 0.06\Delta h' (\Delta f/0.2)^{0.6}$$

averaged over about 10 successive points. For random errors $\Delta h'$ on all virtual heights, the mean value of $\Delta h$ will increase about 3 times. Thus for any method of $N(h)$ analysis, random errors of $\Delta h'$ km in the virtual-height data produce real-height errors of the order of
\[ \Delta h = 0.5 (\Delta f)^{0.6} \Delta h' \]  

For typical virtual-height errors of about 2.5 km (RMS), and frequency intervals \( \Delta f \) of 0.1 MHz, (A3) indicates fluctuating real-height errors of about 0.3 km.

Calculated profiles also include a larger but more slowly-varying error due to uncertainties in the start and valley corrections. The effect of random errors on the start calculation is considered in Appendix B.2. For virtual-height errors of about 2.0 km, the RMS error in the calculated starting heights is about 5 km at dip angles less than 32°, and 10 km at dip angles above 40°. (The errors become very large at dip angles near 35°, as shown in Fig. B4, when combined O and X ray calculations for the unobserved regions become impractical.) For valley calculations the same virtual-height errors give a RMS real-height error of about 15 km, just above the valley (Appendix B.2). These are fundamental errors which will occur in all calculations, using a purely mathematical procedure based on combined O and X ray data. Biasing of the results by the inclusion of suitably weighted physical constraints in a least-squares analysis (as described in Sections 7.3 and 8.4) commonly reduces the real-height fluctuations by a factor of about 2.

The errors introduced by incorrect start and valley corrections vary smoothly with frequency. Continuous lines in Fig. A2 show the change \( \Delta h \) in real height, as a function of the plasma frequency \( f \) (expressed as a fraction of the gyrofrequency FH), for a change of 5 km in the assumed real height at \( f = 0.5 \text{FH} \). Adding (or subtracting) any multiple of these curves from a profile does not alter the virtual heights for the O ray. Figure A2 can therefore be used to determine the changes in real height, at any frequency, caused by a change in the assumed size of the starting correction. As shown by the broken line, the real-height changes decrease approximately as \( 1/f \) at increasing frequencies.

Corresponding results for the valley correction are given in Fig. 9 of Section 7.4. Changes in the real height of the upper layer, due to changes in the assumed width of the valley region, vary approximately as \( 1/f^2 \) at frequencies near the critical frequency \( FC \) of the underlying peak. At higher frequencies, greater than about 2FC, the real height changes vary approximately as \( 1/f \).

**Figure A2.** Changes in real height, beginning at a frequency \( f \) of half the gyrofrequency FH, that produce no change in the virtual height of the ordinary ray. Results are shown for dip angles of 0° and 80°, assuming a change of 5 km in the real height at plasma frequencies of 0 to 0.5FH.
APPENDIX B. DEPENDENCE OF THE GROUP REFRACTIVE INDEX ON DIP ANGLE.

B.1 Values of group index

The group refractive index $\mu'$ varies only slowly with the plasma frequency $FN$ when $FN$ is small, but $d\mu'/dFN$ increases rapidly near the reflection point and becomes infinite at $FN = FR$. Changes in $\mu'$ are therefore displayed more clearly if we use a variable $T$ defined by

$$T^2 = 1 - \frac{FN^2}{FR^2}. \quad (B1)$$

For the O ray at a dip angle $I = 0^\circ$, $\mu'T$ is constant and equal to 1. $dT/dFN$ is proportional to $1/T$ and, under all conditions, tends to infinity at reflection (where $T = 0$) in the same way as $d\mu'/dFN$. Thus $d\mu'/dT$ is finite and well-behaved throughout.

For dip angles of $20^\circ$, $50^\circ$ and $80^\circ$ the ratio $(\mu'_x - 1)/(\mu'_o - 1)$ is shown as a function of $T$ in Fig. B1. The values of $\mu'$ are for 'corresponding' O and X rays, with the same plasma frequency $FR$ at reflection. Thus the curves in Fig. B1 give the ratio of the group retardations of corresponding X and O rays, from the base of the ionosphere ($T = 1$) to the reflection point at $T = 0$. For a given dip angle, values of $\mu'$ depend only on the ratios of the frequencies $FN$, $FR$ and $FH$. $FN/FR$ is specified by $T$, while $FR/FH$ appears as an independent parameter.

At a dip angle of $80^\circ$ (the broken lines in Fig. B1) the group retardation ratio

$$R_{x,o} = (\mu'_x - 1) / (\mu'_o - 1)$$

varies considerably from $T = 1$ to $T = 0$. Throughout most of the range $0 < FN < 0.98FR$ (corresponding to $T > 0.2$) the ratio $R_{x,o}$ is large, with a comparatively constant value of about 2.3, 4.0 or 6.0 at $FR/FH = 4$, 2 or 1.4 respectively. Thus the ratio of the retardations for the X and O rays is roughly constant and proportional to $FH/FR$ at $FN < 0.98FR$. The ratio passes through unity near $FN = 0.99FR$, corresponding to $T = 0.13$. For values of $FN$ between 0.995FR and the reflection point $FN = FR$ (the range 0.1 to 0 in $T$), $R_{x,o}$ has a mean value of about 0.4 for all values of $FR/FH$.

At dip angles near $80^\circ$ we therefore have two distinct regions causing differential retardation of the O and X rays.

(a) For plasma frequencies $FN$ within 0.5% of the value $FR$ for reflection, the group retardation of the X ray is about 0.4 times that of the O ray. The gradient at reflection therefore causes about 2.5 times as much group retardation for the O ray as for the X ray.

(b) For plasma frequencies $FN < 0.98FR$ the group retardation of the X ray over the region $0 < FN < 0.98FR$ is approximately 4 times that of the O ray. Underlying ionisation therefore causes a large increase in $h'_x$ and a considerably smaller change in $h'_o$.

Observed values of $h'_x$ and $h'_o$ can give no information about the distribution of ionisation in any region where $R_{x,o}$ is approximately independent of $FN$. Thus if $R_{x,o} \approx \bar{R}$ in a region $F1 < FN < F2$, the group retardation of the X ray in this region is:

$$Dh'_x = \int_{F1}^{F2} (\mu'_x - 1) (dh/dFN).dFN \approx \bar{R} \int_{F1}^{F2} (\mu'_o - 1) (dh/dFN).dFN$$

or

$$Dh'_x \approx \bar{R}.Dh'_o. \quad (B2)$$

Changes in profile shape which do not alter the value of

$$Dh'_o = \int_{F1}^{F2} (\mu'_o - 1) (dh/dFN).dFN$$

will not alter the value of $Dh'_x$, and so they are not detectable. The ratio $R_{x,o}$ may vary with frequency, i.e. with the value of $FR$. As long as it is approximately independent of $FN$ over the region $F1 < FN < F2$, however, changes in $Dh'_x$ are related to those in $Dh'_o$ by the known constant $\bar{R}$. Measurements of $h'_x$ then give no additional information.

The curves in Fig. B1 show that $R_{x,o}$ is approximately independent of $T$ for $T > 0.7$, corresponding to $FN < 0.7FR$. This is true for all frequencies at dip angles less than $30^\circ$ or greater than $60^\circ$. At intermediate dip angles it is true for frequencies $FR$ greater than $2FH$. Under these conditions, and taking $FR$ as the minimum observed frequency $f_{min}$, no information about the distribution of ionisation in the region $FN < 0.7f_{min}$ can be obtained from the observed O and X ray.
Figure B1. The relative group delays of the extraordinary and ordinary rays from the base of the ionosphere \((T = 1)\) to reflection \((T = 0)\). FR is the plasma frequency at reflection for both X and O rays. FH is the gyrofrequency.

Figure B2. The group delay ratio \(R_{x,o} = (\mu'_x - 1)/(\mu'_o - 1)\) as a function of dip angle, for plasma frequencies at reflection (FR) of twice and six times the gyrofrequency. The curves at \(T = 0.85, 0.5, 0.25\) and \(0.1\) correspond to \(FN/FR = 0.53, 0.87, 0.97\) and \(0.997\) respectively.
virtual heights. This is true for any method of analysis. Thus a basic requirement for a stable analysis procedure is that it should not attempt to determine the distribution of ionisation in this region.

Figure B2 shows the variation of $R_{x,o}$ with dip angle for 4 fixed values of T, corresponding to plasma frequencies of 0.53, 0.87, 0.97 and 0.995 times FR. Solid lines are for typical start calculations, with FR = 2FH. The broken lines, for FR = 6FH, are typical of valley calculations. In both cases $R_{x,o}$ increases with increasing FN (decreasing T) at $I < 30^\circ$; decreases with increasing FN from $30^\circ$ to $70^\circ$; and increases with increasing FN at dip angles above about $85^\circ$. Thus for dip angles of $0$ to $20^\circ$, $h'_x - h'_o$ is increased most by high density ionisation. This is also shown in Fig. B1, where the ratio $R_{x,o}$ increases as T tends to zero at dip $20^\circ$. At $I > 40^\circ$ the values of $h'_x - h'_o$ are increased by low density ionisation only. Thus in Fig. B1, $R_{x,o}$ is greater than 1.5 for all $T > 0.4$ (FN < 0.92FR) at $50^\circ$ dip, and for all $T > 0.15$ (FN < 0.99FR) at $80^\circ$ dip.

One anomalous point apparent in Fig. B2 is at a dip angle of $30^\circ$. Here the ratio $R_{x,o}$ is approximately constant, at a given frequency, for all values of T. Thus we have $R_{x,o} = 1.44 \pm 0.06$ at FR = 6FH. For rays reflected at FN = FR = 2FH the total delays $D = h' - HR$ are related by $D_x = (1.44 \pm 0.06)D_0$. The real height HR at the plasma frequency FR is then

$$HR = h'_o - (h'_x - h'_o)/(0.44 \pm 0.06).$$

At dip $30^\circ$ observed virtual heights therefore give directly the real heights of reflection (Titheridge, 1974b). The total delay $h' - HR$ is also obtained in one step which involves no assumptions or calculations relating to the distribution of the underlying ionisation. It follows that no information can be obtained about the distribution of the underlying ionisation, at a dip angle of $30^\circ$. Using the argument following equation (B2), $R_{x,o}$ is constant for all FM < fmin so that the region in which values of $(dh/dFN)$ can not be found extends right up to the lowest observed frequency fmin. A severe practical limitation also occurs near dip $35^\circ$ (as in Fig. B4).

![Figure B3. Values of the group refractive indices $\mu'_x$ and $\mu'_o$ at $I = 67^\circ$ and FH = 1.18 MHz. $\mu'$ becomes infinite at the reflection point where $X_o = 1$. Broken lines show 3-term polynomial approximations, accurate to within 5% for $X_o < 0.84$.](image-url)
B.2 Information obtainable using O and X rays

We have seen above that information about the distribution of unseen ionisation cannot be found over any range of plasma frequencies FN for which the ratio \( R_{x,o} = (\mu'_x - 1)/(\mu'_o - 1) \) is approximately constant. At all dip angles this range includes the region FN = 0 to FN = 0.7fmin, for fmin > 2FH. At most dip angles \( R_{x,o} \) is approximately constant over the range 0 < FN < 0.7fmin for all frequencies down to 1.0FH, so that the distribution of ionisation is never obtainable at FN < 0.7fmin. An exception occurs for dip angles near 50° (Fig. B1), when dR/dT is quite large down to T = 1 at FR ≈ FH. Observed virtual heights then depend on the distribution of ionisation down to quite low values of FN/fmin, and good observations could be used to determine this distribution.

Although (in general) the actual distribution of ionisation cannot be found at FN < 0.7fmin, the overall effect of this region is measurable. The solid lines in Fig. B3 show the variation of \( \mu' \) with \( X_o \) for FR = 1.7FH at dip 67° (from Titheridge, 1959b). Broken lines show approximating expressions of the form

\[
\mu' = 1 + aX_o + bX_o^4,
\]

where \( X_o = FN^2/FR^2 \) in (B1).

These approximations have a maximum error of 5% for values of \( X_o \) up to 0.84, corresponding to FN = 0.917FR. The error is generally much less than 5%, and is of changing sign. Thus for both O and X rays the overall group delay due to any region with FN < 0.9fmin is given to within about 1% by

\[
D = \int_0^{0.9fmin} (\mu' - 1)(dh/dFN).dFN
\]

(B3a)

\[
= A \int_0^{HA} FN^2.dh + B \int_0^{HA} FN^8.dh
\]

(B3b)

where \( A = a/FR^2, B = b/FR^8 \) and HA is the height at which FN = 0.9fmin. The functions a, b, A and B vary with frequency (i.e. with FR), but do not depend on the gradient dh/DFN in the region FN < 0.9fmin. Thus the only information which can be obtained about this underlying region is the values of \( \int N^2dh \) and \( \int N^4dh \), where N is the electron density (proportional to FN^2).

The effect of errors in the virtual-height data can be calculated directly, and is independent of the shape of the real-height profile. Suppose that exact virtual heights \( h'_j \) produce real heights \( h_j \). The analysis corresponds to a matrix transformation of the type

\[
[H] = [M].[H']
\]

(B4)

where \([H']\) is a column matrix giving the virtual-height data and \([H]\) is the array of real heights. This applies to exact and least-squares solutions, with a single component or with both O and X-ray data. The matrix \([M]\) is independent of the data and involves only the frequencies used and the magnetic field constants.

Changes Dh' in the virtual heights produce changes Dh in the real heights, related by

\[
[DH] = [M].[DH'].
\]

(B5)

Thus real-height errors are a linear function of the virtual-height errors. An error matrix E(i,j) can be derived which gives the real-height error at a frequency \( f_i \), due to an error \( e_j \) in the virtual height \( h'_j \), as

\[
Dh_j = E(i,j) e_j.
\]

(B6)

This means that an error of 1 km in the virtual height at the jth data frequency produces an error \( E(i,j) \) km in the ith real height. If each of the n virtual-height data points has a similar random error, with a RMS value \( <e> \), the RMS real-height error is

\[
Dh_j = E_j.<e>
\]

(B7a)

where

\[
E_j^2 = \sum_{j=1}^{n} E(i,j)^2
\]

(B7b)

Error matrices were obtained for slab start calculations using a 5-term real-height polynomial (POLAN mode 5), with 5 O-ray and 5 X-ray data points at a frequency spacing of 0.1 MHz. Errors in the calculated real-height profile, at two points in the unobserved range and one in the center of the observed range, are listed in Table B1. Mean real-height errors near the center of the scaled
frequency range, and averaged over both ranges of dip angle in Table B1, are typically as shown below where \( \langle e_0 \rangle \) and \( \langle e_X \rangle \) are the RMS errors in the O and X ray virtual-height data.

For Start calculations with \( f_{\text{min}} \approx FH \):

\[
D_h \approx 3.0 \langle e_0 \rangle \quad \text{for O-ray errors only}
\]
\[
D_h \approx 2.0 \langle e_X \rangle \quad \text{for X-ray errors only}
\]

and

\[
D_h \approx 3.0 \langle e \rangle \quad \text{at } \langle e_0 \rangle = \langle e_X \rangle = \langle e \rangle
\]

If the virtual heights contain systematic errors, of \( e_0 \) km for the O-ray data and \( e_X \) km for the X-ray data, these give a real-height error of

\[
D_h \approx 3.5e_0 - 2.5e_X.
\]

At dip angles near 35° the matrix \([M]\) in (B4) becomes ill-conditioned. This occurs because the variations of \( \mu'_X \) and \( \mu'_O \) with plasma frequency FN are very similar in shape at different frequencies. Small changes in the virtual heights then produce large changes in the real heights. Figure B4 shows the value of \( E_j \) defined by (B7), for a frequency \( f_j \) in the center of the scaled frequency range, plotted as a function of dip angle. A solid bar marks the region at dip angles of 33° to 38°. Over this range the presence of even small errors in the virtual-height data makes useful start calculations impossible.

The same problem is encountered for valley calculations, using combined O and X ray data, at dip angles near 35°. This is indicated in Fig. 21 (Section 9.4) where changes in the assumed valley depth produce increased fluctuations in the calculated profile near DIP = 35°, even with exact data. For valley calculations the frequencies used are well above the gyrofrequency, so the difference between O and X-ray data decreases. This gives an increased sensitivity to data errors at all dip angles. When the critical frequency of the underlying (E layer) peak is about 3.0 MHz, the real-height errors just above the valley (due to virtual-height errors with a RMS value \( \langle e \rangle \)) are typically

\[
D_h \approx 6 \langle e_0 \rangle \quad \text{for O-ray errors only}
\]
\[
D_h \approx 5 \langle e_X \rangle \quad \text{for X-ray errors only}
\]

and

\[
D_h \approx 8 \langle e \rangle \quad \text{at } \langle e_0 \rangle = \langle e_X \rangle = \langle e \rangle
\]

For both start and valley calculations, data errors have least effect on the calculated profile (in the observed range) at dip angles near 29°. This occurs even although little information can be found about the unobserved regions, as discussed in Section B.1.

**Table B1.** Errors in the calculated real-height profile, due to random virtual-height errors with a RMS value of 1.0 km. Results are for a slab start calculation using combined O and X ray data. Values shown are the RMS error in the thickness of the underlying slab of ionisation \( q(MT) \) in Fig. 10 of Section 8.3); in the start offset (giving the real height at a frequency of 0.6fmin); and in the real height at the center of the scaled frequency range. These values are approximate mean errors over the indicated range of dip angles.

| Calculated quantity          | DIP < 27° | DIP > 40° |
|------------------------------|-----------|-----------|
| Slab thickness \( q(MT) \)   | 31.       | 33.       |
| Start offset \( q(MT+1) \)    | 8.        | 13.       |
| Real height in center of range | 2.5      | 5.        |
B.3 The reduction of integration errors at high dip angles

In the calculation of virtual-height integrals, maximum accuracy is obtained using the relation

\[ h' = h + FR \int (1/FN)(dh/dFN).(\mu'T-T) \, dT \]  

(B13)

where \( T \) is defined by (B1), \( FR \) is the plasma frequency at reflection, and \( dh/dFN \) is the profile gradient. The value of \( T \) ranges from 1 at \( FN = 0 \) to zero at reflection (where \( \mu' \) is infinite). For dip angles less than 90° the value of \( (\mu'T-T) \) is finite throughout, and for \( I < 60° \) it is a smoothly varying function of \( T \). The value of \( \mu'T \) is equal to sec\( I \) at reflection, and becomes infinite at \( I = 90° \). The rapid increase of \( \mu'T \) is confined to very small values of \( T \) when \( I \) is near 90°, as shown in Fig. B5.

Most of the group delay occurs in a small interval near reflection, with \( FN \) and \( (dh/dFN) \) not changing rapidly. The integral in (B13) is then proportional to the area under the curves in Fig. B5, from \( T = TB = (1 - FA^2/FR^2)^{1/2} \) (where \( FA \) is the lowest plasma frequency included in the integration) to the reflection point at \( T = 0 \). With the large, rapid increase near \( T = 0 \) even the 12-point Gaussian integration in POLAN becomes increasingly inaccurate from \( I = 67° \) to \( I = 79° \), and normal integration techniques are useless at \( I = 89° \). This is shown in Fig. B6, which gives the errors involved in analysis of a smooth virtual-height curve. With 5-point integrals (the broken lines in Fig. B6) errors increase rapidly at dip angles above 45° for the overlapping-polynomial methods, above 65° for parabolic laminations, and above 80° for linear laminations. Using 12-point integrals the basic accuracies are maintained to dip angles of about 80, 84 and 87° respectively. At dip angles above 85° the limitations of a 12-point integral cause the high order polynomial methods to give the same mean error as the parabolic-lamination method.

Integration accuracy is improved at large dip angles by dividing the integration range into two sections. The vertical lines in Fig. B5 indicate the approximate boundary between the slowly-varying and rapidly-increasing sections of the curves. To the left of these lines, adequate accuracy can be obtained with a 12-point Gaussian integral. The section to the right has a very large increase in \( (\mu'T-T) \) at large dip angles. This increase corresponds roughly to a symmetrical S-shaped variation, with approximately equal gradients at each end. This form is reliably evaluated by standard methods of integration. The main requirement for accuracy is that the errors due to the sharply-curved sections at the two ends must be approximately equal and opposite. The positions of the vertical lines in Fig. B5 were estimated to fulfil this requirement. Calculations were then carried out using

![Figure B4](image)

Figure B4. The RMS real-height error produced by random virtual-height errors with a RMS value of 1 km. Results are for a slab start calculation using 5 O-ray points at frequencies of 1.0FH to 1.4FH, and the corresponding X-ray frequencies (reflected at the same real heights).
5-point Gaussian integration for $T > TC$ and 12-point integration for $TC > T > 0$, adjusting the value of $TC$ to obtain the minimum overall error. The minimum is reasonably broad, and variations of up to 10% in $TC$ (from the optimum value) cause little increase in the overall error. The optimum values of $TC$ change by only about 10% for different frequencies in the range 1 to 15 MHz, so a mean value can be used for all frequencies at a given dip angle. The optimised mean values are given to within a few percent by the relation

$$TC = 0.39 - 0.05 \sec(0.016I)$$

(B14)

where the dip angle $I$ is in degrees, and $0.016I$ is in radians.

Implementation of the 17-point integration in the subroutine COEFIC is straightforward. The Gaussian coefficients $Tr$ and the corresponding weights $Wr$ are stored in 17-point arrays $TR$ and $W$. The first 5 array elements are for the 5-point integrals used with MODE = 1 to 7, and the following 12 are for the 12-point integrals used at MODE = 8 to 20 (Appendix D.1). For a 17-point integral, all coefficients are used in succession; the limits on $T$ being changed from $TB, TC$ for the first 5 evaluations of $(\mu'T-T)$ to $TC, 0$ for the following 12 evaluations. This dual integration is used automatically by COEFIC when

(i) a 12-point integration was originally specified (for accurate results);

AND (ii) the dip angle $I$ is greater than or equal to 60°;

AND (iii) the value of $TB$ is greater than 1.2$TC$.

Results for the parabolic layer are shown by the dotted lines in Fig. B6. Use of the dual (17-point) integration reduces errors in the polynomial methods by a factor of about 10 to 100 at dip angles of 80 to 88°, and reasonable results can be obtained for dip angles as high as 89°.

For the extraordinary ray $\mu'T$ varies smoothly with $T$ and 5- or 12-point integrals are adequate at all dip angles. For combined O and X ray analyses, as used to resolve the starting and valley ambiguities, use of the 17-point O-ray integral gives no increase in overall errors at any dip angle. This is clearly demonstrated by the results of Fig. 21 (Section 9.4), which maintain good accuracy in the calculation of valley size at all dip angles up to and including 90°. To attain such results the calculation of $\mu'T$ must be free of small difference errors at all values of $T$ (in 0.0 to 1.0 inclusive) for dip angles up to $I = 90°$. A straightforward formulation which fully meets this requirement is provided by the subroutine GIND described in Appendix D.3.

![Figure B5](image_url)

**Figure B5.** $\mu'T - T$ plotted as a function of $T$, for dip angles $I$ corresponding to $\sec(I/2) = 1.1, 1.2, 1.3$ and $1.4$. Thin and thick lines are for frequencies of 2 and 4 times the gyrofrequency $FB$. Vertical lines indicate the point $TC = 1.5 - \sec(I/2)$ at which the range of $T$ is divided for integration.
Figure B6. The mean error in the real heights calculated from exact virtual height data, at a frequency interval of 0.2 MHz, for a parabolic layer with a scale height of 60 km and a critical frequency of 7.0 MHz. Results shown are for 4 modes of POLAN, using 5-point (fine lines) and 12-point (heavy lines) integration. Dotted lines show results from the two-stage integration developed for increased accuracy at high dip angles.
APPENDIX C. THE EFFECTS OF A VARYING GYROFREQUENCY

C.1 Values of gyrofrequency in the ionosphere

Satellite measurements show that the magnetic field strength in the ionosphere is normally within 1% of the value obtained by inverse-cube extrapolation of ground measurements. For vertical propagation we may therefore assume a constant dip angle and a gyrofrequency

\[ FH = \frac{FB}{(1 + h/6371.2)^3} \]  

(C1)

where \( FB \) is the ground value and \( h \) is the height in km.

Values of \( FH \) can be obtained from ionograms by comparing the O and X ray frequencies corresponding to a cusp or critical frequency. 500 accurate E region records taken at Cambridge by Robinson (1958) were examined for this purpose. In 76 cases, corresponding cusps or discontinuities could be clearly recognised for both O and X rays. The results, shown in Fig. C1(a), give a mean value \( FH = 1.20 \) with a standard error of 0.01 MHz. Calculations using field-strength measurements from nearby observatories give \( FH = 1.26 \) MHz at 110 km, the approximate height of the E layer reflections. Thus the values of gyrofrequency needed to match ionogram observations show a scatter of about 5%, and a mean error of about 5% with respect to absolute calculations. The scatter shows that, with high quality ionograms, errors of at least 1% are normal in scaled critical frequencies.

Figure C1(b) shows values of \( FH \) derived from careful F-region measurements at Brisbane, corrected for the effect of horizontal gradients (Ellis, 1957). The mean result is 10% above a dipole field fitted to ground measurements. Making allowance for underlying ionisation in the profile calculations could reduce the difference to about 6%. This minimum discrepancy corresponds to a consistent error of at least 1% in the measurements of critical frequency. These "errors" may be due to gradients and irregularities in the ionosphere. They set a limit on the accuracy of profile calculations using combined O and X ray data, which require accurate identification of "corresponding" O and X frequencies.

Start and valley calculations rely on the difference in virtual height of O and X rays reflected at the same true height. For such corresponding rays the wave frequencies \( f_O \) and \( f_X \) are related by

\[ f_O^2 = f_X(f_X - FH), \quad \text{or} \quad f_X = 0.5FH + (f_O^2 + 0.25FH^2)^{1/2} \]  

(C2)

A change of 5% in the "apparent" value of \( FH \) corresponds to a consistent error (of about 0.03 MHz, at \( f_X > 1.5FH \)), in the scaled values of \( f_X \). This error will often be a limiting factor in ionogram analysis. For valley calculations it was shown by Lobb and Titheridge (1977a) that errors of 1% in \( f_{OE} \) can prevent calculation of more than one valley parameter. The same situation applies if \( f_{OE} \) is correctly determined but following values of both \( f_O \) and \( f_X \) have a consistent error of 1%. If only one component (\( f_X \)) has this error, the situation is worse.

![Graphs showing values of gyrofrequency \( FH \) calculated from measurements on corresponding O and X ray cusps. Results (a) are for the E region, at a dip angle of 67° (the shaded area applies to the more accurate measurements); (b) are from F region measurements at Brisbane (Ellis, 1957).](image-url)
C.2 Changes near reflection

For ordinary ray calculations at a dip angle I of 0°, results are independent of the magnetic field. At other dip angles the group retardation increases slightly with FH. A change of 5% in FH alters the virtual height, measured from the bottom of a parabolic layer, by less than 0.3% at dip angles of up to 70°; this is less than the normal experimental accuracy and has a negligible effect on real-height calculations.

For extraordinary ray calculations, changes in FH near reflection affect the virtual heights in 2 ways. These are: (i) through changes in the real height of reflection \( h_R \), caused by changes in the plasma frequency FR required to reflect the ray; and (ii) through changes in the amount of group delay D. Thus the virtual height may be written

\[
h'_x = h'(f_x) = h_R + D
\]

(C3)

where all terms depend on FH.

The real height of reflection \( h_R \), for a wave of frequency \( f_x \), is at the plasma frequency FR given by

\[
FR^2 = f_x (f_x - FH)
\]

(C4)

If the vertical plasma-frequency gradient in the reflection region is \( G = d(h_R)/d(FN) \), the dependence of reflection height on gyrofrequency is

\[
d(h_R)/d(FH) = -G.f_x/2FR
\]

(C5)

For typical conditions at the start of a profile calculation, with \( FH \approx 1.3 \text{ MHz} \) and \( f_x \approx 2.1 \text{ MHz} \), an error of +2% in FH gives an error of -0.021 MHz in FR. This corresponds to a decrease of about 1 km in the real height of reflection, for typical profile gradients \( G \) of 25 to 50 km/MHz in the start region (e.g. Fig. C5). Above the E/F valley, profile gradients commonly exceed 100 km/MHz. At \( fc = 3.5 \text{ MHz} \), an error of +2% in FH then gives an error of about -2 km in the real height of reflection. Real-height errors of 1 or 2 km are not very significant in themselves. They are, however, sufficient to upset start and valley calculations which depend on the difference in the group retardation of O and X rays reflected at the same real height \( h_R \).

The group retardation for an extraordinary ray, reflected at a real height \( h_R \), is

\[
D = h'(f_x) - h_R = \int_0^{h_R} (\mu'_x - 1) dh
\]

(C6)

where \( \mu'_x \) is the group refractive index at the frequency \( f_x \). For conditions near reflection it can be shown that

\[
\mu'_x T \approx T + 0.35(1-T)(3f_x-FH)/(f_x-FH)
\]

(C7)

where \( T^2 = 1 - (FR/f_x)^2 \) and FR is the plasma frequency at reflection. The magnetic dip angle does not appear in (C7), since \( \mu'_x \) is approximately independent of dip angle near \( T = 0.45 \), and the variation with dip angle is of opposite sign above and below this point. (C7) therefore gives a reasonable first-order estimate at all dip angles, for calculations which involve an integral of \( \mu'_x \) up to the reflection point \( (T = 0) \).

For a constant gradient \( G = dh/dFN \) near reflection, the group delay then becomes

\[
D \approx 0.2 G f_x^{-5}(3f_x-FH)/(f_x-FH)^{-5}
\]

(C8)

At a given wave frequency \( f_x \), this leads to

\[
dD/dFH \approx 0.1 G f_x^2(f_x+FH)/FR^3
\]

(C9)

With typical values for the gradient \( G \) at reflection, this result shows that an increase of 2% in FH leads to an increase of 1 or 2 km in the group delay D. Thus changes in the terms \( h_R \) and D in equation (C3) are of similar size and of opposite sign, at all dip angles. The two effects cancel, giving \( dh'/dFH \approx 0 \), for \( f_x \approx 1.5FH \).

If \( \Delta h_R \) and \( \Delta h'_x \) are the changes in real and virtual height due to a given change in FH, (C5) and (C9) give
\[ \Delta h'_x / \Delta h_R \approx 0.75 (1 - 0.5 FH / (f_x - FH)) \]  

(C10)

Dip angle variations are quite small so (C10) provides good accuracy at medium latitudes. Over all dip angles, the maximum error in \( \Delta h'_x \) is ±0.04 km at \( f_x < 2FH \), and ±20% at \( f_x > 2FH \).

For start calculations with values of FR between about 1.0 and 1.5 MHz, FH variations produce changes in virtual height which are less than the changes in real height by a factor of 4 or more, at all dip angles. For valley calculations (FR = 2 to 4 MHz) the changes are reduced by a factor of about 2. The need for accurate values of FH near reflection is therefore considerably eased by the opposing effects of the changes in real height and in group delay.

Some exact calculated changes in reflection height and group delay, for a linear layer and a decrease of 4% in FH, are shown in Table C1. The changes in \( h'_o \) are typically less than 0.2 km, at the low frequencies used in start calculations. The X ray results are for fixed wave frequencies \( f_x \), corresponding to the tabulated O rays when \( FH = 1.2 \) MHz. The change \( \Delta h_R \) in the reflection height, due to a 4% decrease in FH, is independent of dip angle and is about +2.0 km at low frequencies. The corresponding changes in group delay are about -1.5 km, so that the decrease in FH produces an overall virtual-height increase \( \Delta h'_x \) of only about 0.5 km.

Table C1 is calculated for a constant gradient \( dh/dFN \) of 50 km/MHz. This is near the upper limit for normal profiles, in the start region. Fig. C2 shows the changes in \( h'_x \) for a gradient of 20 km/MHz extending only down to \( FN = 0.8 \) MHz. Limiting the amount of low-density ionisation in this way reduces the cancellation of group-retardation and height-of-reflection changes, so that the values of \( \Delta h'_x \) increase at low frequencies. For the normal range of start calculations the error of 4% in FH gives effective errors of 0.27 to 0.6 km in \( h'_x \). The corresponding errors in \( h'_o \) are 0 to 30% as large, and of opposite sign. For combined O and X ray calculations, consistent errors \( \Delta h'_o \) and \( \Delta h'_x \) in the virtual heights produce a real-height error, at \( FN = 1.4FH \), of

\[ \Delta h_R \approx 2.8 \Delta h'_o - 1.8 \Delta h'_x \]  

(C11)

Thus a consistent error of 4% in the values of FH at reflection, corresponding to an error of 90 km in the height at which FH is evaluated, gives errors of about 0.5 to 1.5 km in real height at low frequencies.

**TABLE C1.** The changes (in km) in real height \( h_R \), group delay D and virtual height \( h' \), for a reflecting layer with a constant gradient \( dh/dFN \) of 50 km/MHz, when FH decreases from 1.20 to 1.15 MHz.

| FR | \( \Delta h'_o \) at 50° | \( \Delta h'_o \) at 80° | FX | \( \Delta h_R \) | DELAY DIP= 20° | \( \Delta h'_x \) at 20° | \( \Delta h'_x \) at 50° | \( \Delta h'_x \) at 80° |
|----|-----------------|-----------------|---|-------------|-----------------|-----------------|-----------------|-----------------|
| 1.0 | -.07 | -.21 | 1.77 | 2.16 | 77, -2.3 | 74, -2.2 | 71, -2.1 | -0.13 | -0.04 | 0.03 |
| 1.2 | -.09 | -.25 | 1.94 | 2.00 | 79, -1.8 | 76, -1.7 | 73, -1.6 | 0.24 | 0.33 | 0.39 |
| 1.4 | -.12 | -.29 | 2.12 | 1.87 | 83, -1.4 | 80, -1.4 | 77, -1.3 | 0.42 | 0.51 | 0.58 |
| 1.8 | -.16 | -.35 | 2.50 | 1.72 | 92, -1.1 | 90, -1.0 | 85, -1.0 | 0.60 | 0.70 | 0.77 |
| 2.2 | -.20 | -.40 | 2.88 | 1.62 | 102, -0.9 | 100, -0.8 | 95, -0.8 | 0.67 | 0.78 | 0.84 |
| 3.0 | -.26 | -.48 | 3.66 | 1.52 | 124, -0.8 | 122, -0.7 | 116, -0.6 | 0.71 | 0.85 | 0.93 |
| 4.0 | -.32 | -.55 | 4.65 | 1.45 | 153, -0.7 | 147, -0.6 | 144, -0.5 | 0.71 | 0.87 | 0.96 |
Figure C2. Changes in the X ray virtual height, at a fixed observing frequency, when the gyrofrequency $F_H$ is decreased from 1.20 to 1.15 MHz. Calculations are for a reflecting region with $\frac{dh}{dF_N} = 20$ km/MHz at $F_N > 0.8$ MHz, and no ionisation at $F_N < 0.8$ MHz.

C.3 Retardation in the underlying region

For dip angles $I$ greater than about 10°, and plasma frequencies $F_N$ much less than the wave frequency $F$, refractive indices in the ionosphere are close to the quasi-longitudinal approximation. Neglecting terms in $(F_N/F)^4$, the group refractive index $\mu'$ becomes

$$\mu' \approx 1 + 0.5 F_N^2 / (F \pm F_H \sin I)^2$$

(C12)

where upper and lower signs refer to the O and X rays respectively. Thus the group retardation due to low-density ionisation is

$$D = \int (\mu' - 1) dh \approx 0.5(F \pm F_H \sin I)^{-2} \int F_N^2 dh$$

(C13)

The integral is proportional to the total electron content of the underlying ionisation. For "corresponding" O and X ray frequencies $F$ and $F_X$ (reflecting at the same plasma frequency $F_R$), (C12) gives the ratio of the group retardations as

$$R_{X,O} = D_X/D_O = ((F_R + F_H \sin I)/(F_X - F_H \sin I))^2$$

(C14)

The change $\Delta D$ in the group retardation, due to a change $\Delta F_H$ in the gyrofrequency, is obtained from (C13) as

$$\Delta D/D = \mp 2\Delta F_H \sin I / (F \pm F_H \sin I)$$

(C15)
Values of $R_{x,o}$ from (C14) are shown in Table C2. For dip angles above 30°, and $FR < 2FH$ (as in most starting calculations), the group delays are typically 4 times larger for the X ray. From (C15) we see that the percent variations in the delay, due to changes in FH, are about twice as large for the X ray as for the O ray.

The results of Table C2, and equations (C12) to (C15), are accurate for low-density ionisation. Results for higher densities are shown in Table C3, calculated for FN increasing linearly from 0.4 to 0.8 MHz. The O-ray delays $D_O$ are approximately independent of FH, but vary considerably with dip angle. X-ray delays $D_X$ are less dependent on the dip angle and highly dependent on FH. For $FR = 1.2FH$ to 2.2FH (the common range for start calculations), group delays are typically about 4 times larger for the X ray than for the O ray. Changes in FH alter the group delay by an amount $\Delta D$ which is 10 to 100 times larger for the X ray. Thus to determine the errors which result from an incorrect FH, in the underlying regions, we need consider only the changes in delay for the X ray.

The amount of low-density ionisation used for the calculations in Table C3 is quite typical for night-time profiles. The two mean Arecibo profiles are shown in Fig. C5(a). Approximating the low-density ionisation by a linear increase from 0.4 to 0.8 MHz gives a thickness for this section of about 60 km for model 3A, and 160 km for model 3B. An independent set of mean night-time curves is shown in Fig. C5(c) (from Knight, 1972). Approximating the underlying ionisation in these profiles by a linear increase, from 0.4 to 0.8 MHz, requires a thickness of about 100, 80 and 60 km at 1, 2 and 6 hours after sunset. Thus real-life profiles commonly have delays similar to those in Table C3; and an error of 4% in the assumed value of FH for the underlying region alters $h_X$ by (typically) 1 to 5 km, at the frequencies used in start calculations.

Errors in the value of FH used for underlying regions of ionisation are unavoidable. The continuous lines in Fig. C3 represent a simplified model for the night-time ionosphere. This has a parabolic E layer extending from 100 to 180 km (corresponding roughly to the mean variation in Fig. C5(a)), and a sharply-bounded reflecting region at 220 km. Virtual heights for the O and X rays are shown by the solid lines in Fig. C4. These were calculated using an inverse-cube variation of FH, for typical ground values FB at each dip angle. Analysis of the virtual heights can give, at best, the equivalent monotonic profile shown by the broken line in Fig. C3. This has the same total electron content as the original profile, as required for accurate calculations of F layer heights at high frequencies. At the low frequencies used in start calculations, however, the smaller values of FH at the height of the equivalent monotonic profile cause an appreciable increase in the virtual heights of

**Table C2.** The relative group retardation $R_{x,o}$ giving the ratio of group delays for "corresponding" X and O rays (reflected at the same plasma frequency FR) for low-density regions of the ionosphere where $FN << FR$.

| FR/FH | FX/FH | DIP = 0 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 deg |
|-------|-------|--------|----|----|----|----|----|----|----|--------|
| 1.0   | 1.62  | 1.00   | 1.10| 1.80| 2.84| 4.30| 6.16| 8.18| 9.82| 10.47 |
| 1.4   | 1.99  | 1.00   | 1.12| 1.63| 2.31| 3.15| 4.09| 4.99| 5.67| 5.92  |
| 2.0   | 2.56  | 1.00   | 1.11| 1.47| 1.90| 2.37| 2.86| 3.29| 3.58| 3.69  |
| 4.0   | 4.53  | 1.00   | 1.07| 1.25| 1.43| 1.60| 1.76| 1.89| 1.98| 2.00  |

**Table C3.** Group delays $D$ (in km) for an underlying region in which FN increases linearly, from 0.4 to 0.8 MHz, in a height range of 100 km. $D_O$ and $D_X$ are for "corresponding" frequencies FR and FX at $FH = 1.20$ MHz. $\Delta D_O$ and $\Delta D_X$ are the changes which occur when FH is increased to 1.25 MHz (with no change in FX).

| O-RAY: | $D_O$, $\Delta D_O$ at DIP = | X-RAY: | $D_X$, $\Delta D_X$ at DIP = |
|--------|-----------------------------|--------|-----------------------------|
| FR     | 20° | 50° | 80° | FX | 20° | 50° | 80° |
| 1.0    | 28.2, .01 | 18.1, .07 | 5.8, -.22 | 1.72 | 64.4, 19.6 | 75.3, 20.6 | 81.9, 20.8 |
| 1.2    | 16.0, .01 | 9.1, -.04 | 4.2, -.16 | 1.90 | 29.3, 5.23 | 36.6, 6.17 | 41.4, 6.75 |
| 1.4    | 10.6, .00 | 6.0, -.05 | 3.4, -.12 | 2.09 | 16.9, 2.12 | 21.8, 2.67 | 25.0, 3.05 |
| 1.7    | 6.6, .00  | 3.9, -.04 | 2.6, -.08 | 2.37 | 9.3, .78  | 12.1, 1.04 | 14.0, 1.33 |
| 2.0    | 4.5, .00  | 2.9, -.04 | 2.1, -.06 | 2.65 | 6.0, .37  | 7.7, .51  | 8.9, .61  |
| 2.4    | 3.1, .00  | 2.1, -.03 | 1.6, -.04 | 3.04 | 3.8, .17  | 4.8, .24  | 5.5, .30  |
| 3.0    | 1.9, .00  | 1.4, -.02 | 1.1, -.03 | 3.63 | 2.2, .06  | 2.8, .10  | 3.1, .13  |
| 4.0    | 1.1, -.01 | 0.8, -.01 | 0.7, -.01 | 4.61 | 1.2, .02  | 1.4, .03  | 1.6, .05  |
Figure C3. A simple parabolic model for the night-time E layer (solid line), and the equivalent monotonic distribution (broken line) for an F layer with a sharp lower boundary at 220 km.

Figure C4. Solid lines show the virtual heights for the O and X rays, calculated from the model of Fig. C3, at 4 different dip angles. FH has an inverse-cube variation with height, from the indicated ground values FB. Broken lines show the change in $h'_x$ when the true profile is replaced by its equivalent monotonic distribution.
the X ray. This increase $\Delta h'_x$, plotted as a broken line in Fig. C4, represents an effective error in the values of $h'_x$. The $\Delta h'_x$ curves, like the values of $h'_o$, begin at the wave frequency for which $FN = 0.9$ MHz at reflection. At this frequency the effective error (in km) of the X ray virtual heights is roughly equal to the dip angle in degrees. For $FN = 1.0$ MHz at reflection, the effective error is roughly one third of the dip angle, or 10% of $(h'_x - h)$. These errors are caused by the increase of about 60 km in the mean height of the underlying ionisation, and the corresponding decrease in FH, when we replace the true variation in Fig. C3 by its monotonic equivalent.

### C.4 Model studies

Profiles 3A, 3B and 8A, 8B, 8C, 8D in Figure C5 were developed within URSI Subgroup G/6/2 to test ionogram analysis procedures. For each profile accurate virtual heights were calculated, at dip angles of 30° and 70°, using an inverse-cube variation of FH with height. The results were analysed by different procedures assuming values of $f_{min}$ (for both the O and X components) corresponding approximately to plasma frequencies of 0.8 and 1.5 MHz at reflection.

The program POLAN uses iteration to determine the correct FH at reflection for each data frequency. This is to ensure a correct plasma frequency at reflection for the X rays, so that the relative reflection heights of O and X ray data would be correct. At the time of the URSI tests (1976-77) this was considered the prime requirement for accurate results. The study of Section C.2 has since shown that errors due to an incorrect FH at reflection are considerably reduced by the opposing effects of group delay and reflection height variations.

The relative importance of a correct FH at reflection, and a correct FH for the underlying ionisation, is shown in Table C4. (a) gives the errors in the calculated real heights at 1.5 MHz, as originally obtained from the series of URSI tests (Gulyaeva et al., 1978; McNamara, 1978b) using the value of FH at reflection for each ray. Four sets of data were analysed for each model, corresponding to the two dip angles and two starting frequencies noted above. Table C4(b) gives results from the same input data but assuming a constant gyrofrequency, corresponding to a height of 170 km, throughout the calculation. These results are obtained from a single least-squares solution, with no iteration. The height of 170 km is chosen as representing an approximate mean centre for the underlying ionisation regions.

The physical constraints discussed in Section 8.7 were not employed in the tests of Table C4. The overall improvement by a factor of 3.2 in the (mean + RMS) errors, from (a) to (b), is therefore due entirely to the different values of FH. The large maximum errors in the 3A,B data set are due to the "difficult" profile 3B which, as discussed in section 8.5.2, would not normally be analysed from low values of $f_{min}$. The overall conclusion from these calculations is clear: at both high and low dip angles, and with all tested profiles, a correct FH for the unseen regions is far more important than a correct FH at reflection.

### Table C4. Errors in the calculated real heights at a plasma frequency $FN = 1.5$ MHz, using the 'slab start' in POLAN to analyse virtual-height data corresponding to the profiles of Fig. C5. For each data frequency the same value of FH is used throughout the ray path. Results (a) are for FH equal to the value at the reflection height of each ray, while (b) uses a constant FH corresponding to a height of 170 km.

| Profiles Analysed: | 3A, 3B (8 data sets) | 8A,B,C,D (16 data sets) |
|-------------------|----------------------|------------------------|
| ERRORS AT 1.5 MHz:| MEAN     | RMS   | MAX  | MEAN     | RMS   | MAX  |
| (a) Using FH at reflection. | | | | | |
| POLAN MODE = 4 | 2.8 | 3.6 | 7.6 | 1.29 | 1.41 | 2.3 km |
| 5 | 2.2 | 2.9 | 4.8 | 1.26 | 1.47 | 2.4 km |
| 6 | 1.8 | 2.5 | 4.8 | 1.11 | 1.31 | 2.4 km |
| (b) Using FH at 170 km. | | | | | |
| POLAN MODE = 4 | 0.50 | 0.77 | 4.4 | 0.47 | 0.61 | 1.3 km |
| 5 | 0.72 | 1.04 | 2.3 | 0.42 | 0.55 | 1.1 km |
| 6 | 0.57 | 0.76 | 1.6 | 0.43 | 0.64 | 1.9 km |
Figure C5. Night E-region profiles used in developing rules for start calculations. Solid curves show the actual profiles, while broken lines are the equivalent monotonic distribution. Horizontal lines indicate the weighted mean heights for gyrofrequency calculations, for both the solid and broken line profiles.

3A and 3B are smoothed analytic approximations to the two main types of Arecibo profile observed during the magnetically quiet night of 12 April 1972 (Brice, private communication). 3C is a similar type of curve produced as the sum of two overlapping Chapman layers (Appendix H.2). The reflecting F region in 3C is almost identical in shape to models K1 and K2, while the underlying variations approximate an average of the extreme mean types K1, K2 and 3B.

8A to 8D give individual profiles obtained by the Arecibo backscatter facility. The early morning profiles 8A,8B were obtained on 26 July 1972, and the evening profiles 8C,8D on 11 April 1972. Curves shown are smoothed versions of the data from McNamara and Titheridge (1977).

K1 to K4 are idealised variations derived by Knight (1972) from a synthesis of 97 published profiles based on rocket, backscatter, ionogram, partial reflection, full-wave integration and cross-modulation measurements. K1 applies from 6 hr after sunset to 2 hr before sunrise.
C.5 The choice of gyrofrequency for the underlying regions

Different models which have been used for the lower night ionosphere during the present study are summarised in Fig. C5. Solid lines show the actual profiles, while broken lines are the equivalent monotonic distributions. The monotonic profile maintains the same total amount of ionisation, in any range of FN, but the ionisation is effectively moved upwards to regions of lower gyrofrequency. The original position of this ionisation, and hence the correct value of FH to use in calculating the delay it produced, cannot be found from analysis of the ionograms.

Horizontal solid lines in Fig. C5 indicate the approximate mean height at which the gyrofrequency FH must be determined, if a fixed value of FH is to give the correct overall retardation for the true (solid line) profiles. The horizontal broken lines give mean gyrofrequency heights appropriate to the equivalent monotonic distribution. The two heights differ by 23 to 49 km, with a mean difference of 38 km.

Ionogram analysis provides only a simplified two-parameter representation of the underlying ionisation (Section 8.1). This can differ considerably from the true equivalent-monotonic profile. Thus for calculating the group retardation in the underlying region, a mean gyrofrequency height determined from the calculated profile is typically too high by 50 km. In some cases, such as those illustrated in Figs. 12 and 13 of Section 8.4, the mean gyrofrequency height derived from the ionogram is 100 km too high.

The value of gyrofrequency FH to use in start calculations, for calculating the group delay in the underlying ionisation, is therefore best determined from a model. The simplest model would use a fixed height for night-time calculations. A value of 140 km is accurate to within about 30 km under most conditions. For the 11 profiles of Fig. C5, the mean gyrofrequency height for the true (solid line) profiles ranges from 109 to 158 km with a mean value of 131 km.

Errors in the mean gyrofrequency height (FHHT) can be further reduced with a time-varying model. Fig. C5 suggests FHHT increasing from about 120 km near sunset (profiles 8C and K2 to K4) to 150 km later in the night (8A,B,D, and K1; the mean heights shown are for FN less than about 0.9 MHz, and will increase appreciably in model K1 for higher values of fmin). This variation follows approximately the night-time "starting height" $h_S$, which is used for beginning an analysis in the absence of X ray data (Section 6.4). $h_S$ is normally provided as the parameter START in POLAN. If START = 0, $h_S$ is taken as the least of (i) a value estimated by extrapolation of the absolute virtual-height gradient to zero frequency, and (ii) the value $h_S = 0.3h'\text{min} + 80$ km.

The second condition limits $h_S$ to 140 km at $h'\text{min} = 200$, and 160 km at $h'\text{min} = 270$ km. A simple and approximately optimum value of FH for use in X ray starting calculations is therefore obtained by setting FHHT equal to the starting height $h_S$ which would be used in the absence of X rays.

C.6 The separation of underlying and reflection regions

Early versions of POLAN used a fixed value of FH, corresponding to the starting height FHHT described above, only for the linear slab section of the start profile. The polynomial section (at FN > 0.6fmin) used the value of FH at the calculated reflection height for each ray, to ensure that corresponding O and X rays were reflected at the same true height. For most profiles the height changes are not large in the polynomial section, and this procedure gives good results. It fails badly however, when a large part of the underlying ionisation has FN > 0.6fmin. The calculated polynomial then extends down to low heights, and includes much of the low level ionisation, so that use of the value of FH at reflection gives appreciable errors in the calculation of group retardation.

Test profiles 3A and 3B are shown by the heavy lines in Fig. C6. Using a constant value of FH, virtual heights were calculated for these profiles at a frequency interval of 0.1 MHz. Analysis by POLAN from fmin = 1.0 MHz gives the real heights shown by the solid dots in Fig. C6. Thin lines show the approximate representation obtained in the unobserved regions, at FN < 1.0 MHz. This consists of a linear-in-FN step from a to b, and a polynomial section at higher frequencies (with FN > 0.6fmin). For model 3A the result represents adequately the amount of low-density ionisation. For model 3B the underlying ionisation has a mean plasma frequency greater than 0.6fmin. The POLAN result simulates this by a polynomial section which drops rapidly, through more than 250 km, below 0.8 MHz; plus a negative slab section denoting a negative amount of ionisation at FN < 0.6 MHz. This unphysical distribution gives, mathematically, approximately the correct values for the integrals of FN$^2$ and FN$^8$ in the unseen region (Appendix G.2). The calculated real heights are accurate to within 0.3 km at $f > 1.1$ MHz. POLAN will normally require that the thickness of the linear slab be positive or zero, unless this condition significantly worsens the fit to the virtual-height data. Calculated real heights are then as shown by the broken lines in Fig. C6, and are accurate to within 0.7 km at $f > 1.1$ MHz.
Figure C6. Starting calculations using a fixed gyrofrequency $f_{FH} = 1.2$ MHz, at a dip angle of 70°. Heavy lines give the original model profiles, while solid dots are the result of starting calculations with $f_{min} = 1.0$ MHz. The broken line for model 3B is the solution obtained if the thickness of the underlying slab a,b is constrained to be zero instead of negative.

Figure C7. Variable FH data corresponding to the model 3B (Fig. C6) analysed using fixed values of FH corresponding to heights of 150, 190 and 230 km. For each value of FH, the circles, lines and triangles use data corresponding to plasma frequencies of 1.14 (.08) 1.54; 1.3 (0.1) 1.7; and 1.5 (0.1) 1.9 MHz respectively. Solid symbols, and heavy lines, are for the smallest value of FH (at 230 km).
Ionograms calculated for the profiles of Fig C6, with a height-varying gyrofrequency, were used for Test 6 of URSI WG G/6/2 (McNamara 1978b). Fig. C7 shows the errors resulting from analysis of the 3B data under different conditions and assuming a constant value of FH. At dip 30° results vary only slightly with the value of fmin (since at this dip angle real heights can, in fact, be found independently of the underlying ionisation; Section 8.1 and Titheridge, 1974b). Calculated heights decrease as FH increases, and are approximately correct for FH corresponding to a height FHHT of about 180 km. This is close to the mean height for the underlying and reflection regions. Reflection heights are about 230 km for model 3B, so the bottom curve in Fig. C7 corresponds to the use of FH at reflection. This gives large negative errors at dip 30°.

At dip 75°, calculated heights increase as FH decreases. (Note that the sensitivity of the results to changes in FH does not pass through zero between dips 30° and 75°, but becomes large and unstable in a narrow range of dip angles from 33 to 38°; this is the ill-defined region discussed in Appendix B.2 at which practical O/X calculations become impossible.) Results now depend on the representation of the unseen ionisation, and vary with fmin. The upper continuous line in Fig. C7 is for a fixed FH corresponding to a height of 230 km; this gives quite closely the errors which occur if the value of FH at reflection is used throughout the path of each ray. The broken line is the error obtained if, in addition, the underlying ionisation is forced into a physically acceptable shape. This broken line closely reproduces the extreme errors obtained for this model in the URSI tests. (In normal work, as noted in Section 8.4, the physical constraints are not enforced when they significantly increase the virtual-height fitting error).

To avoid these errors we must use a value of FH corresponding to some height below the reflection point, if the polynomial real-height section includes a large amount of the underlying ionisation. This case is typified by the model 3B profile. Calculated results from fixed-FH data are shown in Fig. C8. Using fmin = 1.5 MHz (the profile b,b',b",B) we get the normal result in which most or all underlying ionisation is represented by the linear slab section b,b'. At fmin = 1.0 MHz the polynomial section begins at a' where h = -72 km and dh/dFN = 2900 km/MHz. It represents primarily the underlying ionisation up to the point a", at 0.8 MHz, and follows the true profile reasonably well at higher frequencies. The boundary between underlying and reflection regions therefore occurs near a".

Figure C8. Calculated profiles from fixed-gyrofrequency data for model 3A. Points a to A correspond to an analysis with fmin = 1.0 MHz, the lower case letters denoting additional calculated points below fmin. b to B are for fmin = 1.5 MHz. The broken line corresponds to a gradient dh/JFN of 200 km/MHz.
The transition from underlying to reflecting region is defined most effectively by the change in gradient. Studies under different conditions suggest placing the boundary where the profile gradient is about 200 km/MHz, corresponding to the broken line in Fig. C8. This appears reasonable for most "difficult" profiles, and also defines the correct point b' (Fig C8) or b (Fig C6) for normal calculations where the initial gradient of the polynomial is less than 200. To include some additional cases where gradients can be less than 200 km/MHz over part of the underlying region, the following rules are used.

(1) A profile is NORMAL if (a) the thickness of the linear slab section is positive, and (b) the initial gradient of the polynomial section is less than 200 km/MHz. If either (a) or (b) is false, the profile is considered DIFFICULT.

(2) For NORMAL profiles, the model height FHHT of Section C.4 is used to define FH for the linear slab section. The calculated height at the first scaled X-ray frequency above fmin is used to determine FH for the entire reflection region (beginning at b' in Fig. C8). This ensures the correct relative retardation at different frequencies, if the polynomial does curl down appreciably at lower frequencies, and is allowable because of the insensitivity of the results to small errors in FH at the individual reflection points (Section C.2).

(3) A DIFFICULT profile has appreciable retardation from underlying ionisation with FN > 0.7fmin. The initial section of the polynomial then represents underlying ionisation, and integration through this section should use the gyrofrequency appropriate to the height FHHT. If the calculated gradient at FN = 0.8fmin (the point a" in Fig. C8) is less than 200 km/MHz, the reflection region is assumed to begin at this point. Otherwise the gradient G is calculated at FN = 0.9fmin. If this value is less than 200 km/MHz, the frequency (between 0.8fmin and 0.9fmin) corresponding to G = 200 is determined by linear interpolation. If G exceeds 200 at 0.9fmin, then this frequency (0.9fmin) is taken as the boundary between underlying and reflection regions.

The reflection integral for difficult profiles starts from some frequency in the range 0.8fmin to 0.9fmin. The upper limit is set to enable a reasonable calculation of the group retardation near reflection, for the lowest scaled frequency fmin. A lower limit of 0.8fmin is used to cope with cases where the polynomial descends through an appreciable distance, at frequencies of about 0.7 to 0.8fmin, with a gradient just less than the allowable limit of 200 km/MHz. Thus with a negative slab thickness, or with G > 200 km/MHz at 0.6fmin, an initial range of at least 0.2fmin of the polynomial section is allocated to base ionisation. If in fact there is little base ionisation, so that the mean gradient in the range 0.6 to 0.8fmin is less than 200 km/MHz, then the height interval covered by this range of frequencies is reasonably small (less than 50 km, at FN < 1.2 MHz) and using the "underlying" gyrofrequency does little harm. Separation of the polynomial integrals into two parts, using different values of FH, is carried out within the subroutine COEFIC as described in Appendix D.1
APPENDIX D. GROUP INDEX CALCULATIONS WITHIN POLAN

D.1 Calculation of the virtual height coefficients - The subroutine COEFIC

D.1.1. The equations used in COEFIC.

POLAN normally assumes (as in Section 4.2) that real-height segments can be represented by a polynomial of the form

\[ HR - HA = \sum_{j=1}^{NT} q_j \cdot (FR - FA)^j = \sum q_j \cdot aj. \]  

(D1)

HA is the height at the frequency FA (the "origin" for the real-height section to be calculated), and HR is the real height at the plasma frequency FR. The corresponding virtual-height expression is

\[ h'' - HA = \sum_{j=1}^{NT} q_j \cdot bj \]  

(D2)

where

\[ bj = j \int_{FA}^{FR} \mu' \cdot (FN - FA)^{j-1} dFN. \]  

(D3)

h'' is the virtual height, at the frequency FR, after group retardation due to ionisation below the origin (i.e. with FN < FA) has been subtracted. h'' is called the reduced virtual height. The polynomial analysis consists basically in setting up equations from (D2), at each of the virtual height frequencies involved in a given real-height step; adding further equations corresponding to known real heights, from (D1); and solving the resulting set of simultaneous equations to obtain the real-height coefficients q_j.

The subroutine COEFIC is used to calculate the real-height coefficients aj and the virtual height coefficients bj, at each frequency involved in the analysis. For maximum accuracy we use (\(\mu'\)-1) rather than \(\mu\), and integrate with respect to a variable T defined by \(T^2 = 1 - (FN/FR)^2\). This gives a well-behaved integrand near reflection, where \(\mu'\) becomes infinite. Thus the virtual height coefficients are calculated as

\[ bj = aj + dj \]  

(D4)

where

\[ dj = j \int (\mu'-1) \cdot (FN-FA)^{j-1} dFN \]

\[ = j \cdot FR^2 \int [(\mu'-1) \cdot T/FN] \cdot (FN-FA)^{j-1} dT \]  

(D5)

For a wave of frequency FR the integration range in (D5) is from \(T = 0\) (the reflection height) to \(TA = (1 - FA^2/FR^2)^{0.5}\). Using an n-point Gaussian integration we must evaluate the integrand at n values of T within this range. If \(Tr\) represents these values, and \(Wr\) the corresponding Gaussian weights, we have

\[ dj = TA \cdot j \cdot FR^2 \sum_{r=1}^{n} Gr \cdot Wr \cdot (FN_r - FA)^{j-1} \]  

(D6)

where

\[ Gr = (\mu'_r - 1) \cdot Tr/FNr \]

and

\[ FN_r = FR \cdot (1 - Tr^2)^{0.5}. \]

All the required coefficients \(dj\) are obtained from the same n values of \(Gr\), so that increasing the number of terms used in the polynomial real-height expansion (D1) does not increase the number of group index calculations required. Accurate values of \((\mu'-1) \cdot T\) are obtained from the subroutine GIND (Appendix D.3). They are calculated directly from the values of wave frequency FR and the value of \(Tr\), to avoid the small difference errors involved in calculating \(FN_r\) from \(Tr\).

Gaussian coefficients for both 5- and 12-point integration are contained in DATA statements in the subroutine COEFIC. They are stored sequentially so that an iteration loop can also use 17-point integration when required (as at high dip angles; Appendix B.3). With 17-point integration, calculations pause after the first 5 terms while adjustments are made to the integration limits and to the gyrofrequency used.
Start calculations incorporating X-ray data use 5-point integration for the linear slab section, with a gyrofrequency specified by the height FHHT. For the polynomial real-height section a 12-point integration is employed, on the first iteration. If this reveals a "difficult" profile (as determined by the tests (1) of Appendix C.6), subsequent iteration uses 17-point integration. This is split into:
(a) a 5-point integral, from 0.6fmin up to the calculated boundary point between the underlying and reflection regions, using the value of FH at FHHT; and
(b) a 12-point integral from this boundary point to the reflection point for each ray, using FH at the reflection height of the first X-ray.

D.1.2. The operation of COEFIC.

Parameters passed from POLAN through the COMMON statement are:

NR = the total number of real heights to be fitted, (in addition to the origin at FA, HA).
NL = the number of real heights preceding the origin (= 0 or 1).
MT = the number of terms in the polynomial real-height expression, excluding any constant.
JM = the total number of terms, including any constant. Thus JM = MT+1 for start or valley calculations, when the final result will alter the real height at the frequency FA.
LK = the index of the last real height used for removing the effect of group retardation in underlying ionisation. LK is used within COEFIC only to show when the current step is a start calculation. LK = 1 for a normal start calculation, while values of 0 or -1 are used to indicate a polynomial or slab start using X rays. For normal coefficient calculations (which have MV > 0), we have LK = KR.
KR = the index of the real-height origin in the frequency, height arrays. Thus FA = FV(KR) and HA = HT(KR).
KRM = the index of the highest previously-calculated real height.
KV = the index of the virtual height corresponding to the origin (the frequency FA). This is greater than KR by the amount the virtual-height data was initially moved up in the arrays FV, HT - modified by deletion of X ray data and insertion of extra real heights in start or valley regions.
MODE specifies the type of analysis, from linear laminations (MODE = 1) to a single polynomial fitting all data (MODE = 10). The value of MODE is increased by 10 (giving values from 11 to 20) when maximum integration accuracy is required.
MOD is the value of MODE reduced to the range 1 to 10, for start or restart (after a peak) calculations; or the value of MODE increased to the range 11 to 20 at other times.
FA,HA give the actual origin (or the previous origin for reduction calculations, as in (C) below).
DIP and HS give the magnetic dip angle and an initial gyrofrequency height. Actual values of the gyrofrequency, at any height, are obtained from the subroutine GIND.
FC, SH give the critical frequency and the scale height of any relevant peak; otherwise FC = 0.
PARHT is the thickness of an above-peak parabolic section, extending to a valley depth VDEPTH.
XWAT gives the relative weighting for X ray data; this is normally 1 but may be halved by POLAN.

COEFIC is called with arguments MV, FV and HT. When the input parameter MV is positive it gives the number of frequencies at which virtual-height equations are required. COEFIC then carries out the operations described below. Labels CC1, CC2 etc. correspond to comments in the program listing. Steps which are relevant only when MV is negative, and COEFIC serves a different purpose (as described in Appendix D.2) are marked by **.

CC1 --- INITIALISATION

IF MODE > 8, OR the calculation includes X rays,
THEN use 12-point integration.
ELSE use 5-point integration.
** IF MV < 0 and X rays are not involved, use 5-point integration.

SET NF = MV = the total number of frequencies to be processed, from FV(KV+1) to FV(KV+NF).

SET FW = FV(KV+NF+1) to give the upper frequency at which the weighting of virtual-height equations is tapered to zero.

SET DW = the range (below FW) over which the weight increases to 1.0; this range includes all frequencies used in the calculation for which final real heights are NOT calculated in this step.
SET DA = the lower range over which weights increase, from zero (at FA) to 1.0 at the highest known real height.

IF LK < 0 (a slab start calculation), and MV > 0,
THEN calculate quantities for optimum estimation of the mean gyrofrequency height FHHT.

---------------------- THE MAIN (FREQUENCY) LOOP IN COEFIC

All following sections of COEFIC are repeated for each of the NF data frequencies. The index KVI accesses the required frequencies and virtual heights, from the data arrays HT and FV, by taking in successive loops the values (KV-1), KV+1, KV+2, . . . KV+MV. The initial (bracketed) term is included only at NL = 1, when one real height is fitted below the origin (FA,HA).

CC2--- FREQUENCY RANGE AND WEIGHTS

SET The Virtual-height Index KVI, and the position I = KVI-KV to store the coefficients B(I,J).

SET F = FV(KVI), HV = HT(KVI).

IF F > 0 THEN SET FR = F (= the plasma frequency at reflection).
ELSE SET FR = SQRT[F(F + FH)].

IF KVI > KV THEN SET WREAL = 20 (The weight for real-height equations).
ELSE SET WREAL = 10. (Reduce the weight at FR < FA).

IF KVI > KV+NR THEN SET WREAL = 0. (Clear unused areas of array B).

IF F > 0 THEN SET WVIRT = 1. (The weight for virtual-height equations.)
ELSE SET WVIRT = XWAT. (The weight for X-ray data.)

SET IREAL = NF + NL + I (The row to store the real-height equation, following NF virtual-height equations.)

CC3--- INTEGRATION LIMITS, in terms of the variable T = SQRT(1. - (FN/FR)^2).

SET TB = SQRT(1 - (FA/FR)^2). The lower limit of integration.
SET TA = 0 The upper limit of integration.

** IF MV < 0, THEN IF PARHT = 0 SET TA = SQRT(1. - [FV(KV)/FR]^2)
** ELSE SET TA = SQRT(1. - [FV(KV-1)/FR]^2).
**
GO TO CC4.

IF The Calculation includes X rays,
THEN set TC = the value of T at FN = FA + 0.1(FR-FA),
and use 17-point integration (5-point from TC to TB; + 12-point from TA to TC).
ELSE set TC = 0.39 - 0.05/cos(.016*/dIP) where DIP is in degrees.

IF TB > 1.2TC, and DIP > 60 (or 70) degrees at MODE < 8 (or > 7),
THEN use 17-point integration.

IF using 17-point integration, set TA = TC (the start of the 5-point integral).
SET TD = TB - TA (the size of the first integration interval).

CC4--- Retardation in a START/VALLEY OR PEAK REGION, using 12-point integration.

IF LK > 0 (not an X ray start calculation); AND PARHT = 0 (not a valley calculation)
THEN GO TO CC5.
ELSE (a valley calculation) set DEPAR = integral of GIND.T.DT for a parabolic section
of unit thickness from the peak (FN = FA) to the valley bottom (FN = FA - VDEPTH).

SET DELIN = integral of (GIND-1).T.DT for FN increasing linearly from FA-VDEPTH to FA.
CC5--- STORE individual, weighted values of GROUP INDEX (GIND) and frequency offset.

C5.1 FOR Each Gaussian integration point $T_r$, in the range $TA$ to $TA + TD$
(with $r = 1$ to $5$, or $r = 1$ to $12$):
STORE the corresponding plasma-frequency interval $FN_r - FA$ as $FNR_r$;
STORE the value of $[(GIND_r - 1).Tr.Wr/FNr].TD.FR^2$ in the array GAUSS_r.

C5.2 IF 17-point integration is being used, set $TD = TA$, $TA = 0$. and repeat C5.1 for the second (12-point) integration section.

CC6--- CALCULATE AND STORE THE COEFFICIENTS $B(I,J)$
for the Virtual and Real-height Equations, at the Frequency $F_j$.

This section is repeated $JM$ times, with successive values of $J = 1, 2, \ldots JM$.

SET $RH = (FR - FA)^J$ giving the real-height coefficient $A(I,J)$.

SET $SUM = 0$ (integral over the linear Start or Valley section).

IF $J > MT$ THEN set $DPEAK = DEPAR*PARHT$ (group integral for parabolic peak).
ELSE set $DPEAK = 0$.

IF $J = MT$ and $LK < 0$ (a slab start calculation)
THEN set $RH = 0$ (no real-height component from underlying slab),
$SUM = DELIN$ (group retardation in slab).

IF $J = MT+1$ set $RH = 1$.

IF $J = MT+1$ and $LK > 0$ (a Valley calculation)
THEN set $SUM = Group retardation for valley base VB + Linear step (1-VB)$.

FOR Normal Polynomial Terms ($J \leq MT$ at $LK \geq 0$, or $J < MT$ at $LK < 0$)
set $SUM = J \sum GAUSS_r$ (giving the group delay integral for $B(I,J)$),
$GAUSS_r = GAUSS_r.FNR_r$ (in preparation for the next term).

STORE $B(I,J) = (SUM+RH)*WVIRT$ (the virtual-height coefficient).
STORE $B(IREAL,J) = RH*WREAL$ (the real-height coefficient).

** IF $MV < 0$, replace $HT(KVI)$ by $HT(KVI)-Q(J)*SUM-DPEAK$ (subtract the group delay).

CC7--- THE RIGHT HAND SIDE OF THE EQUATIONS.

IF $I > 0$ THEN IF $DPEAK = 0$ set $B(I,JM+1) = (HV-HA).WVIRT$ (no valley)
ELSE set $B(I,JM+1) = (HV-HA-DPEAK).WVIRT$ (a valley calculation).

SET $B(IREAL,JM+1) = (HT(KVI-KVR) - HA).WREAL$ (right hand side of real-height equation).

IF $I = MV$ THEN RETURN from COEFIC.
ELSE increment $KVI$ and $I$, and repeat CC2 to CC7.

---

D.2 Delay in the underlying ionisation - The subroutine REDUCE

Each step in the real-height calculation has determined a new section of the profile. Part of this section, for plasma frequencies FN extending from FA up to some top value (FT say), is retained as a final result. The group retardation due to this part must be subtracted from the virtual heights at higher frequencies. This "reduction" is carried out by the subroutine REDUCE and accounts for most of the time required by a full profile analysis. To minimise this time, the calculations in REDUCE use two different procedures.
D.2.1. Polynomial reduction, at low frequencies (section C2.A of REDUCE).

For frequencies up to some maximum value FRED, the group retardation is calculated using the full polynomial expression for the previous real-height section. FRED is normally about 0.6 MHz above the highest frequency to be used in the next stage of the analysis. (Slightly lower values of FRED are used with the simpler modes of analysis, to shorten the calculations.) The group retardation is calculated by COEFIC, using 5-point Gaussian integration of $\mu' - 1$ over the required range of plasma frequencies. If $h'$ is the previously-stored virtual height at some frequency, this is replaced by the new reduced height

$$ h'' = h' - \sum_{j=1}^{NT} d_j \cdot q_j $$

(D7)

where $d_j$ is defined in equations (D1) to (D6) above. The upper limit of integration in (D3) is changed from the wave frequency FR to the maximum plasma frequency (FT = FV(KV)) in the real-height section. Apart from this change, the reduction calculations proceed as described in D.1 above.

COEFIC is called from REDUCE at any early stage in POLAN, with an argument MV which indicates the number of frequencies at which virtual heights are to be reduced. The parameters MT, JM, LK (which indicates a slab or polynomial start, at LK = -1 or 0), FC, SH, PARHT (the thickness of a calculated topside peak section), and VDEPTH still retain the values associated with the previous real-height calculation step. Only the values KR and KV have been updated, to give the origin for the next step.

Group-delay integrals are required at the frequencies FV(KV+1) to FV(KV+NF), where NF = MV. Integrals are evaluated for plasma frequencies from FA (the starting frequency of the previous real-height polynomial) to FV(KV). A few additional tests marked by ** in D.1.2 speed the calculation by using only a five-point integration (except for the longer X-ray start section, when 12 points are used). The virtual-height coefficients $d_j$ are calculated in the normal way. One additional statement, marked ** at the end of CC6, subtracts the corresponding group-delay term $d_j \cdot q_j$ from the virtual height HT(KVI).

Thus at the end of COEFIC the effect of group retardation in the real-height section from the previous origin FA to the new origin FV(KV) has been accurately removed from all virtual heights at frequencies FV(KV+1) to FV(KV+MV).

D.2.2. Quadratic reduction at higher frequencies.

(i) For linear-in-FN slabs.

At wave frequencies $F$ greater than FRED an approximate reduction is used, assuming some simplified form for the profile shape between scaled frequencies. For a fixed magnetic field the group refractive index $\mu'$ is a function of $F$ and of the plasma frequency FN. At $F >> FN$ the group retardation in an interval $FN = F_1$ to $FN = F_2$ is commonly determined as

$$ R = \int (\mu' - 1) \cdot dh = (\mu^* - 1) \cdot \Delta h $$

(D8)

where

$$ \mu^* = \frac{1}{2} (\mu'(F,F_1) + \mu'(F,F_2)) $$

(D9)

This corresponds to trapezoidal integration. When a given frequency is reduced by the delay in successive intervals in FN, the top limit of the first integral is the bottom limit of the next. Only one new calculation of $\mu'$ is therefore required for each interval, if the basic reduction cycle calculates the retardation in successive real-height segments $h_0$ to $h_1$, $h_1$ to $h_2$, ... at a given frequency $F$. A disadvantage of this ordering is that, to make full allowance for the variation of gyrofrequency FB with height, the value of FB should be rescaled at each calculation of $\mu'$.

The accuracy of the above procedure can be improved by a factor of about two if we replace (D9) by

$$ \mu^* = \mu'(F,FNA) $$

(D10)

where $FNA^2 = (F_1^2 + F_2^2)/2$. The improvement occurs because the integral of a parabolic expression is represented twice as accurately by the value at the midpoint as by the mean of the end-point values. Use of (D10) also removes the restriction that (to avoid calculating two new values of $\mu'$ for each interval) all calculations for a given frequency must be performed together. We can now take each newly-calculated real-height segment and correct all higher frequencies for the delay in this segment, using the (fixed) values of FNA and FB appropriate to the centre of the new segment. This avoids the re-scaling of FB and corresponding adjustments to the constants FBsinI, FBcosIcotI, ...; calculations which add nearly 50% to the total time required for a group index calculation.
For frequencies greater than 1.2FN the integral in (D8) depends primarily on the total electron content over the height range $\Delta h$ (Titheridge, 1959c). For this reason (D10) uses the RMS plasma frequency FNA to calculate $\mu^*$. (D8) is then correct for a linear-in-N real-height interval $\Delta h$. Within POLAN, however, height $h$ is expressed as a function of FN. The starting slab used with X ray calculations, and the top section of a valley, are linear in FN. While the choice between linear-in-N and linear-in-FN has little effect on the results, it is important that the same representation be used throughout. For a section $h = a + b.FN$ extending from $F_1$ to $F_2$ the total electron content is proportional to

$$I = \int FN^2.dh = b \int FN^2.dFN = FNA^2.(h_2-h_1)$$

(D11)

where

$$FNA^2 = \frac{(F_2^2 + F_2.F_1 + F_1^2)}{3}$$

(D12)

This value of FNA then gives a group retardation (D8) corresponding to the correct total electron content.

(ii) For curved real-height sections (section C2.B of REDUCE).

POLAN calculates each real-height section as a polynomial in FN. A correction for profile curvature can then be made, using the known values of the gradient $G = dh/dFN$ at the ends of the interval. For this purpose we represent the real-height section from $F_1$ to $F_2$ by

$$h = a + b.FN + \frac{1}{2} c.FN^2.$$ 

Using $\Delta$ to denote the change in any quantity from $F_1$ to $F_2$ this gives

$$\Delta G = c.\Delta FN$$

and

$$\Delta h = b.\Delta FN + \frac{1}{2} c(F_2 + F_1)\Delta FN = b.\Delta FN + \frac{1}{2}(F_2 + F_1)\Delta G.$$ 

Equation (D11) then becomes

$$I = b \int FN^2.dFN + c \int FN^3.dFN = \frac{1}{3} b.\Delta(FN^3) + \frac{1}{4} c.\Delta(FN^4)$$

$$= (\Delta h - \frac{1}{2}(F_2+F_1).\Delta G).\Delta(FN^3)/(3\Delta FN) + \Delta G.\Delta(FN^4)/(4\Delta FN)$$

$$= \Delta h.FNA^2 + \Delta G.\Delta FN.\Delta(FN^2)/12$$

(D13)

or

$$I = DH.FNA^2$$

where

$$DH = (h_2 - h_1) + (G_2-G_1)(F_2+F_1)(F_2-F_1)^2/(12*FNA^2).$$

(D14)

Calculations are therefore corrected for curvature of the real-height segments by assuming that the group retardation is

$$R = (\mu'(F,FNA) - 1).DH$$

(D15)

where $FNA^2$ is the effective mean value of $FN^2$, from (D12), and DH is a corrected height interval from (D14). The gradients $G_1, G_2$ at the end-points of each interval are normally obtained during a real-height analysis, so the only additional work required is evaluation of the final term in (D14). A negligible increase in computing time is involved, since the values of FNA and DH are independent of the wave frequency; they are calculated only once for a given real-height segment. With the corresponding value of gyrofrequency FB set in GIND, equation (D15) is then used to reduce the virtual heights at all higher frequencies.

The result gives a close approximation to the true group retardation for wave frequencies greater than 1.2F2. It is effectively an application of the Euler-Maclaurin formula, which shows that an n-interval trapezoidal integration of $y(x)$ from $x_1$ to $x_2$ is corrected exactly for changes in the first and second derivatives by a term $(g_2-g_1)(x_2-x_1)/12n$ where $g = dy/dx$. In the present case we have derived a similar expression (D13) to correct the integral I for changes in the first derivative. The integrand and the definition of $G$ differ somewhat from the Euler-Maclaurin form, so results will not be fully corrected for a changing second derivative. The differences in form tend to zero at $f >> F_2$, when the use of (D14) corrects accurately for cubic profile segments.
D.3 Calculation of the group refractive index - The subroutine GIND

The speed of the POLAN analysis depends primarily on the speed of the group index calculation. The attainable accuracy can also be limited, under some conditions, by small-difference errors in the calculations of $\mu'$. The following formulation completely avoids small difference errors for both the ordinary and extraordinary rays, for the full range of dip angles ($I = 0$ to $90^\circ$) and for plasma densities FN from 0 to the reflection point.

For vertical propagation in the upper atmosphere (and ignoring the effect of collisions) the Appleton-Hartree equation for the phase refractive index $\mu$ may be written

$$\mu^2 = 1 - X.F/D$$

(D16)

where

$$X = \frac{FN^2}{F^2}, \quad D = F + E$$

(D16a)

$$G = B/F(1-X), \quad E = A[(1+G^2)^{.5} - G]$$

(D16b)

$$A = FH\sin I \quad \text{and} \quad B = .5FH\cos I\cot I.$$ 

(D16c)

FN is the plasma frequency, FH the gyrofrequency and I the magnetic dip angle. When the wave frequency F is positive, (D16) gives the value of $\mu$ for the ordinary ray. Making F negative changes only the sign of the square-root term, when the equations are combined, giving the extraordinary ray result. This convenient form has been retained in the group refractive index equations (below) by suitable placement of the terms involving F. Hence throughout POLAN we adopt the convention that extraordinary rays are indicated by a negative value for the wave frequency F.

GIND calculates the refractive indices as a function of the wave frequency F and the parameter T defined by

$$T^2 = 1 - \frac{FN^2}{FR^2}.$$ 

(D17)

FR is the plasma frequency at reflection, so that FR = F for the ordinary ray and FR$^2 = F(F+FH)$ for the extraordinary ray (which has F negative). T is the independent variable in the group index integrations in COEFIC. Use of T as a parameter, rather than FN, speeds the calculations and avoids the small-difference errors which arise (near the reflection point) if T must be calculated from FN within GIND.

Using the notation in (D16), the group refractive index $\mu'$ is given by the relation

$$\mu.\mu' - \mu^2 = (F/2).d(\mu^2)/dF$$

(D18)

which leads to

$$(\mu.\mu' - \mu^2)(1-X)D/F = 1 - \mu^2 - X^2 + A.X(1+X)/[2D(1+G^2)^{.5}].$$

(D19)

This result is similar to the expression used by Shinn and Whale (1952). Direct evaluation of $\mu'$ from (D19) suffers from appreciable small-difference errors under some conditions, primarily in the calculation of $\mu = (1 - FX/D)^{.5}$ and in the evaluation of $(1-X)$ near reflection. The equations were therefore rearranged as follows.

Plasma frequency is provided to GIND in terms of the parameter T of (D17). We then have

$$V = F.(1-X) = F.T^2 \quad \text{for the O-ray},$$

(D20a)

and

$$V = F.(1-X) = (F+FH).T^2 - FH \quad \text{for the X-ray (with F negative)}.$$ 

(D20b)

For the O-ray the value of G is positive, and (D16b) is replaced by the equivalent expression

$$E = A / [(1 + G^2)^{.5} + G]$$

(D20c)

The group index is then obtained from

$$W = (F.G.E/V - A/2).(F-V) / D / (1+G^2)^{.5}$$

(D21)

and

$$\mu' = | D + W | / [ D.(V + E) ]^{.5}.$$ 

(D22)
The first term in (D21) does not give small-difference errors since it passes smoothly through zero at a point depending on the "constant" A/2. The term F-V tends linearly to zero as the electron density tends to zero (at the base of the ionosphere); at this point W = 0 and (D22) retains full accuracy. Near the reflection point, where T tends to zero, the term F.G.E/V in (D21) becomes much larger than A/2. V also tends to zero so that W and μ' retain full accuracy up to and including the reflection point T = 0. One problem appears at reflection when (D16b) gives G = B/FT^2, for the O-ray. To avoid a division by zero, T^2 is not allowed to fall below 10^-20. The exact value of G is not important near reflection, since the terms involving G cancel in (D21) when G is large.

For the X-ray, using a negative value of F, the above equations give the correct value of μ'. A problem arises near reflection, where V is negative and the term V+E in (D22) can give a significant small-difference error. This is avoided if we use, for the X-ray,

\[ V + E = -E.U/A/[C + (C^2 + U).5] \]  

(D23)

where

\[ U = (V-FH).(F+FH).T^2 \]

and

\[ C = A + B. \]

C is independent of F and of T, so that C and C^2 need be calculated only when the gyrofrequency or the dip angle is altered.

The above equations are implemented in GIND using variables

G1 = V, G2 = G, G3 = (1 + G^2).5, G4 = E, G5 = V + E, G6 = D and G7 = W.

Results are normally required for a fixed value of the magnetic dip angle I, while the gyrofrequency FH is changed only occasionally. The speed of the calculations is therefore increased by precalculation of the "constants" A and B in (D16c). This is done in POLAN by a statement

\[ AA = GIND (GH, -DIP) \]

where GH is the gyrofrequency at ground level. Values of GH, GHSN = GHsinI and GCSCT = 0.5GH(cos^2I/sinI) are then calculated and stored in GIND. Note that cos^2I/sinI should not be obtained as (1/sinI - sinI), since the latter form gives unacceptable errors for dip angles near 90°.

Once the ground value of gyrofrequency has been set, the statement

\[ FH = GIND (0., h) \]

calculates the gyrofrequency FH at the height h, using an inverse-cube extrapolation from the ground value GH. The values of GHSN and GCSCT are also multiplied by FH/GH and stored as FHSN and FCSCT, giving the constants A and B required in (D16). The values of C and of C^2 required for accurate X-ray calculations are also stored at this time. For any required values of wave frequency F, and relative plasma density defined by the parameter T, the group refractive index is then obtained accurately and in minimum time by the statement

\[ μ' = GIND (F,T). \]
APPENDIX E. THE CONSTRUCTION OF POLAN

The logic used by the main subroutine POLAN, to calculate a real-height profile using ordinary ray data only, is summarised in Section E.1 below. Procedures involved in the use of X-ray data, for start or valley calculations, are given in Section E.2. The interpretation and use of the different parameters is tabulated in Section E.3. Logic flow within the subroutine COEFIC is detailed in Appendix D.1.

INPUT PARAMETERS specified in the call to POLAN are:

Frequency, Height Arrays FV, HT (and the array dimension N).
Field constants FB, ADIP (in MHz, degrees).
START specifying the starting procedure, as set out in C1.2. Zero gives an extrapolated start, with O-ray data, or a slab start when extraordinary (X-) ray data are present.
AMODE specifies the type of analysis. Zero gives Mode 5 (a fifth order least-squares fit).
VALLEY is normally zero, for a standard calculation of the valley between layers. It can optionally specify a non-standard valley depth, as described in C3.1.

X-rays are identified by negative frequencies and, for each new layer, must precede the corresponding O-ray data.
Within each block, frequencies must increase monotonically - this is used as a check for data errors.
The labels C1, C2, ... below correspond to the numbered comments in the listings of POLAN; labels -(A), -(B), . . refer to sections of a subroutine called by POLAN.

E.1. LOGIC FLOW

E.1.1. PRELIMINARY

C1.1- Store the magnetic field, MODE and VALLEY constants.

C1.2- THE SUBROUTINE SETUP is used to prepare for the START CALCULATION:

-(A) Check for the presence of initial X-rays, and determine the lowest plasma frequency FMIN in the given data arrays FV, HT.

-(B) Calculate the starting point (FA,HA) for direct, extrapolated, model FS, model HS or X-ray (slab or polynomial) starts. Selection of the start procedure depends on the input parameter "START", as shown below.

(a) With O-RAY DATA only:

(i) Value of START =-1.0 : Use a direct start from the first frequency FMIN, with a real height HMIN equal to the lowest of the first three O-ray virtual heights.

(ii) Value of START = 0.0 : Use the normal extrapolated start, from a frequency FA which is normally 0.5 MHz, but must be less than 0.6F1.
The starting height HA is obtained by extrapolating the initial virtual-height gradient down to zero frequency; HA must be less than HMIN + 50 km, and greater than HMIN/4 + 55 km.

(iii) 0.0 < START < 45.0 : Use a model plasma frequency FS at a fixed height HS, where:
Range of START = 0-10 10-20 20-30 30-40 40-45
Start height HS = 90 110 130 150 170 km
Start freq FS = START minus 0 10 20 30 40 MHz.

(iv) START ≥ 45.0 : Use a model starting height HA at a fixed frequency FA.
FA is obtained as in (ii) above.
HA is set equal to the value of START, but must not exceed 0.6*HMIN + 0.4*HEXT where HMIN is obtained from (i) and HEXT is the extrapolated height calculated in (ii).
(b) When X-RAY DATA are present:

(i) START .GE. -1.0 : Use the standard X-ray slab start.

(ii) START < -1.0 : Calculate an X-ray polynomial start.

-(C) Move the virtual-height data up to start at FV(31), HT(31). Calculated real heights may then begin at FV(1), HT(1), overwriting unwanted (past) virtual-height data as the analysis proceeds.

For extrapolated or model starts, store an additional virtual-height point at FV(30), HT(30). This is at a frequency between the starting point of the polynomial (FA) and the first virtual height (F1), with a height slightly below the minimum observed virtual height. The purpose of this point is to prevent unwanted fluctuations in the real-height polynomial between FA and F1.

Set KV = 30 (or 29) to give the origin FV(KV), HT(KV) of the virtual-height data.

Store the starting point FA, HA at the virtual-height origin (KV) and at the real-height origin FV(KR), HT(KR), where KR = 1.

E.1.2. SELECT DATA POINTS FOR THE NEXT STEP.

C2.1- Set polynomial constants.

IF the next step is a new Start, or a Restart (after a cusp or peak),

THEN SET NR = 0 = number of fitted real heights,
NT = number of terms in the polynomial real-height expression,
NV = number of fitted virtual heights,
NH = number of new real heights to calculate,
using elements 1 to 10 of the arrays IT, IV and IH. The element used corresponds to the parameter MODE, reduced to the range 1 to 10.

ELSE SET NR, NT, NV, NH from elements 11 to 20 of the arrays IR, IT, IV, IH.

C2.2- THE SUBROUTINE SELDAT is used to

-(A) COUNT the number of initial X-rays (indicated by FV < 0.). If the corresponding plasma frequency at reflection is less than FA, for any X-ray: LIST bad data and EXIT.

CHECK the next NV frequencies. If these do not increase monotonically: LIST bad data and EXIT.

END CHECK IF h' < 0 (implying a cusp)
or IF the next frequency is negative (end of record):
and SET h' = |h'|, FCC = -0.1.

END CHECK IF the next |h'| is less than 30 (implying a peak);
IF the next F = 0, THEN set FCC = +0.1
ELSE set FCC = next frequency.

END CHECK IF the total number of frequencies (X-ray + O-ray) = 30.

-(B) For a START or VALLEY calculation, using X-ray data, add additional points if (i) the O-ray data does not extend up to the top plasma frequency of the X-ray data,
or (ii) the O-ray frequency range is less than the desired minimum range, as specified by the constant FFIT (in MHz);
PROVIDED THAT the added point does not have excessive group retardation; the virtual-height gradient $\Delta h'/\Delta F$ must be less than the constant GFIT, in km/MHz.

-(C) Shift the data arrays to delete any X-ray data for which FN (at reflection) is greater than FM + 0.1 MHz.
Set FM = FV(MF) = the highest O-ray frequency to be used in this step.

IF KR = 1 (indicating the first step in the analysis): GO TO C3.
C2.3- THE SUBROUTINE REDUCE is used to reduce all virtual heights by the group delay in the last-calculated real-height section.

-(A) Reduction using the full polynomial expression for the real-height profile.

Get the index KM for the highest frequency with FN (at reflection) less than FM + 0.04*MODE, and with h' > 30 km (i.e. not a cusp or a peak).

[This gives FN up to FM + 0.2 MHz for the normal default Mode = 5, or FN up to FM + 0.6 MHz for increased accuracy at Mode = 15].

CALL COEFIC with the first parameter negative, to calculate the total group delay (integrating from the previous origin FA to the current origin FV(KV)), and subtract this from the virtual height for each frequency from FV(KV+1) to FV(KM).

-(B) Reduction using separate laminations.

For each of the newly calculated real-height intervals, and for frequencies F from FV(KM+1) to the end of the data, determine the effective mean plasma frequency FAV. The optimum value of FAV depends on the difference F-FAV; on the change in gradient across the real height interval; and on the possible presence of a peak (infinite gradient) at the upper limit. Calculate the mean group refractive index, corresponding to (F, FAV), and subtract the corresponding group retardation from the virtual height h'(F).

IF |h'| < 30 (denoting a critical frequency) omit the calculation, leaving h' unchanged.

IF h' < 0 (denoting a cusp) add the calculated group retardation to h'.

E.1.3. SET UP SIMULTANEOUS EQUATIONS FOR THE NEXT PROFILE STEP

C3.1- INITIALISE

SET the number of polynomial terms MT = NT + (NX+1)/2, where NX is the number of X-rays included in this step, MT must not exceed 15, MT must not exceed the total number of fitted points (virtual + real).

SET the origin at FA = FV(KR), HA = HT(KR).

SET JM = MT = Total number of terms in the real-height expression.

IF an X-ray start, OR the calculation is restarting above a peak (with a possible valley), THEN SET JM = MT+1 to include a constant (offset) term in the real-height polynomial.

VALLEY check (within the subroutine STAVAL). The end of the data for any one layer is indicated by a critical frequency (scaled or zero) accompanied by a virtual height which is less than 30 km in absolute value.

IF the virtual height HV(KV) (at the origin frequency FA) is greater then 30 km, THEN SET HVAL = 0. and GO TO C3.2 (for a normal step)

ELSE carry out the valley set-up procedure described in Appendix E.2 (1) below.

C3.2- CALCULATE COEFFICIENTS for the simultaneous equations defining the real-height profile.

CALL COEFIC (MV, FV, HT) to calculate the coefficients B(i,j), A(i,j) such that

\[ \sum_{j=1}^{JM} B(i,j) \cdot Q_j = HT(KV+i) - HA \text{ for fitted virtual heights, } i = 1 \text{ to MV.} \]

\[ \sum_{j=1}^{JM} A(i,j) \cdot Q_j = HT(KR+i) - HA \text{ for fitted real heights, } i = 1 \text{ to NR.} \]

The real-height profile from FA = FV(KV) [ = FV(KR) ], to the highest reflected frequency FM = FV(KV+NW), is assumed to be of the form

\[ H - HA = \sum_{j=1}^{JM} Q_j \cdot (F - FA)^j, \text{ so that } A(i,j) = (FV(KV+i) - FA)^j. \]
IF JM = MT (the number of polynomial terms in the real-height expression):
THEN GO TO C4.
ELSE add a constant term, to allow for a shift in the real-height origin in start and valley calculations. This logic is described in Appendix E.2 (2) below.

E.1.4. LEAST-SQUARES SOLUTION of the simultaneous equations, in the Matrix B.

C4.1- CALL SOLVE (NS, JM, B, Q, DEVN) to obtain the least-squares solution of the NS = MV+NR+MS equations. This solution gives the coefficients Q(1) to Q(JM) defining the real-height profile, and the R.M.S. deviation DEVN of the least-squares solution (when JM < NS).

The real-height equations are given a large weight in the least-squares solution, so that DEVN gives closely the R.M.S. fitting accuracy (in km) for the virtual-height data.

C4.2- CALL ADJUST to check the solution as follows. (Note that these adjustments can be omitted by using a negative value for the input parameter DIP).

-(A) The INITIAL GRADIENT Q(1) of the polynomial real-height section.
For normal steps the minimum physically-reasonable gradient is MINQ1 = 1.5 km/MHz.
For valley steps (HVAL non-zero) the minimum initial gradient of the real-height polynomial, above the valley, is MINQ1 = SHA (= the model atmospheric scale height).
IF Q(1) < MINQ1
THEN add the constraint Q(1) = MINQ1 and obtain a new least-squares solution.

For start calculations using X-rays, an upper limit is placed on Q(1), to reduce meaningless variations in the unobserved region at FN < Fl:
IF Q(1) > 100 km/MHz, and LK < 1
THEN add the constraint Q(1) = 100, and obtain a new least-squares solution.

-(B) If the number of terms (MQ) used in the real-height polynomial is larger than necessary, the high order terms are not well defined by the least-squares solution. Checks are carried out for this condition, and the order of the polynomial is reduced (unless this is the last real-height section before a peak, when a rapid change in gradient is normal and the checks are omitted).

IF the last three (high-order) polynomial coefficients alternate in sign,
with an overall increase in magnitude of more than a factor of 2,
or IF the magnitude of either of the last two coefficients exceeds 999.,
THEN add the constraint Q(MQ) = 0, and obtain a new least-squares solution.

This check is repeated until (i) the number of non-zero polynomial terms is less than 5,
or (ii) the magnitude of the last polynomial term is less than 150.

-(C) Corrections in the START or VALLEY regions.

(i) Limit the thickness of the underlying slab used in an X-ray start calculation.
IF the thickness Q(MT) of the calculated linear slab of low-density ionisation is negative,
THEN impose the constraint Q(MT) = 0 and obtain a new least-squares solution for the other real-height parameters Q(j).

IF the new solution increases the R.M.S. virtual-height fitting error by more than 25%,
THEN return to the original solution with Q(MT) negative.

(ii) START calculations: the real height at the start of the polynomial section (at the frequency FA) must be less than the original height HA, and greater than 60km.
IF the calculated shift Q(JM) in the real height at the origin (FA,HA) is positive,
THEN obtain a new solution with Q(JM) = 0.
IF the calculated shift Q(JM) lowers HA to less than 60 km,
THEN impose the constraint Q(JM) = 60 - HA, and recalculate the least-squares solution.

(iii) VALLEY calculations (using O- or X-rays):
IF the calculated shift Q(JM) in the height at the frequency FA is negative,
THEN obtain a new least-squares solution with Q(JM) = 0.1

C4.3- ITERATION of valley calculations, to adjust VDEPTH;
or of X-start calculations, to adjust the gyrofrequency.
C4.3- ITERATION of valley calculations, to adjust VDEPTH;
or of X-start calculations, to adjust the gyrofrequency.

IF JM = MT+1, AND the number of X-rays is zero (implying an O-RAY VALLEY CALCULATION)
THEN the total valley width is VWIDTH = PARHT + (calculated value of Q(JM));
IF this is the first solution for this valley,
THEN GO TO X1.C (in STAVAL) to adjust VDEPTH to correspond to the standard
valley shape, and recalculate the solution.

IF X-rays are used, in the START or VALLEY calculation, additional checks are carried out
within STAVAL, as outlined in section E.2.3 below. Results for ionisation in the
unobserved start or valley regions are then listed and, if necessary, iterated with
altered values for VDEPTH or for the gyrofrequency height FHHT (as in section E.2.3).

E.1.5. CALCULATE AND STORE REAL HEIGHTS at the next NH frequencies, setting

\[ FV(KT) = FV(KA), \text{ where } KT = KR+NR+1 \text{ to } KR+NR+NH; \quad KA = KT + (KV-KR); \quad \text{and} \]

\[ HT(KT) = HA \sum_{j=1}^{MQ} Q_j \cdot (FV(KT) - FA)_j. \]

MQ is equal to MT for all conditions except for a slab start calculation, when
MQ = MT-1 [and the term Q(MT) gives the thickness of the underlying slab].

IF for any calculated point the height HT(KT) is less than HT(KT-1),
and Q(MQ) has not already been altered,
THEN PRINT "Error at freq = FV(KT)";
Obtain a new least-square solution with the additional constraint Q(MQ) = 0.0
(effectively reducing the order of the fitted real-height polynomial by one);
Recalculate HT(KT), and continue with the analysis.

CALCULATE further real heights, up to the highest virtual-height frequency used in the analysis,
from the polynomial expansion. (These heights will be recalculated more accurately in
a later step. Preliminary values may, however, be used by the later steps to obtain
the correct gyrofrequency.)

IF FC is zero (i.e. the calculation did not extend to a peak or cusp)
GO TO C2.1A to calculate the next real-height step.

IF FC is positive, GO TO C6 to calculate the parameters of the peak.

IF FC = -0.1, GO TO C2.1 to restart calculations above the cusp.

IF FC is negative, GO TO C7.3 to end the analysis.

E.1.6. LEAST-SQUARES CALCULATION OF A CHAPMAN-LAYER PEAK.

The critical frequency and the scale height of the peak are obtained by fitting a Chapman
layer to the calculated real-height gradients. This fit normally requires iteration, since
height h cannot be expressed directly in terms of the plasma frequency FN. The calculations
begin with an assumed model value SHA for the scale height. After two calculations we get a
result which is almost independent of SHA, if virtual heights have been scaled close to FC.
As the interval between the highest scaled frequencies and the critical frequency increases,
giving less information on the scale height near the peak, the calculated scale height tends
more towards the model value. With poor data the calculation is not iterated, and results
remain more heavily weighted towards the model value SHA.

C6 --
-(A) SET NK equal to the number of data points (MV) used in the last real-height fit,
giving the number of data points to use in the peak fit calculation.

IF MODE < 4 (so that MV < 3) use NK = MV + 1.

IF foFC was scaled, increase NK by one to include this measurement.
IF fxFc was scaled, increase NK by one to include this measurement.
SET INITIAL VALUES: Scale height SHA = HM/4 - 20 km, and Peak height HM = HN + 0.3*SHA, where HN = h(FM) is the last calculated real height.

SET FW = F1 - ΔF/2, where ΔF is the frequency range used in the peak fit.

-(B) For each frequency Fi included in the peak fit:
CALCULATE the normalised gradient Grad = (4/FN).d(FN)/dh, from the last real-height polynomial.
CALCULATE coefficients B(i,2) for the equation

\[ B(i,1).\ln(FC) + B(i,2).(SH/SHA)^2 = B(i,3).\ln(F_i), \]

using the Chapman-layer assumption \( B(i,1) = B(i,3) = 1. \)

Multiply the B(i,j) by \( W_i = (F_j - FW)/(FM - FW) \), where FM is the highest scaled frequency; this gives a weight proportional to \( (F_j - FW)^2 \) in the least-squares solution.

-- For each scaled critical frequency, add a peak fit equation with \( B(i,2) = 0. \)
IF the given FC is an X-ray measurement, convert it to the corresponding plasma frequency (using the gyrofrequency at the height HM).

-- SOLVE the NP simultaneous equations, to give the values of \( \ln(FC) \) and SH.

IF the real-height gradient dh/dFN increases by less than 40% over the top half of the fitted frequency range (so that the profile curvature and hence the scale height are not adequately defined),
THEN replace SH by \((SH+SHA)/2\) when \( SH < SHA \), or by \( 2.SH.SHA/(SH+SHA) \) at \( SH > SHA \), and modify the least-squares fit to obtain the corresponding value of FC. (This adjustment is cancelled if it increases the R.M.S. deviation of the calculation by a factor of more than 2.0.)

-- USE SH and the gradient at FM to calculate the peak height HM.
IF the extrapolation range HM - h(FM) is greater than 1.8 scale heights,
THEN set HM = h(FM) + 1.8 SH.
IF the peak extrapolation exceeds one scale height, or the real-height gradient increases by less than 80% over the top half of the fitted frequency range,
THEN GO TO -(C) (leaving the calculated SH weighted towards SHA).
ELSE IF the peak fit has been performed once only, set SHA = SH and
GO TO -(B) (to recalculate SH, FC using the updated values of SH, HM).

-(C) Final adjustment and listing of the peak constants.

Calculate the critical frequency FPAR for a parabolic peak with height HM and scale height 1.25SH;
The frequency extrapolation FC-FM must agree to within a factor of 2 with the range FPAR-FM.
The least-squares fit gives a R.M.S. deviation for the calculated value of \( \ln(FC) \); convert this to a standard error in FC, and print the peak constants.

E.1.7. CONTINUE with a new layer; or TERMINATE.

IF the next virtual height is not zero,
THEN GO TO C2 (do next profile step).
ELSE set N equal to the number of real-height data points in the arrays HT, FV.
Store the scale height of the final peak, the standard error in FC, the overall slab thickness, the total electron content, the width of the last valley and the R.M.S. deviation of the last X-ray fit in the following three elements of the arrays HT, FV. (The total content and slab thickness are obtained by exact numerical integration of the analytic real-height expressions.)

RETURN FROM POLAN.
E.2. START AND VALLEY PROCEDURES

When X-ray data are used for start or valley calculations, additional logic is required to adjust the solution and to iterate it as required. Most of the logic relating to start and valley calculations is contained in the subroutine STAVAL. This is first called from section C3.1 of POLAN, to set up the valley constants as described in E.2.1 below. After formulation of the basic real height equations, additional equations are added to apply physical constraints to a start or valley solution. This is done in Section C3.3 of POLAN and is outlined in E.2.2 below. After the real-height solution has been obtained STAVAL is called again, from Section C4.2 of POLAN, to check the result and repeat the calculation if required. The logic for this process is summarised in Section E.2.3.

E.2.1. INITIAL VALLEY CONSTANTS

In the absence of X-ray data the type of valley calculation is normally defined by the parameter VALLEY in the call to POLAN. Internally this is used to set the valley flag parameter HVAL. If a non-zero virtual height is given at the critical-frequency data point, this height is used (instead of VALLEY) to define the value of HVAL for the current profile. The following steps describe the logic used to set initial constants for the valley region, in section C3.1 of POLAN.

(a) The valley flag HVAL:-

SET HVAL = HV(KV) or, if this is zero, SET HVAL = input parameter VALLEY.
IF HVAL = 0.0 (the default condition), THEN SET HVAL = 1.0 for a normal valley.
IF HVAL .GE. 10.0, SET HVAL = 0.0 so that a valley is not inserted above the peak.

(b) The valley width VWIDTH:-

IF HVAL = 1.0, SET VWIDTH equal to the standard value of 2*SHA km,
where SHA = (peak height)/4 - 20 = model atmospheric scale height.
IF HVAL is in the range 0.1 to 5.0, the value of VWIDTH is multiplied by HVAL;
this is used to scale the standard valley.
IF HVAL < -1.0, SET VWIDTH = 5 * INT(HVAL);
this sets a required value of valley width, defined in 5 km steps.
Any decimal part of HVAL defines the valley depth as in (c) below.

(c) The valley depth VDEPTH:-

SET VDEPTH equal to the standard value 0.155*VWIDTH^2/(VWIDTH+20) MHz.
IF HVAL < 0.0 and HVAL is not integral, SET VDEPTH equal to the decimal part of |HVAL|.
IF NX > 0 (an X-ray calculation),
AND HVAL = -1.0 (requesting a determination of valley width and depth),
THEN SET VDEPTH = 0.1001 MHz, as an initial depth from which to iterate.
SET VDEPTH = VDEPTH*FA/(VDEPTH+FA), to ensure that the valley depth is less than the critical frequency (FC, = FA) of the underlying peak.

(d) The parabolic PEAK section:-

Constants for the underlying peak are the critical frequency FC = FA, the peak height HMAX and the scale height SH; these have been calculated in the previous real-height step of POLAN.
EXTRAPOLATE the underlying peak to FN = FC - VDEPTH, using a parabolic section with a scale height of 1.4*SH.
SET the origin at HA = HM + PARHT, where PARHT is the thickness of the extrapolated peak section.
SET the mean gyrofrequency height FHHT = HA + 20 km (for variable gyrofrequency calculations).
E.2.2. THE ADDITION OF PHYSICAL CONSTRAINTS

For START and VALLEY calculations the total number of terms in the real-height polynomial is \( JM = MT + 1 \). The extra term allows a calculated shift in the height at the frequency \( FA \). To aid in reliable calculations of this shift, a number of "physical constraints" are added to the set of simultaneous equations. These are applied in Section C3.3 of POLAN, and serve to bias the results to a more physically acceptable form. (Note that these physical constraints can be omitted by making the input mode parameter AMODE negative).

(a) IF \( LK < 0 \) we have an EXTRAORDINARY-RAY START CALCULATION.

The assumed real-height expression is then:

\[
H - HA = \sum_{j=1}^{MT-1} Q_j \cdot (F - FA)^j + Q(JM)
\]

The additional (constant) term \( Q(JM) \) gives the amount by which the calculated real height differs from the initial estimate \( HA \) at the starting frequency \( FA \). The corresponding virtual height term is \( B(i,JM) = 1 \).

The term involving \( Q(MT) \) does not appear in the real-height polynomial. This term gives the thickness of an underlying, low-density slab of ionisation with \( FN \) increasing linearly from 0.3\( F_1 \) to 0.6\( F_1 \) (= \( FA \)), where \( F_1 \) is the lowest observed plasma frequency. The virtual height term \( B(i,MT) \) gives the group retardation produced by this slab.

Three physical constraints are currently added to the set of simultaneous equations for an X-ray start calculation. These are given a small effective weight so that they alter the result only if the virtual-height equations do not, in themselves, give a well-defined solution.

The added equations require that:

(i) The calculated offset \( Q(JM) \) gives approximate agreement with the starting height which would be used in the absence of X-rays (the height \( HS \) obtained by SETUP in section C1.2).

(ii) The slab thickness \( Q(MT) \) is approximately equal to \( HS/3-20 \) km.

(iii) The high order term \( Q(MT-1) \) in the polynomial real-height expression should be small.

(b) IF \( HVAL \) is not zero, we have a VALLEY CALCULATION, using O-rays or combined O- and X-rays.

The real-height expression is then:

\[
H - HA = \sum_{j=1}^{MT} Q_j \cdot (F - FA)^j + Q(JM)
\]

where \( Q(JM) \) gives the amount by which \( H(FA) \) exceeds \( HA \). Thus the calculated value of \( Q(JM) \) gives the total valley width less the distance \( PARHT (= HA-HM) \) corresponding to the extrapolated parabolic peak in C3.1(D).

The virtual-height relations are:

\[
\sum_{j=1}^{JM} B(i,j) \cdot Q_j = HT(KV+i) - HA - P_i
\]

where \( P_i \) is the virtual-height increase caused by the extrapolated parabolic peak section at the frequency \( F_i = FV(KV+i) \). \( B(i,MT) \) gives the virtual-height increase from the upper part of the valley. This consists of:

(i) A region of constant plasma frequency \( FN = FA - VDEPTH \), with a thickness \( 0.6*Q(JM) \), and

(ii) A region with \( FN \) increasing linearly from \( FA - VDEPTH \) to \( FA \), over a distance \( 0.4*Q(JM) \).

Valley calculations include four physical constraints to bias ill-defined results towards a physically reasonable model. For ordinary ray calculations, virtual-height data give no information about the valley size. The added physical relations are then given the same weight in the least-squares solution as the virtual-height data. With combined O- and X-ray data, which can (ideally) define the valley width without ambiguity, the relation (i) is given a smaller weight.

The added equations (described more fully in Section 7.3 of this report) specify that

(i) \( Q(JM) = VWIDTH - PARHT \). The calculated valley width should be equal to the "standard" value from C3.1(b). This constraint has a weight of 1.0 under normal conditions. The weight is increased to 100 when \( HVAL < -1.0 \), indicating that a specific valley width is required. When X-ray data are used to determine the valley width, the weight is reduced to 0.04.

(ii) The gradient at the top of the valley section should match the gradient at the start of the polynomial section. This condition has a weight of 0.16.

(iii) The high order polynomial term \( Q(MT) \) should be small. This condition has a weight of 0.25.

(iv) The term \( Q(MT-1) \) should be small. This condition has a weight of only 0.02.
E.2.3. ITERATION OF THE PROFILE

In start or valley calculations using X-ray data, the calculated profile must be iterated to allow for height variations in the value of the gyrofrequency FH, and to adjust for changes in the valley depth. These adjustments are controlled by the subroutine STAVAL, after calculation of the parameters Q(1) to Q(JM) which define the real-height profile and after the elimination of unphysical values of these parameters, but before the real heights are stored.

Labels CX... below identify the corresponding section in the subroutine STAVAL.

CX2- CALCULATE THE REAL HEIGHTS at all frequencies used in the analysis, from the coefficients Q.

IF START = -0.1, THEN GO TO CX3 (omitting checks).

IF the number of iteration cycles NC is greater than (about) 10 for this step, THEN GO TO CX3 (continue with no further adjustments).

IF the profile gradient \((h_i - h_{i-1})/(F_i - F_{i-1})\) is greater than 2 at all points, THEN GO TO CX3 (continue with satisfactory profile).

TREATMENT OF FAULTY PROFILES:

IF the X-ray data had a weight XWAT = 1, and NC > 1; THEN SET XWAT = 0.5; PRINT "X-ray weights reduced to 1/4"; and GO TO C3.2 to recalculate the profile.

IF this frequency interval \((F_{i-1} \text{ to } F_i)\) has already caused downwards adjustment of Q(JM), AND the adjustment failed to increase \(h_i - h_{i-1}\); THEN PRINT "data and gyrofrequency incompatible at \(F = F_i\)" and continue with no further adjustments or iteration.

ELSE modify the least-squares solution by imposing a smaller value of Q(JM) (lowering the start point); and GO TO CX2.

CX3- SET FHHT = the height of an X-ray about one third of the way up the fitted range.

IF the calculation involves X-rays, with a height-variable gyrofrequency, AND the gyrofrequency height has changed by more than 2.0 km, THEN SET LOOP = 3 so that the solution will be iterated from C3.2.

CX4,5-

LIST the Start, Valley constants.

IF LOOP = 3, GO TO C3.2 (recalculate using FB at the last-found heights).

IF this is a start calculation, GO TO CX7.

CX6- X-RAY VALLEY ADJUSTMENTS.

CX6.A SINGLE-PARAMETER CALCULATIONS determine the width of a standard shaped valley.

IF the solution has not been iterated, THEN Adjust the depth to correspond to the calculated width, in C3.1(c). Recalculate the thickness of the peak section, in C3.1(d). GO TO C3.2 to recalculate the profile and the valley width.

ELSE IF the depth adjustment increased the fitting error DEVN by more than 10%, THEN recalculate the profile and valley width using the original depth. ELSE GO TO CX7 to store the valley heights.

CX6.B TWO-PARAMETER CALCULATIONS determine Valley Width and Depth independently (when VALLEY < 0). The first two iterations use depths VAL of 0.1001 and 0.6006 MHz. Further steps continue from whichever solution gives the smaller R.M.S. deviation (DEVN), adjusting VDEPTH by a factor DVAL = 1 + 0.5 cos(0.85DIP) at each step. After each adjustment of VAL, the entire real-height calculation must be repeated.

IF VAL = 0.1001: set VAL = 0.6006 MHz; set DEVL = DEVN; and RECALCULATE VALLEY PROFILE (go to C3.1(d), in STAVAL, to adjust the peak thickness and recycle).

IF VAL = 0.6006:
THEN IF DEVN < DEVL, THEN set DEVL = DEVN.
ELSE set VAL = 0.1001 to revert to the smaller depth.

SET VAL = VAL*DVAL and RECALCULATE VALLEY PROFILE.
IF DVAL is negative, GO to CX7 (end of valley iteration).

IF this is the THIRD CYCLE:
THEN IF DEVN > DEVL
THEN set DVAL = 1./DVAL (to reverse the direction of iteration)
set VAL = VAL*DVAL^2.
ELSE set VAL = VAL*DVAL, DEVL = DEVN.
RECALCULATE VALLEY PROFILE.

IF DEVN < 0.97 DEVL - 0.003 KM, on LATER CYCLES,
THEN set VAL = VAL*DVAL, DEVL = DEVN.
ELSE we have passed a minimum (or DEVN is changing very slowly);
INTERPOLATE in the last three values of DEVN to find the minimum, limiting the result to within a factor DVAL^{1/2} of the last interval.
Calculate the corresponding value of VAL, and set DVAL = -DVAL (to signal the final calculation).

RECALCULATE VALLEY PROFILE by doing C3.1(d), within STAVAL, followed by
GO TO C3.2 in POLAN.

CX7- STORE DATA POINTS for the start or valley region, at frequencies less than FA, and at F = FA.
INCREASE KV to the first O-ray point (so that real heights will not be calculated at the X-ray frequencies).
GO TO C5 to calculate, check and store the real heights at F > FA.
END X RAYS

E.3. PROGRAM PARAMETERS

The relation between many parameters varies depending on the stage reached in the real-height analysis:- a normal step, a start calculation using O-ray data only, start using O- and X-ray data, valley using O-ray data only, or valley using O- and X-ray data.

Table E1 summarises the values and interpretation of some of these parameters under different conditions. The labels C1, C2, ... in this table refer to the corresponding section in POLAN. KR and KV are the indices for the current origin, giving the position of the point FA, HA in the real and virtual-height data arrays FV, HT.

Table E2 shows how different variables and parameters are used. The first column in this Table identifies the section within POLAN. The second column shows variables which are tested to determine a course of action. Program changes which alter any of the variables in this column will alter the path of the program. The last column in Table E2 shows how variables are changed at different stages of the program. This provides a ready reference to the setting, use and meaning of the variables within POLAN.
TABLE E1. Interpretation of parameters, according to the type of the current real-height step.

|   | O START | X - START | VALLEY | PROFILE STEP |
|---|---------|-----------|--------|--------------|
|   | Slab    | Poly      | 0      | Normal       |
| C1. | LK      | -1        | >2     | Cusp; Peak   |
|     | JS      | 2 (0=direct) | 1     |              |
|     | NX      | >0        | 0      |              |
|     | KR      | 1         | >1     |              |

C2. NF = No of 0 rays; MV = Total Frequencies (=NF+NX); FM = FV(MF) = Top Freq.

|   | MOD     | HT(KV)   | FCC    | NX    | reduce? |
|---|---------|----------|--------|-------|---------|
|   | <11     | >30      | 0      | 0     | no      |
|   | <11     | >30      | 0      | 0     | no      |
|   | <11     | <30      | 0      | 0     | yes     |
|   | >10     | <30      | 0      | 0     | yes     |

C3. MT = Number of terms in the real-height expansion (omitting any constant)

Parameters after JM are set in STAVAL.

|   | JM      | KD      | HS     | HVAL   | VDEPTH  | PARHT  |
|---|---------|---------|--------|--------|---------|--------|
|   | MT      | MT+1    | MT+1   | MT+1   | MT      |
|   | 0       | (0)     | 3      | HM+SHA | 0       |
|   | -       | -       | -      | >0     | 0       |
|   | 0       | 0       | >0     | 0      | 0       |
|   | .3F1    | 0       | >0     | 0      | 0       |
|   | 0       | 0       | >0     | 0      | 0       |

C3.2 Call COEFIC (with MV frequencies) to calculate B(I,J).

C3.3 Add "Physical Relations" equations.

C4. Call SOLVE to obtain the real-height parameters Q(1) to Q(JM).

C4.2 Call ADJUST to limit the parameters Q to physically acceptable ranges.

C4.3 For START or VALLEY Calculations: Do Section CX. below (in STAVAL).

C5. Check and Store Real Heights HT(KT), for KT = KR+NR+1 to KR+NR+NF, at frequencies FV(KV =NR =1) to FV(MF) = FM.

|   | KT      | KR+NF   | KR+NF  | KR+NF  | KR+NF  |
|---|---------|---------|--------|--------|--------|
|   | KR      | KR+NH   | KR+NH  | KR+NH  | KR+NH  |
|   | KV      | KV+NH   | KV+NH  | KV+NH  | KV+NH  |
|   |         |         |         |         |         |

C6. Layer Peak: If FC > 0., Calculate and store HT(KR) = HMAX

GO TO C2.

CX. -- in STAVAL

X RAY CALCULATIONS

|   | START | VALLEY |
|---|-------|--------|
| Q(MT) (= Slab) | ≥0     | -      |
| Q(JM) (= Offset) | ≤0     | ≤0     |
| Q(JM) if dh/dFN >2 | decrease Q(JM) | decrease Q(JM) |
|                   | Check Heights | Check Heights |
|                   | Iterate FB    | Iterate FB, VDEPTH |
| KD                | 2       | 1      |
| KR                | 2       | 1      |
| KV                | KV+NX-1  | -      |
| NH                | NH+1    | NH+2   |

126
### TABLE E2. Testing and setting of parameters. Quotes denote an "Input Parameter" to POLAN.

| SECTION | CONDITION - Variables tested. | ACTION - Variables Altered. |
|---------|--------------------------------|-----------------------------|
| C1. PRELIMINARY | "AMODE" | MODE (1 to 20), MOD1 (1 to 10). |
| C1.2 (in SETUP) | "FV(1,2,3, ....)" | FMIN = lowest plasma frequency in data. |
| Normal Start | "START" >= 0 | LK = 1, JS = 2, HS = extrapolated. |
| Direct Start | "START" = -1.0 | HS = h'min, FA=F(1), JS=0, LK=1. |
| Model Height | | HS = model. |
| All steps | | HA = HS, FA = 0.5. |
| Model Density | | HA, FA are given the model values. |
| X Start: Slab POLY | "START" < 44 (and not zero) | LK = -1, JS = 1, HA, FA, VDEPTH. |
| | FV(1) < 0. | LK = VDEPTH = 0. |
| | FV(1) < 0. and "START" < -44. | |
| | All steps | FV(1, 29- ), HT(1, 29- ). |
| | All steps | KR = 1, KV = 29 (for a normal start) |
| | | 30 (X ray start) |
| | | 31 (direct start) |
| C2. SELECT DATA | | |
| C2.1 | Start or cusp/peak restart | MOD = 1 to 10; NNR = 0; KT = KR |
| C2.1A | Second step | MOD =11 TO 20; KR, KV are reduced. |
| C2.1B | All steps | set NT, NV, NH, NR, NL |
| | | set FHHT and FH; set FCC = 0 (no peak). |
| C2.2 (in SELDAT) | | |
| | | NX = number of X rays |
| | | MV = total number of frequencies fitted |
| | | FM = FV(MF) = FV(KV+MV) = top frequency |
| | | FCC = -0.1, HT(MF) = |HT(MF)| |
| | | FCC = -0.1 |
| | | FCC = AMAX(0.1, scaled FC). |
| | | Reduce NX and MV to delete rays, |
| | | move FV(K), HT(K) at K >= KV+NX. |
| | | LK >= 1 |
| C2.3 (in REDUCE) | | |
| C2.A (COEFIC) | At KR > 1 | KM = top point for exact reduction; |
| | | HT(KV+1 to KM) are reduced |
| | | LK = 1 |
| C2.B | At KR > 1 | HT(KM+1 to end) are reduced |
| | | LK = KR |
| | | FA = FV(KR), HA = HT(KR) |
| C3. Set Constants | | |
| C3.1 | All steps | JM = MT = number of terms in polynomial |
| | | FC = FCC, KD = 0 |
| | | NC = MC = 0 (Iteration counters) |
| | | HVAL = 0.; Go to C3.2 (no valley) |
| Valley Constants | | |
| CX1. (in STAVAL) | | DEVLL = 10^7 = 10*DEVL. |
| | | SHA = HM/4-20 (model scale height). |
| | | HS = HM + SHA (field height). |
| | | VWIDTH = 2.SHA. |
| | | VWIDTH = VWIDTH*HVAL. |
| | | VWIDTH = 5.*INT(-HVAL) |
| | | VAL = Standard Depth |
| | | VAL = 0.1001 MHz (initial trial). |
| | | VDEPTH = VAL limited to < FA |
| | | PARHT = ht above peak, to FC-VDEPTH |
| | | HA = HM+PARHT (start of slab valley) |
| | | NC = 0 (first cycle) |
| | | FHHT = HA+20 km (valley field height) |
| | | LK <= 0 (X start) or HVAL != 0 |
| C3.2 Form equations | | JM = MT+1 (constant term; JM <= MV) |
| | | Coefficients B(I, 1 to JM+1) are stored by COEFIC, for I = 1 to MV+NR. |
| | | Add physical equations to B(I,J). |
| | | NC = count of cycles through C4. |
| C4. Solve equations | | Real-height coefficients Q(1 to MT). |
| C4.2 (in ADJUST) | LK = 0 or 1, and Q(1) > 50 | Re-solve with Q(1) = 50 km. |
| | Q(1) < 2.0 | Re-solve with Q(1) = 2.0 km. |
| C4.3 (in STAVAL) | JM > MT (X start, or any valley) | Go to CX1 (X-ray checks and iteration) |

127
APPENDIX F. PROGRAM LISTINGS.

The listings below were obtained during compilation on a PDP11/10 minicomputer. FORTRAN line numbers added during the compilation are shown at the left of each FORTRAN statement. These numbers can be used in reporting any problems to the author. Columns 73 to 80 of many lines have been used for a short comment indicating the purpose of the line, and these are not part of the program code.

The compilations shown were obtained under FORTRAN 4. The programs have been run without modification on some systems using FORTRAN 77. With other machines a few changes may be required. The 'constants' given in DATA statements must retain their values between successive calls to the subroutines. This is not mandatory in FORTRAN, and with some versions of FORTRAN 77 the DATA must be changed to SAVE or STATIC. For systems which carry out run-time checking of array bounds, most of the DIMENSION statements must be changed from FV(40), HT(40) to FV(8), HT(8). Some compilers may also require that statements of the type: DO ## I=1, N+5 be replaced by: N5= N+5 / DO ## I=1,N5.

In the listings below, program statements which are a necessary part of the calculation are shown in upper case. Lines in lower case relate to output listings or trace facilities, and can be ignored for purposes of following the basic program logic.

F.1 THE MAIN SUBROUTINE POLAN

```
SUBROUTINE POLAN (N,FV,HT, FB,DIP,START, AMODE,VALLEY,LIST)
C
C  -- Generalised POLynomial real height ANalysis  --      may73/feb84.
C Overlapping, Single or Least Squares, with full start and valley options.
C If problems arise, run data with list = 4 and mail all output to:-
C J.E.Titheridge, Physics Dept., University of Auckland, New Zealand.
Cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
C INPUT DATA
C
C--- Polan is called with frequency, height data in the arrays fv, ht.
C
C--- Initially:- set n equal to the dimension of the arrays fv, ht;
C this must be greater than 30 + the number of data points in the arrays.
C
C Intermediate layers terminate at a scaled critical frequency (or fc = 0.)
C with: h' = 0 for a chapman peak and normal valley,
C       h' = 10 for a peak with no following valley,
C       h' negative for a cusp-type discontinuity only.
C The o-ray fc (scaled or zero) may be followed by an x-ray value (-fcx).
C
C The final layer is terminated by at least 2 null points, with h = f = 0.
C Data can be terminated without a peak by using a final frequency of -1.0.
Cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
C NORMAL INPUT PARAMETERS
C
C--- FB gives the gyrofrequency at the ground in MHz, for inverse cube.
C
C--- DIP is the magnetic dip angle in degrees.
C
C--- START normally gives a model height at 0.5 mhz. Typical values are:
C noon    sunset-2/rise+2hr   set/rise   set+1hr   set+2   set+4 to rise-1
C 85km    88km(E layer)     90(E)/80(F)  100 km   130 km   150 km.
C
C An extrapolated starting height is used if start = 0.
C With initial x-ray values a slab start correction is calculated from
C 0.3*fmin (adding points at 0.3, 0.6 and 0.8 *fmin).
C (With x-ray data, start gives the gyrofrequency height for underlying
C ionisation; the values listed above are still suitable.)
C---------------------------------------------------------------------
C--- The final three parameters are zero, for most work.
C
C--AMODE sets the type of analysis, as listed below. Zero uses mode 5.
C Use amode+10 for 12-point integrals, for high accuracy at large
C dip angles (this is done automatically, at dip.ge.60, when amode=0).
C Values of amode greater than 29 are used to specify the number of
```
polynomial constants to be used to describe each ionospheric layer; *
e.g. 80 uses an 8-term real-height polynomial for each separate layer, *
85 uses 8 terms for the final layer and 5 terms for lower layers. *

c--VALLEY= 0.0 or 1.0 to use the initial default width of twice the local *
scale height. The initial default depth is 0.05 MHz.
The calculated depth is scaled according to (calculated width)**2.
c--LIST = 0 prints results for the start, peak and valley regions only.
c = 1 shows the frequency range and polynomial coefficients at each step.*
c = 2 adds some start/peak output; 3,4 add more detail for each step.*

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

RETURNED DATA

c POLAN returns with frequencies, real heights in the arrays fv, ht.
N = no of data points returned, with peak at fc=fv(n-3), hmax=ht(n-3).
Points at n-2,n-1 and n are extrapolated heights at 0.5, 1.0 and *
1.5 scale heights above the peak.
fv(n+1) gives the standard error of the critical frequency, in mhz.
ht(n+1) gives the standard error of the peak height, in km.
fv(n+2) gives the total electron content to the peak in e10/m**2.
ht(n+2) gives the scale height of the peak in km;
(a negative value shows an unreasonable peak extrapn was limited.)

CHANGES TO NORMAL OPERATION

FB negative to use a constant gyrofrequency fh = -fb.
DIP negative to omit physical checks on the calculated profile segments.
START between 0. and 44. defines the plasma frequency for a model start.
start = -1.0 to use a direct start, from the first scaled point.
start < -1.0 for x-starts to use a polynomial from (-start -1.0) mhz.
AMODE negative to omit physical relations (c3.3) from start/valley calcns.*
VALLEY = 10.0 for a monotonic (no valley) analysis.
valley = 5.0 for a maximum-valley (upper reasonable limit) analysis.
valley = 0.1 to 5.0 multiplies the standard valley by this factor.
valley = -.01 to -.99 to use -valley as the initial depth,
(instead of the default value 0.05 mhz).
valley = -1.0 to iterate both valley depth and width for best fit;
(-1.x to iterate from an initial depth of 0.x mhz ).
valley = -2.01 to -30 specifies a fixed valley width of 5*int(-valley) km;
and any decimal part of valley specifies the depth in mhz.
LIST = 5 shows each set of simultaneous equations, in the matrix b(i,j).
6/7/8/9 give more detail for the start/reduction/peak/valley step.
Use list negative to trace only the peak and valley steps.
(-1 gives output for the first starting step also).
List= -10 suppresses all output, even the normal layer summaries.

STANDARD MODES OF ANALYSIS:

Amode=1.- Linear Lamination analysis (with chapman peaks, and valleys).
Amode=2.- Parabolic Lamination analysis, matching end gradients (= paul).
Amode=3.- Overlapping Cubics, with no spurious oscillations(JATP 1982 p657)
Amode=4.- Fourth Order Overlapping Polynomials (Radio Science 1967 p1169).
Amode=5.- Fifth Order Least Squares fit to 6 points (4 virtual + 2 real).
Amode=6.- Sixth Order Least Squares fit to 8 points (5 virtual + 3 real).
Amode=7.- Sixth Order fitting 7 virtual + 3 real heights; calculate 2.
Amode=8.- Sixth Order fitting 8 virtual + 4 real heights; calculate 2.
Amode=9.- Seventh Order fitting 13 virtual + 6 real heights; calculate 3.
Amode=10. A Single Polynomial, fitting 0.73(nv+2) terms to nv heights.
Amode= 10L, where L is an integer in the range 3 to 15, uses a single
polynomial with L terms to describe each ionospheric layer.
Amode= 10L+M uses L terms for the final layer, and M for earlier layers.

In the program listing, error checking, debug
and output statements are in lower case.
Normal printed outputs from Polan are indicated by ------>
Trace outputs and abnormal conditions are shown by **------>
Fuller debug outputs obtained with list > 0 ##----->
Loops are delimited by c.....

DIMENSION FV(40), HT(40), IT(20),IV(20),IR(20),IH(20)
COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC counters

c
c       !------ first step -------! !---- following steps ------!
c
c At MODE = 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
DATA IT/1,2, 3, 4, 4, 5, 6, 6, 7,73, 1, 2, 3, 4, 5, 6, 6, 6, 7,73/ nterms
DATA IV/1,2, 3, 4, 5, 7, 8,10,12,35, 1, 1, 2, 3, 4, 5, 7, 8,13,35/ nvirts
DATA IR/0,0, 0, 1, 1, 2, 2, 3, 5, 2, 0,-1,-1, 1,-2,-3,-3,-4,-6,-3/ realhts
DATA IH/1,1, 2, 3, 3, 4, 5, 6, 8,28, 1, 1, 1, 1, 1, 1, 2, 2, 3,28/ calchts

c
tcontf(x) = x**j*(fa*(fa/j+2.*x/(j+1))+x*x/(j+2)) polycont
maxb= 40 B rows
c maxb= row dimension of array B. Set IR(10 and 20) to maxb-5

c---------------------------------------------------------------

c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ (1) Initialisation $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c1 --- (1) Initialisation

c
if(list.gt.1)print10,n,fv(1),ht(1),fb,dip,start,amode,valley,list
format ('O#ARGS: N,f1,h1='I4,2F7.2,5X,'fb,dip,start=',3F7.2,
1 5X,'amode,valley,list=',2F7.2, 'I4 /)

c1 ---
c1.1 Set trace, gyrofreq and mode constants.

ADIP= ABS(DIP)
FH = GIND(FB,-ADIP) groundfh
lbug= list
if (lbug.gt.1) call trace (fv,ht, 0.) ##----->

MODE = ABS(AMODE)
IF (MODE.EQ.0.and.ADIP.GE.60) MODE = 15
IF (MODE.EQ.0) MODE = 5
MOD2 = MODE - MODE/10*10
MOD1 = MOD2
IF (MODE.EQ.10.or.MODE.GE.30) MOD1 = 10 snglpoly
FV(N-1) = -1. end data

c---------------------------------------------------------------

c1.2-- Identify the start method to use, and set the following parameters:-
c fa,ha = the origin (starting point) of the first real-height polynomial;
c lk = 1 / 0 / -1 for o-ray / poly / slab start.
c Move virtual height data to start at fv(31), ht(31). Virtual, real height
c origins are at kr, kv = 1, 31-js (where js=no of freqs added below fmin).
c Add an interpolated point at fv(30),ht(30) to control o-ray starts.

CALL SETUP (N, FV, HT, START)

DHS = AMIN1(HS-HA,O.) for c3.3

c///////////////// REAL HEIGHT ANALYSIS LOOP

c For each cycle: Calculate one polynomial, with nt terms, from the point **
c fa=fv(k), ha=ht(k) to fit the next nv virtual and nr real hts. **
c (nr negative to include one real height below ha). **
c Calculate a further nh real heights, and set k = k+nh. **
c If a critical frequency is found in k+1 to k+nv+1, calculate up to **
c the preceding freq, and determine a least-squares chapman peak. **
c With x-ray data (-ve freqs) at start or after critical, recalculate ha * *** *
c Real height origin (fa,ha) is at k=kr; virtual at k=kv. krm=top real. **

c******************************************************************************************

c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

c2 --- (2) Prepare Data

c2.1 Start of analysis (or restart after a peak) =1 to 10
MOD = MOD1 top real
KRM = KR
NNR = 0
GO TO 230

c2.1a Later segments (using mod+10)

IF (MOD.GT.10) GO TO 220
KR = KR-IR(MOD)
KV = KV-IR(MOD)
MOD = MOD+10
NNR = IR(MOD)

c2.1b

NT = IT(MOD)
NV = IV(MOD)
NH = IH(MOD)
NR = IABS(NNR)
NL = MINO(1,NR-NNR)
MS = 0

IF (LK.EQ.1.AND.KV.EQ.29) MS = 1
IF (NV.GT.1.AND.NV.LT.8) NV = NV - MS

c2.2

Count initial x-rays. Check frequency sequencing.
Check for cusp, peak, or end of data.
Set nf= no of o-rays (=nv, if sufficient points exist before a peak/restart);
nx= x-rays; mv= nf+nx; fm= fv(mf) = top frequency in this step.
fcc = fc or 0.1 for a peak, = -.1 for cusp at fm, = 0. otherwise.

CALL SELDAT (NV, FV, HT)

tras = -2.2
if (nv.lt.0) go to 630

FM = FV(MF)
MV = MF-KV
IF (NF.GT.NV) NH = NH + (NF-NV)/2
if (list.lt.-3.and.list.ge.-9) lbug= 1
if((fcc.gt.0..or.fc.gt.0.).and.list.ge.-9) lbug=iabs(list)
if(lbug.gt.2.or.(lbug.eq.2.and.mod.lt.10))calltrace(fv,ht,2.2) ##---->

IF (KR.EQ.1) GO TO 300

c2.3

Subtract the group retardation due to the last calculated real-height
section. This modifies all h' at f > fa (where fa = fv(kr)), and increases
the index lk (giving the height to which group retardation is removed) to kr

CALL REDUCE (FV, HT)

tras = -2.3
if (jm.le.0) go to 640
if (lbug.gt.2) call trace (fv,ht,2.3) ##---->

c3

Initialise mt,fa,fc and counters.

MT = NT
IF (NT.GT.20) MT = (NF+2) *NT/100
IF (NX.GT.0) MT = MT + (NX+1) /2
IF (NF.GT.NV) MT = MT + (NF-NV)/3
IF (MODE.LT.30) GO TO 310
MT = MODE/10
IF (FV(MF+2).NE.0..and.MOD2.GE.2.and.NF.LT.NV) MT = MOD2
MT = MINO(15,MT,MV+NR+MS)
JM = MT
FA = FV(KR)
HA = HT(KR)
NC = 0

Check for valley, set valley flag hval
Initialise valley width and depth

LOOP = 0
CALL STAVAL (FV,HT, START,VALLEY, LOOP)

Is this a start or valley calcn?

IF (LK.GT.0.and.HVAL.EQ.0.) GO TO 320
IF (MODE.GE.30) MT= MT-1
MT = MINO(MT,MV-1)
JM = MT+1

if (lbug.gt.3) call trace (fv,ht,3.1) ##---->
c3.2

Set Up Equations in B

0101 CALL COEFIC (MV,FV,HT) tras = -3.2
0102 if (jm.le.0) go to 640
0105 IF (AMODE.LT.0..OR.MV+4.GT.MAXB) GO TO 380
0107 IF (MS.NE.1) GO TO 340
0109 G = 1.0 + 1.8/FV(30)
0110 B(MV+1, 1) = .5
0111 B(MV+1,JM+1)= .5*G*(HT(30)-HA)
0112 IF (LK.GE.0) GO TO 360

c3.3

(add ms physical start relations. x only)

WS = 0.1
IF (START.GT.44.) WS = 0.5
B(MV+1,JM) = WS
B(MV+1,JM+1) = DHS*1.6 *WS
B(MV+2,MT) = WS*.3
B(MV+2,JM+1) = (HS/3.-20.) *WS*.3
B(MV+3,MT-1) = WS*.3
MS = 3
GO TO 380

0114
0115
0117
0118
0119
0120
0121
0122
0123

weight

q(jm)=dh
slab
loworder

0124 IF (HVAL.EQ.0.) GO TO 380

(add ms physical valley relations. x or o)

WV = 1.0
IF (HVAL.LT.-2.) WV = 10.
IF (NX.GT.0) WV = 0.2
B(MV+1,JM) = WV
B(MV+1,JM+1) = (VWIDTH - PARHT) *WV
B(MV+2,MT) = 0.5
B(MV+3,1) = 0.4
B(MV+3,JM) = -.1/VDEPTH
B(MV+4,MT-1) = 0.15
MS = MINO(4, MT)

0126
0127
0129
0131
0132
0133
0134
0135
0136
0137

weight
fix valy
stddvaly
loworder
grad-
-cont.
loworder

0138 NC = NC+1
0139 if(lbug.gt.2.or.(ms.gt.0.and.lbug.ne.0)) call trace(fv,ht,3.3)#------>

c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ (4) Real-Height Solution $$$$$$$$$$$$$$$$$$$$$$$$$$$$
c4 --- (4) Real-Height Solution
c4.1 Solve equations in B

NS = MINO( MV+NR+MS, maxb)
CALL SOLVE (NS, JM, B, Q, DEVN)

calc. q

0141
0142

c

c4.2

Check physical constraints

if (ms .eq. 1) lbug= lbug+200
if (dip.lt.0.) lbug= lbug+400

leave ql
noadjust

0143
0145
0147
0148

Q(18) = DEVN
CALL ADJUST (HA,FA,FM,FC, LK,JM,MT, B,Q, LBUG)

c

c4.3

Iterate a valley or x-start calcn.

LOOP = 2
IF (JM.EQ.MT.or.NX.GT.0) GO TO 420

O-ray Valley; loop once to adjust depth

VWIDTH = Q(JM) + PARHT
IF (NC.EQ.1.and.HVAL.NE.0.) LOOP = 1

adj.vdep

if(lbug.gt.1.and.hval.ne.0..or.lbug.gt.2)calltrace(fv,ht,4.3)#------>

0152
0153
0155

0157
0159
0161
0163

IF (FB.LT.0.) LOOP = -IABS(LOOP)
IF (JM.GT.MT) CALL STAVAL (FV,HT, START,VALLEY, LOOP)
IF (LOOP.EQ.4) GO TO 330
IF (LOOP.EQ.3.and.FB.GT.0.) GO TO 330

fixed fh
strt/val
valyloop
xrayloop

c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ (5) Store Real Heights $$$$$$$$$$$$$$$$$$$$$$$$$$$$
c5 --- (5) Store Real Heights

0165 KRM= KR+NR-NL
0166 KVM= KV+NR-NL
0167 NH = MINO(NH,NF-MOD1/10*2)
0168 MQ = MT+MINO(LK,O)

lastreal
to calc.
polterms
QM = Q(MQ)
KA = KVM + 1

DO 520 K = KA, MF
FR = FV(K)
KRM = KRM+1
DELT = FR-FA
FV(KRM) = FR
HT(KRM) = HA + SUMVAL(MQ,Q,DELT,1)

FN = FV(KVM+NH)
DF = FV(KVM) - FA
IF (FCC.EQ.0.) GO TO 540
NH = KRM-KR
FN = FM
DO 560 J = 1, MQ
TCONT = TCONT+J*Q(J)*(TCONTF(FN-FA) - TCONTF(DF))

KR = KR+NH
KV = KV+NH
FC = FCC
IF (FC.EQ. 0.) GO TO 210
IF (FC.EQ.-1.) GO TO 200

End of Normal Steps

Calculate and List Peak data

Least-squares fitting of a Chapman-layer peak.

tras= 6.
if (fc.lt.0.) go to 620
if (ht(krm).lt.90.) go to 640
CALL PEAK (FV, HT, HMAX)

HS = (HMAX + HT(KRM))/2.
IF (HT(KV+1).GT.0.) GO TO 200

All finished. Add points at z = .5, 1.0, 1.5 above peak,
using a scale height gradient of 0.1.

N = KR + 3
FV(N-2) = FC *.97372
FV(N-1) = FC *.91213
FV(N ) = FC *.83462
HT(N-2) = HMAX + SH *0.5128
HT(N-1) = HMAX + SH *1.0526
HT(N ) = HMAX + SH *1.6216
FV(N+2) = TCONT*.124
HT(N+2) = SH
FV(N+3) = 0.
HT(N+3) = 0.
RETURN

if (fc.eq.-1.) go to 660
if (nv.lt.0) kv = -nv -1
if(lbug.ge.-9)print650, (fv(i),ht(i),i=kv-1,kv+3),tras,kv
format ('0>>>>error at f,h =',10f8.3,
'section',f4.1,i5,' >>> end', /)

call trace (fv,ht,tras)

n = kr + 1
fv(n) = fv(kv+1)
ht(n) = ht(kv+1)
fv(n+1) = 0.
ht(n+1) = 0.
return

END
F.2 THE SUBROUTINES SETUP, SELDAT AND STAVAL

Subroutines called by POLAN for preparation of input data for successive steps of the real-height calculation are grouped in a file POLSIN.FOR. The first subroutine SETUP is called only once near the beginning of POLAN to determine basic start constants. These include the smallest values of plasma frequency and virtual height in the data, the start method to be used, and an appropriate extrapolated value for the starting height (used in extrapolated starts, and to define the gyrofrequency in the low-density underlying region). The given data are also moved up to start at positions 31 in the frequency, height arrays, so that calculated real-heights can be filled in from the beginning of the same arrays.

SELDAT is called at the beginning of each new step in POLAN. It determines which data points will be used to calculate the next real-height polynomial, and deletes any unwanted extraordinary ray data.

STAVAL supervises all start and valley calculations within POLAN. It is always called during the initialising phase for each real-height step, to determine whether a valley is involved and to set the valley flag HVAL accordingly. If the following calculation is to determine a valley, initial estimates for the valley width and depth are made, based on a model value for the neutral scale height, and flags are set to control the type and path of the valley iteration.

After a real-height solution involving a start or valley, STAVAL is called again to check the result. Calculations involving extraordinary ray data and a height-varying gyrofrequency are iterated, at least once, adjusting the value of gyrofrequency to match the last-calculated real heights. Valley calculations are also iterated to keep the assumed value of valley depth in a fixed relation to the calculated width. For two-parameter valley calculations an additional iteration loop is required to determine independent values of depth and width to give the smallest r.m.s. error in the fit to the virtual-height data (and to the physically-desirable conditions included in the valley calculation).

```
C POLSIN.FOR = SETUP, SELDAT, STAVAL.
C********************************** - input processing for Polan.
C
0001   SUBROUTINE SETUP (N, FV,HT, START)
C ---                                      (called from section cl.2 of polan) feb84.
c 1. Move the virtual height data up 30 places, to start at fv(31), ht(31).
c 2. Set N = number of data points (up to two zero heights).
c    fmin = the lowest plasma frequency in the data.
c    hmin = the lowest virtual height in the data.
c          (these are used for start extrapolation in the absence of x-ray data).
c 3. Identify the start method, and set the following parameters:
c    js = the number of points added below fmin, = 2/1/0 for oray/xray/direct.
c    fa, ha define the starting point for the first polynomial.
c    hs = the height to evaluate the gyrofrequency for an x-ray start.
c    lk = 1 / 0 / -1 for o-ray / x-ray poly / x-ray slab starts.
c The real and virtual origins are at kr = 1 and kv = 31-js.
C---------------------------------------------------------------

Constants which SETUP sets in /pol/ are:- lk,kr,kv, fa,ha, hs,vdepth.

0002   DIMENSION FV(40), HT(40)
0003   COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
0004   COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
0005   COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,UM, LK, KR,KRM, KV,MF, NC counters
0006   VDEPTH = 0.
0007   VWIDTH = 0.
0008   TCONT = 0.
0009   SH = 0.
0010   FC = 0.

c1.a -- Move virtual data to start at fv(31), ht(31)
c1.a -- Find index j of the 1st o ray; fmin= lowest fn
       max data

0011   K = N-30
0012   10 FV(K+30)= FV(K)
0013   HT(K+30)= HT(K)
0014   IF (FV(K).GT.0.) J= K
0016   K = K-1
0017   IF (K.GE.1) GO TO 10
0019   FMIN = FV(J)
0020   IF (J.GT.1) FMIN = AMIN1(FMIN,SQRT(FV(1)*(FV(1)+.9*FH))) 1st oray
       1st fn
```
cl.b --
cl.b -- Set starting conditions (direct, extrap or model).
c Calculate initial fa, ha; start from fmin:
0022 HMIN = HT(J)
0023 DO 20 I = 1, 5
0024 20 IF (HT(J+I).GT.45.) HMIN = AMIN1(HMIN, HT(J+I)) h'min
0026 HA = HMIN
0027 FA = FMIN
0028 HS = HA
0029 JS = 0
0030 LK = 1
0031 IF (START.EQ.-1.0.AND.J.EQ.1) GO TO 40 direct
- start extrapn:
0033 JS = 2 add 2pts
0034 DH = ABS(HT(J+2)-HT(J)) *FMIN /(FV(J+2)-FMIN) to f = 0
0035 HS = AMIN1(HMIN-DH, HMIN/2.+50.) start fh
0036 HS = AMAX1(HS, HMIN/4.+55.) lowlimit
0037 FA = AMIN1(.5, .6*FMIN)
- model height:
0038 IF (ABS(START).GE.45.) HS = AMIN1( ABS(START), HS*.4+HMIN*.6 ) model
0040 IF (J.GT.1) GO TO 30 x start
0042 HA = HS start ht
0043 IF (MODE.EQ.10 .OR. MODE.GE.20) FA = FMIN*.6 snglpoly
0045 IF (START.GE.45..OR.START.EQ.0.) GO TO 40 o start
- model density:
0047 H = INT(START*.1)*10
0048 HA = 90.+H+H
0049 FA = START-H
0050 GO TO 40
- x-ray calculn:
0051 30 JS = 1 add lpt.
0052 HA = HS*.4 + HMIN*.6 x start
0053 LK = 0
0054 IF (START.GT.-3.) FA = -START-1. polystrt
0056 IF (START.LT.-1.) GO TO 40
0058 LK = -1
0059 FA = FMIN*.6 slabstrt
0060 VDEPTH = FMIN*.3

cl.c --
cl.c -- Store initial points. Virtual data starts at index kv (29 to 31).
0061 40 KV = 31-JS
0062 FV(30) = (FA + FMIN)/2.0 o start,
0063 HT(30) = HMIN - DH*(FMIN-FV(30))/FMIN add virt
0064 if (j.eq.1) hs= ht(30) (& show)
0066 FV(KV) = FA
0067 HT(KV) = HA
0068 FV(1) = FA
0069 HT(1) = HA
0070 KR = 1 realstrt
0071 RETURN
0072 END

cc******************************************************************************************
0001 SUBROUTINE SELDAT (NV, FV, HT)
c called from section c2.2 of polan. feb84.
c Select the virtual-height data to be used in the next step of polan.
c Define the following parameters:-
c nf = number of o-ray data points to be used
c (equal to nv, if sufficient good points exist before a peak/restart);
c nx = number of x-rays points;
c fm = fv(mf) = highest frequency included in this step;
c fcc is set equal to zero for a normal (non-peak) step;
c equal to -.1 for a cusp at fm;
c equal to a scaled critical frequency (fc), or to 0.1, for a peak.
c--------------------------------------------------------------------------------------------
0002 DIMENSION FV(40), HT(40)
0003 COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
0004 COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
0005 COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC counters
ffit gives the minimum desirable frequency range, for fitting x-ray data.
gfit gives the maximum slope dh'/df which should be used in an x-start.

data ffit, gfit / 0.4, 40. /

c2.a Count initial x rays. Check frequency sequencing.
Check for cusp, peak, or end of data.

FCC = 0.
FSX = 0.
FRX = 0.
MF = KV
FS = FV(KV)
F1 = 0.
FH = GIND(0., HT(KR))
NF = 0

Frequency loop (nf = 1 to nv):

10 NF = NF+1
12 MF = MF+1
FM = FV(MF)
FN = FV(MF+1)
HV = HT(MF)

IF (FM.GT.FS) GO TO 20
FRX = SQRT(FM*(FM+FH))
IF (MF.EQ.KV+1) FSX=FRX
IF (FM.LT.0..AND.FRX.GE.FSX.AND.NF.EQ.1) GO TO 12

nv = -mf
return

IF (F1.EQ.0.) F1 = FM
IF (HV.LT.0..OR.FN.LT.0.) GO TO 40
IF (ABS(HT(MF+1)).LE.30.) GO TO 50
FS = FM

if (fn.le.fm) go to 15

IF (NF+1.LT.NV.AND.MF-KV.LT.MAXB-4) GO TO 10

Check final point

GRAD = (HT(MF+1)-HV) / (FN-FM)
IF (NF+1.EQ.NV.and.(NF.LE.2.or.KR.GT.1.or.GRAD.LT.100.)) GO TO 10 loopfreq

Leave loop, with nf = no of o rays (.le.nv).

Check need for additional points.

IF (MOD.GT.10.OR.MOD.LT.4) GO TO 70
IF (HT(MF+1)-HV.GT.(FN-FM)*GFIT) GO TO 70
IF (FRX.GT.FSX .AND. FM.GT.FRX) GO TO 70
IF (FM-F1+.04*(nf-nv).LT.FFIT .OR.FM.LT.FSX) GO TO 10 incr fm

Cusp (fcc =-0.1) or end data
FCC = AMINI(FN, -.1)
HT(MF) = ABS(HV)
GO TO 70

Peak (fcc = 0.1 or scaled fc)
FCC = AMAX1(FN,.1)

Shift data arrays to delete out-of-range x rays (fnr > fm+0.1).

MX = MF - NF
NX = MX - KV
IF (NX.EQ.0) GO TO 100
F = FV(MX)
IF (SQRT((F+FH)*F).GT.FM+0.1) GO TO 90
IF (NX.EQ.1) GO TO 100
IF (HT(MX)-HT(MX-1).LT.GFIT*(FV(MX-1)-F)) GO TO 100 grad ok.
J = MX
FV(J)= FV(J-1)
HT(J)= HT(J-1)
J = J-1
IF (J.GE.KV) GO TO 95
KV = KV+1
GO TO 80
SUBROUTINE STAVAL (FV,HT, START,VALLEY, LOOP)

Staval handles all start and valley calculations, in which the real-height polynomial has a constant term [at q(jm), where jm=mt+1] so that the height at the origin [fa,ha] is recalculated.

The initialising call enters and exits with loop = 0. If this is not a valley calculation (i.e. hval = 0.) then staval just sets the initial weight xwat for any x-ray data, and returns. For a valley calculation (shown by hval.ne.0.) the iteration-flags devl, devll are initialised, and the standard values for valley depth and width are calculated (based on the 'standard scale height' sha).

A call with loop = 1 is to adjust the valley depth for a single o-ray iteration. this exits with loop = 4.

The main call enters with loop = 2. (-2 if fb is negative.) Exit with loop = 2 shows that the start/valley calculation is completed and the required real heights have been added to ht. If loop > 2 on exit, polan recycles the valley calculation:-
loop = 3 requests a new calculation with a changed gyrofrequency.
loop = 4 is to recalculate with a new value of valley depth vdepth.

DIMENSION FV(40), HT(40)
COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC

DATA VBASE, VDEEP, VCONST / 0.6, .008, 20. /
DATA VAL1, DVAL1, VPEAK / .1001, 6., 1.4 /
DATA Wvx, HXERR / 1.0, 2.0 /
DATA VAL, DVAL, DEVLL, HMAX, HDEC, FHHT / 7* 0.0 / to store sq(x) = sqrt((1.-x)*(1.+x))

LOOP = IABS(LOOP)
IF (LOOP.GT.1) GO TO 200
IF (LOOP.EQ.1) LOOP = 4
IF (LOOP.EQ.4) GO TO 40

tras = -3.1
XWAT = Wvx
PARHT= 0.

HVAL = HT(KV)
IF (HVAL.EQ. 0.) HVAL = VALLEY
IF (HVAL.EQ. 0.) HVAL = 1.
IF (HVAL.GE.10.) HVAL = 0.
IF (HVAL.EQ.0.) RETURN

HDEC = INT(HVAL) - HVAL
DEVL = 1.E6
DEVLL= 1.E7
DVAL = DVAL1
HMAX = HT(KR)
SHA = HMAX*.25-20.
HS = HMAX + SHA
SH = SH * VPEAK

Set standard width

VWIDTH = SHA*2. * ABS(HVAL)

IF (HVAL.LT.-2.) VWIDTH = INT(-HVAL) *5.

Set initial depth, or depth adjustment for valley iteration

Standard depth (width calculations iterate here).

VAL = VWIDTH**2 * VDEEP/(VCONST+VWIDTH)

IF (HDEC.GT.0.) VAL = HDEC

IF (HVAL.EQ.-1..AND.NX.GT.0) VAL = VAL1

IF (INT(HVAL).EQ.-1.) HVAL = -1.

Peak section (depth calculations iterate here).

VDEPTH = VAL*FA/(VAL+FA)

PARHT = 2.0*SH* SQ(1.-VDEPTH/FA)

HA = HMAX + PARHT

IF (NC.EQ.0) FHHT = HA+20.

RETURN

Main call with loop = 2, from polan section c4.3.

Start / valley entry, after "solve".

tras = -4.3

DEVN = Q(18)

FNL = 0.

DHL = Q(JM)

Calculate and check real heights

IF (NX.LE.0..OR.(DEVN.EQ.0..AND.HVAL.EQ.-1.)) DVAL = -1.

QM = Q(JM)

HR = HA + QM

HN = HR

FN = FA

MC = NC

MV = NF + NX

MQ = MT + MINO(LK,0)

DO 300 I = 1, MV

HL = HN

FL = FN

FN = FV(KV+I)

IF (FN.LT.0.) FN = SQRT((FN+FH)*FN)

DELT = FN - FA

HN = HR + SUMVAL(MQ,Q,DELT,1)

if (nc+mc.gt.25.or.start.eq.-1) go to 300

if ((hn-hl)/(fn-fl) .gt. 2.0) go to 300

if (nx.gt.0.and.xwat.eq.wvx.and.nc.gt.1) go to 380

a = qm-amax1(5.,abs(qm)/4.)*amax0(1,3-kr)

nqm = int(a*10.01)

if (fn.ne.fnl.or.hn-hl.gt.dhl) go to 350

if (bug.ge.-9) print 250, fv(kv+i)

format('Odata/gyrofrequency incompatible at f =',f6.2)

IF (KR+I.LT.KV) HT(KR+I) = HN

KRM = MINO(KR+MV, KV-1)

IF (NC.LE.2) XWAT = WVVX

KHX = KR + 1 + NX/3

DHX = HT(KHX) - FHHT

FHHT = HT(KHX)

IF (NC.EQ.1 .OR. ABS(DHX).GT.HXERR) LOOP = 3

IF (NX.LE.0.OR.NFB.LT.0.OR.NC.GE.20) LOOP = 2

IF (KR.GT.1) GO TO 500

GO TO 400

(jump here to get new solution with reduced start offset)
dev = devn
call solve (nqm, -jm, b,q, devn)  decr. qm
if(lbug.gt.0) print360, nc, qm,q(jm), fn,hn, dev,devn  **------>
format(i3,' staval: qm reduced from'f6.1,' to'f6.1',' to avoid
$ -ve slope at f,h ='2f7.2,6x,'(devn increases'f6.2,' to'f6.2,').')
fnl = fn
dh1 = hn-hl
go to 220

c-------------------------------------------------------------------------
c
c
Re-calculate a bad result
bad data
if(lbug.ge.-9)print 390  **------>
format (' x ray weights reduced to 1/4.')
loop = 4
return

c***********************************************************************
c*---------------------------------------------------------------------
c* X ray Start: slab (.3-.6f1) +poly**********
c*---------------------------------------------------------------------
SLAB = Q(MT)
IF (LK.EQ.0) SLAB = 0.  polystrt
if(lbug.ge.-9)print 420, nc,qm, slab,devn, jm,nf,nx,ms,fhht ------>
format (i3,' start offset =',f6.1,' km,  slab',f6.1,
1 ' km.',6x,'devn',f6.2,' km',i5,' terms fitting',
2 i3,' 0 +',i2,' X rays +',i2,lh.,6x,'hx =',f6.1)
IF (LOOP.EQ.3) RETURN  reset fb
KD = 1-LK
GO TO 700  addedpts

c***********************************************************************
c*---------------------------------------------------------------------
c* Valley: Iterate and print   **********
c*---------------------------------------------------------------------
VWIDTH = QM + PARHT
if (lbug.gt.0.or.dval.lt.0..or.nc.ge.20)
1 print 520, nc, vwidth,vdepth, devn, jm,nf,nx,ms, fhht ------>
format ( i3,' valley',f5.1,' km wide,',f8.2,' MHz deep.'
1 ,7x,'devn',f6.2,' km', i9,' terms fitting',
2 i3,' 0 +',i2,' X rays +'i2,10x,'hx =',f6.1)
IF (LOOP.EQ.3) RETURN  reset fb

KD = 4
LOOP = 4
VBOT = QM*VBASE
SLAB = QM-VBOT
IF (DVAL.LT.0..OR.NC.GT.25) GO TO 700  lin.slab
IF (HVAL.EQ.-1.) GO TO 600  end valy
iterate

c
c - - - - - - - - Normal cycle: Scale depth as (width)**2  - - - - - -
IF (DEVN.GT.DEVL/.9.and.nc.lt.4) GO TO 20  revert
IF (DEVL.LT.1.E6) GO TO 560  end valy
DEVL = DEVN
GO TO 40  loopvaly
DVAL = -1.
if (lbug.eq.0) go to 500  listvaly
GO TO 700  end valy

cx6--- - - - - - - Vdepth Iteration: choose depth vall or vall*dval1.  - - - -
cx6---

IF (DVAL.NE.DVAL1) GO TO 620  iterate
IF (VAL.EQ.VAL1) GO TO 675  1stround
DVAL = 1.+5*COS(.015*DIP)  2ndround
IF (DEVN.LT.DEVL) GO TO 675  continue
VAL = VAL1  revert
GO TO 680

c
Iterate from chosen depth
IF (DEVN.GT.DEVL*.97-.003.AND.DEVLL.LT.1.E6) GO TO 660  end
IF (DEVN.LT.DEVL) GO TO 670  continue
DVAL = 1./DVAL  reverse,
VAL = VAL*DVAL  2ndentry
DEVLL = DEVN
GO TO 680

c - - - - - - - - Interpolate to minimum deviation
DMIN = (DEVLL-DEVN)/ABS(DEVLL+DEVN-DEVL-DEVL)*.5 - 1.

139
DVAL = -DVAL**AMIN1(DMIN, .5)
GO TO 680

c
DEVLL = DEVL
DEVL = DEVN
VAL = VAL*ABS(DVAL)
GO TO 60

c-----------------------------------------------------------------------------------------------
cx7---*************************************** Tidy up. Delete x rays. *******************
cx7--- Add initial points; kd = 1,2,4 for poly, slab, valy
LOOP = 2
if (lbug.eq.6) call trace (fv,ht, tras)  #>---->
KR = KR + KD
KV = KV + IABS(NX)
IF (KD.EQ.0) RETURN
IF (KD.EQ.1) GO TO 750

c
FBOT = FA - VDEPTH
HT(KR-2) = HA
FV(KR-2) = FBOT
HT(KR-1) = HA+QM*VBASE
FV(KR-1) = FV(KR-2)
IF (KD.LT.4) GO TO 750
HT(KR-3) = HA - 0.5*PARHT
FV(KR-3) = 0.5*SQRT(3.*FA**2 + FBOT**2)
FV(KV) = FA

c
HA = HA + QM
IF (KD.LE.2) KR = KD
HT(KR) = HA
FV(KR) = FA
IF (KR.GT.3) GO TO 800

c
HT(1) = HA-SLAB
FV(KV-1) = FA
F1 = FV(KV+1)
IF (LK.EQ.0) FV(KV-1) = (FA+F1)*.5
FV(KV) = (FV(KV-1)+F1)*.5
KV = KV-2-LK
VBOT = 0.

c
IF(KR.GT.1) TCONT=TCONT+FV(KR-1)**2*(VBOT+.5*SLAB)+FA**2*.5*SLAB
+ PARHT*(FA*FA-VDEPTH*(FA+FV(KR-1))/3.)
if (lbug.eq.6) call trace (fv,ht,tras)  #>---->

RETURN
END
F.3 THE PROGRAMS COEFIC, ADJUST and REDUCE

COEFIC and REDUCE are the major subroutines required by POLAN for the work of real-height analysis. Along with the subroutine ADJUST which carries out checks on the result, they make up the file POLSUB.FOR.

The subroutine REDUCE is called first in each real-height cycle. Its purpose is to calculate the group retardation caused by the last section of the real height profile, at all higher frequencies. This retardation is subtracted from the virtual heights which remain to be analysed, so that the stepwise calculation of real-height segments can continue without further allowance for the presence of underlying ionisation. For a frequency range of about 0.5 to 1.0 MHz above the current origin (the starting point for the next real-height section), the virtual heights contain a large component due to group retardation in the last real-height section. Group retardations over this range are therefore calculated by integration of the full polynomial real-height expression for the last step. At higher frequencies the group retardation is smaller and is obtained with sufficient accuracy by a simplified procedure which requires only one value of group index per step but effectively allows for parabolic real-height segments. This simplification is made to speed the analysis. As in most real-height procedures, using reasonably large data sets, most of the time is occupied in calculating values of the group refractive index to use in this reduction step.

The subroutine COEFIC sets up the simultaneous equations which are used to define the polynomial real-height coefficients. These equations occupy successive rows in the array B(40,17). If MV is the number of virtual heights included in this step of the analysis, the first MV rows of B contain the virtual-height coefficients relating the real-height coefficients q(1), q(2), .. q(JM) to the values of h"(f) - HA at each frequency. h" is the 'reduced' virtual height, equal to the observed height less the group delay due to ionisation below the height HA, and H is the starting point for the current step in the real-height analysis. Calculation of these virtual-height coefficients uses 5, 12 or 17-point Gaussian integration, as described in section 5 and appendix B.3. Suitable weights are also placed on the coefficients in B, to give a graded weighting to the equations at different frequencies.

COEFIC also places coefficients which define known real heights (in terms of the polynomial coefficients) in the following NR rows of the array B, so that the new solution will include a least-squares fit to NR of the previously determined heights. For valley or start calculations POLAN places MS additional physically-derived conditions into following rows of B, before finding the solution for the complete set of MV+NR+MS simultaneous equations.

COEFIC is also used by the subroutine REDUCE to perform the accurate reduction of virtual heights, using the full polynomial expression for the previous section of the real height profile to calculate and remove the group retardation due to this section at higher frequencies. This reduction is carried out for MV frequencies above the current real-height origin (FA,HA) when COEFIC is called with the first parameter equal to -MV.

The subroutine ADJUST is called by POLAN immediately after the real-height solution is obtained, to carry out various checks on this solution and see if it is physically acceptable. If not, an additional constraint is added into the set of simultaneous equations and a new least-squares solution obtained. This process is carried out rapidly by the subroutine SOLVE, and gives a new (increased) value for the virtual-height fitting error. For adjustments which involve only the correction of non-physical variations in 'unseen' regions of the profile (at plasma frequencies less than the minimum observed frequency f_min), the adjustment is revoked if it causes an undesirably large decrease in the accuracy with which the calculated profile fits the virtual height data.

```
c POLSUB.FOR = COEFIC, ADJUST, REDUCE.
c**********************************************************************
c
0001 SUBROUTINE COEFIC (MV, FV, HT)
c
c Calculate coefficients b(i,j), for the real-height polynomial
c h-ha = q(j)*(f-fa)**j; mt terms, fa=fv(k), ha=ht(k).
c The first mv rows of b give virtual ht coefs at freqs k+1 to k+mv;
c following nr rows give real height coefs at freqs k+1 to k+nr.
c Adds terms for a linear section at x ray start or above peak.
c Subtracts a parabolic segment (with s.h.=1.40*sh) above peak.
c
c Called with mv -ve (from "reduce", in section 2.3) to reduce the next
c |mv| virtual heights by the delay in the previous section fa to fv(k).
```
c-----------------------------------------------------------------------
0002 COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
0003 COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
0004 COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC counters
c
0005 DIMENSION TR(17),W(17), GAUSS(17),FNR(17), FV(9),HT(9)
0006 DATA TR / .046910077,.23076534, .50 ,.76923466,.95308992,
1 .009219683,.047941372,.11504866,.20634102,.31608425,.43738330,
2 .56261670,.68391575,.79365898, .88495134,.95205863,.99078032 /
0007 DATA W / .11846344,.23931434, .28444444,.23931434,.11846344,
a .02358767,.05346966,.08003917, .10158371,.11674627,.12457352,
b .12457352,.11674627,.10158371, .08003917,.05346966,.02358767 /
0008 DATA VB, FTC, GTC / 0.6, 0., 180. /
0009 sq(x) = sqrt((1.-x)*(1.+x))
c-----------------------------------------------------------------------
cc1 ---
cc1 --- (1). Set integration order and weights
0010 IRA = 1 use 5 pt
0011 IRB = 5
0012 F1 = FV(KV+1)
0013 IF ((MODE.LT.8.OR.MV.LT.0).AND.F1.GT.0.) GO TO 1
0015 IRA = 6 use 12pt
0016 IRB = 17
0017 NFF = IABS(MV) freqs.
c
0018 KM = KV + NFF
0019 FW = FV(KM+1) for wv
0020 IF (FW.LT.1.) FW = FV(KM)*2. - FV(KM-1) at fw=0
0022 I = KV + MINO(NFF, MAXO(MOD-15,2)+NR)
0023 DW = FW - FV(I) for wv=1
0024 DA = FV(KV+NR-NL) - FA for wv=1
0025 KP = KR
0026 IF (PARHT.GT.0.) KP = KR-1 end poly
c
c
Set gyrofrequency height
0028 HR = HA + 10.*AMINO(1,KR-1) refln ht
0029 IF (KRM.GT.KR) HR = HT(KR+1) for fh.
0031 IF (KRM.EQ.KR) FTC = FA*1.2
0033 IF (MV.LT.0) GO TO 7
0035 IF (LK.GE.0.OR.KRM.EQ.KR) GO TO 4 Slab start; set fh level.
c
0037 DELTF = 0.
0038 GRAD2 = Q(1) - GTC
0039 IF (GRAD2.LT.0.) GO TO 3 normal
0041 grad1 = grad2
0042 deltf = deltf + .1*fa
0043 grad2 = sumval(mt-l,q,delf,2) -gtc
0044 if (grad2.gt.0..and.delf.lt.fa*.45) go to 2
0046 DELTF = DELTF + .1*FA* AMIN1(GRAD2,O.) /(GRAD1-GRAD2)
0047 FTC = (FTC+FA+DELT)*.5 average
c
Clear matrix B
0048 DO 5 I = 1, MAXB
0049 DO 5 J = 1, 17
0050 B(I,J) = 0.
0051 CONTINUE
c=======================================================================
c########################################################### Loop frequencies: i = 1 to nff normally,
c = 0 to nff to fit l back height
0052 I = 1 - NL prev ht
0053 IF (I.EQ.0.AND.MOD.NE.12) I = -1
0055 IF (MV.LT.0) I = 1
c########################################################### Loop frequencies:
0057 IREAL = NFF + NL + MAXO(I,O)
0058 KVI = KV + I
0059 KRI = KR + I
cc2 ---
cc2 --- (2). Frequency and weight
0060 F = FV(KVI)
0061 HV = HT(KVI)
0062 FR2 = F*F
IF (KRI.LE.KRM) HR = HT(KRI) *.8 +HT(KR+1)*.2
FH = GIND(0.,HR)
IF (F1.LT.0.) FH = GIND(0.,HS)
IF (F.LT.0.) FR2 = F*(F+FH)
FR = SQRT(FR2)

Weighting for least squares analysis

WREAL = 10.
IF (KVI.LT.KV) WREAL = 3.
IF (I.LE.0) GO TO 55
if (fr.le.fv(kr).or.fr.ge.fw.or.parht.gt.2.*sh
.or.fr.le.fc.or.nff+nr.gt.40) jm = -jm
if (jm.le.0) print*,is,nff,i,kvi,kri,f,hv,fw,fr,fc,parht
if (jm.le.0) return

IF (MV.LT.0) GO TO 12
WVIRT = 1.
IF(NR.GT.NL.AND.FCC.EQ.0.)WVIRT=SQRT(AMIN1((FR-FA)/DA,(FW-FR)/DW)) taper w
IF (F.LT.0.) WVIRT = XWAT

Integrate from t = tb (at f=fa) to ta

TB = SQ(FA/FR)
TA = 0.
IF (MV.LT.0) TA = SQ(FV(KP)/FR)
IF (MV.LT.0) GO TO 20
FTC = AMIN1(FTC,FA*.1+FR*.9)
TC = SQ(FTC/FR)
IF (F1.LT.0.) GO TO 15
TC = 0.39-.05/COS(.016*ADIP)
IF (TB.LT.1.2*TC.OR.INT(ADIP)-2*IRA.LT.58) GO TO 20

Extended (17-point) integration.

IRA = 1
IRB = 17
TA = TC
TD = TB - TA

Retardation in start/peak section

DEPAR = 0.
DELIN = 0.
IF (LK.GE.0.AND.PARHT.EQ.0.) GO TO 35
IF (SH.NE.0.) DZ = .5*PARHT/SH
GINDV = 0.
DO 30 IR = 6, 17
IF (LK.LT.0) GO TO 28
TP = SQ(FC/FR*SQ(TR(IR)*DZ))
DEPAR = DEPAR + GIND(F,TP) *W(IR)
GINDV = GIND(F,SQ((FA-TR(IR)*VDEPTH)/FR))
DELIN = DELIN + GINDV*W(IR)
CONTINUE

Group index for polynomial terms

DO 50 IR = IRA, IRB
IF (IR.NE.6.OR.IRA.NE.1) GO TO 45
TD = TA
TA = 0.
FH = GIND(0.,HR)
IF (F.GT.0.) GO TO 45
FR2 = F*(F+FH)
FR = SQRT(FR2)
TD = SQ(FTC/FR)
T = TR(IR)*TD+TA
FN = SQ(T)*FR
GAUSS(IR) = GIND(F,T)*T*W(IR)/FN *TD*FR2
FNR(IR) = FN - FA

Store coefficients in array B

DO 90 J = 1, JM
RH = (FR-FA)**J
DPEAK = 0.
SUM = 0.
IF (KVI.EQ.KV.AND. J.EQ.1) RH = 1.
IF (I.LE.0) GO TO 90
IF (J.EQ.JM) DPEAK = DEPAR*PARHT
IF (J.LT.MT.OR.(J.EQ.MT.AND.LK.GE.0)) GO TO 60

C Start or valley terms
RH = J-MT
IF (J.EQ.MT) SUM = DELIN
IF (LK.GT.0) SUM = GINDV*VB+DELIN*(1.-VB)
GO TO 80

C Polynomial terms
DO 70 IR = IRA,IRB
A = GAUSS(IR)
GAUSS(IR) = A*FNR(IR)
SUM = SUM+A
SUM = J*SUM

C Coefficients B(i,j).
B(I,J) = (SUM+RH)*WVIRT
IF (MV.LT.0) HT(KVI) = HT(KVI)-Q(J)*SIGN(SUM,HV)-SIGN(DPEAK,HV)
IF (IREAL.LE.NFF+NR) B(IREAL,J) = RH*WREAL

IF (MV.LT.0) GO TO 100

c-------------------------------------
c(7). Store Virt/Real heights as r.h.s.
IF (I.GT.0) B(I,JM+1) = (HV-HA-DPEAK)*WVIRT

IF (IREAL.GT.NFF+NR) GO TO 100
REAL = HT(KRI) - HA
IF(MOD.EQ.12) REAL = Q(1)+2.*Q(2)*(FA-FV(KR-1))
B(IREAL,JM+1) = REAL*WREAL
I = MAXO(I,O)+1
IF (I.LE.NFF) GO TO 10

c######################################################## End of frequency cycle ==============================

RETURN
END

SUBROUTINE ADJUST (HA,FA, FM,FC, LK,JM,MT, BB, Q, LBUG)

Called from section c4.2 of Polan, after the initial call to Solve,
Adjust is used to condition the real-height polynomial (in df = f-fa)
h = ha + df*q(1) + df**2 *q(2) + ... + df**mq *q(mq)
by ensuring that
1- The gradient dh/df is positive at f = fa.
For an O-ray start calculation, an initial gradient Q1 of
greater than 80 km/MHz is reduced to 160.Q1/(80+Q1).
For an X-ray slab start (lk =-1) the gradient is limited above 160 km.
2- The solution is well-defined:
- the last 3 coefficients do not alternate in sign, and
- these coefficients have absolute values less than 999.
These conditions are omitted for the peak and x-ray start, when a large
gradient may be required at one end of the fit range.
3- For x start calculations: the underlying slab is positive,
the initial height offset is negative,
the initial height (+offset) is > 60 km.
4- For a valley calculation: the initial gradient dh/df > sha,
the initial curvature q(2) < -1.5,
the initial height offset is positive.

Adjustments alter the least-squares coefficients q(1) to q(jm),
and the rms deviation of the fit devn (stored in q(18)).
When jm = mt, the polynomial ends at mq = mt.
jm = mt+1 and lk.le.0 indicates an x start calculation.
The poly then ends at mq = mt-1, and
q(mt) = underlying slab thickness, preferably positive;
q(jm) = starting height offset, which must be negative.

jm = mt+1 and lk.gt.0 indicates a valley calculation.

The poly then ends at mq = mt,
and q(jm) = the valley width, which must be positive.

Adjustments are made by Call Solve (mm, -n, bb, q, devn).
This modifies the least-squares solution by adding the constraint
q(n) = mm/10., with a weight of 10. Any constraints previously
applied at this or larger values of n are first removed by Solve.

DIMENSION BB(2), Q(18)

lflag= (lbug+50)/100
lbug = lbug- lflag*100

DEVN = Q(18)
MQ = MT
IF (LK.LT.0) MQ = MT-1
if (lbug.eq.-6.and.lk.lt.2) lbug= 96
if (lbug.gt.2.or.(lbug.gt.0.and.lk.lt.2)) print7,(m,m=2,mt) ------>
if (lbug.gt.0.or.(lbug.eq.-1.and.lk.lt.2))
print9,'--- ',lk,jm,mt,ha,fa,fm,(q(i),i=1,jm),devn ------>
format ('O*adjust----- lk jm mt ha fa fm',6x,
'q1',9i9/41x,10i9)
format (' *adjust', a6,3i3, f8.2,2f6.2, 10f9.2 /43x,10f9.2)
if (lflag.gt.0.or.jm.lt.4) return

MINQ1 = 2
IF (LK.GT.1) GO TO 50

QMAX = 80.
IF (LK.EQ.-1) QMAX = 160.
IF (Q(1).GT.QMAX) MINQ1 = 2.*QMAX*Q(1) / (QMAX+Q(1))
GO TO 60

Valley: gradient > sha
IF (JM.GT.MT) MINQ1 = INT(HA/4.-20.)

IF (Q(1).GE.FLOAT(MINQ1).AND.MINQ1.LT.85) GO TO 80
CALL SOLVE (MINQ1*10, -1, BB, Q, DEVN)
if(lbug.gt.0)print9,'q(1)',lk,jm,mt,ha,fa,fm,(q(i),i=1,jm),devn------>

Valley: initial curvature < -1.5
IF (JM.LE.MT.OR.LK.LE.0.OR.Q(2).LT.-1.5) GO TO 100
CALL SOLVE (-15, -2, BB, Q, DEVN)
if(lbug.gt.0)print9,'q(2)',lk,jm,mt,ha,fa,fm,(q(i),i=1,jm),devn------>

Check for unnecessary high-order coefficients.
Reduce order if last 3 signs alternate, and sizes increasing,
or if any size exceeds 999.

QQ = Q(MQ)
IF (MQ.LT.5.OR.ABS(QQ).LT.150. .OR.FC.GT.0..OR.LK.LE.0) GO TO 200 o.k.
IF (QQ/Q(MQ-2).GT.2. .AND. QQ/Q(MQ-1).LT.-1.) GO TO 150 fix it
IF (ABS(QQ).LT.999..AND.ABS(Q(MQ-1)).LT.999.) GO TO 200 o.k.

Add constraint q(mq) = 0., and reduce mq.

DEVN = -1.
CALL SOLVE (0, -MQ, BB, Q, DEVN)
if(lbug.gt.0)print9,'mq ',lk,jm,mt,ha,fa,fm,(q(i),i=1,jm),devn ------>
MQ = MQ-1
GO TO 100

CONTINUE

START and VALLEY: check sign, and limit offset term

DEVL = DEVN
IF (JM.EQ.MT) GO TO 500
IF (LK.GT.0 ) GO TO 400

QM = Q(MT)
SUBROUTINE REDUCE (FV, HT)

c
c To reduce the remaining virtual heights by the group retardation in
c the last calculated real-height section (from fa to fv(kr)).
c
c Modifies all h' at f > fv(kr), by subtracting the group retardation.
c Increases lk (the height to which group retardation is removed) to kr.
c Use LIST = 7 to show details of the reduction steps.

DIMENSION FV(40), HT(40)
COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC counters
7 format (' reduce: ',15f8.3)

c2.a-- Reduction using full polynomial expression (at f<fm+mode/25).
K = MF
FRED = FV(MF) + .04*FLOAT(MODE)
K = K+1
IF (ABS(HT(K)).GT.30..AND.FV(K).LE.FRED) GO TO 20

KV1 = KV+1
KVM = K -1
if(lbug.eq.7)print7, (fv(j),j=kv1,kvm) ##---->
if(lbug.eq.7)print7, (ht(j),j=kv1,kvm) ##---->
CALL COEFIC (KV-KVM, FV, HT)
if(lbug.eq.7)print7, (ht(j),j=kv1,kvm) ##---->
if (jm.le.0) return exit>>>

Error check on reduced virt hts.
do 40 k = kv1, kvm
if (abs(ht(k)).lt.ha) go to 50 low ht.
GO TO 60

list bad point (h'<ha) and delete it
if(lbug.ge.-9) print 52, (fv(j),ht(j), j=k-1,k+1) **---->
format ('0*****reduce: data error at f, h =', 6f8.3, i5,' end >>>')

move up
fv(k)= fv(k-1)
ht(k)= ht(k-1)
k= k-1
if (k.gt.kv-4) go to 55
kv = kv1

c2.b-- Approx reduction at f>fred for delay in fv(lk) (=fa) to fv(kr)
MQ = MT + MINO(LK,O)
LK = MAXO(LK,1)+1
FAR = FV(KR)
G2 = Q(1)

DO 100 L = LK,KR

FL = FV(L-1)
FN = FV(L)
AVN = (FL**2+FN*(FL+FN))/3.
HA = HT(L)
DH = HA - HT(L-1)

DELT = FN - FA
G1 = G2
IF (FN.NE.FC.AND.FN.GT.FA) G2 = SUMVAL(MQ,Q,DELT,2)
IF (FN.EQ.FC.OR.FN.LT.FA) AVN = AVN+FN*(FN-FL)/3.
DH = DH+(G2-G1)*(FL+FN)*(FN-FL)**2/(12.*AVN)
FH = GIND(O.,HA)

K = KVM

K = K+1
F = FV(K)
IF (F.EQ.-1.) GO TO 100
FR = F
HV = HT(K)
IF (HV.EQ.O..AND.HT(K+1).EQ.O.) GO TO 100
if (abs(hv).le.30.) go to 80
if (f.lt.0.) fr = sqrt((f+fh)*f)
if (fr.lt.far) go to 90
TAV = SQRT(1.-AVN/FR**2)
HT(K) = HV - GIND(F,TAV)*DH*SIGN(1.,HV)
if(lbug.eq.7)print7, fl,fn,tav,dh, f,hv,ht(k)
GO TO 80

End freq loop. Delete bad data and end
if(lbug.ge.-9)print 52, (fv(j),ht(j), j=k-1,k+1), k
fv(k) = -1.

CONTINUE

LK = KR
RETURN
END
F.4. THE SUBROUTINES PEAK, TRACE, SOLVE, SUMVAL AND GIND

This group of five miscellaneous subroutines is contained in the file POLMIS.FOR.

The subroutine PEAK is called by POLAN only at the end of the real-height calculations for an ionospheric layer. The gradients at the last several frequencies are used in a least-squares analysis to determine the scale height and critical frequency of the best-fitting Chapman layer. The height of the peak is then found by fitting this layer to the last two calculated real heights. The method used in these calculations is described elsewhere (Titheridge, 1985).

The subroutine TRACE is used only to print additional information so that the operation of POLAN can be checked. In normal use, when the input parameter LIST is equal to 0 or 1, this subroutine is never called.

The subroutine SOLVE (M, N, B, Q, DEVN) plays an important part in POLAN. Normal operation is obtained when the input parameter N, giving the number of unknowns to be solved for, is positive. Equations specified in the first M rows of the matrix B are then solved and results returned as q(1) to q(N). When M is greater than N a least-squares solution is obtained, and the r.m.s. deviation of this solution is returned as DEVN. At M = N an exact solution is obtained, and DEVN = 0. In both cases equations of the form

\[ b_1q_1 + b_2q_2 + \ldots + b_Nq_N = b_{N+1} \]

are stored with the coefficients \( b_1 \) to \( b_{N+1} \) in columns 1 to N+1 of the array B. Successive equations occupy successive rows in the array; thus the coefficients for the ith equation are B(i,1) to B(i,N+1). The first M rows of B contain coefficients for the M equations to be solved. These are converted to upper triangular form by a series of orthogonal Householder transformations. The rows N, N-1, ..., 1 are then solved in succession to obtain the parameters qN, qN-1, ..., q1. This procedure has several advantages over the older method of forming the normal equations and solving them by Gaussian elimination. It is much more stable and gives accurate results for polynomials using 15 or more terms, whereas the normal equations become very ill-conditioned for polynomials of order greater than about 6. The calculations are quite fast, require no row or column interchanges, and can give directly the r.m.s. deviation of the fit. The solution is carried out in place requiring no additional storage. The original equations are destroyed, but the triangulated form retained in the array B is directly useful for further examination or adjustment of the results.

Revised solutions are obtained by SOLVE when it is called with a negative value for the parameter N. This indicates that an additional equation is to be added into the least-squares solution. The new equation is always \( q_j = M/10 \), where the index j is equal to -N and the constant M is given by the first parameter in the call to SOLVE. Addition of this equation to the previously triangulated set gives NP = NQ+1 equations (where NQ is the total number of coefficients q, as given in the first call to SOLVE). These NP equations are reduced to a new set of NQ upper triangular results, by application of Givens transformation. The new coefficients q, and the corresponding value of DEVN, are then obtained.

Before the new solution is obtained in SOLVE the subroutine checks the flags stored in the array ISETQ. These show any constraints previously placed on the coefficients q. Any previous constraint on the value \( q_j \) is first removed. This is necessary to avoid competition between different constraints, giving a result with an intermediate value of \( q_j \) and a large value for DEVN. Removal of a constraint is achieved by adding in the same equation again, with all coefficients multiplied by \((-1)^{0.5}\); this gives an effective weight of -1 which cancels the effect of the previous constraint. Any existing constraints on \( q_{j+1} \) to \( q_N \) are also removed. Constraints can then be tried successively, at decreasing values of j, with each trial showing results of only the last constraint. If it is desired to include two separate constraints (on different values of \( q_j \)) in the final solution, these constraints are applied in order of increasing j. In all cases the new solution is obtained directly from the previous solution and the stored values of the triangularised matrix \( B_{ij} \). Recalculation of group index integrals and of the original coefficients in B is not required, so modified solutions are obtained almost instantaneously.

The subprogram SUMVAL is used for evaluating various sums and products of arrays, as defined in the listing. This is used by POLAN to obtain the values of real height and gradient from the polynomial real-height coefficients q, and for some other operations.

The subroutine GIND provides values of the group refractive index as a function of the wave frequency F, and the parameter T which defines the ratio of plasma frequency to wave frequency. An initialising call with T negative is used to set the value of gyrofrequency at the ground (GH), and the magnetic dip angle. A height-varying gyrofrequency is normally assumed. Calling GIND with F = 0 scales internal constants to correspond to a height of -T km. These constants are organised to allow rapid calculation of the values of group index, since this calculation takes most of the time in
a real height analysis. If a fixed value of gyrofrequency is to be used at all heights, the initial
value of GH is made negative. The equations used provide results for the ordinary ray when the
frequency F is positive, and for the extraordinary ray when F is negative. They are designed to
maintain full accuracy for all values of dip angle (from 0 to 90°), and all values of T (from 0 to 1)
for both rays. The derivation of the equations is given in appendix D.3.

```
c POLMIS.FOR = PEAK, TRACE, SOLVE, SUMVAL, GIND.
c****************************************************************************** - utilities for POLAN.
c
0001 SUBROUTINE PEAK (FV,HT, HM)
c******************************************************************************jan78/dec84.
c Calculate and list parameters for a Chapman-layer peak.
c
c Called with KR, KV pointing at last calculated real height before peak.
c Get FC, SH by a least-squares fit to the last NK calculated heights.
c Include any scaled FC, FCX, and iterate from a model scale height.
c LIST = 8 adds detailed trace outputs.
c---------------------------------------------------------------------------------------------
0002 DIMENSION FV(9), HT(9)
0003 COMMON /POL/ B(40,17),Q(18), FH,ADIP, MODE,MOD, FA,HA, TCONT,LBUG
0004 COMMON /POL/ HS, FC,FCC, SH, PARHT, HVAL,VWIDTH,VDEPTH, XWAT
0005 COMMON /POL/ MAXB,NF, NR,NL, NX, MS,MT,JM, LK, KR,KRM, KV,MF, NC counters
sq(x) = sqrt((1.-x)*(1.+x))
c---------------------------------------------------------------------------------------------
c Set frequencies
0007 KR = KR + 1 to peak
0008 KV = KV + 1 to peak
0009 FM = FV(KRM) top ht
0010 HN = HT(KRM) * .999 ht at fm
0011 NK = MINO(NF*10/(NF+10), KR/3) + 2 f to fit
0012 KA = KV -1 -NK
0013 SH = .27*HN - 21. model SH
0014 HM = HN + .3*SH for fh
0015 FH = GIND(O., HM)
0016 NKA= NK
0017 IF (FC.GT..1) NK = NK + 1 incl. fc
0019 FCX = ABS(FV(KV+1))
0020 HCX = HT(KV+1)
0021 IF (ABS(HCX).GT.30..OR.FCX.LT.FM+.5*FH) GO TO 100 no x ray
0023 NK = NK + 1 incl fcx
0024 FV(KV+1)= FV(KV) swap fc
0025 FV(KV) = FCX and fcx
0026 HT(KV+1)= HT(KV)
0027 HT(KV) = HCX
0028 KV = KV + 1
0029 100 grad = .5/fv(ka)
0030 fv(kr) = fc
c---------------------------------------------------------------------------------------------
c.....
Set up and solve peak equations
0031 DO 400 J = 1, 2 iterate
c...
0032 DO 300 I = 1, NK
0033 F = FV(KA+I)
0034 IF (F.EQ.FCX) F = SQRT(FCX*(FCX - FH)) x crit.
0036 W = 2.**(20.*(F-FM)/F) weight
0037 T = 0. peak
0038 IF (F.GT.FM) GO TO 260 f crit.
0040 DELTF = F-FA
0041 GL = GRAD
0042 GRAD = 4./F/ AMAX1( SUMVAL(MT,Q,DELTf,2), 3.) 2dN/dh/N
0043 IF (I.EQ.(NKA+1)/2) GM = GRAD mean
0045 IF (I.EQ.NKA) GRAD = GRAD *.995 hn corn.
0047 T = SH*GRAD
0048 260 B(I,1) = W *log(FC)
0049 B(I,6) = (ALOG(1.+T)-T)*.25 save
0050 B(I,2) = B(I,6) *W * SH
0051 B(I,3) = ALOG(F) *W r.h.s.
0052 if(lbug.eq.8.and.j.eq.2)print *,f,grad,t,b(i,6),w ##------>
0054 300 CONTINUE
```
C...

ht(kr) = ht(kv)
fv(kr) = fc

if(1bug.ge.3)print320,nk,nka,sh,(fv(k),ht(k),k=kr-nka-1,kr) ##----->

format(' peak fit: nk,nka,sh='2i3,f6.1,2x,14f7.2,(/35x,14f7.2))

CALL SOLVE (NK, 2, B, B(1,9), DEVN)

IF (GM.GT.1.4*GRAD) GO TO 360

avsh = amax1(b(2,9),0.) *.5 + .5
if (b(2,9).gt.1.) avsh = b(2,9)/avsh
ms = int(10.*avsh+.5)
devl = devn
call solve (ms, -2, b, b(1,9), devn)
if (devn.gt.devl*2.+0.01.or.avsh.eq.1.) go to 360
avsh = 1.
go to 340

SH = SH*SQRT(ABS(B(2,9)))
PARHT = SH*AMIN1(ALOG(1.+SH*GRAD), 1.8)
HM = HN + PARHT
FH = GIND(0., HM)
if (parht.gt.sh.or.gm.lt.1.8*grad) go to 500

CONTINUE

C----------------------------------------------- Form peak parameters

FC = EXP(B(1,9))
ERR= 0.5* (HM-SH*ALOG(1.+SH*GL) -HT(KRM-1) )
HM = HM - .9*ERR
HT(KRM)=HN + .1*ERR
HT(KR)= HM
PARHT = HM - HT(KRM)
PARFC = FM/SQ(.5*PARHT/SH) - FM
if(1bug.eq.8)print*,fc,hm,err,parht,parfc
r = 2+nk-nka
fc = amax1(amin1(fc,fm+parfc*r), fm+parfc/r )
FV(KR) = FC

c Check overlap-- this section can be omitted with manual scalings (F monotonic)

FNEXT = FV(KV+1)
IF (FNEXT.GE.0.) GO TO 620
FNEXT = SQRT(FNEXT*(FNEXT+.99*FH))
DO 600 I = 2, 30
IF (FV(KV+I).GE.0.) GO TO 610
FNEXT = AMIN1(FNEXT, FV(KV+I))

IF (FNEXT.LE.0.) FNEXT = FM + 4.*PARFC + .05
FC = AMIN1(FC, FNEXT-.03)
DFC= FV(KR) - FC
FM = FM - DFC
DEVN= AMIN1(DEVN*2., .5*(FNEXT-FM)/FC)
IF (DFC.LE.0.01) GO TO 680

Layer overlap; reduce frequencies

if(1bug.ge.-9)print640, fv(kr), fc, fnext **---->

$ format ('O* FC reduced from',f7.3,' to',F7.3,
since next layer starts at',f7.3,' MHz.' /)

df = dfc/fv(kr)**3
do 660 k = 1, kr
fv(k) = fv(k) - df*fv(k)**3
fa = fa - df*fa**3

CONTINUE

List peak parameters

DEVF = FC*DEVN
BAVGE= -B(2,6) - B(NKA,6)
DEVS = DEVN * SH/BAVGE
DEVH = DEVN *PARHT/BAVGE + DEVS*SH*GRAD
TCONT= TCONT + PARHT*(FC**2+.5*FM**2) /1.5
IF (GM.LT.1.4*GRAD) SH = -SH
if(1bug.ge.-9)print 750, fc,devf, hm,devh,sh,devs, tcont/fc**2 **---->

format ('OPeak', F7.3, ' (+/-',F5.3, ') MHz, Height', F6.1,
SUBROUTINE TRACE (FV, HT, TRAS)

C**************************************************************************
C
C Full debug listing, produced when 0 < lbug < 10.
C lbug = 1 produces a single trace line for each real-height step in polan.
C 2, 3, 4 add fuller trace outputs.
C lbug > 3 includes intermediate listings of freq,height.
C lbug = 5 adds a full list of the equations in the matrix B.
C
DIMENSION FV(40), HT(40)

COMMON /POL/ B(40,17), Q(18), FH, ADIP, MODE, MOD, FA, HA, TCONT, LBUG
COMMON /POL/ HS, FC, FCC, SH, PARHT, HVAL, VWIDTH, VDEPTH, XWAT
COMMON /POL/ MAXB, NF, NR, NL, NX, MS, MT, JM, LK, KR, KRM, KV, MF, NC

DATA LIST /0/

IF (IABS(LBUG).GT.9) RETURN

IF (TRAS.NE.0.) GO TO 10

PRINT 50, 'FRQ', (FV(I), I=1,15)
PRINT 50, 'HTS', (HT(I), I=1,15)
LIST = 2
RETURN

IF (TRAS.EQ.2.2) PRINT 12

FORMAT('O##-----------------------------------------------')

IF (TRAS.EQ.2.2 .OR. LIST.GT.1) PRINT 20

FORMAT ('O##TRACE: kr lk jm mt ha fa frm',
1 'krm kv nf nr nl nx ms mode mod hs',
2 'fc fcc sh parht hval vwidth vdepth')

FRM = FV(KRM)
PRINT 25, TRAS, KR, LK, JM, MT, HA, FA, FRM, KRM, KV, NF, NR, NL, NX, MS,
$ MODE, MOD, HS, FC, FCC, SH, PARHT, HVAL, VWIDTH, VDEPTH

FORMAT(' ##', F5.1, ':', 2I4, 2I3, F8.2, 2F6.2, 9I4, 2X, 4F6.2, 4F7.2)

LIST = 0
IF (ABS(TRAS).LT.2.3.OR.LBUG.LT.4.OR.ABS(TRAS-3.3).LT..8) GO TO 60

KM = KV+NF+NX
PRINT 50, 'FRQ', (FV(K), K=KV, KM)
PRINT 50, 'VHT', (HT(K), K=KV, KM+3)
PRINT 50, 'RHT', (HT(K), K=KR, KRM)
FORMAT (' #', A3, 16F8.2/ 5X, 16F8.2)
LIST = 1
IF (ABS(TRAS).NE.3.3 .OR. LBUG.NE.5) RETURN

NCOL = IABS(JM)+1
PRINT 70, (J, J = 1, NCOL)
FORMAT (' ### equations J=', I4, 12I9)

NLINE = NR+NF+NX+MS
DO 80 LINE = 1, NLINE
PRINT 90, LINE, (B(LINE,ICOL), ICOL=1,NCOL)
FORMAT (' # matrix b, line', I3, 12F9.4)

LIST = 2
RETURN
END
SUBROUTINE SOLVE (M, N, B, Q, DEVN)

c Solve m simultaneous equns in n unknowns, given in the array B(m,n+1).
c The result is returned in Q(1) to Q(n).

c Adjustments to a previously obtained solution may be made by
c call solve (mm, -n, B, Q, devn).
c This modifies the least-squares solution by adding the constraint
c Q(n) = mm/10., with a weight of 10.
c Any number of the coefficients Q can be modified in this way.

c When a constraint is applied to Q(n), any constraints
c previously applied at larger values of n are first removed by solve.
c Previous constraints at smaller values of n remain.
c Addition of constraints is numerically stable;
c the removal of constraints is less accurate but still o.k.

DIMENSION B(40,17), Q(18), ISETQ(17)
DATA NQ, NP, ISETQ / 19*0 /
c (Change above DATA to SAVE for fortran 77).

IF (N.LT.0) GO TO 3
NQ = N
NP = N+1

Householder transformations

K = 0
K = K+1
ISETQ(K) = 999
S = 0.
MK = M-K+1
IF (MK.LE.0) GO TO 7
S = SUMVAL(MK,B(K,K),B(K,K),3)
IF (K.EQ.NP) GO TO 7
A = B(K,K)
D = SIGN(SQRT(S),A)
B(K,K) = A+D
C = A*D+S
DO 2 J = K+1, NP
S = SUMVAL(MK,B(K,K),B(K,J),3)/C
DO 2 I = K, M
B(I,J) = B(I,J)-B(I,K)*S
B(K,K) = -D
GO TO 1

remove any previous constraints on q(n) to q(nq);

NN = IABS(N)-1
REMOV = -1.
NN = NN+1
IF (ISETQ(NN).NE.999) GO TO 5
IF (NN.LT.NQ.AND.DEVN.NE.-1.) GO TO 4
add constraint Q(n)=m*.1 (Givens transformation).

NN = IABS(N)
REMOV = 1.
ISETQ(NN) = M
Q(NP) = ISETQ(NN)
IF (REMOV.LT.0.) ISETQ(NN) = 999
Q(NN) = 10.
DO 6 I = NN, NP
BII = B(I,I)
R = SQRT( AMAX1(BII**2+Q(I)**2*REMOV, .1E-9) )
C = BII/R
S = Q(I)/R
DO 6 J = I, NP
QJ = Q(J)
IF (I.EQ.NN.AND.J.NE.I.AND.J.NE.NP) QJ = 0.
Q(J) = C*QJ-S*B(I,J)
B(I,J) = C*B(I,J)+S*QJ*REMOV
IF (REMOV) 51,51,8

back substitution

B(NP,1) = M
0055     B(NP,NP) = SQRT(S)
0056     DEVN = ABS(B(NP,NP))/SQRT(B(NP,1))
0057     DO 10 II = 2, NP
0058         I = NP-II+1
0059         S = B(I,NP)
0060     DO 9 J = I+1, NQ
0061         IF (II.GT.2) S = S - Q(J)*B(I,J)
0063     Q(I) = S/B(I,I)
0064     RETURN
0065     END

0001     FUNCTION SUMVAL (N, A, B, L)
c**********************************************************************jan77.
c   Returns the sum for j = 1 to N of:
c   a(j)*b**j at L = 1 ; j*a(j)*b**(j-1) at L = 2 (using b = B(1)).
c   a(j) *b(j) at L = 3 ; a(j)*b(1-L+j*L) at L > 3 (giving LL = 4).
c-----------------------------------------------------------------------
0002     DIMENSION A(9), B(9)
0003     J = N
0004     S = 0.
0005     LL= MINO(L,4)
c..............................................Loop from j = n to j = 1.
0006     GO TO (1,2,3,4), LL
c
0007     S = (A(J)+S)*B(1)
0008     GO TO 8
c
0009     S = S*B(1)+A(J)*FLOAT(J)
0010     GO TO 8
c
0011     JB= J
0012     GO TO 6
c
0013     JB= (J-1)*L+1
0014     S = S+A(J)*B(JB)
c
0015     J = J-1
0016     IF (J.GT.0) GO TO 9
c..............................................
0018     SUMVAL = S
0019     RETURN
0020     END

0001     FUNCTION GIND (F, T)
c**********************************************************************jan77.
c   Group index subroutine, for o or x rays. (f negative for x ray).
c   Gives (group index -1) to full machine accuracy, for any value of t.
c   Initialise by call gind(GH,-dip) to set gyrofreq (mhz) and dip (deg).
c   GH is ground value; scaled to height h by FH = gind(0.,h), with h>2.
c   An initial negative value of GH suppresses the scaling.
c-----------------------------------------------------------------------
0002     DATA GH,GHSN,GCSCT, FH,FHSN,FCSCT,HFH, C,C2 / 9*0. /
c
0003     IF (F.EQ.0.) GO TO 2
0005     IF (T.LT.0.) GO TO 1
0007     T2 = AMAX1(T,.1E-9)**2
0008     IF (F) 5,6,6
c
0009     GH = F
0010     FH = ABS(GH)
0011     DIP = -.01745329*T
0012     GHSN = GH*SIN(DIP)
0013     GCSCT= (GH*COS(DIP))**2*.5/GHSN
0014     GO TO 3
c
0015     IF (GH.LT.0. .OR.T.LT.2.) GO TO 4
0017     FH = GH/(1.+T/6371.2)**3
0018     FHSN = GHSN*FH/GH

153
F.5. THE PROGRAM SCION

This mainline program gives an example of a complete real-height analysis procedure using POLAN. SCION controls the scaling of data from a projected ionogram, correction for skewed or non-linear axes; conversion of the digitised values into virtual height and frequency; ordering of separate ordinary and extraordinary ray data in the way required by POLAN; analysis of the data and listing of the calculated real heights. The digitising sections run in conjunction with a Hewlett Packard 9864A digitiser and digitising table, and will need modifying for other equipment. A full description of the operation and use of SCION is given in section II of this report.

C -- SCION -- INPUT on UNIT 6, OUTPUT on UNIT 7.

C Program to perform an N(H) analysis of an ionogram scaled on the X-Y reader, using the generalised polynomial analysis program POLAN.
C Leo McNamara, August 1978; ---- John Titheridge, March 1981.

C:-----------------------------------------------

C:-----------------------------------------------

C: SUMMARY SCALING INSTRUCTIONS. [...] / [...] denotes alternatives.

C: NULL = bottom left corner, outside ionogram frame;
C: TL = Top Left corner; TR = Top Right corner.

C:-------------------------------------------------

C 1. Scale O-ray data for first layer.
C 2. [scale TL] / [scale FC; scale TR].

C 3. Scale O-ray data for next layer.
C 4. [scale TL] / [scale FC; scale TR].
C 5. Repeat steps 3. and 4., until no more O data.

C 6. Scale NULL. (this always denotes 'end of ionogram').

C:---

C 7. Scale lowest useable X-ray data (over a range of about 0.6 MHz);
C / [or, in the absence of data, scale TL].

C 8. [Scale TL] / [Scale FCX for that layer; scale TR].

C 9. Repeat steps 7. and 8., for each available layer.

C 10. scale two nulls.

C:-------------------------------------------------
C=================================================================================================
C INPUTS [reads] are marked and numbered by <<<<<1
C
C Normal PRINTED OUTPUTS are shown by *****1
C
C LOOPS are delimited by C....
C
C-------------------------------------------------------------------------------------------------
DIMENSION HEADC(19), XC(4), YC(4), FM(20), HM(20)
DIMENSION FMX(20), FMY(20), HMX(20), HMY(20)
DIMENSION FOX(100), HOY(100), FXX(50), HXY(50)
DIMENSION FV(150), HT(150), FS(120), HS(120)
EQUIVALENCE (FOX, FV), (HOY, HT), (FXX, FV(101)), (HXY, HT(101))
C=================================================================================================
900 FORMAT ('IONOGRAM' I3, //19A4, 'DIP, FB, START = ' 5F7.2 )
901 FORMAT (I4, 19A4)
902 FORMAT (20F4.0)
904 FORMAT (12F5.0)
907 FORMAT ('O*', 6F6.2, 4X, 6F6.2, 4X, 6F6.2, 4X, 2F6.2)
908 FORMAT (12F5.2)
909 FORMAT (/1H0, A5, 12F10.3/(6X, 12F10.3))
910 FORMAT (1H0, I4, 1X, A7, ' POINTS DIGITIZED AND DESKEWED' /)
912 FORMAT (6( F7.3, F8.2, 5X) )
990 FORMAT(//9X'>>>> DO YOU WISH TO SAVE TAPE7 FOR PLOTTING <<<<<')
NDIM = 150
ION = 0
C///////////////////////////////////////////////////////////////////////
C
C (A). START OF NEW IONOGRAM:-
C (1). Read comments
C
10 READ (6, 901) IEXIT, HEADC <<<<<1
IF (IEXIT.EQ.0) PRINT 990
IF (IEXIT.EQ.0) STOP '*ALL DONE*'
ION = ION + 1
C---------------------------------------------------------------------
C (2). Read dip angle, gyrofrequency, default starting height at 0.5 MHz.
C This default height is used if no suitable X-ray data are provided.
C
READ (6, 904) DIP, FB, START <<<<<2
PRINT 900, ION, HEADC, DIP, FB, START *****1
C
C (3). Read in the values of the visible frequency markers, to be scaled.
C count the frequency markers, and list.
C
READ (6, 902) (FM(I), I = 1, 20) <<<<<3
DO 20 I = 1, 20
20 IF (FM(I).EQ.0.0) GO TO 22
22 NFM = I - 1
PRINT 24, (FM(I), I = 1, NFM) *****2
24 FORMAT ('OFREQ. MARKERS', 20F6.1)
C
C (4). Read in the values of the height markers to be scaled.
C
READ (6, 902) (HM(I), I = 1, 20) <<<<<4
DO 30 I = 2, 20
30 IF (HM(I).EQ.0.) GO TO 35
35 NHM = I - 1
PRINT 40, (HM(I), I = 1, NHM) *****3
40 FORMAT ('OHEIGHT MARKRS', 20F6.1)
C///////////////////////////////////////////////////////////////////////
C
C BEGIN SCALING
C
C (B). READ THE POSITIONS OF THE FOUR CORNERS OF THE IONOGRAM
C (X,Y; clockwise from bottom left).
C
READ (6, 908) (XC(I), YC(I), I = 1, 4) <<<<<5
C
C------- Read in the frequency marker positions - max 6 points per line.

155
READ (6,908) (FMX(I),FMY(I), I = 1,NFM), END <<<6

C
C-------- Read in the height marker positions.
READ (6,908) (HMX(I),HMY(I), I = 1,NHM), END <<<7

C
XC1 = XC(1)
YC1 = YC(1)
CALL DESKEW (O, XC, YC)
CALL DESKEW (NFM, FMX, FMY)
CALL DESKEW (NHM, HMX, HMY)

C//////////////////////////////////////////////////////////////////////

C
C
(C). READ IN THE O RAY VIRTUAL HEIGHTS AND FREQUENCIES
C
C
Terminate each layer at corner 2 if FC is not scaled,
or at corner 3 if FC is scaled.

N1 = 1

100 N6 = N1+5
READ (6,908) (FOX(I),HOY(I), I = N1,N6) <<<8
N1 = N1+6
IF (FOX(N6).GT.XC1.OR.HOY(N6).GT.YC1) GO TO 100

C.....
CALL DESKEW (N6, FOX, HOY)

C
C
Count the number of o-ray points
Set zeros at layer terminations.

C.....
DO 150 I = 1, N6
F = FOX(I)
H = HOY(I)
IF (F.LT.XC(1).AND.H.LT.YC(1)) GO TO 200
IF (F.LT.XC(2).AND.H.GT.YC(2)) FOX(I) = 0.
IF (F.GT.XC(3).AND.H.GT.YC(3)) HOY(I-1) = 0.

150 CONTINUE

C.....
END of all O-ray data; add another zero.

200 FOX(I) = 0.0
HOY(I) = 0.0
I = I + 1
FOX(I) = 0.0
HOY(I) = 0.0
NOP = I

C
LIST scaled and deskewed O-ray data ****4

PRINT 910, NOP, 'O-RAY'

C
PRINT 912, (FOX(I), HOY(I), I = 1, NOP) *****5

C//////////////////////////////////////////////////////////////////////

C
C
(D). READ IN THE X-RAY VIRTUAL HEIGHT DATA.
C
C
At least one line is necessary here (off-scale point)

N1 = 1

300 N6 = N1+5
READ (6,908) (FXX(I), HXY(I), I = N1,N6) <<<9
N1 = N1+6
IF (FXX(N6).GT.XC1.OR.HXY(N6).GT.YC1) GO TO 300

C.....
CALL DESKEW (N6, FXX, HXY)

C
C
Count the number of X-ray points
Set zeros at layer terminations.

C.....
DO 350 I = 1, N6
F = FXX(I)
H = HXY(I)
IF (F.LT.XC(1).AND.H.LT.YC(1)) GO TO 380
IF (F.LT.XC(2).AND.H.GT.YC(2)) FXX(I) = 0.
IF (F.GT.XC(3).AND.H.GT.YC(3)) HXY(I-1) = 0.

350 CONTINUE

C.....
156
END of all X-ray data; add another zero.

380 FXX(I) = 0.0
HXY(I) = 0.0
NXP = I

LIST scaled and deskewed X-ray data.

PRINT 910, NXP, 'X-RAY'
PRINT 912, (FXX(I), HXY(I), I = 1, NXP)
PRINT 910

(E). ALL DATA HAS BEEN READ IN AND DESKEWED.

Convert the O and X ray positions to frequencies and heights using 4-point interpolation in marker positions. Preserve zeros.

CALL INTERP (-NFM, FMX, FM)
CALL INTERP (NOP, FOX, FOX)
CALL INTERP (NXP, FXX, FXX)

CALL INTERP (-NHM, HMY, HM)
CALL INTERP (NOP, HOY, HOY)
CALL INTERP (NXP, HXY, HXY)

PRINT 410
FORMAT ('O CONVERTED TO FREQUENCY AND HEIGHT./')
PRINT 912, (FOX(I), HOY(I), I=1,NOP)
PRINT 912
PRINT 912, (FXX(I), HXY(I), I=1,NXP)

(F). ARRANGE THE SCALED POINTS IN THE ORDER REQUIRED BY POLAN.

Array positions are NM in combined data, NOV in O-data, NXV in X-data.

NM = 1
NOV = 1
NXV = 1

STORE X-ray points, less final null

500 FCX = 0.
IF (NXV.GE.NXP) GO TO 550

DO 520 I = NXV, NXP
FS(NM) = -FXX(I)
HS(NM) = HXY(I)
IF (FXX(I).EQ.0.) GO TO 540
IF (HXY(I).EQ.0.) GO TO 530
520 NM = NM + 1

Save X-ray critical frequency

530 FCX = FXX(I)
540 NXV = I + 2

STORE O-ray points; retain null at FC

550 DO 560 I = NOV, NOP
FS(NM) = FOX(I)
HS(NM) = HOY(I)
NM = NM + 1
IF (FOX(I).EQ.0.) GO TO 580
560 IF (HOY(I).EQ.0.) GO TO 570

Delete null after scaled FC

570 I = I + 1
580 NOV = I + 1
HS(NM-1) = 0.
IF (FCX-.5*FB.LT.FS(NM-2)) GO TO 590
FS(NM) = FCX
HS(NM) = 0.
NM = NM + 1
590 IF (HOY(NOv).NE.0.0) GO TO 500

END DATA
FS(NM) = 0.0
HS(NM) = 0.0

C/////////////////////////////////////////////////////
C
C
C (G). LIST AND ANALYZE
C
PRINT 909, 'FREQ ', (FS(I), I = 1, NM) ****10
PRINT 909, 'HVIRT', (HS(I), I = 1, NM) ****10
PRINT 910

C
C Write out the data to UNIT7 for plotting purposes
WRITE (7,980) NM, HEADC
WRITE (7,981) (FS(I),HS(I),I = 1,NM)

C.....
DO 940 I = 1, NM
FV(I) = FS(I)
940 HT(I) = HS(I)

C.....
N = NDIM
AMODE = 0.0

CALL POLAN (N, FV,HT, FB, DIP, START, AMODE, 0., 0.)

C
PRINT 909, 'FREQ ', (FV(I), I = 1, N) ****11
PRINT 909, 'HREAL', (HT(I), I = 1, N) ****11

C
WRITE (7,980) N
WRITE (7,981) (FV(I), HT(I), I = 1, N)

980 FORMAT (I4,19A4)
981 FORMAT (6(F6.2,F6.1))

C
RETURN FOR NEXT IONOGRAM

GO TO 10
END

SUBROUTINE DESKEW (N, X, Y)

C
C To deskew coordinates in an arbitrary quadrilateral frame.

C(A).
-:* INITIALIZE *:-
C AT N = 0:- X(1),Y(1) to X(4),Y(4) give the coordinates of the four
corners of the quadrilateral, clockwise from the bottom left.

C(B).
-:* DESKEW *:-
C AT N greater than 0:- Deskew N coordinates in the arrays X, Y.

DIMENSION X(9), Y(9), Z(4)
DATA X1,X2,X3, Y1,Y2,Y3 / 6 * 0.0 /
NN = N
IF (N.GT.0) GO TO 60

C(A).
N = 0 ; calculate the deskew coefficients

X1 = X(1)
Y1 = Y(1)
X2 = (Y(4)-Y1) / (X(4)-X1)

DO 20 I = 2, 4
Z(I) = Y(I) - Y1 - X2 *(X(I) - X1)
Y2 = (X(2) - X1) / Z(2)
Z3 = X(3) - X1 - Y2 * Z(3)
Z4 = X(4) - X1 - Y2 * Z(4)
X3 = (1. - Z(2)/Z(3)) / Z3
Y3 = (Z3 - Z4) /(Z(2) * Z3)

NN = 4

C(B).
N > 0 ; deskew the arrays X(N), Y(N).

158
C.....
60 DO 80 I = 1, NN
    B = Y(I) - Y1 - X2 * (X(I) - X1)
    A = X(I) - X1 - Y2 * B
    Y(I) = B - X3 * A * B
80 X(I) = A - Y3 * A * Y(I)
C.....
RETURN
END

SUBROUTINE INTERP (M, X, Y)

C
C To obtain true values of the variable Y, by interpolating the
C corresponding scaled ordinate X in a previously given marker array.
C **** Uses 4-term polynomial interpolation.
C **** Requires a minimum of 2, but preferably 4, marker points ****
C **** Zeros are not altered.

C-----------------------------------------------

C USE:-
C AT M NEGATIVE, X is an array of N scaled ordinates, corresponding
C to the N reference marker values given in Y(1) to Y(N)
C-----
C AT M POSITIVE, X(1) to X(N) give scaled ordinates,
C Y(1) to Y(N) return the corresponding interp values.

C The array D(99) stores the marker position (X), its value (Y),
C and corrected differences for each interval.

DIMENSION X(20), Y(20), D(99)

DATA D, NM1, NM2, LOG / 99* 0.0, 3* 0 /

N = IABS(M)
IF (M.GT.0) GO TO 100
NM1 = N - 1
NM2 = N - 2
LOG = 0
IF (Y(NM1).LT.100. .AND. Y(NM1).GT.0.) LOG = 1

C(A). M NEGATIVE:- Store marker data and interpolation table.

JS = N + NM1
KS = JS + NM2
LS = KS + NM2 - 1
D(KS+3) = 0. FOR M =2
D(LS+4) = 0. FOR M =3

C.....

DO 50 I = 1, N
    D(I) = X(I)
    D(N+I) = Y(I)
    IF (LOG.EQ.1) D(N+I) = ALOG(Y(I))
IF (I.LT.2) GO TO 50
    J = JS + I
    D(J) = (D(N+I) - D(NM1+I)) /(D(I) - D(I-1))
IF (I.LT.3) GO TO 50
    K = KS + I
    D(K) = (D(J) - D(J-1)) / (D(I) - D(I-2))
IF (I.LT.4) GO TO 50
    L = LS + I
    D(L) = (D(K) - D(K-1)) / (D(I) - D(I-3))

50 CONTINUE
C.....

RETURN

C(B). M POSITIVE:- Interpolate X(I) in the stored array D(I)
The result is returned in \( Y(I) \) [which may equal \( X(I) \)]

```
100 DO 250 J = 1, N
    AX = X(J)
    YY = AX
    IF (AX.EQ.0.0) GO TO 250
C
INT = 2
DO 150 I = 2, NM2
    IF (AX.GT.D(I)) INT = I
C
IMT = INT + 2
NS = NM1 *4 + INT
YY = D(NS)
NM3= NM1 - 2
C...
DO 200 I = 1, 3
    NS = NS - NM3 - I
200 YY = YY* (AX - D(IMT-I)) + D(NS)
C...
IF (LOG.EQ.1) YY = EXP(YY)
250 Y(J) = YY
C.....
RETURN
END
```
APPENDIX G. STANDARD TEST DATA AND RESULTS

G.1 The mainline program POLRUN

The program POLRUN listed below is designed to read data in 80-column format; list headings and virtual heights; run POLAN; and list the calculated real heights. A number of special facilities are also built in, primarily for use in repeated running of test data with different modes of analysis or different start conditions. Input constants which invoke these facilities are outlined in the program comments, and the shortened or "fast-look" output is described in section G.2.2.

Lower case lines in the listing relate to the special test facilities built into the program. For normal use only the lines listed in upper case are required, so a considerably shortened version of POLRUN can be made to read and run normal data. FORTRAN line numbers added during the compilation are shown at the left of each line. Columns 73 to 80 of some lines are used for comments, and are not part of the program code.

```
c*** POLRUN *** MAINLINE FOR N(H) ANALYSIS USING 'POLAN'.
c
c Read (1): field (and station heading);
c Read (2): data, data, data, ...
c
c The data for each ionogram terminates with at least two zero values of height. Data for the following ionogram then begins on the next line.
c Use 1 blank line to reread a station,field line (1); 2 blanks to exit.
c---------------------------------------------------------------Extensions Mar 85.
c Set the FIRST amode -ve to use a constant value of amode throughout the run.
c
c Set a final parameter BMODE to loop data with modes = amode to bmode.
c
c------- Initial data line with FH = 9. gives quick-check without data lists;
c then FH =-9. reverts to normal output.
c
c------- Set START > 200. to use the value START-200 for all following runs.
c---------------------------------------------------------------

0001 DIMENSION HEAD(25),FV(120),HT(120), fs(120),hs(120)
0002 BYTE DAT(9)
0003 CALL DATE (DAT)
0004 bmode= 0.
0005 cmode= 0.
0006 modin= 0
0007 stacon= 0.
0008 10 fast = 0.
0009 go to 100
0010 20 fast = 1.

read field and mode
0011 100 READ 120, HEAD, FH,DIP, AMODE, VALLEY, LIST, bmode read (1)
0012 120 FORMAT (25A1, 4F5.0 , I5, F5.0)
0013 amodl= amode
0014 if (fh.eq. 9.) go to 20
0016 if (fh.eq.-9.) go to 10
0018 IF (FH.EQ.0.) STOP
0020 if (modin.eq.0.and.amode.lt.0.) cmode= -amode constant
0022 modin= modin+1
0023 if (cmode.gt.0.) amode= cmode

c
0025 if(fast.gt.1.) print 150
0027 150 format(1h , 60(1h-))
0028 if (fast.le.1.) PRINT 140, DAT
0030 140 FORMAT (1H1,7X,'P O L A N OF APRIL 1985.',67X,9A2)
0031 if (fast.eq.1.)print*,'<<<< FAST LOOK RUN >>>>'
0033 PRINT 160, HEAD, FH,DIP, AMODE, VALLEY, LIST, bmode
0034 160 FORMAT (1HO,25A1,5X, 'FH=',F5.2,5X, 'DIP=',F6.1,5X,
1 'AMODE=',F6.2,5X, 'VALLEY=',F6.2, ' LIST=', I3,f8.1)
c
0035 200 if (cmode.eq.0.) amode= amodl
0037 NH = -3
```
READ 220, HEAD, START, (FV(I), HT(I), I=1,5)
FORMAT (25A1, F5.3, 5(F5.3,F5.2))
IF (FV(1).EQ.0.) GO TO 100
IF (start.gt.200.) stacon = start-200.
IF (stacon.gt.0.) start = stacon
PRINT 240, HEAD, START
FORMAT (1HO,25A1,4X,'START = 'F7.3)
NH = NH+8
IF (FV(NH)+HT(NH).EQ.0..OR.FV(nh).eq.-1..OR.NH.GT.113) GO TO 380
READ 320, (FV(I), HT(I), I=NH+1,NH+8)
FORMAT (8(F5.3,F5.2))
GO TO 300

C list data.
IF (fast.eq.0.) go to 400
fast = fast+1.
list = 0
go to 450

L = 1
M = MINO(NH, L+15)
PRINT 520, 'OFREQ', (FV(I), I=L,M)
PRINT 520, 'VIRT', (HT(I), I=L,M)
L = M+1
IF (L.LE.NH.AND.(FV(M-1).NE.0..OR.FV(M).NE.0.)) GO TO 420
PRINT 520

C save data
DO 430 i = 1, 120
fs(i) = fv(i)
hs(i) = ht(i)

C-----------------------------------------------analysis

C
IF (bmode.ne.0.) print 480, amode
FORMAT ('0#### Analysed with mode=', f6.1,/)
N=120
CALL POLAN (N,FV,HT, FH,DIP, START, AMODE, VALLEY, LIST)

C output
IF (fast.ge.1.) print 150
IF (fast.ge.1.) go to 200
L = 1
M = MINO(N+2, L+15)
PRINT 520, 'OFREQ', (FV(I), I=L, M)
PRINT 520, 'REAL', (HT(I), I=L, M)
FORMAT (A5, F7.3,7F8.3, 1X,8F8.3)
L = M+1
IF (L.LE.N+1 .and.fv(m).ne.-1..and.fv(l).ne.-1.) GO TO 500

C
IF (bmode.ne.0..and.amode.lt.bmode) go to 600
PRINT 560
FORMAT (1HO,132('='))

GO TO 200

C loop with mode + 1
DO 620 i = 1, 120
fv(i) = fs(i)
ht(i) = hs(i)
amode = amode+1
go to 450

END
G.2 STANDARD TEST DATA AND FAST-LOOK OUTPUT

The data listed below are used as input for the mainline program POLRUN. They define a number of model ionograms which test most of the different start, peak and valley procedures in POLAN. The initial line ('FAST LOOK OUTPUT') is normally omitted; when included it produces a shortened printout summarising the overall results for each layer. Fast-Look output obtained from the standard test data is listed in section G.3.2 below, and the normal full output is discussed in G.3.

For normal calculations the first data line gives an overall heading or station identification, followed by the magnetic field constants FH and DIP, the Mode of analysis, and (optional) Valley and List parameters. Following lines contain the ionogram data as (frequency, height) pairs. The first data line has a heading (e.g. the date and time for this ionogram) and a value for the parameter START, followed by 5 data points. Following lines contain 8 (frequency,height) data points each. The end-of-data for each ionogram is signalled by two (or more) zero virtual heights.

Data for the next ionogram follow immediately if the field, mode, valley and list constants are unchanged (as for ionograms 1A, 1B, .. 1G below). A blank line in the data set indicates that field constants are to be changed, and a new line giving FH, DIP, MODE, VALLEY and LIST parameters is read before ionogram data continues. Two blank lines terminate the data file.

The first data set, numbered (00), provides a test of the new single-polynomial modes in POLAN which use a specified number of real-height coefficients to represent each layer. Thus Mode 80 would use 8 terms for each layer. The value Mode = 85 given in the test data specifies 8 real height coefficients for the final layer, and 5 for each preceding layer. LIST = 1 (the last parameter on this line) causes the calculated real-height coefficients to be listed for each layer.

The second data set (01) below is a shortened version of the 2-layer model (1G), run with LIST = 2 to show quickly any major errors in the operation of POLAN. Following data sets (1) through (5) demonstrate and test different aspects of the analysis, mostly with only the normal output listings. The use of these sets is outlined in section G.3.1.

G.2.1 STANDARD TEST DATA FOR POLAN, AS READ BY THE MAINLINE PROGRAM POLRUN

To run this data it must be entered exactly as shown, including blank lines and with numerical data in the correct columns. Virtual heights are shown without decimal points; the 5 digits include 2 decimal places and are read using an F5.2 format.

Fast look output---> 9.0

(00) SINGLE-POLYNOMIALS. -1.2 20. 85. 0. 1
(4B X VALLEY, much data) -1. 1.0 9165 1.2 9622 1.6 10022 1.8 10205 2.0 10394
2.2 10597 2.4 10823 2.6 11084 2.8 11401 2.9 11593 3.0 11818 3.1 12090 3.2 12420
3.3 12918 3.3513249 3.4 13694 3.4514367 3.5 15712 3535 0.0-425033325-434828397
-444726408-454625351-464524740-474424381-484324184 3.6 27600 3.7 24780 3.8 23682
3.9 23113 4.0 22799 4.1 22635 4.2 22571 4.3 22577 4.4 22637 4.6 22880 4.8 23250
5.0 23723 5.2 24295 5.3 24600 5.4 24968 5.5 25333 5.6 25757 5.7 26150 5.8 26686
5.9 27200 6.0 27797 6.2 29174 6.3 30000 6.4 30957 6.5 32092 6.6 33483 6.7 35282
6.8 37828 6.9 42200 7.0

(01)FIXED FH; TRACE LIST2 -1.0 30. 0. 0. 2
(1G) E + F; NO FC'S 0. 1000 9700 130010100 170010700 220011700 260013100
290015600 0.0 0.0 320028000 340026500 360026200 390026900 420028500 460032700
490041800

(1) STANDARD TEST LAYERS -1.0 30. 0. 0.
(1A) E LAYER,MODEL START 90. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3.0
(1B)MODEL ABOVE EXTRAPN. 100. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3.0
(1C) START FN AT 90 KM. 0.4 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3.0
(1D) E CUSP , CONTINUOUS 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 300032000 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(1E)E CUSP,DISCONTINUOUS 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000-320. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(1F) E + F; DIRECT START -1. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 0 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(1G) E + F; NO FC'S 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 0 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000

(2) VALLEYS. -1.0 30. 0. 0.
(2A) MONOTONIC (NO VALLY) 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 10. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2B) DIRECT VALLEY CALCN 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 0. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2C) 40KM VALLEY; NO FPEAK 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -8. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 -1.
(2D) MAXIMUM VALLEY. 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 5. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2E) DEEP VALLEY 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -0.5 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2F) SHALLOW VALLEY 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -.01 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000

(3) PEAKFIT: HM=300, SH=60 -1.0 30. 0. 0.
(3A) CHAPMAN, NO FC'S -1. 2.8 18729 3.0 20633 3.3 21791 3.6 22720 3.9 23597
4.2 24478 4.5 25396 4.8 26380 5.0827385 5.3528469 5.6 29615 5.8 30670 6.0 31901
6.2 33391 6.4 35296 6.6 37973 6.8 42566 6.9 47209
(3B) TRUNCATED: WITH FO -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 7.0
(3C) WITH FO + FX -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 7.0 7.518
(3D) WITH FX ONLY -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 0.0 7.518
(3E) WITH BAD FC -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 6.95

(4) X RAYS NO PHYS EQUNS -1.2 20. -5. 0.
(4A) START TEST3A, FIX FB 0.-176627128-185326469-194226085-203225868-212325758
-221625720 1.0 23512 1.1 23556 1.2 23642 1.3023756 1.4 23887 1.5 24031 1.6 24184
1.7 24344 1.8 24509 1.9 24678 2.0 24850 2.1 25025 2.2 25201 2.3 25380 2.4 25560
2.5 25741 2.6 25923 2.7 26106 -1.

(4) X RAYS WITH FIXED FB -1.2 20. 0. 0.
(4A) START TEST3A, FIX FB 0.-176627128-185326469-194226085-203225868-212325758
-221625720 1.0 23512 1.1 23556 1.2 23642 1.3023756 1.4 23887 1.5 24031 1.6 24184
1.7 24344 1.8 24509 1.9 24678 2.0 24850 2.1 25025 2.2 25201 2.3 25380 2.4 25560
2.5 25741 2.6 25923 2.7 26106 -1.
(4B) X VALLEY, DATA ERR. -1. 1.0 9165 1.2 9622 1.6 10022 1.8 10205 2.0 10394
2.2 10597 2.4 10823 2.6 11084 2.8 11401 2.9 11593 3.0 11818 3.1 12090 3.2 10114
3.3 12918 3.3513249 3.4 13694 3.4514367 3.5 15712 3535 0.0-425033325-434828397
-444726408-454625351-464524740-474424381-484324184 3.6 27600 3.7 24780 3.8 23682
3.9 23113 4.0 22799 4.1 22635 4.2 22571 4.3 22577 4.4 22637 4.6 22880 4.8 23250
5.0 23723 5.2 24295 5.4 24968 5.6 25757 5.8 26686 6.0 27797 6.2 29174 6.3 30000
6.4 30957 6.5 32092 6.6 33483 6.7 35282 6.8 37828 6.9 42200 7.0

2 PARAMETERS, WITH LIST. -1.2 20. 0.0 -1.0 -1
(4C) TEST 4B, X VALLEY. -1. 1.0 9165 1.2 9622 1.6 10022 1.8 10205 2.0 10394
2.2 10597 2.4 10823 2.6 11084 2.8 11401 2.9 11593 3.0 11818 3.1 12090 3.2 12437
3.3 12918 3.3513249 3.4 13694 3.4514367 3.5 15712 3535 0.0-425033325-434828397
-444726408-454625351-464524740-474424381-484324184 3.6 27600 3.7 24780 3.8 23682
3.9 23113 4.0 22799 4.1 22635 4.2 22571 4.3 22577 4.4 22637 4.6 22880 4.8 23250
5.0 23723 5.2 24295 5.4 24968 5.6 25757 5.8 26686 6.0 27797 6.2 29174 6.3 30000
6.4 30957 6.5 32092 6.6 33483 6.7 35282 6.8 37828 6.9 42200 7.0

(5) VARYING FB; WITH LIST 1.0 30. 0. 0. 1
(5A) TEST6B NIGHT,DIP 30 0.-168234309-175732046-183230575-190729572-198328863
-206028351 114028970 122028056 130027455 138027046 146026763 154026566 162026430
170026338 180026268 190026236 200026232 220026281 -1.
G.2.2 Fast-look output produced by POLRUN

The initial line in the standard data listing above sets a value of 9.0 for the gyrofrequency. This informs the mainline program POLRUN that listings should be restricted to the overall constants for each layer. The result is a compact output, as reproduced below. The main ionospheric characteristics are shown, and with fixed test data the correctness of the final peak constants verify the correctness of all steps in the calculation. Apart from the last data set (5), and the intermediate layers in 4B and 4C, all critical frequencies should be close to 3.0, 5.0 or 7.0 MHz. Fast-look output from POLRUN is cancelled at any time by specifying a gyrofrequency FH = -9.0. The control values of FH can be accepted only when the program is expecting a station/field line (i.e. at the start of the data or following a blank line), and must always be followed by a normal station/field line.

POLAN OF APRIL 1985.
<<<< FAST LOOK RUN >>>>
(0) SINGLE-POLYNOMIALS. FH =-1.20 DIP = 20.0 AMODE = 85.00 VALLEY= 0.00 LIST = 1 0.0
(0) X VALLEY, much data. START = -1.000
Peak 3.532 (+/-0.035) MHz, Height 116.8 (+/- 0.6) km. Scale Height 12.3 (+/- 0.8) km. Slab (to peak) = 16.0 km.
2 valley 23.2 km wide, 0.09 MHz deep. devn 1.20 km 8 terms fitting 29 O + 7 X rays + 4 hx = 148.4
Peak 6.999 (+/-0.017) MHz, Height 250.4 (+/- 0.9) km. Scale Height 59.3 (+/- 1.2) km. Slab (to peak) = 86.8 km.

(1)FIXED FH; TRACE LIST2 FH =-1.00 DIP = 30.0 AMODE = 0.00 VALLEY= 0.00 LIST = 2 0.0
(1G) E + F; NO FC'S START = 0.000
Peak 3.046 (+/-0.003) MHz, Height 125.2 (+/- 0.1) km. Scale Height 18.2 (+/- 0.0) km. Slab (to peak) = 23.2 km.
2 valley 27.6 km wide, 0.11 MHz deep. devn 1.23 km 5 terms fitting 5 O + 0 X rays + 4 hx = 158.3
Peak 5.062 (+/-0.019) MHz, Height 263.5 (+/- 1.3) km. Scale Height 68.0 (+/- 1.2) km. Slab (to peak) = 100.9 km.

(1) STANDARD TEST LAYERS FH =-1.00 DIP = 30.0 AMODE = 0.00 VALLEY= 0.00 LIST = 0 0.0
(1A) E LAYER,MODEL START START = 90.000
Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.
(1B)MODEL ABOVE EXTRAPN. START =100.000
Peak 3.001 (+/-0.007) MHz, Height 123.9 (+/- 0.2) km. Scale Height 14.7 (+/- 0.2) km. Slab (to peak) = 18.3 km.
(1C) START FN AT 90 KM. START = 0.400
Peak 3.002 (+/-0.007) MHz, Height 123.5 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 18.9 km.
(1D) E CUSP , CONTINUOUS START = 0.000
Peak 4.998 (+/-0.037) MHz, Height 262.7 (+/- 4.4) km. Scale Height 79.2 (+/- 5.5) km. Slab (to peak) = 107.0 km.
(1E)E CUSP,DISCONTINUOUS START = 0.000
Peak 4.998 (+/-0.036) MHz, Height 262.6 (+/- 4.3) km. Scale Height 79.8 (+/- 5.3) km. Slab (to peak) = 106.9 km.
(1F) E + F; DIRECT START START = -1.000
Peak 3.001 (+/-0.007) MHz, Height 124.5 (+/- 0.2) km. Scale Height 14.5 (+/- 0.2) km. Slab (to peak) = 17.5 km.
2 valley 32.0 km wide, 0.12 MHz deep. devn 1.84 km 5 terms fitting 5 O + 0 X rays + 4 hx = 164.5
Peak 4.997 (+/-0.030) MHz, Height 268.5 (+/- 3.3) km. Scale Height 76.1 (+/- 4.1) km. Slab (to peak) = 103.7 km.
(1G) E + F; NO FC'S START = 0.000
Peak 3.007 (+/-0.006) MHz, Height 123.6 (+/- 0.2) km. Scale Height 15.2 (+/- 0.2) km. Slab (to peak) = 19.3 km.
2 valley 31.5 km wide, 0.12 MHz deep. devn 1.80 km 5 terms fitting 5 O + 0 X rays + 4 hx = 162.8
Peak 4.986 (+/-0.032) MHz, Height 266.3 (+/- 3.5) km. Scale Height 74.7 (+/- 4.5) km. Slab (to peak) = 103.6 km.
(2) VALLEYS.

FH = -1.00 DIP = 30.0 AMODE = 0.00 VALLEY = 0.00 LIST = 0 0.0

(2A) MONOTONIC (NO VALLY) START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

Peak 4.999 (+/-0.036) MHz, Height 262.1 (+/- 4.3) km. Scale Height 80.3 (+/- 5.3) km. Slab (to peak) = 106.5 km.

(2B) DIRECT VALLEY CALCN START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

2 valley 31.7 km wide, 0.12 MHz deep. devn 1.88 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 163.1

Peak 4.997 (+/-0.029) MHz, Height 267.8 (+/- 3.2) km. Scale Height 76.4 (+/- 4.1) km. Slab (to peak) = 104.7 km.

(2C) 40KM VALLEY; NO FPEAK START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

2 valley 40.0 km wide, 0.20 MHz deep. devn 0.82 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 169.3

(2D) MAXIMUM VALLEY. START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

2 valley 62.8 km wide, 0.42 MHz deep. devn 6.15 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 188.6

Peak 4.992 (+/-0.038) MHz, Height 274.5 (+/- 3.7) km. Scale Height 70.8 (+/- 4.9) km. Slab (to peak) = 98.5 km.

(2E) DEEP VALLEY START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

2 valley 40.4 km wide, 0.43 MHz deep. devn 5.40 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 170.4

Peak 4.996 (+/-0.029) MHz, Height 271.1 (+/- 3.0) km. Scale Height 74.5 (+/- 3.9) km. Slab (to peak) = 102.8 km.

(2F) SHALLOW VALLEY START = 0.000

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/- 0.2) km. Scale Height 14.9 (+/- 0.2) km. Slab (to peak) = 19.1 km.

2 valley 7.7 km wide, 0.01 MHz deep. devn 3.85 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 148.5

Peak 4.999 (+/-0.027) MHz, Height 264.9 (+/- 3.1) km. Scale Height 78.9 (+/- 3.8) km. Slab (to peak) = 107.0 km.

(3) PEAKFIT: HM=300, SH=60 FH =-1.00 DIP = 30.0 AMODE = 0.00 VALLEY = 0.00 LIST = 0 0.0

(3A) CHAPMAN, NO FC'S START = -1.000

Peak 7.003 (+/-0.009) MHz, Height 300.0 (+/- 0.8) km. Scale Height 60.3 (+/- 1.1) km. Slab (to peak) = 76.4 km.

(3B) TRUNCATED: WITH FO START = -1.000

Peak 7.001 (+/-0.008) MHz, Height 299.9 (+/- 0.7) km. Scale Height 60.1 (+/- 1.0) km. Slab (to peak) = 61.2 km.

(3C) WITH FO + FX START = -1.000

Peak 7.001 (+/-0.008) MHz, Height 299.9 (+/- 0.6) km. Scale Height 60.1 (+/- 0.9) km. Slab (to peak) = 61.2 km.

(3D) WITH FX ONLY START = -1.000

Peak 7.001 (+/-0.008) MHz, Height 299.9 (+/- 0.7) km. Scale Height 60.1 (+/- 1.0) km. Slab (to peak) = 61.2 km.

(3E) WITH BAD FC START = -1.000

Peak 6.968 (+/-0.031) MHz, Height 297.4 (+/- 2.5) km. Scale Height 56.3 (+/- 3.8) km. Slab (to peak) = 59.1 km.

(4) X RAYS NO PHYS EQUNS FH =-1.20 DIP = 20.0 AMODE = -5.00 VALLEY = 0.00 LIST = 0 0.0

(4A) START TEST3A, FIX FB START = 0.000

1 start offset = -12.2 km, slab 84.7 km. devn 0.00 km 8 terms fitting 6 0 + 6 X rays + 0. hx = 213.8

(4) X RAYS WITH FIXED FB FH =-1.20 DIP = 20.0 AMODE = 0.00 VALLEY = 0.00 LIST = 0 0.0

(4A) START TEST3A, FIX FB START = 0.000

1 start offset = -29.7 km, slab 7.3 km. devn 1.00 km 8 terms fitting 6 0 + 6 X rays + 3. hx = 214.6
G.3. STANDARD RESULTS AND DISCUSSION

G.3.1 Discussion of the test output

The full output obtained from the standard test data, as produced by the program POLRUN, is listed in section G.3.2 below. It is obtained by running the standard test data of section G.2 after deletion of the initial line which sets FH = 9.0. Results then list the initial virtual-height data and the calculated real-height profile, along with any additional trace information which has been requested by use of a non-zero value for the parameter LIST. The output in G.3.2 was obtained on a PDP11/10 minicomputer without floating point hardware, and required a total running time of 19 minutes.

The first data set (00) uses a reasonably large number of virtual-height points, covering two layers and with extraordinary ray data provided for the intervening valley calculation. This set is basically an expanded version of the X-Valley data of (4B), and gives similar results. It is run here with AMODE = 85, to determine a 5-term real height polynomial for the first layer and an 8-term polynomial for the final layer. Use of LIST = 1 gives the lines "*adjust --- . ." in the output, showing the basic profile constants at each step. Values q1 to q5 are the polynomial coefficients for the first layer, while the final number (1.74) on the same line is the r.m.s. deviation in km of the fit to the virtual-height data. Some further constants are listed on the trace lines beginning "#"; no heading is given for these values at LIST = 1, but headings can be seen in the following block (the lines beginning "#TRACE: " in the (1G) analysis).

The output for set (00) shows the operation of the new single-polynomial modes in POLAN, and the least-squares solution obtained with a highly over-determined data set. The calculations for the final layer, including the valley region, use a real-height polynomial with 8 terms fitted to 29 ordinary-ray data points, 7 extraordinary-ray points, and 4 physical conditions (used to predispose the valley solution to a physically acceptable form). The total of 40 simultaneous equations fitted in the least-squares solution is the limit available in the current version of POLAN. This limit can be increased if required by changing the first dimension of the array B(40,17).
The 8 polynomial coefficients which describe the final layer, as a function of \( DF = (f - foE) \), are Q0 to Q7. Q1 to Q7 are as listed by POLAN, when run with LIST = 1. The listed value for Q8 gives the constant offset or real-height shift at the start frequency (foE) of this profile section, which is used in calculating the valley width. For the real-height expression this term is ignored, and the initial constant term Q0 is obtained by adding the listed values of HMAX (for the E layer) and VALLEY WIDTH. This gives the real height at the beginning of the F layer, just above the valley region, and the F-layer profile is

\[
h(f) = Q0 + Q1*DF + Q2*DF^2 + Q3*DF^3 + ... + Q7*DF^7.
\]

The order of the expansion (the number of true polynomial terms in Q) is given by the value of MT listed on the same line, as in the output below.

The second analysis (01) in the standard data set uses a shortened version of the two-layer data (1G), run with LIST = 2. This produces some trace information in a normal start/first-layer/valley/second-layer calculation using the minimum amount of data necessary for a reasonably complete check of the ordinary-ray sections in POLAN. Results from the main data groups (1) to (5) then follow, to test and illustrate different aspects of the operation of POLAN. The virtual heights in groups (1) and (2) are an arbitrary series used to provide a simple, compact data set for test purposes. They are constructed to give critical frequencies of about 3.0 MHz for the E layer and 5.0 for the F layer, so that results can be checked rapidly.

Of the profiles in group 1, (1A), (1B), (1C) and (1F) show the 4 different types of start treatment available for use with ordinary ray data. (1D) and (1E) show calculations across a cusp in the virtual-height data, assuming a continuous variation in profile gradient across the cusp (1D), or allowing a gradient discontinuity at the cusp frequency (1E). (1G) verifies the accuracy of peak and valley calculations when the critical frequencies are not scaled.

Results in group (2) show the different types of valley calculation possible with ordinary-ray data only. In the examples shown these different results are obtained by specifying different values for the virtual height at the critical frequency of the layer. This virtual height defines a valley flag HVAL within POLAN. The corresponding frequency is either a scaled value of foE, as shown in set (2), or is zero if the critical frequency is not scaled. The same results can be obtained, for a series of ionograms in which the virtual height at the layer boundary has the normal zero value, by providing a non-zero value for the input parameter VALLEY. This is read from the station/field card by POLRUN, and passed to POLAN as an input parameter; when the virtual height is zero at a critical frequency, POLAN sets HVAL equal to VALLEY. In most ordinary-ray calculations the width of the valley is determined by applying reasonable physical conditions and limits, and the valley depth bears a fixed relation to the width (as described in section 7.2 of this report).

In (2A) below the E and F layers are assumed to be continuous with no intervening valley. This result gives the lower limit to the range of possible heights for the upper layer, and is obtained by setting HVAL equal to 10.0. (2B) shows the default procedure obtained when HVAL = 0.0. The solution for the valley width is then a least-squares result incorporating desirable physical criteria which specify the continuity of gradient at the top of the valley region, approximate relations between the expected valley width and the height of the underlying peak, and the preference for a smooth (low-order) real-height profile. The "standard" valley width for a peak height of 123.3 km is 21.6 km. A preference for this width is included in the least squares solution, with about the same weight as a virtual-height point; the calculated width is appreciably larger since the data then gives a smoother continuation into the following F layer.

(2C) specifies a 40 km wide valley between the two layers, by setting HVAL equal to -8.0 (this is minus one fifth of the desired width). The condition "Valley Width = 40.0 km" is then included in the least-squares solution with a comparatively large weight. The r.m.s deviation listed for the valley calculation is smaller in this run, since the data provide a smoother fit with this wider valley. (2C) also shows the use of a data frequency of -1.0 to terminate the profile before a layer peak. In (2D) an upper-limit result is obtained for the height of the upper layer by setting HVAL = 5.0. This initially requests a valley width of 5 times the standard value (or over 100 km). Such a large value is not normally compatible with the virtual height data, and gives unacceptable gradients above the valley region. When this occurs POLAN reduces the valley width progressively until an acceptable solution is obtained. (2E) and (2F) use small negative values of HVAL to specify the depth of the valley, in MHz. The values given are modified to some extent to ensure that they do not approach the value of foE.

The data set (3) consists of accurate virtual heights for a Chapman layer with a critical frequency of 7.0 MHz, a peak height of 250.0 km and a scale height of 60.0 km. The layer was truncated below 2.8 MHz in calculating the data for (3A), and below 5.35 MHz for (3B) to (3E), so no allowance is required for ionisation below these starting frequencies. Results obtained using the "direct start" in POLAN therefore give a direct check on the accuracy of the profile calculation (using a fairly small number of points), and on the peak fit procedure with different types of critical frequency data.
Group (4) checks the operation of the start and valley calculations using extraordinary ray data. The virtual heights are calculated from a profile consisting of two overlapping Chapman layers, with an overall critical frequency of 7.0 MHz, a peak height of 250.0 km and a scale height of 60.0 km. The gyrofrequency is independent of height (so a negative value is given for the input parameter FH). (4A) is a straightforward start calculation, with the layer peak omitted by using a final frequency of -1. (4B) shows the standard extraordinary-ray valley calculation in which only a single valley parameter is calculated from the data. Thus the listed value for the valley depth is not an independent result, but is a simple function of the calculated width (as described in section 9.2). Only the first 5 of the extraordinary-ray data points have been used in the calculation, since these cover the optimum frequency range of about 0.5 MHz above the critical frequency of the lower layer. The remainder of the X-ray data are ignored by POLAN since their inclusion would not increase the accuracy of the calculation. (4B) also shows the detection of a simple data error, in the virtual height at 3.2 MHz. This error is detected in the "reduction" phase in POLAN and the point is automatically deleted from the calculations.

Results (4C) are for the same data set as (4A), but are run with the input parameter VALLEY = -1 to give the two-parameter valley analysis. This run also has LIST = -1 to give a trace of the start, peak and valley calculations. The two-parameter valley calculation in (4C) tries successive values of valley depth, calculating the optimum valley width each time, to find the combination which gives the smallest r.m.s error when fitted to the combined data (O-ray heights, X-ray heights and three "physical conditions"). Depths of about 0.1 and 0.5 MHz are tried first, and iteration then continues from whichever of these trial values gave the smaller r.m.s deviation. The minimum deviation finally found is 0.16 km; significantly less than the value of 0.6 km for the one-parameter valley fitted to the same data in (4B). With accurate model data, as here, the two-parameter procedure gives good results. With most practical ionograms, however, the accuracy of the data is not sufficient for a meaningful determination of two valley parameters and the default single-parameter analysis should be used in POLAN.

The "*adjust" lines in (4C) give a trace line for the first step, and then from just before the peak. Headings for the trace data are not printed at LIST = -1, but they can be seen in the following output (5). The second "*adjust" line shows that the profile section below the peak began at the 14th data point, fitting the virtual heights at frequencies from 3.3 to 3.5 MHz with a r.m.s. error of 0.01 km. In the second valley calculation the initial curvature of the real-height polynomial was positive, as shown by the positive value of the coefficient q(2). A "physical condition" built into POLAN requires that the curvature be negative just above a valley, so the subroutine ADJUST added the equation $q(2) = -2.0 \text{ km/Hz}^2$ into the least-squares solution. This gave a new result with q(2) equal to -1.5, and the r.m.s. fit error slightly increased (from 4.68 to 4.83 km). Following the valley calculation, four of the real-height steps had high-order coefficients which were considered oscillatory. This was fixed by adding the constraint $q(mq) = 0.0$ into the least-squares solution, where mq is the index of the highest-order coefficient. Calculated coefficients would also be classified as oscillatory in the last calculated real-height polynomial, but no action was taken at this point since rapid changes in gradient are normal just below a peak.

Data sets (5A) and (5B) use the normal height-varying gyrofrequency. The start calculation in (5A) gives an unacceptably large value for the initial real-height gradient $q(1)$ at the first frequency FA, so this is reduced from 671 to 258 km/MHz. The start calculation is iterated once to adjust for the variation of gyrofrequency with height. On the second calculation the calculated value for the thickness of the underlying slab of low-density ionisation was negative (-0.02 km), so the least-squares solution was recalculated with the added condition SLAB = 0.1. This small change caused a negligible increase in the r.m.s. fitting error.

The calculation of (5B) is for an ionogram processed with an incorrect value of gyrofrequency. The program had some difficulty in fitting a physically acceptable profile to the combined ordinary and extraordinary ray start data. This is shown primarily by the repeated reduction of the starting height (the reduction of the coefficient $q_m$ by the start/valley processing subroutine STAVAL) to avoid negative real height gradients at higher frequencies. Eventually the program decided that the two data sets were incompatible. The weight given to the extraordinary-ray data in the analysis was therefore divided by four and a reasonable solution obtained, although an unphysical variation was still required at frequencies below the first data point.
G.3.2 FULL TEST OUTPUT

Following lines are as obtained from a PDP11/10 computer, using 24-bit floating point accuracy. With other machines slight variations can be expected in those quantities which are not well defined. For example in start calculations using extraordinary ray data the heights in the unobserved region (at frequencies below fmin) may vary, in a way which changes the calculated heights in the observed range by less than about 0.1 km.

POLAN OF APRIL 1985.

(00) SINGLE-POLYNOMIALS. FH = -1.20 DIP = 20.0 AMODE = 85.00 VALLEY= 0.00 LIST = 1 0.0

(4B X VALLEY, much data) START = -1.000

FREQ 1.000 1.200 1.600 1.800 2.000 2.200 2.400 2.600 2.800 2.900 3.000 3.100 3.200 3.300 3.350 3.400
VIRT 91.650 96.220 100.220 102.050 103.940 105.970 108.230 110.840 114.010 115.930 118.180 120.900 124.200 129.180 132.490 136.940

FREQ 3.450 3.500 3.535 -4.250 -4.348 -4.447 -4.546 -4.645 -4.744 -4.843 3.600 3.700 3.800 3.900 4.000 4.100
VIRT143.670 157.120 0.000 333.250 283.970 264.080 253.510 247.400 243.810 241.840 276.000 247.800 236.820 231.130 227.990 226.350

FREQ 4.200 4.300 4.400 4.600 4.800 5.000 5.200 5.300 5.400 5.500 5.600 5.700 5.800 5.900 6.000 6.200
VIRT225.710 225.770 226.370 228.800 232.500 237.230 242.950 246.000 249.680 253.330 257.570 261.500 266.860 272.000 277.970 291.740

FREQ 6.300 6.400 6.500 6.600 6.700 6.800 6.900 7.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
VIRT300.000 309.570 320.920 334.830 352.820 378.280 422.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

*adjust----- lk jm mt ha fa fm ql 2 3 4 5
*adjust --- 1 5 5 91.65 1.00 3.50 13.26 -26.39 31.35 -15.25 2.65 1.74

Peak 3.532 (+/-0.035) MHz, Height 116.8 (+/- 0.6) km. Scale Height 12.3 (+/- 0.8) km. Slab (to peak) = 16.0 km.

## 3.3: 19 19 8 7 123.54 3.53 19 49 29 0 0 7 4 85 10 125.96 3.53 7.00 17.21 6.77 1.00 18.39 0.07

*adjust --- 19 8 7 123.54 3.53 6.90 48.10 -73.10 99.94 -76.02 31.93 -6.90 0.60 14.60 1.20

1 valley 21.4 km wide, 0.07 MHz deep. devn 1.20 km 8 terms fitting 29 0 + 7 X rays + 4 hx = 147.3

## 3.3: 19 19 8 7 124.33 3.53 3.50 48 49 29 0 0 7 4 85 10 125.96 3.53 7.00 17.21 7.56 1.00 21.37 0.09

*adjust --- 19 8 7 124.33 3.53 6.90 42.77 -60.98 84.72 -65.61 28.04 -6.15 0.54 15.66 1.20

2 valley 23.2 km wide, 0.09 MHz deep. devn 1.20 km 8 terms fitting 29 0 + 7 X rays + 4 hx = 148.4

Peak 6.999 (+/-0.017) MHz, Height 250.4 (+/- 0.9) km. Scale Height 59.3 (+/- 1.2) km. Slab (to peak) = 86.8 km.

FREQ 1.000 1.200 1.600 1.800 2.000 2.200 2.400 2.600 2.800 2.900 3.000 3.100 3.200 3.300 3.350 3.400
REAL 91.650 93.474 95.109 96.044 97.274 98.710 100.191 101.581 102.869 103.532 104.276 105.182 106.355 107.935 108.929 110.092

FREQ 3.450 3.500 3.532 3.511 3.446 3.446 3.532 3.600 3.700 3.800 3.900 4.000 4.100 4.200 4.300 4.400
REAL111.450 112.962 116.771 120.548 124.326 133.722 139.986 142.626 145.794 148.390 150.654 152.745 154.758 156.745 158.729 160.712

FREQ 4.600 4.800 5.000 5.200 5.300 5.400 5.500 5.600 5.700 5.800 5.900 6.000 6.200 6.300 6.400 6.500
REAL164.650 168.505 172.285 176.087 178.044 180.064 182.164 184.359 186.655 189.056 191.562 194.171 199.718 202.700 205.893 209.407

FREQ 6.600 6.700 6.800 6.900 6.999 6.815 6.384 5.842 0.017 527.071
REAL213.409 218.156 224.008 231.336 250.440 280.856 312.872 346.621 0.861 59.312

POLAN OF APRIL 1985.

(01)FIXED FH; TRACE LIST2 FH = -1.00 DIP = 30.0 AMODE = 0.00 VALLEY= 0.00 LIST = 2 0.0

(1G) E + F; NO FC'S START = 0.000

FREQ 1.000 1.300 1.700 2.200 2.600 2.900 0.000 3.200 3.400 3.600 3.900 4.200 4.600 4.900 0.000 0.000
VIRT 97.000 101.000 107.000 117.000 131.000 156.000 0.000 280.000 265.000 262.000 269.000 285.000 327.000 418.000 0.000 0.000

#ARGS: N,f1,h1= 120 1.00 97.00 fb,dip,start= -1.00 30.00 0.00 amode,valley,list= 0.00 0.00 2

#FRQ 1.00 1.30 1.70 2.20 2.60 2.90 0.00 3.20 3.40 3.60 3.90 4.20 4.60 4.90 0.00
#HTS 97.00 101.00 107.00 117.00 131.00 156.00 0.00 280.00 265.00 262.00 269.00 285.00 327.00 418.00 0.00

##-----------------------------------------------

##TRACE: kr lk jm mt ha fa frm krm kv nf nr nl nx ms mode mod hs fc fcc sh parht hval vwidth vdepth
## 2.2: 1 1 8 7 82.71 0.50 0.50 1 29 4 0 0 0 1 5 5 93.43 0.00 0.00 0.00 19.10 1.00 0.00 0.00

## 3.3: 1 1 4 4 82.71 0.50 0.50 1 29 4 0 0 0 1 5 5 93.43 0.00 0.00 0.00 0.00 0.00 0.00 0.00

*adjust----- lk jm mt ha fa fm ql 2 3 4
*adjust --- 1 4 4 82.71 0.50 1.70 35.28 -71.11 75.48 -26.78 0.94
*adjust --- 3 5 5 90.34 1.00 2.60 9.01 1.08 -1.08 0.48 0.17 0.13
*adjust --- 4 5 5 93.10 1.30 2.90 9.11 0.72 2.45 -3.90 2.04 0.08

Peak 3.046 (+/-0.003) MHz, Height 125.2 (+/- 0.1) km. Scale Height 18.2 (+/- 0.0) km. Slab (to peak) = 23.2 km.

##-----------------------------------------------

##TRACE: kr lk jm mt ha fa frm krm kv nf nr nl nx ms mode mod hs fc fcc sh parht hval vwidth vdepth
## 2.2: 9 4 5 5 93.10 1.30 3.05 9 37 5 0 0 0 0 5 5 120.27 3.05 0.00 18.18 9.86 0.00 0.00 0.00

## 3.3: 9 9 5 4 137.69 3.05 3.05 9 37 5 0 0 0 4 5 5 136.51 3.05 0.00 25.45 12.48 1.00 22.60 0.09

*adjust --- 9 5 4 137.69 3.05 4.20 39.85 -6.70 -0.20 2.01 13.16 1.36

## 4.3: 9 9 5 4 137.69 3.05 3.05 9 37 5 0 0 0 4 5 5 136.51 3.05 0.00 25.45 12.48 1.00 25.65 0.09

## 3.3: 9 9 5 4 138.83 3.05 3.05 9 37 5 0 0 0 4 5 5 136.51 3.05 0.00 25.45 13.62 1.00 25.65 0.11

*adjust --- 9 5 4 138.83 3.05 4.20 35.73 -1.85 -2.31 2.13 14.00 1.23

## 4.3: 9 9 5 4 138.83 3.05 3.05 9 37 5 0 0 0 4 5 5 136.51 3.05 0.00 25.45 13.62 1.00 27.62 0.11

2 valley 27.6 km wide, 0.11 MHz deep. devn 1.23 km 5 terms fitting 5 0 + 0 X rays + 4 hx = 158.3
| FREQ | 0.500 | 0.750 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 3.200 | 3.400 | 3.600 | 3.800 | 4.100 | 4.300 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 82.714 | 88.165 | 90.338 | 93.104 | 96.946 | 102.324 | 108.000 | 115.342 | 125.206 | 132.016 | 138.827 | 147.225 | 152.823 | 158.267 | 165.162 | 171.848 |

Peak 5.062 (+/-0.019) MHz, Height 263.5 (+/-1.3) km. Scale Height 68.0 (+/-1.2) km. Slab (to peak) = 100.9 km.

| FREQ | 3.900 | 4.200 | 4.600 | 4.900 | 5.062 | 4.929 | 4.617 | 4.225 | 0.019 | 320.663 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 184.506 | 195.182 | 211.613 | 233.127 | 263.453 | 298.315 | 335.013 | 373.696 | 1.299 | 67.984 |

---

**POLAN OF APRIL 1985.**

19 - AUG - 85

(1) STANDARD TEST LAYERS FH =-1.00 DIP = 30.0 AMODE = 0.00 VALLEY= 0.00 LIST = 0 0.0

(1A) E LAYER,MODEL START START = 90.000

| FREQ | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 0.000 | 0.000 | 0.000 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| VIRT | 100.000 | 102.000 | 105.000 | 110.000 | 115.000 | 122.000 | 130.000 | 141.000 | 165.000 | 0.000 | 0.000 | 0.000 | 0.000 |

Peak 3.002 (+/-0.007) MHz, Height 123.3 (+/-0.2) km. Scale Height 14.9 (+/-0.2) km. Slab (to peak) = 19.1 km.

| FREQ | 0.500 | 0.750 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.002 | 2.923 | 2.738 | 2.505 | 0.007 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 90.000 | 93.678 | 95.227 | 96.684 | 98.702 | 101.119 | 103.808 | 106.940 | 109.780 | 113.397 | 118.245 | 123.349 | 130.985 | 139.022 | 147.494 | 0.170 |

---

(1B) MODEL ABOVE EXTRAPN. START =100.000

| FREQ | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 0.000 | 0.000 | 0.000 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| VIRT | 100.000 | 102.000 | 105.000 | 110.000 | 115.000 | 122.000 | 130.000 | 141.000 | 165.000 | 0.000 | 0.000 | 0.000 | 0.000 |

Peak 3.001 (+/-0.007) MHz, Height 123.9 (+/-0.2) km. Scale Height 14.7 (+/-0.2) km. Slab (to peak) = 18.3 km.

| FREQ | 0.500 | 0.750 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.001 | 2.922 | 2.738 | 2.505 | 0.007 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 96.000 | 96.770 | 97.531 | 98.552 | 100.156 | 102.314 | 104.822 | 107.821 | 110.590 | 114.146 | 118.954 | 123.942 | 131.468 | 139.390 | 147.740 | 0.163 |

---

(1C) START FN AT 90 KM. START = 0.400

| FREQ | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 0.000 | 0.000 | 0.000 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| VIRT | 100.000 | 102.000 | 105.000 | 110.000 | 115.000 | 122.000 | 130.000 | 141.000 | 165.000 | 0.000 | 0.000 | 0.000 | 0.000 |

Peak 3.002 (+/-0.007) MHz, Height 123.5 (+/-0.2) km. Scale Height 14.9 (+/-0.2) km. Slab (to peak) = 18.9 km.

| FREQ | 0.400 | 0.700 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.002 | 2.923 | 2.738 | 2.505 | 0.007 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 90.000 | 94.011 | 95.598 | 97.024 | 98.967 | 101.333 | 103.989 | 107.096 | 109.924 | 113.530 | 118.371 | 123.454 | 131.070 | 139.086 | 147.537 | 0.168 |

---

(1D) E CUSP, CONTINUOUS START = 0.000

| FREQ | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 3.200 | 3.400 | 3.600 | 3.800 | 4.100 | 4.300 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| VIRT | 100.000 | 102.000 | 105.000 | 110.000 | 115.000 | 122.000 | 130.000 | 141.000 | 165.000 | 320.000 | 280.000 | 260.000 | 250.000 | 250.000 | 265.000 | 290.000 |

| FREQ | 4.500 | 4.700 | 4.900 | 5.000 | 0.000 |
|------|-------|-------|-------|-------|-------|
| VIRT | 320.000 | 380.000 | 480.000 | 0.000 | 0.000 |

Peak 4.998 (+/-0.037) MHz, Height 262.7 (+/-4.4) km. Scale Height 79.2 (+/-5.5) km. Slab (to peak) = 107.0 km.

| FREQ | 0.500 | 0.750 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 3.200 | 3.400 | 3.600 | 3.800 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 90.000 | 93.678 | 95.227 | 96.684 | 98.702 | 101.119 | 103.808 | 106.940 | 109.801 | 109.582 | 123.291 | 124.793 | 152.238 | 160.712 | 166.558 | 171.890 |

| FREQ | 4.100 | 4.300 | 4.500 | 4.700 | 4.900 | 4.998 | 4.866 | 4.559 | 4.171 | 0.037 | 331.443 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 180.890 | 189.103 | 199.137 | 213.625 | 236.187 | 262.677 | 303.307 | 346.077 | 391.160 | 4.404 | 79.232 |

---

(1E) E CUSP,DISCONTINUOUS START = 0.000

| FREQ | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 3.200 | 3.400 | 3.600 | 3.800 | 4.100 | 4.300 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| VIRT | 100.000 | 102.000 | 105.000 | 110.000 | 115.000 | 122.000 | 130.000 | 141.000 | 165.000 | 320.000 | 280.000 | 260.000 | 250.000 | 250.000 | 265.000 | 290.000 |

| FREQ | 4.500 | 4.700 | 4.900 | 5.000 | 0.000 |
|------|-------|-------|-------|-------|-------|
| VIRT | 320.000 | 380.000 | 480.000 | 0.000 | 0.000 |

Peak 4.998 (+/-0.036) MHz, Height 262.6 (+/-4.3) km. Scale Height 79.8 (+/-5.3) km. Slab (to peak) = 106.9 km.

| FREQ | 0.500 | 0.750 | 1.000 | 1.200 | 1.500 | 1.800 | 2.100 | 2.400 | 2.600 | 2.800 | 2.950 | 3.000 | 3.200 | 3.400 | 3.600 | 3.800 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 90.000 | 93.678 | 95.227 | 96.684 | 98.702 | 101.119 | 103.808 | 106.940 | 109.801 | 109.602 | 121.985 | 130.010 | 149.715 | 159.643 | 165.587 | 171.099 |

| FREQ | 4.100 | 4.300 | 4.500 | 4.700 | 4.900 | 4.998 | 4.867 | 4.559 | 4.172 | 0.036 | 331.299 |
|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| REAL | 180.144 | 188.468 | 198.602 | 213.141 | 235.734 | 262.625 | 303.543 | 346.614 | 392.015 | 4.321 | 79.792 |
APPENDIX H. THE SIMPLIFIED PROGRAM SPOLAN

H.1 CONSTRUCTION

SPOLAN provides a much shorter and simpler version of POLAN, for use when full extraordinary ray starting and valley corrections are not required and parabolic layer peaks are acceptable. SPOLAN accepts the same input parameters and gives the same types of analysis. The simplified version of POLRUN listed in section H.3 can be used with either program. Values of AMODE in the range 11 to 20 should not be used with SPOLAN, which does not have an optional 12-point integration. Larger values of AMODE can be used, as in POLAN. Thus AMODE = 85 will use an 8-term real-height expression for the final layer, and 5 terms for lower layers. SPOLAN achieves this by setting the parameters for the first and second layers into the 11th and 12th elements of the mode-defining arrays IT, IV and IR.

Apart from the absence of extraordinary ray calculations, some other simplifications in SPOLAN cause slight differences in the calculated real heights. 5-point gaussian integration is used throughout, so that SPOLAN is faster than POLAN but will be less accurate at high latitudes. At low and medium latitudes the difference is normally negligible with single-layer ionograms. When a second layer is present there will be larger changes in the calculated real heights of the upper layer. These are caused by the slightly different form assumed for the peak of the first layer, and differences in the size and shape of the assumed valley between layers. Since the true valley is not known, however, these differences have little physical significance.

Start procedures.

As in POLAN, a positive value (greater than 44 km) for the parameter START is used to input a model starting height for use at the fixed starting frequency of 0.5 MHz. If START is zero, the first few virtual heights are used to obtain an extrapolated starting height (as described in section 6.2, page 24). Setting START = -1.0 gives a direct start from the first data point FV(1), HT(1) with no allowance for underlying ionisation.

An additional start procedure has been introduced in SPOLAN to give a simple but worthwhile allowance for low-density ionisation below the night-time F layer. This procedure is invoked when the parameter START is negative (and less than -44.0). It uses a single extraordinary-ray virtual height to calculate a suitable starting height as described in section 8.6.2 (page 50). For each recording site a table is prepared giving the extraordinary-ray frequency $f_X$ to be used, as a function of the minimum observed ordinary-ray frequency $f_{min}$. The virtual height $h'_X$ of the extraordinary ray at the frequency $f_X$ is measured for each ionogram (with some cautious extrapolation if the trace does not extend down to $f_X$). Setting the parameter START equal to $-h'_X$ then causes SPOLAN to calculate a model starting height using equations 28 and 29 on page 51, for a starting frequency $f_S$ of 0.5 MHz. The calculated profile is the same as if the equations in section 8.6.2 were applied manually to the measured value of $h'_X$, and the starting height obtained entered as the (positive) value of START.

The Peak and Valley calculations in SPEAK.

POLAN uses a rather complex procedure for least-squares fitting of a true Chapman-layer peak to all available data. In SPOLAN the critical frequency of a layer should preferably be scaled from the ionogram. The analysis then includes a parabolic peak expression in the real-height function fitted to the virtual-height data. If the critical frequency is not scaled it is determined by fitting a parabolic expression to the last 3 points on the calculated profile. In both cases results are modified to avoid most of the systematic error which occurs from use of the parabolic approximation (particularly in the calculated values of scale height, as discussed in Titheridge, 1985a). This correction is achieved by changing the constants 0.25 (in the critical frequency calculation) and 0.5 (in the scale height) to 0.263 and 0.55 respectively.

A simple model valley is added between layers. This corresponds approximately to the standard model used by POLAN, with a valley width equal to $\text{HMAX}/2 - 40$ km where HMAX is the height of the underlying peak. The depth of the valley also corresponds approximately to the "standard" value, increasing from 0.05 MHz at a width of 10 km to 0.3 MHz at a width of 60 km. The valley does not include the initial parabolic section used by POLAN, but has a linear variation of electron density between the points listed in the output. The width and depth of the valley can be altered by giving a non-zero value for the input parameter VALLEY, or for the 'virtual height' at the critical frequency of a layer. These changes are the same as those used in POLAN. Thus a value of VALLEY between 0.0 and 5.0 multiplies the width of the model valley by this factor; a negative value VALLEY = -D produces a valley width equal to -5D km; and any decimal part of VALLEY is used to specify the valley depth in MHz.

The subroutine COEFIS calculates the coefficients for the real and virtual height equations, in the same way as the POLAN subroutine COEFIC. The much shorter form of COEFIS is due to the use of 5-point gaussian integrals at all times, the use of equal weighting for all equations, and use of a constant gyrofrequency. The subroutine SSOLVE uses the same accurate procedure as in POLAN but does
not include the facility for altering a solution. The function SGIND calculates the values of group refractive index using the same equations as in POLAN, but for the ordinary ray only and assuming a fixed value of gyrofrequency. Thus for SPOLAN the given value of gyrofrequency FH is always the value in the ionosphere; this corresponds to the use of -FH in POLAN.

H.2 TEST RESULTS

H.2.1 The test data

The data listed below are a subset of those used by POLAN and given in section G.2. Extraordinary ray tests have been eliminated, except for the data set (4A) which was adapted to illustrate the single-point start correction. Corresponding results given in H.2.2 are sufficient to verify the operation of SPOLAN. The full set of test data in G.2 can be run with SPOLAN with no change apart from the elimination of extraordinary-ray data.

(1) STANDARD TEST LAYERS -1.0 30. 0. 0.
(1A) E LAYER,MODEL START 85. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3.0
(1C) START FN AT 90 KM. 0.4 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3.0
(1F) E + F; DIRECT START -1. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 0 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(1G) E + F; NO FC'S 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 0 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000

(2) VALLEYS. -1.0 30. 0. 0.
(2A) MONOTONIC (NO VALLY) 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 10. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2C) 40KM VALLEY; NO FPEAK 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -8. 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 -1.
(2E) DEEP VALLEY 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -0.5 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000
(2F) SHALLOW VALLEY 0. 100010000 120010200 150010500 180011000 210011500
240012200 260013000 280014100 295016500 3000 -.01 320028000 340026000 360025000
380025000 410026500 430029000 450032000 470038000 490048000 5000

(3) PEAKFIT: HM=300, SH=60 -1.0 30. 0. 0.
(3A) CHAPMAN, NO FC'S -1. 2.8 18729 3.0 20633 3.3 21791 3.6 22720 3.9 23597
4.2 24478 4.5 25396 4.8 26380 5.0827385 5.3528469 5.6 29615 5.8 30670 6.0 31901
6.2 33391 6.4 35296 6.6 37973 6.8 42566 6.9 47209
(3B) TRUNCATED: WITH FO -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 7.0
(3E) WITH BAD FC -1. 5.3522918 5.6 26893 5.8 28532 6.0 30116 6.2 31850
6.4 33940 6.6 36759 6.8 41468 6.9 46161 6.95

(4) X RAY START. -1.2 20.
(4A) Start Test with h'x: -271. 1.0 23512 1.1 23556 1.2 23642 1.3023756 1.4 23887
1.5 24031 1.6 24184 1.7 24344 1.8 24509 1.9 24678 2.0 24850 2.1 25025 2.2 25201
2.3 25380 2.4 25560 2.5 25741 2.6 25923 2.7 26106 -1.

NOTE:- For a shortened (peaks only) output precede normal data with the line:
For fast-look output: 9.0
H.2.2 Output produced by SPOLAN

SPOLAN of Dec 1984.

(1) STANDARD TEST LAYERS
   fb = -1.00  dip = 30.0  amode = 0.0  valley= 0.00  list= 0

(1A) E LAYER,MODEL START
   start = 85.0

freq  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000  0.000  0.000  0.000
virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 0.000 0.000 0.000 0.000

Peak 3.000 Mhz. Height 122.7 km. Scale Height 14.8 km.

FREQ  0.500  0.800  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000
REAL 85.000 90.016 92.510 94.505 96.991 99.693 102.648 105.913 108.817 112.595 117.296 122.682 14.814

(1C) START FN AT 90 KM.
   start = 0.4

freq  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000  0.000  0.000  0.000
virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 0.000 0.000 0.000 0.000

Peak 3.000 Mhz. Height 123.5 km. Scale Height 14.6 km.

FREQ  0.400  0.760  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000
REAL 90.000 93.783 95.588 96.890 98.855 101.191 103.928 107.011 109.833 113.535 118.184 123.490 14.591

(1F) E + F; DIRECT START
   start = -1.0

freq  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000  3.200  3.400  3.600  3.800  4.100  4.300
        4.500  4.700  4.900  5.000  0.000
virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 0.000 280.000 260.000 250.000 250.000 265.000 290.000
        320.000 380.000 480.000 0.000 0.000

Peak 3.000 Mhz. Height 124.7 km. Scale Height 14.3 km.
Valley width 22.4 km, Depth 0.11 Mhz.
Peak 5.000 Mhz. Height 273.9 km. Scale Height 85.6 km.

FREQ  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.000  2.888  3.000  3.200  3.400  3.600  3.800
        4.100  4.300  4.500  4.700  4.900  5.000
REAL100.000 100.428 101.646 103.450 105.840 108.666 111.358 114.946 119.522 124.709 139.464 147.064 159.746 167.240 172.382 177.133
        185.442 193.077 203.204 217.348 239.826 273.913 85.647

(1G) E + F; NO FC'S
   start = 0.0

freq  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  0.000  3.200  3.400  3.600  3.800  4.100  4.300
        4.500  4.700  4.900  0.000  0.000
virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 0.000 280.000 260.000 250.000 250.000 265.000 290.000
        320.000 380.000 480.000 0.000 0.000

Peak 3.002 Mhz. Height 123.7 km. Scale Height 15.1 km.
Valley width 21.9 km, Depth 0.11 Mhz.
Peak 5.000 Mhz. Height 273.3 km. Scale Height 84.8 km.

FREQ  0.500  0.800  1.000  1.200  1.500  1.800  2.100  2.400  2.600  2.800  2.950  3.002  2.892  3.002  3.200  3.400
        3.600  3.800  4.100  4.300  4.500  4.700  4.900  5.000
REAL 90.000 93.315 95.011 96.462 98.523 100.930 103.705 106.822 109.555 113.201 118.128 123.705 138.128 145.558 160.234 168.125
        173.112 177.838 185.999 193.518 203.401 217.527 239.675 273.349 84.755
(2) VALLEYS.

fb = -1.00 dip = 30.0 amode = 0.0 valley= 0.00 list= 0

(2A) MONOTONIC (NO VALLY) start = 0.0

freq 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 3.200 3.400 3.600 3.800 4.100 4.300
4.500 4.700 4.900 5.000 0.000

virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 10.000 280.000 260.000 250.000 250.000 265.000 290.000
320.000 380.000 480.000 0.000 0.000

Peak 3.000 Mhz. Height 123.4 km. Scale Height 14.6 km.
Peak 5.000 Mhz. Height 270.1 km. Scale Height 87.2 km.

FREQ 0.500 0.800 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 3.200 3.400 3.600 3.800
4.100 4.300 4.500 4.700 4.900 5.000

REAL 90.000 93.315 95.011 96.462 98.523 100.930 103.705 106.822 109.659 113.374 118.033 123.353 147.067 158.212 164.403 170.314
179.403 187.693 198.069 212.556 235.358 270.065 87.205

(2C) 40KM VALLEY; NO FPEAK start = 0.0

freq 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 3.200 3.400 3.600 3.800 4.100 4.300
4.500 4.700 -1.000 0.000 0.000

virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 -8.000 280.000 260.000 250.000 250.000 265.000 290.000
320.000 380.000 0.000 0.000 0.000

Peak 3.000 Mhz. Height 123.4 km. Scale Height 14.6 km.
Valley width 40.0 km; Depth 0.20 Mhz.

FREQ 0.500 0.800 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 2.800 3.000 3.200 3.400
3.600 3.800 4.100 4.300 4.500 4.700

REAL 90.000 93.315 95.011 96.462 98.523 100.930 103.705 106.822 109.659 113.374 118.033 123.353 149.753 163.353 169.067 173.944
178.105 181.956 189.566 196.714 206.222 219.971 198.745

(2E) DEEP VALLEY start = 0.0

freq 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 3.200 3.400 3.600 3.800 4.100 4.300
4.500 4.700 4.900 5.000 0.000

virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 -0.500 280.000 260.000 250.000 250.000 265.000 290.000
320.000 380.000 480.000 0.000 0.000

Peak 3.000 Mhz. Height 123.4 km. Scale Height 14.6 km.
Valley width 21.7 km; Depth 0.50 Mhz.
Peak 5.000 Mhz. Height 274.4 km. Scale Height 85.4 km.

FREQ 0.500 0.800 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 2.500 3.000 3.200 3.400
3.600 3.800 4.100 4.300 4.500 4.700 4.900 5.000

REAL 90.000 93.315 95.011 96.462 98.523 100.930 103.705 106.822 109.659 113.374 118.033 123.353 137.659 145.029 160.751 168.719
173.576 178.282 186.337 193.950 203.934 218.016 240.453 274.444 85.405

(2F) SHALLOW VALLEY start = 0.0

freq 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 3.200 3.400 3.600 3.800 4.100 4.300
4.500 4.700 4.900 5.000 0.000

virt100.000 102.000 105.000 110.000 115.000 122.000 130.000 141.000 165.000 -0.010 280.000 260.000 250.000 250.000 265.000 290.000
320.000 380.000 480.000 0.000 0.000

Peak 3.000 Mhz. Height 123.4 km. Scale Height 14.6 km.
Valley width 21.7 km; Depth 0.01 Mhz.
Peak 5.000 Mhz. Height 272.4 km. Scale Height 86.1 km.

FREQ 0.500 0.800 1.000 1.200 1.500 1.800 2.100 2.400 2.600 2.800 2.950 3.000 2.990 3.000 3.200 3.400
3.600 3.800 4.100 4.300 4.500 4.700 4.900 5.000

REAL 90.000 93.315 95.011 96.462 98.523 100.930 103.705 106.822 109.659 113.374 118.033 123.353 137.659 145.029 156.674 164.281
169.805 174.732 183.357 191.089 201.366 215.613 238.174 272.432 86.078
(3) PEAKFIT: HM=300, SH=60 fb = -1.00 dip = 30.0 amode = 0.0 valley = 0.00 list = 0

(3A) CHAPMAN, NO FC'S start = -1.0

freq 2.800 3.000 3.300 3.600 3.900 4.200 4.500 4.800 5.080 5.350 5.600 5.800 6.000 6.200 6.400 6.600
6.800 6.900 0.000 0.000 0.000

virt 187.290 206.330 217.910 227.200 235.970 244.780 253.960 263.800 273.850 284.690 296.150 306.700 319.010 333.910 352.960 379.730
425.660 472.090 0.000 0.000 0.000

Peak 7.000 Mhz. Height 300.8 km. Scale Height 59.5 km.

FREQ 2.800 3.000 3.300 3.600 3.900 4.200 4.500 4.800 5.080 5.350 5.600 5.800 6.000 6.200 6.400 6.600
6.800 6.900 7.000

REAL 187.290 190.368 194.957 199.552 204.200 208.948 213.847 218.961 223.996 229.173 234.345 238.829 243.726 249.185 255.459 263.046
273.177 280.736 300.833 59.543

(3B) TRUNCATED: WITH FO start = -1.0

freq 5.350 5.600 5.800 6.000 6.200 6.400 6.600 6.800 6.900 7.000 0.000 0.000 0.000 0.000

virt 229.180 268.930 285.320 301.160 318.500 339.400 367.590 414.680 461.610 0.000 0.000 0.000 0.000

Peak 7.000 Mhz. Height 300.8 km. Scale Height 59.5 km.

FREQ 5.350 5.600 5.800 6.000 6.200 6.400 6.600 6.800 6.900 7.000

REAL 229.180 234.340 238.835 243.729 249.191 255.465 263.060 273.261 280.744 300.772 59.457

(3E) WITH BAD FC start = -1.0

freq 5.350 5.600 5.800 6.000 6.200 6.400 6.600 6.800 6.900 6.950 0.000 0.000 0.000 0.000

virt 229.180 268.930 285.320 301.160 318.500 339.400 367.590 414.680 461.610 0.000 0.000 0.000 0.000

Peak 6.950 Mhz. Height 292.8 km. Scale Height 50.5 km.

FREQ 5.350 5.600 5.800 6.000 6.200 6.400 6.600 6.800 6.900 6.950

REAL 229.180 234.340 238.835 243.729 249.191 255.465 263.059 273.277 280.725 292.830 50.550

SPOLAN of Dec 1984.

(4) X RAY START. fb = -1.20 dip = 20.0 amode = 0.0 valley = 0.00 list = 0

(4A) Start Test with h'x: start = -271.0

freq 1.000 1.100 1.200 1.300 1.400 1.500 1.600 1.700 1.800 1.900 2.000 2.100 2.200 2.300 2.400 2.500
2.600 2.700 -1.000 0.000 0.000

virt 235.120 235.560 236.420 237.560 238.870 240.310 241.840 243.440 245.090 246.780 248.500 250.250 252.010 253.800 255.600 257.410
259.230 261.060 0.000 0.000 0.000

OFREQ 0.500 0.900 1.000 1.100 1.200 1.300 1.400 1.500 1.600 1.700 1.800 1.900 2.000 2.100 2.200 2.
300 2.400 2.500 2.600 2.700

REAL 167.560 189.238 201.459 205.596 208.622 211.409 213.725 215.941 217.886 219.822 221.588 223.339 224.982 226.609 228.166 229.707
231.202 232.681 234.132 235.551 231.152
H.3 LISTINGS

In the program listings below, lines essential to normal program logic are printed in upper case. Lines dealing mainly with exceptions to normal operation, or with the production of additional trace listings, are in lower case. Trace listings are invoked when the input parameter LIST is non-zero; corresponding program lines are indicated by >>> in columns 76 to 78.

H.3.1. The mainline program, and the main subroutine SPOLAN

```
c ** SPOLAN.FOR ** - POLRUN with simplified POLAN.
c                                      Oct 1984.
c
c Read-(1): field, -(2): data, data, ...
c 1 blank to reread station/field data, 2 blanks to end.
c
c J.E. Titheridge, Physics Dept, University of Auckland, New Zealand.
c-----------------------------------------------------------------------
0001   dimension head(6), fv(100), ht(100)
0002   byte dat(9)
0003   call date(dat)
0004   lf= 0
0005   20 lf= 1-lf
c                                      read field and mode
0006   100 READ 120, HEAD, FH,DIP, AMODE, VALLEY,LIST
0007   120 format (6a4,1x, 4f5.0, i5)
0008       if (fh.eq.0.) stop
0010       if (fh.eq.9.) go to 20
0012   print 140, dat, head, fh,dip, amode, valley,list
0013   140 format ('1SPOLAN of dec.1984.',84x,9a2 /1h0,6a4,6x,'fb=',F5.2,
1 5x'dip=',f5.1,5x,'amode=',f5.1,5x,'valley=',f5.2,' list=',i3)
c                                      read data
0014   200 READ 220, HEAD, START, (FV(I),HT(I), I = 1,5)
0015   220 format (6a4,f6.3,5(f5.3,f5.2))
0016       if (fv(1).eq.0.) go to 100
0018   print 240, head, start
0019   240 format (/1h0,6a4,6x,'start=',f6.1)
0020   N = -3
0021   300 N = N+8
0022       IF (HT(N).EQ.0. .OR. N.GT.87) GO TO 400
0024   READ 320, (FV(I),HT(I), I = N+1,N+8)
0025   320 format (8(f5.3,f5.2))
0026       GO TO 300
c                                      list data.
0027   400 if (lf.eq.0) go to 500
0029   print 620, 'freq', (fv(i),i = 1,n)
0030   print 620, 'virt', (ht(i),i = 1,n)
0031   print 620
c                                      analysis
0032   500 N = 99
0033   CALL SPOLAN (N,FV,HT, FH,DIP, START,AMODE, VALLEY,LIST*lf)
c                                      output
0034   if (lf.eq.0) go to 640
0036   PRINT 620, 'FREQ', (FV(I), I = 1,N)
0037   PRINT 620, 'REAL', (HT(I), I = 1,N+1)
0038   620 format (1h0,a4, f7.3,7f8.3,1x,8f8.3 / (4x8f8.3,1x8f8.3))
0039   640 print 620
0040       GO TO 200
0041   END
```
SUBROUTINE SPOLAN (N,FV,HT, FB,DIP, START,AMODE, VALLEY,LLIST)

Generalised polynomial analysis; overlapping, single or least squares.
Simplified POLAN for ordinary ray only,
using a maximum of 12 terms (NT) fitting 24 points (NR+NV).

Call with N equal to the dimension of the data arrays FV, HT.
The number of valid data points must be less than N - 12.
Input data is terminated by two zero values of HT.
Ionospheric layers are separated by a zero height, with FV equal to zero
or to a scaled critical frequency for the lower layer.
(The zero height may be replaced by some value < 40 km, to specify a
non-standard form for the valley for the current ionogram; such values
are interpreted as described under VALLEY below).
FB and DIP give the gyrofrequency (in MHz) and the magnetic dip angle (in
degrees) in the ionosphere.

START =-1. gives a direct start from the first point FV(1),HT(1)
= 0 uses an extrapolated starting height, at a frequency of 0.5 MHz.
> 44 gives a model starting height, at 0.5 MHz
<-44 gives an X-ray virtual height to calculate the start correction.
0 < START < 44 defines a start frequency, to use at H = 90 (20) 170 km.

AMODE specifies the mode of analysis, as in POLAN.
0 gives the default Mode 5 analysis (the simplest least squares mode)
1, 2 = linear, parabolic lamination analysis.
3, 4 = overlapping cubic, quadratic sections.
5 to 9 are least squares calculations with IT terms fitting IV virtual
heights and !IR! known real heights, where IT, IV and IR are in DATA.
10 gives a single polynomial analysis (up to 12 terms fitting 24 hts).
I*10+J uses I terms for final layer, J for lower layers.

VALLEY = 0 gives the standard full valley, with a width equal to twice the
local (neutral) scale height.
VALLEY = 0.1 to 5.0 multiplies the "standard' width by this factor.
The resulting profile may give a negative gradient above the valley.
VALLEY = 10 gives no valley between layers.
Negative values of VALLEY specify a valley width of 5*INT(-VALLEY) km.
Any decimal part of VALLEY specifies the depth (in MHz) for a linear valley.

LLIST = 1 TO 6 gives increasing printed (trace) output.
Use LLIST negative to start trace at first sub-peak section.

dimension fv(9), ht(9), it(12), iv(12), ir(12)
common /pol/ b(49,13),q(12), fa,ha,fc, nl,mt, jv
data IT / 1, 2, 3, 4, 5, 6, 6, 7, 33, 12,12 / !number of terms in poly.
data IV / 1, 1, 2, 3, 4, 5, 7, 8,13, 24, 24,24 /!no of virt heights fitted
data IR / 0,-1,-1, 1,-2,-3,-4,-4,-6, -3, -3,-3 /!no of real heights fitted

sq(x) = sqrt(1.-x*x)
list = llst
a = sgind(abs(fb), -abs(dip)) setfield
if (list.ne.0) print 1, fb,dip,start,amode,valley,llist >>>>
format ('Oargs ='5f8.2,i5)
IF (START.GT.-44.) GO TO 2

Calculate start height from X-ray h'.

A= FV(1)/FB
D= (A*2.16+0.38)*A -0.53
E= (A*2.94-5.63)*A +2.81
C= D+E*COS(.041*ABS(DIP)-.25)
START= HT(1)+FB*C*(HT(1)+START)

IS = 12
IF (START.LT. 0.) IS = 10
DO 3 J = IS, N-1
I = N-J
FV(IS+I)= FV(I)
HT(IS+I)= HT(I)
FA = FV(1)
HA = HT(1)
IS = IS-10
IF (START.LT.0.) GO TO 5

FA = 0.5
HA = HT(1) - ABS(HT(3)-HT(1)) *FV(1)/(FV(3)-FV(1))
IF (START.GE.44.) HA = AMIN1(START, (HA+HT(1))/2.)
HA = AMAX1(AMIN1(HA, HT(1)/2+50.), HT(1)/4.+55.)

IF (START.GE.44..OR.START.LE.0.) GO TO 4
FA = AMOD(START,10.)
HA = (START-FA)*20. + 90.
FV(12)= FV(1)*.6 + FA*.4
HT(12)= HT(1)*.8 + HA*.2
FV(11)= FA
HT(11)= HA
FV(2) = FV(12)
FV(1) = FA
HT(1) = HA

KR= Real ht index, KR+JV= Virtual ht, LK= Last reduced ht.

JV = 10
KR = 1
LK = 1
MOD= ABS(AMODE)
IF (MOD.EQ.0) MOD= 5
it(12)= mod/10
it(11)= mod-it(12)*10
if (mod.gt.12) mod= 12

NT = IT(MOD) - MOD/5 +mod/11*2
NV = MOD + MOD/6 + MOD/8
IF (MOD.GE.10) NV = 24
NH = MAXO(1, NT-1+MOD/8)
NNR= 0
if(list.ge.4)print99,(fv(jj),jj=11,26),(ht(jj),jj=11,26) >>>

GO TO 18

c****************************************** Real Height Calculation **********************
c For each cycle:- Calculate one polynomial, with NT terms, from point
c FA = FV(KR), HA = HT(KR) to fit next NV virtual and NR real hts.
c Calculate a further NH real heights, and set KR = KR + NH.
c (NR negative to include one real height below HA).
c
c If a critical frequency (HT < 40) is found in KR+1 to KR+NV+1,
c calculate up to critical (with parabolic peak).

c****************************************** **************************************************

NT = IT(MOD)
NV = IV(MOD)
NH = MAXO(1,MOD-6)
NNR= IR(MOD)
NR = IABS(NNR)
NL = MINO(1,NR-NNR)
KR = KR-NR+NL
FCC= 0.

DO 20 NF = 1, NV
MF = KR+NF+JV
FM = FV(MF)
IF (FM.LE.FA) GO TO 400
IF (HT(MF+1).LE.40.) GO TO 30
GO TO 50

FCC= FV(MF+1)
if (mod.gt.10.and.ht(mf+2).gt.ha) nt= it(11)
IF (FCC.EQ.0.) FCC= .2
LIST= IABS(LLIST)
NH = NF-NR+NL
MF = MF-JV
MV = MF-KR
if(list.ge.3)print98,fa,ha='2f7.2, 4x'fm,fc='2f6.2,5x, 'lk,kr,mf='3i3,4x
1 'mod,nh='2i3, 4x'nt,mt='2i3, 4x'nr,nl='2i3, 4x'nv,mv='2i3)
if (list.ge.4) print99, (fv(jj),jj=11,26), (ht(jj),jj=11,26) >>> format (16f8.2)

IF (KR.EQ.1) GO TO 100

Reduce virtual heights
(1) polynomial reduction

CALL COEFIS (KR, -MV, FV, HT)
if (list.ge.4) print99, (ht(jj),jj=11,26) >>> (2) step reduction loop

MF1 = MF+JV+1
LK = LK +1
FL = FA
FA = FV(LK)
HA = HT(LK)
DH = HA - HT(LK-1)
DO 90 I = MF1, N-1
HV = HT(I)
if (hv.eq.0.and.ht(i+1).eq.0.) go to 92
if (hv.le.30.) go to 90
F = FV(I)
TAV = (SQ(FA/F) + SQ(FL/F)) /2.
HT(I)= HV - SGIND(F,TAV) * DH
if (list.ge.5) print99, fl, fa, dh, ha, f, hv, ht(i)

CONTINUE
continue
if (fa.eq.fc) mfl = kr+jv+1
IF (LK.LT.KR) GO TO 80

MT = MINO(NT, MV+NR)
if (mod.eq.10) mt = min0((mv+2)*73/100, 12)
FC = FCC
if (list.ge.2) print98, fa, ha, fm, fc, lk, kr, mf, mod, nh, nt, mt, nr, nl, nv, mv >>> if (list.ge.4) print99, (ht(jj),jj=11,26) >>> Calculate Coefficients

CALL COEFIS (KR, MV, FV, HT)
if (list.lt.6) go to 190
do 160 j=1,mv*2
print 170, j,(b(j,jj),jj=1,mt+1) >>> format (' matrix b row'i2,1lf10.3)
continue

CALL SSOLVE (MV+NR, MT, B, Q)
if (list.ge.1) print 199, fa, ha, (q(j),j=1,mt) >>> format (2f7.2,' Coef ts Q1...,MT=',12f8.2)

Store real heights

KR = KR+NR-NL
DO 220 I = 1, NH
HR = HA
DO 210 J = 1, MT
HR = B(MV+NR+I,J)*Q(J) + HR
KR = KR+1
HT(KR)= HR
FV(KR)= FV(KR+JV)
IF (FC.EQ.0.) GO TO 15
if (fc.lt.0.) go to 400

Calculate parabolic peak

KVP = KR+JV+1
HVAL = HT(KVP)
if (hval.eq. 0.) hval= valley
if (ht(kvp+1).eq.0.) hval= 9.9
CALL SPEAK (N, FV, HT, FC, KR, HVAL)

JV = KVP-KR
IF (HT(KVP+1).GT.80.) GO TO 10

N = KR
RETURN
END
H.3.2. The subroutines COEFIS, SPEAK, SSOLVE and SGIND, in the file SOLSUB.FOR

```
cc  SOL SUB .FOR. Link with SPOLAN.
c
0001   SUBROUTINE COEFIS (KR, MV, FV, HT)
c  Simplified Coefic, for 0 ray only.
c  Calculate coefficients b(i,j) for polynomial h-ha = q(j)*(f-fa)**j,
c  where fa = fv(kr), ha = ht(kr), j = 1 to mt.
c  Includes parabolic peak if fc > 1.
c  Virtual heights, freqs are ht(iv), fv(iv). Reals are ht(iv-jv),fv(iv-jv).
c
c  First/last mv rows of b give virtual/real ht coefs at freqs kv+1 to kv+mv.
c  mv -ve to reduce virtual heights by delay in the prev section fa to fv(kr).
c-------------------------------------------------------------------------
0002    common /pol/ b(49,13), q(12), fa, ha, fc, nl, mt, jv
0003    dimension tr(5),w(5), gauss(5),fnr(5), fv(9), ht(9)
0004    data tr / .046910077,.23076534,.50 ,.76923456,.95308992/
0005    data w / .11846344,.23931434, .28444444,.23931434,.11846344/
c-------------------------------------------------------------------------
0006    sq(x) = sqrt(1.-x*x)
0007    NF = IABS(MV)  freqs.
0008    KV = KR+JV
c  - - - - - - - - - - cycle frequencies - - - - - -
0009    DO 100 I = 1-NL, NF
0010    IV = KV + I
0011    if (i.eq.0) iv = iv-1  prev ht
0013    F = FV(IV)
0014    if (i.eq.0) go to 30
c
0016    TA = 0.
0017    if (mv.lt.0) ta = sq(fv(kr)/f)
0019    TD = SQ(FA/F)-TA  realonly
c
0020    SUMP = 0.
0021    DO 20 IR = 1, 5
0022    T = TR(IR)*TD + TA
0023    FN = SQ(T) *F
0024    GAUSS(IR) = SGIND(F,T) *T *W(IR)/FN *TD
0025    if (fc.gt.fa) sump = gauss(ir)*fn/sq(fn/fc) + sump  peak sum
0027    20 FNR(IR) = FN-FA
c
c
0028    30 IREAL = I + NF + NL
0029    DO 90 J = 1, MT
0030    REALHT = (F-FA)**J  realequn
0031    SUMVRT = 0.
0032    IF (J.LT.MT .OR. FC.LT.FA) GO TO 60  realpoly
c
0034    if (f.lt.fc) realht = sq(fa/fc) - sq(f/fc)  not peak
0036    sumvrt = sump *(f/fc)**2  parabolic peak term q(mt)
0037    if (i.ne.0) go to 80  delay
0039    60 if (i.eq.0) go to 90  realonly
c
0041    DO 70 IR = 1,5
0042    A = GAUSS(IR)
0043    GAUSS(IR) = A*FNR(IR)
0044    70 SUMVRT = SUMVRT + A
0045    SUMVRT = J*SUMVRT*F*F  form polynomial integrals
c
0046    80 B(I,J) = SUMVRT + REALHT  store integrals
0047    if (mv.lt.0) ht(iv) = ht(iv) - q(j)*sumvrt  virtual
0049    90 B(IREAL,J) = REALHT  reduce
c
0050    IF (I.GT.0) B(I,MT+1) = HT(IV) - HA  v r.h.s.
0052    100 B(IREAL,MT+1) = HT(IV-JV) - HA  r r.h.s.
c
0053    RETURN
0054    END
```
SUBROUTINE SPEAK (N, FV, HT, FC, KR, HVAL)

Calculation of parabolic peak for SPOLAN, using the last 3 calcd real hts.
(If FC was scaled, these heights were obtained with a poly+parabola fit.)
The last calcd height is at fv(kr), ht(kr).

dimension fv(9), ht(9)
sq(x) = sqrt(1-x*x)

FM = FV(KR)
HR = HT(KR)
FN = FV(KR-2)
HN = HT(KR-2)
IF (FC.GT..2) GO TO 20

calculate fc from gradient fit, when not scaled.
(the factor 0.263 replaces parabolic 0.25, for Chapman)

fnn = fn**2
dh = ht(kr-1) - hn
c = (fv(kr-1)**2 - fnn) / dh
d = (c - (fm*fm-fnn)/(hr-hn)) / (hr -ht(kr-1))
fc = sqrt(fnn + .263*d* (c/d+dh)**2)

Calculate the Scale Height. .55 corrects to chap.

SH = 0.554*(HR-HN) / (SQ(FN/FC) -SQ(FM/FC) )
HM = HR + 2.*SH*SQ(FM/FC)
KR = KR+1
FV(KR)= FC
HT(KR)= HM

list peak

print 40, fc, hm, sh
format(' Peak'F7.3,' Mhz. Height'F6.1,' km.',
1 7X,'Scale Height',F6.1,' km.')

ht(kr+1) = sh
if (hval.ge.9.9) return

Add a simple linear valley above the peak, if there is another layer,
using the default Polan value:- vwidth = sha *2. = hmax/2. - 40. km.

VAL= HM/2.-40.
if (hval.gt.0..and.hval.le.5.) val= val*hval
if (hval.le.-1.) val= 5*int(-hval)
VDEPTH= VAL/200.
if (hval.lt.int(hval)) vdepth= int(hval)-hval
KR = KR+2
FV(KR-1)= FC-VDEPTH
HT(KR-1)= HM+VAL*.66
FV(KR) = FC
HT(KR) = HM +VAL

print 80, val, vdepth
format (13x,'Valley width',f6.1,' km, Depth',f5.2,' Mhz.')

RETURN
END

SUBROUTINE SSOLVE (M,N, B,Q)
for simplified polan (SPOLAN) of june 1978.

Solve m simult equns in n unknowns, in array b(m,n+1). Result in q(n).

dimension b(49,13), q(12)
NP = N +1

Householder transformations

DO 4 K = 1, NP
SUM = 0.
if (k.gt.m) go to 7
DO 1 I = K, M
SUM = SUM + B(I,K)**2
if (k.eq.np) go to 7
A = B(K,K)
D = SIGN(SQRT(SUM),A)
B(K,K) = A + D
C = A*D + SUM
C

DO 3 J = K+1, NP
SUM = 0.
DO 2 I = K, M
SUM = SUM + B(I,K)*B(I,J)
SUM = SUM/C
DO 3 I = K, M
B(I,J) = B(I,J) - B(I,K)*SUM
CONTINUE

B(K,K) = -D

Back substitution

B(NP,NP) = SUM
DO 10 II = 1, N
I = NP-II
SUM = B(I,NP)
IF (II.EQ.1) GO TO 10
DO 8 J = I+1, N
SUM = SUM - B(I,J)*Q(J)
Q(I) = SUM/B(I,I)
RETURN
END

FUNCTION SGIND (F,T)

Gives (group index -1.) to full machine accuracy, up to reflection.
f = wave frequency; t = sqrt(1. - x) where x = (fn/f)**2.

Initialise by call sgind(fb,-dip) to set gyrofreq (mhz) and dip (deg).

data fbsin,fcsct / 2*0. /
IF (T.GE.0.) GO TO 6
dip = -.01745329*t
fbsin = f *sin(dip)
fcsct = (f*cos(dip))**2 *.5/fbsin
return

G1 = F*T*T +1.E-19
G2 = FCSCT/G1
G3 = SQRT(G2*G2 +1.)
G4 = FBSIN/(G2 + G3)
G5 = F + G4
G2 = (F*G2*G4/G1-.5*FBSIN)*(F-G1)/(G3*G5) + G5
SGIND = G2/SQRT((G1 + G4) *G5) -1.
RETURN
END
Fewer than four UAG Reports are published at irregular intervals each year. Copies of these publications may be purchased through the NATIONAL GEOPHYSICAL DATA CENTER, Solar-Terrestrial Physics Division (E/GC2) 325 Broadway, Boulder, Colorado 80303, USA. A $4.00 handling charge per order will be added to single-copy price, if any, listed below. Please note, too, that some reports are available on microfiche only. Orders must include check or money order payable in U.S. currency to Commerce, NOAA/NGDC.

UAG-1 IQSY NIGHT AIRGLOW DATA, by L.L. Smith, F.E. Roach, and J.M. McKennan, ESSA Aeronomy Laboratory Boulder, CO, July 1968, 305 pp, $1.75.

UAG-2 A REEVALUATION OF SOLAR FLARES, 1964-1966, by Helen W. Dodson and E. Ruth Hedeman, McMath-Hulbert Observatory, University of Michigan, Pontiac, MI, August 1968, 28 pp.

UAG-3 OBSERVATIONS OF JUPITER'S SPORADIC RADIO EMISSION IN THE RANGE 7.6-41 MHZ, 6 JULY 1966 THROUGH 8 SEPTEMBER 1968, by James W. Warwick and George A. Dulk, University of Colorado, Boulder, CO, October 1968, 35 pp.

UAG-4 ABBREVIATED CALENDAR RECORD 1966-1967, by J. Virginia Lincoln, Hope I. Leighton and Dorothy K. Kropp, ESSA now NOAA, Aeronomy and Space Data Center, Boulder, CO, January 1969, 170 pp, $1.25.

UAG-5 DATA ON SOLAR EVENT OF MAY 23, 1967, AND ITS GEOPHYSICAL EFFECTS, compiled by J. Virginia Lincoln, World Data Center A, Upper Atmosphere Geophysics, ESSA now NOAA, Boulder, CO, February 1969, 120 pp.

UAG-6 INTERNATIONAL GEOPHYSICAL CALENDARS 1957-1969, by A.H. Shapley and J. Virginia Lincoln, ESSA Research Laboratories, now NOAA, Boulder, CO, March 1969, 25 pp.

UAG-7 OBSERVATIONS OF THE SOLAR ELECTRON CORONA: FEBRUARY 1964 - JANUARY 1968, by Richard T. Hansen, High Altitude Observatory, NCAR, Boulder, CO, and Kamuela, HI, October 1969, 12 pp.

UAG-8 DATA ON SOLAR-GEOPHYSICAL ACTIVITY OCTOBER 24 - NOVEMBER 6, 1968, Parts 1 and 2, compiled by J. Virginia Lincoln, World Data Center A, Upper Atmosphere Geophysics, ESSA now NOAA, Boulder, CO, March 1970, 312 pp, $1.75 (includes Parts 1 and 2).

UAG-9 DATA ON COSMIC RAY EVENT OF NOVEMBER 18, 1968, AND ASSOCIATED PHENOMENA, compiled by J. Virginia Lincoln, World Data Center A, Upper Atmosphere Geophysics, ESSA now NOAA, Boulder, CO, April 1970, 109 pp.

UAG-10 ATLAS OF IONOGRAMS, edited by A.H. Shapley, ESSA Research Laboratories now NOAA, Boulder, CO, May 1970, 243 pp, $1.50.

UAG-12 SOLAR-GEOPHYSICAL ACTIVITY ASSOCIATED WITH THE MAJOR GEOMAGNETIC STORM OF MARCH 8, 1970, Parts 1, 2 and 3, compiled by J. Virginia Lincoln and Dale B. Bucknam, World Data Center A, Upper Atmosphere Geophysics, ESSA now NOAA, Boulder, CO, April 1971, 466 pp, $3.00 (includes Parts 1-3).

UAG-13 DATA ON THE SOLAR PROTON EVENT OF NOVEMBER 2, 1969, THROUGH THE GEOMAGNETIC STORM OF NOVEMBER 8-10, 1969, compiled by Dale B. Bucknam and J. Virginia Lincoln, World Data Center A, Upper Atmosphere Geophysics, ESSA now NOAA, Boulder, CO, May 1971, 76 pp.

UAG-14 AN EXPERIMENTAL, COMPREHENSIVE FLARE INDEX AND ITS DERIVATION FOR 'MAJOR' FLARES, 1955-1969, by Helen W. Dodson and E. Ruth Hedeman, McMath-Hulbert Observatory, University of Michigan, Pontiac, MI, July 1971, 25 pp.

UAG-16 TEMPORAL DEVELOPMENT OF THE GEOPHYSICAL DISTRIBUTION OF AURORAL ABSORPTION FOR 30 SUBSTORM EVENTS IN EACH OF IQSY (1964-65) AND IASY (1960), by F.T. Berkey, University of Alaska, Fairbanks, AK; V.M. Driatskiy, Arctic and Antarctic Research Institute, Leningrad, USSR; K. Henriksen, Auroral Observatory, Tromso, Norway; D.H. Jelly, Communications Research Center, Ottawa, Canada; T.I. Shchuka, Arctic and Antarctic Research Institute, Leningrad, USSR; A. Theander, Kiruna Geophysical Observatory, Kiruna, Sweden; and J. Yliniemi, University of Oulu, Oulu, Finland, September 1971, 131 pp, $1.50 (microfiche only).

UAG-17 IONOSPHERIC DRIFT VELOCITY MEASUREMENTS AT JICAMARCA, PERU (JULY 1967 - MARCH 1970), by Ben B. Balsley, NOAA Aeronomy Laboratory, Boulder, CO, and Ronald F. Woodman, Jicamarca Radar Observatory, Instituto Geofisico del Peru, Lima, Peru, October 1971, 45 pp, $1.50 (microfiche only).

UAG-18 A STUDY OF POLAR CAP AND AURORAL ZONE MAGNETIC VARIATIONS, by K. Kawasaki and S.-I. Akasofu, University of Alaska, Fairbanks, AK, June 1972, 21 pp.

UAG-19 REEVALUATION OF SOLAR FLARES 1967, by Helen W. Dodson and E. Ruth Hedeman, McMath-Hulbert Observatory, University of Michigan, Pontiac, MI, and Marta Rovira de Miceli, San Miguel Observatory, Argentina, June 1972, 15 pp.
UAG-21 PRELIMINARY COMPILATION OF DATA FOR RETROSPECTIVE WORLD INTERVAL JULY 26 - AUGUST 14, 1972, by J. Virginia Lincoln and Hope I. Leighton, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, November 1972, 128 pp.

UAG-22 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES (AE) FOR 1970, by Joe Haskell Allen, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, November 1972, 146 pp.

UAG-23 U.R.S.I. HANDBOOK OF IONOGRAM INTERPRETATION AND REDUCTION, Second Edition, November 1972, edited by W.R. Piggott, Radio and Space Research Station, Slough, UK, and K. Rawer, Arbeitsgruppe fur Physikalische Weltraumforschung, Freiburg, GFR, November 1972, 324 pp, $1.75.

UAG-23A U.R.S.I. HANDBOOK OF IONOGRAM INTERPRETATION AND REDUCTION, Second Edition, Revision of Chapters 1-4, edited by W.R. Piggott, Radio and Space Research Station, Slough, UK, and K. Rawer, Arbeitsgruppe fur Physikalische Weltraumforschung, Freiburg, GFR, November 1972, 135 pp, $2.14.

UAG-24 DATA ON SOLAR-GEOPHYSICAL ACTIVITY ASSOCIATED WITH THE MAJOR GROUND LEVEL COSMIC RAY EVENTS OF 24 JANUARY AND 1 SEPTEMBER 1971, Parts 1 and 2, compiled by Helen E. Coffey and J. Virginia Lincoln, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, December 1972, 462 pp, $2.00 (includes Parts 1 and 2).

UAG-25 OBSERVATIONS OF JUPITER'S SPORADIC RADIO EMISSION IN THE RANGE 7.6-41 MHZ, 9 SEPTEMBER 1968 THROUGH 9 DECEMBER 1971, by James W. Warwick, George A. Dulk and David G. Swann, University of Colorado, Boulder, CO, February 1973, 35 pp.

UAG-26 DATA COMPILATION FOR THE MAGNETOSPHERICALLY QUIET PERIODS FEBRUARY 19-23 AND NOVEMBER 29 - DECEMBER 3, 1970, compiled by Helen E. Coffey and J. Virginia Lincoln, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, May 1973, 129 pp.

UAG-27 HIGH SPEED STREAMS IN THE SOLAR WIND, by D.S. Intriligator, University of Southern California, Los Angeles, CA, June 1973, 16 pp.

UAG-28 COLLECTED DATA REPORTS ON AUGUST 1972 SOLAR-TERRESTRIAL EVENTS, Parts 1, 2 and 3, edited by Helen E. Coffey, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, July 1973, 932 pp, $4.50.

UAG-29 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1968, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, October 1973, 148 pp.

UAG-30 CATALOGUE OF DATA ON SOLAR-TERRESTRIAL PHYSICS, prepared by NOAA Environmental Data Service, Boulder, CO, October 1973, 317 pp, $1.75. Supersedes catalogs UAG-11, 15 and 20.

UAG-31 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1969, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, February 1974, 142 pp.

UAG-32 SYNOPTIC RADIO MAPS OF THE SUN AT 3.3 MM FOR THE YEARS 1967-1969, by Earle B. Mayfield, Kennon P. White III, and Fred I. Shimabukuro, Aerospace Corp., El Segundo, CA, April 1974, 26 pp.

UAG-33 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(10) FOR 1967, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, May 1974, 142 pp.

UAG-34 ABSORPTION DATA FOR THE IGY/IGC AND IQSY, compiled and edited by A.H. Shapley, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO; W.R. Piggott, Appleton Laboratory, Slough, UK; and K. Rawer, Arbeitsgruppe fur Physikalische Weltraumforschung, Freiburg, GFR, June 1974, 381 pp, $2.00.

UAG-36 AN ATLAS OF EXTREME ULTRAVIOLET FLASHES OF SOLAR FLARES OBSERVED VIA SUDDEN FREQUENCY DEVIATIONS DURING THE ATM-SKYLAB MISSIONS, by R.F. Donnelly and E.L. Berger, NOAA Space Environment Laboratory; Lt. J.D. Busman, NOAA Commissioned Corps; B. Henson, NASA Marshall Space Flight Center; T.B. Jones, University of Leicester, UK; G.M. Lerfeld, NOAA Wave Propagation Laboratory; K. Najita, University of Hawaii; W.M. Retallack, NOAA Space Environment Laboratory and W.J. Wagner, Sacramento Peak Observatory, October 1974, 95 pp.

UAG-37 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(10) FOR 1966, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, December 1974, 142 pp.

UAG-38 MASTER STATION LIST FOR SOLAR-TERRESTRIAL PHYSICS DATA AT WDC-A FOR SOLAR-TERRESTRIAL PHYSICS, by R.W. Buhmann, World Data Center A for Solar-Terrestrial Physics, Boulder, CO; Juan D. Roederer, University of Denver, Denver, CO; and M.A. Shea and D.F. Smart, Air Force Cambridge Research Laboratories, Hanscom AFB, MA, December 1974, 110 pp, $1.60.
UAG-39 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1971, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, February 1975, 144 pp, $2.05.

UAG-40 H-ALPHA SYNOPTIC CHARTS OF SOLAR ACTIVITY FOR THE PERIOD OF SKYLAB OBSERVATIONS, MAY 1973 - MARCH 1974, by Patrick S. McIntosh, NOAA Space Environment Laboratory, Boulder, CO, February 1975, 32 pp.

UAG-41 H-ALPHA SYNOPTIC CHARTS OF SOLAR ACTIVITY DURING THE FIRST YEAR OF SOLAR CYCLE 20 OCTOBER 1964 - AUGUST 1965, by Patrick S. McIntosh, NOAA Space Environment Laboratory, Boulder, CO, and Jerome T. Nolte, American Science and Engineering, Inc., Cambridge, MA, March 1975, 25 pp.

UAG-42 OBSERVATIONS OF JUPITER'S SPORADIC RADIO EMISSION IN THE RANGE 7.6-80 MHZ, 10 DECEMBER 1971 THROUGH 21 MARCH 1975, by James W. Warwick, George A. Dulk and Anthony C. Riddle, University of Colorado, Boulder, CO, April 1975, 49 pp.

UAG-43 CATALOG OF OBSERVATION TIMES OF GROUND-BASED SKYLAB-COORDINATED SOLAR OBSERVING PROGRAMS, compiled by Helen E. Coffey, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, May 1975, 159 pp, $3.00.

UAG-44 SYNOPTIC MAPS OF SOLAR 9.1 CM MICROWAVE EMISSION FROM JUNE 1962 TO AUGUST 1973, by Werner Graf and Ronald N. Bracewell, Stanford University, Stanford, CA, May 1975, 183 pp, $2.55.

UAG-45 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1972, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, May 1975, 144 pp, $1.50 (microfiche only).

UAG-46 INTERPLANETARY MAGNETIC FIELD DATA 1963-1964, by Joseph H. King, National Space Science Data Center, NASA Goddard Space Flight Center, Greenbelt, MD, June 1975, 382 pp, $2.95.

UAG-47 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1973, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, June 1975, 144 pp, $1.50 (microfiche only).

UAG-48A SYNOPTIC OBSERVATIONS OF THE SOLAR CORONA DURING CARRINGTON ROTATIONS 1580-1596 (11 OCTOBER 1971 - 15 JANUARY 1973), [Re-issue of UAG-48 with quality images], by R.A. Howard, M.J. Koomen, D.J. Michels, R. Tousey, C.R. Detwiler, D.E. Roberts, R.T. Seal, and J.D. Whitney, U.S. Naval Research Laboratory, Washington, DC; and R.T. Hansen and S.F. Hansen, C.J. Garcia and E. Yasukawa, High Altitude Observatory, NCAR, Boulder, CO, February 1976, 200 pp, $4.27. Supersedes UAG-48.

UAG-50 HIGH-LATITUDE SUPPLEMENT TO THE URSI HANDBOOK ON IONOGRAM INTERPRETATION AND REDUCTION, edited by W.R. Piggott, British Antarctic Survey, c/o Appleton Laboratory, Slough, UK, October 1975, 294 pp, $4.00.

UAG-51 SYNOPTIC MAPS OF SOLAR CORONAL HOLE BOUNDARIES DERIVED FROM HE II 304A SPECTROHELIOPHOTOS FROM THE MANNED SKYLAB MISSIONS, by J.D. Bohlin and D.M. Rubenstein, U.S. Naval Research Laboratory, Washington, DC, November 1975, 30 pp.

UAG-52 EXPERIMENTAL COMPREHENSIVE SOLAR FLARE INDICES FOR CERTAIN FLARES, 1970-1974, by Helen W. Dodson and E. Ruth Hedeman, McMath-Hulbert Observatory, University of Michigan, Pontiac, MI, November 1975, 27 pp.

UAG-53 DESCRIPTION AND CATALOG OF IONOSPHERIC F-REGION DATA, JICAMARCA RADIO OBSERVATORY (NOVEMBER 1966 - APRIL 1969), by W.L. Clark and T.E. Van Zandt, NOAA Aeronomy Laboratory, Boulder, CO, and J.P. McClure, University of Texas at Dallas, Dallas, TX, April 1976, 10 pp.

UAG-55 EQUIVALENT IONOSPHERIC CURRENT REPRESENTATIONS BY A NEW METHOD, ILLUSTRATED FOR 8-9 NOVEMBER 1969 MAGNETIC DISTURBANCES, by Y. Kamide, Cooperative Institute for Research in Environmental Sciences, University of Colorado, Boulder, CO; H.W. Kroehl, Data Studies Division, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO; M. Kanamitsu, Advanced Study Program, National Center for Atmospheric Research, Boulder, CO; Joe Haskell Allen, Data Studies Division, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO; and S.-I. Akasofu, Geophysical Institute, University of Alaska, Fairbanks, AK, April 1976, 91 pp, $1.50 (microfiche only).

UAG-56 ISO-INTENSITY CONTOURS OF GROUND MAGNETIC H PERTURBATIONS FOR THE DECEMBER 16-18, 1971, GEOMAGNETIC STORM, Y. Kamide, Cooperative Institute for Research in Environmental Sciences, University of Colorado, Boulder, CO, April 1976, 37 pp, $1.39.

UAG-57 MANUAL ON IONOSPHERIC ABSORPTION MEASUREMENTS, edited by K. Rawer, Institut fur Physikalische Weltraumforschung, Freiburg, GFR, June 1976, 302 pp, $4.27.
UAG-58 ATS6 RADIO BEACON ELECTRON CONTENT MEASUREMENTS AT BOULDER, JULY 1974 - MAY 1975, by R.B. Fritz, NOAA Space Environment Laboratory, Boulder, CO, September 1976, 61 pp.

UAG-59 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11) FOR 1974, by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, December 1976, 144 pp, $2.16.

UAG-60 GEOMAGNETIC DATA FOR JANUARY 1976 [AE(7) INDICES AND STACKED MAGNETOGRAMS], by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, July 1977, 57 pp.

UAG-61 COLLECTED DATA REPORTS FOR STIP INTERVAL II 20 MARCH - 5 MAY 1976, edited by Helen E. Coffey and John A. McKinnon, World Data Center A for Solar-Terrestrial Physics, Boulder, CO, August 1977, 313 pp, $2.95.

UAG-62 GEOMAGNETIC DATA FOR FEBRUARY 1976 [AE(7) INDICES AND STACKED MAGNETOGRAMS], by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, September 1977, 55 pp.

UAG-63 GEOMAGNETIC DATA FOR MARCH 1976 [AE(7) INDICES AND STACKED MAGNETOGRAMS], by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, September 1977, 57 pp.

UAG-64 GEOMAGNETIC DATA FOR APRIL 1976 [AE(8) INDICES AND STACKED MAGNETOGRAMS], by Joe Haskell Allen, Carl C. Abston and Leslie D. Morris, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO, February 1978, 55 pp.

UAG-65 THE INFORMATION EXPLOSION AND ITS CONSEQUENCES FOR DATA ACQUISITION, DOCUMENTATION, PROCESSING, by G.K. Hartmann, Max-Planck-Institut für Aeronomie, Lindau, GFR, May 1978, 36 pp.

UAG-66 SYNOPTIC RADIO MAPS OF THE SUN AT 3.3 MM 1970-1973, by Earle B. Mayfield and Fred I. Shimabukuro, Aerospace Corp., El Segundo, CA, May 1978, 30 pp.

UAG-67 IONOSPHERIC D-REGION PROFILE DATA BASE, A COLLECTION OF COMPUTER-ACCESSIBLE EXPERIMENTAL PROFILES OF THE D AND LOWER E REGIONS, by L.F. McNamara, Ionospheric Prediction Service, Sydney, Australia, August 1978, 30 pp, $1.50 (microfiche only).

UAG-68 A COMPARATIVE STUDY OF METHODS OF ELECTRON DENSITY PROFILE ANALYSIS, by L.F. McNamara, Ionospheric Prediction Service, Sydney, Australia, August 1978, 30 pp, $1.50 (microfiche only).

UAG-69 SELECTED DISTURBED D-REGION ELECTRON DENSITY PROFILES. THEIR RELATION TO THE UNDISTURBED D REGION, by L.F. McNamara, Ionospheric Prediction Service, Sydney, Australia, October 1978, 50 pp, $1.50 (microfiche only).

UAG-70 ANNOTATED ATLAS OF H-ALPHA SYNOPTIC CHARTS FOR SOLAR CYCLE 20 (1964-1974) CARRINGTON SOLAR ROTATIONS 1487-1616, by Patrick S. McIntosh, NOAA Space Environment Laboratory, Boulder, CO, February 1979, 327 pp, $3.50.

UAG-71 MAGNETIC POTENTIAL PLOTS OVER THE NORTHERN HEMISPHERE FOR 26-28 MARCH 1976, A.D. Richmond, NOAA Space Environment Laboratory, Boulder, CO; H.W. Kroehl, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO; M.A. Henning, Lockheed Missiles and Space Co., Aurora, CO; and Y. Kamide, Kyoto Sangyo University, Kyoto, Japan, April 1979, 118 pp, $1.50.

UAG-72 ENERGY RELEASE IN SOLAR FLARES, PROCEEDINGS OF THE WORKSHOP ON ENERGY RELEASE IN FLARES, 26 FEBRUARY - 1 MARCH 1979, CAMBRIDGE, MASSACHUSETTS, U.S.A., edited by David M. Rust, American Science and Engineering, Inc., Cambridge, MA; and A. Gordon Emslie, Harvard-Smithsonian Center for Astrophysics, Cambridge, MA, July 1979, 68 pp, $1.50 (microfiche only).

UAG-73 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(11-12) FOR JANUARY - JUNE 1975, by Joe Haskell Allen, Carl C. Abston, J.E. Salazar and J.A. McKinnon, National Geophysical and Solar-Terrestrial Data Center, NOAA, Boulder, CO, August 1979, 114 pp, $1.75 (microfiche only).

UAG-74 ATS-6 RADIO BEACON ELECTRON CONTENT MEASUREMENTS AT OOTACAMUND, INDIA, OCTOBER - JULY 1976, by S.D. Bouwer, K. Davies, R.F. Donnelly, R.N. Grubb, J.E. Jones and J.H. Taylor, NOAA Space Environment Laboratory, Boulder, CO; and R.G. Rastogi, M.R. Deshpande, H. Chandra and G. Sethia, Physical Research Laboratory, Ahmedabad, India, March 1980, 58 pp, $2.50.

UAG-75 THE ALASKA IMS MERIDIAN CHAIN: MAGNETIC VARIATIONS FOR 9 MARCH - 27 APRIL 1978, by H.W. Kroehl and G.P. Kosinski, National Geophysical and Solar-Terrestrial Data Center, Boulder, CO; S.-I. Akasofu, G.J. Romick, C.E. Campbell and G.K. Corrick, University of Alaska, Fairbanks, AK; and C.E. Hornback and A.M. Gray, NOAA Space Environment Laboratory, Boulder, CO, June 1980, 107 pp, $3.00.
UAG-76 AURORAL ELECTROJET MAGNETIC ACTIVITY INDICES AE(12) FOR JULY - DECEMBER 1975, by Joe Haskell Allen, Carl C. Abston, J.E. Salazar and J.A. McKinnon, National Geophysical and Solar-Terrestrial Data Center, NOAA, Boulder, CO, August 1980, 116 pp, $2.50.

UAG-77 SYNOPTIC SOLAR MAGNETIC FIELD MAPS FOR THE INTERVAL INCLUDING CARRINGTON ROTATIONS 1601-1680, MAY 5, 1973 - APRIL 26, 1979, by J. Harvey, B. Gillespie, P. Miedaner and C. Slaughter, Kitt Peak National Observatory, Tucson, AZ, August 1980, 66 pp, $2.50.

UAG-78 THE EQUATORIAL LATITUDE OF AURORAL ACTIVITY DURING 1972-1977, by N.R. Sheeley, Jr. and R.A. Howard, E.O. Hulbert Center for Space Research, U.S. Naval Research Laboratory, Washington, DC and B.S. Dandekar, Air Force Geophysics Laboratory, Hanscom AFB, MA, October 1980, 61 pp, $3.00.

UAG-79 SOLAR OBSERVATIONS DURING SKYLAB, APRIL 1973 - FEBRUARY 1974, I. CORONAL X-RAY STRUCTURE, II. SOLAR FLARE ACTIVITY, by J.M. Hanson, University of Michigan, Ann Arbor, MI; and E.C. Roelof and R.E. Gold, The Johns Hopkins University, Laurel, MD, December 1980, 43 pp, $2.50.

UAG-80 EXPERIMENTAL COMPREHENSIVE SOLAR FLARE INDICES FOR 'MAJOR' AND CERTAIN LESSER FLARES, 1975-1979, compiled by Helen W. Dodson and E. Ruth Hedeman, The Johns Hopkins University, Laurel, MD, July 1981, 33 pp, $2.00.

UAG-81 EVOLUTIONARY CHARTS OF SOLAR ACTIVITY (CALCIUM PLAGES) AS FUNCTIONS OF HELIOGRAPHIC LONGITUDE AND TIME, 1964-1979, by E. Ruth Hedeman, Helen W. Dodson and Edmond C. Roelof, The Johns Hopkins University, Laurel, MD, August 1981, 103 pp, $4.00.

UAG-82 INTERNATIONAL REFERENCE IONOSPHERE - IRI 79, edited by J. Virginia Lincoln and Raymond O. Conkright, National Geophysical and Solar-Terrestrial Data Center, NOAA, Boulder, CO, November 1981, 243 pp, $4.50.

UAG-83 SOLAR-GEOPHYSICAL ACTIVITY REPORTS FOR SEPTEMBER 7-24, 1977 AND NOVEMBER 22, 1977, Parts 1 and 2, compiled by John A. McKinnon and J. Virginia Lincoln, World Data Center A for Solar-Terrestrial Physics, NOAA, Boulder, CO, February 1982, 553 pp, $10.00.

UAG-84 CATALOG OF AURORAL RADIO ABSORPTION DURING 1976-1979 AT ABISKO, SWEDEN, by J.K. Hargreaves, C.M. Taylor and J.M. Penman, Environmental Sciences Department, University of Lancaster, Lancaster, UK, July 1982, 69 pp, $3.00.

UAG-85 CATALOG OF IONOSPHERE VERTICAL SOUNDINGS DATA, edited by Raymond O. Conkright and H. Irene Brophy, National Geophysical Data Center, NOAA, Boulder, CO, July 1982, 107 pp. Supersedes UAG-54.

UAG-86 INTERNATIONAL CATALOG OF GEOMAGNETIC DATA, compiled by J.H. Allen and C.C. Abston, National Geophysical Data Center, NOAA, Boulder, CO; E.P. Kharin and N.E. Papitashvili, Academy of Sciences of the USSR, World Data Center B2, Moscow, USSR; and V.O. Papitashvili, IZMIRAN, Moscow Region, USSR, November 1982, 191 pp. Supersedes UAG-35 and 49.

UAG-87 CHANGES IN THE GLOBAL ELECTRIC FIELDS AND CURRENTS FOR MARCH 17-19, 1978, FROM SIX IMS MERIDIAN CHAINS OF MAGNETOMETERS, by Y. Kamide, Kyoto Sangyo University, Kyoto, Japan; H.W. Kroehl, National Geophysical Data Center, NOAA, Boulder, CO; and A.D. Richmond, NOAA Space Environment Laboratory, Boulder, CO, November 1982, 102 pp, $3.50.

UAG-88 NUMERICAL MODELING OF IONOSPHERIC PARAMETERS FROM GLOBAL IMS MAGNETOMETER DATA FOR THE CDAW-6 INTERVALS, by Y. Kamide, Kyoto Sangyo University, Kyoto, Japan; H.W. Kroehl, National Geophysical Data Center, NOAA, Boulder, CO; and B.A. Hausman, National Geophysical Data Center, NOAA, Boulder, CO, November 1983, 197 pp, $4.00.

UAG-89 ATMOSPHERIC HANDBOOK: ATMOSPHERIC DATA TABLES AVAILABLE ON COMPUTER TAPE, by V.E. Derr, NOAA Environmental Research Laboratories, Boulder, CO, July 1984, 56 pp.

UAG-90 EXPERIENCE WITH PROPOSED IMPROVEMENTS OF THE INTERNATIONAL REFERENCE IONOSPHERE (IRI): CONTRIBUTED PAPERS, MAINLY FROM THE URSI-COSPAR WORKSHOP HELD IN BUDAPEST IN 1980, edited by K. Rawer, University of Freiburg, Federal Republic of Germany, and C.M. Minnis, former Secretary General of URSI, Brussels, Belgium, May 1984, 233 pp, $6.00.

UAG-91 COMBINED CATALOG OF IONOSPHERE VERTICAL SOUNDINGS DATA, compiled by Raymond O. Conkright and Marcus O. Ertle, National Geophysical Data Center, NOAA, Boulder, CO; December 1984, 174 pp.

UAG-92 INTERNATIONAL CATALOG OF GEOMAGNETIC DATA, compiled by C.C. Abston, National Geophysical Data Center, NOAA, Boulder, CO; N.E. Papitashvili, Academy of Sciences of the USSR, World Data Center B2, Moscow, USSR; and V.O. Papitashvili, IZMIRAN, Moscow Region, USSR, August 1985, 291 pp. Supersedes UAG-35, -49, and -86.

UAG-93 IONOGRAM ANALYSIS WITH THE GENERALISED PROGRAM POLAN, by J.E. Titheridge, University of Auckland, New Zealand, December 1985, 194 pp.