---
title: "Perform forward ATM calculation"
method: POST
path: "/api/v1/atm/forward"
tags: ["Auroral Transport Model (ATM)"]
---

# Perform forward ATM calculation

`POST /api/v1/atm/forward`

## Request

- Base URL: `https://api.phys.ucalgary.ca` (the document declares no server; this is the origin it was published from)
- URL: `https://api.phys.ucalgary.ca/api/v1/atm/forward`
- Auth: none declared
- TypeScript: <https://skmtc.dev/ucalgary/apis/ucalgary-space-remote-sensing-api/docs/api/v1/atm/forward/post.ts> (a function with typed inputs; its response is checked against the schema)

Perform a forward calculation using **VERSION 1** of the TREx Auroral Transport Model and the supplied 
input parameters.

Input notes:
  - timestamp
    - timestamp is expected to be in UTC, and is valid for any value up to the end of the previous day
    - the 'Z' character at the end of the timestamp is optional, and will be ignored if it is supplied
  - latitude and longitude are to be in geodetic coordinates (-90 to 90 lat, -180 to 180 lon)
  - maxwellian_characteristic_energy must be specified if the maxwellian_energy_flux is not 0
  - gaussian_peak_energy must be specified if the gaussian_energy_flux is not 0
  - gaussian_spectral_width must be specified if the gaussian_energy_flux is not 0
  - valid values for nrlmsis_model_version are '00' and '2.0'
  - The ATM model is 1D and time-independent. However, the optional parameters timescale_auroral and 
    timescale_transport provide limited support for time-dependent and transport process.
      - timescale_auroral (T0) is the duration of the precipitation; default value is 600 sec
      - timescale_transport is defined by L/v0, in which L is the dimension of the auroral structure, 
        and v0 is the cross-structure drift speed. Default value is 600 sec.
      - the model quasi-analytically solves the continuity equation under a square input (with time 
        duration T0 and spatial width L) input of precipitation. The initial/boundary conditions are 
        given by IRI. The output yields the mean density/VER over [0-L] at time T0.
  - units
    - timescale parameters: seconds
    - maxwellian energy flux: erg/cm2/s
    - maxwellian characteristic energy: eV
    - gaussian energy flux: erg/cm2/s
    - gaussian peak energy: eV
    - gaussian spectral width: eV
  - custom spectrum
    - energy in eV, flux in 1/cm2/s/eV
    - energy and flux arrays must be the same length
  - by default requests are cached; use the 'no_cache' parameter to disable this functionality

Output notes:
  - output parameter of the request are toggles the enable/disable each field's inclusion in the response
  - all output parameters are false by default
  - altitude is in kilometers
  - emission data: 1-D array -- volume emission rate (1/cm^3/s)
  - plasma electron density: 1-D array -- density (cm^-3)
  - plasma O2+ density: 1-D array -- density (cm^-3)
  - plasma NO+ density: 1-D array -- density (cm^-3)
  - plasma O+ density: 1-D array -- density (cm^-3)
  - plasma ionisation rate: 1-D array -- ionisation rate (1/cm^3/s)
  - plasma electron temperature: 1-D array -- temperature (K)
  - plasma ion temperature: 1-D array -- temperature (K)
  - plasma peterson conductivity: 1-D array -- conductivity (S/m)
  - plasma hall conductivity: 1-D array -- conductivity (S/m)
  - neutral O2 density: 1-D array -- density (cm^-3)
  - neutral O density: 1-D array -- density (cm^-3)
  - neutral N2 density: 1-D array -- density (cm^-3)
  - neutral N density: 1-D array -- density (cm^-3)
  - neutral temperature: 1-D array -- temperature (K)

## Request body

- SrcAtmV1SchemasForwardATMForwardRequest
  - `atm_model_version` '1.0'
  - `timestamp` string, date-time, required
  - `geodetic_latitude` number, required
  - `geodetic_longitude` number, required
  - `maxwellian_energy_flux` number
  - `gaussian_energy_flux` number
  - `maxwellian_characteristic_energy` number
  - `gaussian_peak_energy` number
  - `gaussian_spectral_width` number
  - `nrlmsis_model_version` '00' | '2.0'
  - `oxygen_correction_factor` number
  - `timescale_auroral` integer
  - `timescale_transport` integer
  - `custom_spectrum` ATMForwardCustomSpectrum
    - `energy` number[], required
    - `flux` number[], required
  - `output` SrcAtmV1SchemasForwardATMForwardRequestOutputFlags
    - `height_integrated_rayleighs_4278` boolean
    - `height_integrated_rayleighs_5577` boolean
    - `height_integrated_rayleighs_6300` boolean
    - `height_integrated_rayleighs_8446` boolean
    - `height_integrated_rayleighs_lbh` boolean
    - `height_integrated_rayleighs_1304` boolean
    - `height_integrated_rayleighs_1356` boolean
    - `altitudes` boolean
    - `emission_4278` boolean
    - `emission_5577` boolean
    - `emission_6300` boolean
    - `emission_8446` boolean
    - `emission_lbh` boolean
    - `emission_1304` boolean
    - `emission_1356` boolean
    - `plasma_electron_density` boolean
    - `plasma_o2plus_density` boolean
    - `plasma_oplus_density` boolean
    - `plasma_noplus_density` boolean
    - `plasma_ionisation_rate` boolean
    - `plasma_electron_temperature` boolean
    - `plasma_ion_temperature` boolean
    - `plasma_pederson_conductivity` boolean
    - `plasma_hall_conductivity` boolean
    - `neutral_o2_density` boolean
    - `neutral_o_density` boolean
    - `neutral_n2_density` boolean
    - `neutral_n_density` boolean
    - `neutral_temperature` boolean
  - `no_cache` boolean

