-
Notifications
You must be signed in to change notification settings - Fork 9
CDM Server ‐ Process of the flight Path
We get an aircraft from VATSIM datafeed:
"flight_plan": {
"flight_rules": "I",
"aircraft": "A320/M-SDE2E3FGIJ1LORWXYZ/HB1",
"aircraft_faa": "A320/L",
"aircraft_short": "A320",
"departure": "EDDF",
"arrival": "LPMA",
"alternate": "GCLP",
"cruise_tas": "445",
"altitude": "35000",
"deptime": "0955",
"enroute_time": "0342",
"fuel_time": "0521",
"remarks": "PBN/A1B1C1D1O1S2 NAV/RNP2 SUR/A2 DOF/241115 REG/DAIUT EET/EDUU0015 EBUR0017 LFFF0022 LECM0135 LPPC0204 CODE/3C66B4 OPR/OCN PER/C RVR/075 RMK/TCAS /V/",
"route": "ULKIG3L/18 ULKIG Y180 DIK UN857 GIMER UT300 BSN/N0448F370 UT300 PON UN872 ERIGA UN741 AZFIC DCT LOTEE/N0449F390 DCT AGADO DCT ASMAR DCT VERAM DCT TELMU DCT PECKY DCT LIDRO",
"revision_id": 5,
"assigned_transponder": "2007"
}
First checks to proceed with the calculation:
- FPL is IFR? - Expected YES.
- FPL departs or arrives from specied zone
['BI','EB','ED','EE','EF','EG','EI','EH','EK','EL','EN','EP','ES','ET','EV','EY','GC','LE','LF','LG','LC','LH','LI','LJ','LK','LM','LO','LP','LS','LZ','LD','LT','DA','DC','GM',]
- Expected YES.
ITEM15 is processed
EDDF ULKIG Y180 DIK UN857 GIMER UT300 BSN/N0448F370 UT300 PON UN872 ERIGA UN741 AZFIC DCT LOTEE/N0449F390 DCT AGADO DCT ASMAR DCT VERAM DCT TELMU DCT PECKY DCT LIDRO LPMA
- We calculate based on the time EOBT + Taxi time or if existing TOBT, TOBT + Taxi time (Taxi time is 15 if not sent by the CDM - During later calculations it will be updated).
- Fetch the route based on waypoints and airways. Keeping speed and level changes.
- Create a point every minute. Starting at the constant Speed and level (
cruise_tas
,altitude
). In case of a level/speed change the speed/level is changed accordinlgy to continue the creation of the following points. - Create a climb and descent path based on the first 20 minutes of flight (If flight is less than 20 min, the 15 is used, otherwise 10, and last 5).
- Use 300kts from the depAirport until the first waypoint (direct path) and 270kts from last waypoint until the airport (direct path).
- With this information, we then get all the airspaces data (https://raw.githubusercontent.com/rpuig2001/Capacity-Availability-Document-CDM/main/airspaces.geojson) and we can see at which point we enter and exit each airspace.
With all the above we can calculate a path
{
"airspaces": [
{
"airspace": "EDGG-RUD",
"capacity": 10,
"entryTime": "1021",
"exitTime": "1028",
"reason": ""
},
{
"airspace": "EDUU-NTM",
"capacity": 10,
"entryTime": "1028",
"exitTime": "1029",
"reason": ""
},
{
"airspace": "EBBU-H",
"capacity": 50,
"entryTime": "1030",
"exitTime": "1037",
"reason": ""
},
{
"airspace": "LFEE-NH",
"capacity": 30,
"entryTime": "1037",
"exitTime": "1055",
"reason": ""
},
{
"airspace": "LFRR-EH",
"capacity": 20,
"entryTime": "1055",
"exitTime": "1112",
"reason": ""
},
{
"airspace": "LFRR-NH",
"capacity": 20,
"entryTime": "1112",
"exitTime": "1154",
"reason": ""
},
{
"airspace": "LECM-R1",
"capacity": 999,
"entryTime": "1154",
"exitTime": "1223",
"reason": ""
},
{
"airspace": "LECM-SAI",
"capacity": 15,
"entryTime": "1154",
"exitTime": "1223",
"reason": ""
},
{
"airspace": "LPPC-D",
"capacity": 10,
"entryTime": "1223",
"exitTime": "1249",
"reason": ""
},
{
"airspace": "LPPC-V",
"capacity": 10,
"entryTime": "1249",
"exitTime": "1314",
"reason": ""
},
{
"airspace": "LPPC-I",
"capacity": 15,
"entryTime": "1314",
"exitTime": "1348",
"reason": ""
}
]
}
In case the path could not be correctly calculated for any internal issue, then the ETA will be calculated based on the departure time and we increase the flight time to get the ETA. Otherwise, if path can be generated correctly, then the calculated ETA is used.
In case, the pilot updates the flightplan with new route, new depAirport or new arrAirport, the processing will be re-calculated.
Automatic complete processings run every 2 minutes.