Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ntia/p528
U.S. reference implementation of Recommendation ITU-R P.528 providing propagation path loss predictions for aeronautical mobile and radionavigation services using the VHF, UHF, and SHF bands
https://github.com/ntia/p528
cpp csharp itu propagation
Last synced: 6 days ago
JSON representation
U.S. reference implementation of Recommendation ITU-R P.528 providing propagation path loss predictions for aeronautical mobile and radionavigation services using the VHF, UHF, and SHF bands
- Host: GitHub
- URL: https://github.com/ntia/p528
- Owner: NTIA
- License: other
- Created: 2019-03-08T15:10:32.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-22T17:43:35.000Z (3 months ago)
- Last Synced: 2024-08-22T19:58:45.000Z (3 months ago)
- Topics: cpp, csharp, itu, propagation
- Language: C++
- Homepage:
- Size: 932 KB
- Stars: 23
- Watchers: 6
- Forks: 13
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.cff
Awesome Lists containing this project
README
# Recommendation ITU-R P.528-5 - U.S. Reference Implementation #
Persistent Identifier: [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5081071.svg)](https://doi.org/10.5281/zenodo.5081071)
This code repository contains the U.S. Reference Software Implementation of Recommendation ITU-R P.528. This Recommendation contains a method for predicting basic transmission loss in the frequency range 100-30 000 MHz for aeronautical services. The software implements Annex 2 of Rec P.528, the Step-by-Step method to computing propagation loss for air-to-ground paths.
Companion software ([p528-gui](https://github.com/NTIA/p528-gui)) provides a Graphical User Interface (GUI) that can be used with this software implementation.
## Inputs ##
| Variable | Type | Units | Limits | Description |
|-------------------|--------|-------|--------------|--------------|
| `d__km` | double | km | 0 <= `d__km` | Great circle path distance between terminals |
| `h_1__meter` | double | meter | 1.5 <= `h_1__meter` <= 20 000 | Height of the low terminal |
| `h_2__meter` | double | meter | 1.5 <= `h_2__meter` <= 20 000 | Height of the high terminal |
| `f__mhz` | double | MHz | 100 <= `f__mhz` <= 30 000 | Frequency |
| `T_pol` | int | | | Polarization
- 0 = Horizontal
- 1 = Vertical
| `time` | double | | 1 <= `time` <= 99 | Time percentage |
## Outputs ##
Outputs to P.528 are contained within a defined `Results` structure.
| Variable | Type | Units | Description |
|------------|--------|-------|-------------|
| `d__km` | double | km | Great circle path distance. Could be slightly different than specified in input variable if within LOS region |
| `A__db` | double | dB | Basic transmission loss |
| `A_fs__db` | double | dB | Free space basic transmission loss |
| `A_a__db` | double | dB | Median atmospheric absorption loss |
| `theta_h1__rad` | double | rad | Elevation angle of the ray at the low terminal |
| `propagation_mode` | int | | Mode of propagation
- 1 = Line of Sight
- 2 = Diffraction
- 3 = Troposcatter
| `warnings` | int | | Warning flags |
## Error Codes and Warning Flags ##
P.528 supports a defined list of error codes and warning flags. A complete list can be found [here](ERRORS_AND_WARNINGS.md).
## Example Values ##
The below table includes a select set of example inputs and outputs for testing purposes. The [P.528 CSV data files](https://www.itu.int/rec/R-REC-P.528/en) contain an extensive set of validation example values.
| `d__km` | `h_1__meter` | `h_2__meter` | `f__mhz` | `T_pol` | `time` | `A__db` |
| --------|--------------|--------------|----------|---------|--------|---------|
| 15 | 10 | 1 000 | 500 | 0 | 50 | 110.0 |
| 100 | 100 | 15 000 | 3 600 | 0 | 90 | 151.6 |
| 1 500 | 15 | 10 000 | 5 700 | 0 | 10 | 293.4 |
| 30 | 8 | 20 000 | 22 000 | 1 | 50 | 151.1 |
## Notes on Code Style ##
* In general, variables follow the naming convention in which a single underscore denotes a subscript (pseudo-LaTeX format), where a double underscore is followed by the units, i.e. h_1__meter.
* Variables are named to match their corresponding mathematical variables in the underlying Recommendation text.
* Wherever possible, equation numbers are provided. It is assumed that a user reviewing this source code would have a copy of the Recommendation's text available as a primary reference.
## Configure and Build ##
### C++ Software
The software is designed to be built into a DLL (or corresponding library for non-Windows systems). The source code can be built for any OS that supports the standard C++ libraries. A Visual Studio 2019 project file is provided for Windows users to support the build process and configuration.
### C#/.NET Wrapper Software
The .NET support of P.528 consists of a simple pass-through wrapper around the native DLL. It is compiled to target .NET Framework 4.8. Distribution and updates are provided through the published [NuGet package](https://github.com/NTIA/p528/packages).
## References ##
* [Recommendation ITU-R P.528](https://www.itu.int/rec/R-REC-P.528/en)
* [Rec ITU-R P.528 GUI](https://github.com/NTIA/p528-gui)
## Contact ##
For questions, contact Billy Kozma, [email protected]