## Response `200`

Calculated outputs

- SrcAtmV1SchemasForwardATMForwardResponse
  - `data` SrcAtmV1SchemasForwardATMForwardResponseData, required
    - `height_integrated_rayleighs_4278` number
    - `height_integrated_rayleighs_5577` number
    - `height_integrated_rayleighs_6300` number
    - `height_integrated_rayleighs_8446` number
    - `height_integrated_rayleighs_lbh` number
    - `height_integrated_rayleighs_1304` number
    - `height_integrated_rayleighs_1356` number
    - `altitudes` unknown[]
      - unknown
    - `emission_4278` unknown[]
      - unknown
    - `emission_5577` unknown[]
      - unknown
    - `emission_6300` unknown[]
      - unknown
    - `emission_8446` unknown[]
      - unknown
    - `emission_lbh` unknown[]
      - unknown
    - `emission_1304` unknown[]
      - unknown
    - `emission_1356` unknown[]
      - unknown
    - `plasma_electron_density` unknown[]
      - unknown
    - `plasma_o2plus_density` unknown[]
      - unknown
    - `plasma_noplus_density` unknown[]
      - unknown
    - `plasma_oplus_density` unknown[]
      - unknown
    - `plasma_ionisation_rate` unknown[]
      - unknown
    - `plasma_electron_temperature` unknown[]
      - unknown
    - `plasma_ion_temperature` unknown[]
      - unknown
    - `plasma_pederson_conductivity` unknown[]
      - unknown
    - `plasma_hall_conductivity` unknown[]
      - unknown
    - `neutral_o2_density` unknown[]
      - unknown
    - `neutral_o_density` unknown[]
      - unknown
    - `neutral_n2_density` unknown[]
      - unknown
    - `neutral_n_density` unknown[]
      - unknown
    - `neutral_temperature` unknown[]
      - unknown
  - `request` SrcAtmV1SchemasForwardATMForwardRequest, required
    - `atm_model_version` '1.0'
    - `timestamp` string, date-time, required
    - `geodetic_latitude` number, required
    - `geodetic_longitude` number, required
    - `maxwellian_energy_flux` number
    - `gaussian_energy_flux` number
    - `maxwellian_characteristic_energy` number
    - `gaussian_peak_energy` number
    - `gaussian_spectral_width` number
    - `nrlmsis_model_version` '00' | '2.0'
    - `oxygen_correction_factor` number
    - `timescale_auroral` integer
    - `timescale_transport` integer
    - `custom_spectrum` ATMForwardCustomSpectrum
      - `energy` number[], required
      - `flux` number[], required
    - `output` SrcAtmV1SchemasForwardATMForwardRequestOutputFlags
      - `height_integrated_rayleighs_4278` boolean
      - `height_integrated_rayleighs_5577` boolean
      - `height_integrated_rayleighs_6300` boolean
      - `height_integrated_rayleighs_8446` boolean
      - `height_integrated_rayleighs_lbh` boolean
      - `height_integrated_rayleighs_1304` boolean
      - `height_integrated_rayleighs_1356` boolean
      - `altitudes` boolean
      - `emission_4278` boolean
      - `emission_5577` boolean
      - `emission_6300` boolean
      - `emission_8446` boolean
      - `emission_lbh` boolean
      - `emission_1304` boolean
      - `emission_1356` boolean
      - `plasma_electron_density` boolean
      - `plasma_o2plus_density` boolean
      - `plasma_oplus_density` boolean
      - `plasma_noplus_density` boolean
      - `plasma_ionisation_rate` boolean
      - `plasma_electron_temperature` boolean
      - `plasma_ion_temperature` boolean
      - `plasma_pederson_conductivity` boolean
      - `plasma_hall_conductivity` boolean
      - `neutral_o2_density` boolean
      - `neutral_o_density` boolean
      - `neutral_n2_density` boolean
      - `neutral_n_density` boolean
      - `neutral_temperature` boolean
    - `no_cache` boolean
  - `calculation_duration_ms` number, required

## Other responses

- `400`: Problematic request made
- `422`: Validation Error
- `500`: Data generation error

---

[API](https://skmtc.dev/ucalgary/apis/ucalgary-space-remote-sensing-api.md) - [All operations](https://skmtc.dev/ucalgary/apis/ucalgary-space-remote-sensing-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ucalgary/apis/ucalgary-space-remote-sensing-api/revisions/e451a425b5eb?raw)
