How are airport SOPs implemented in BeyondATC
Standard Operating Procedures (SOPs) in BeyondATC allow each airport to dynamically select the most appropriate arrival and departure runways based on real-world-like logic. These procedures replicate local preferences and constraints while adapting to live weather, time, and traffic conditions.
🧠 How the SOP system works
The SOP system evaluates a set of flows—predefined configurations that dictate which runways are used for arrivals and departures under certain conditions. The system continuously checks for the best matching flow based on the following criteria:
- Wind direction and speed
- Time of day
- Day of the week
- Aircraft type
Once a match is found, BeyondATC applies the runways defined in that flow for all arriving and departing traffic.
📦 Flow structure
Each SOP flow is defined using the following parameters:
Parameter | Description |
---|---|
name |
A label for the flow (used internally and for debugging/logging) |
day_range |
Days when the flow is active (0 = Sunday , ..., 6 = Saturday ) |
time_range |
Time range during which the flow is valid (in 24h format) |
wind_dir |
Wind direction range |
wind_speed |
Acceptable wind speed range (in knots) |
arrival_runways |
Runways to be used for arrivals |
departing_runways |
Runways to be used for departures |
aircraft_type |
If specified, applies only to these types (e.g. heavy_jet , light_jet ) |
📝 The more specific the flow, the higher its priority when evaluating.
✈️ Aircraft Categories
SOPs can define restrictions for specific types of aircraft. The following categories are recognized:
light_prop
medium_prop
heavy_prop
light_turboprop
medium_turboprop
light_jet
medium_jet
heavy_jet
super_jet
880 individual aircraft types (i.e. different icao codes) are all put into one of those categories. This is especially useful when an airport restricts certain runways to lighter or heavier aircraft (e.g., at LSZH, RWY 16 is used only by heavy and super jets for departure).
💡 Example: How it all comes together
Let’s say these two flows are defined at the airport:
{
"name": "North Concept",
"day_range": [1, 2, 3, 4, 5],
"time_range": ["07:00", "21:00"],
"wind_speed": [0, 6],
"wind_dir": [0, 360],
"arrival_runways": ["14"],
"departing_runways": ["28"]
}
{
"name": "South Wind Operations",
"wind_speed": [6, 100],
"wind_dir": [120, 210],
"arrival_runways": ["34"],
"departing_runways": ["28"],
"aircraft_type": []
}
In this case:
- If winds are calm, it will choose a the standard flow (North concept) for low-wind situations during the defined day and time. This can result in a low tailwind until the wind speed exceed the low wind treshold set for this airport (6kt in this case)
- If the wind is from 180° at 14 kt, it will switch to the South Wind Operations, which will now have the priority as all its criteria are met.
⚠️ Limitations & Real-World Differences
While BeyondATC SOPs are designed to closely mirror real-world procedures, there are a few limitations to keep in mind:
- Live ATC decisions can change runway usage in real life on short notice due to traffic volume, noise abatement, runway closures, or airspace coordination. BeyondATC does not currently replicate those operational decisions dynamically.
- Weather modeling in BeyondATC relies on available METAR data and simplified interpretation, within the limitation of the data that is available. Real controllers might anticipate wind shifts or apply runway changes more proactively.
- Runway preferences may vary between airlines, time slots, or for sequencing efficiency. BeyondATC uses standardized logic, not airline-specific procedures.
- Special operations like runway attribution according to the departure/arrival direction are currently not supported.
These SOP flows are a best-effort simulation of reality, optimized for a smooth user experience and realistic traffic flow — but they won’t always match what’s happening at the actual airport in real time. Keep in mind that the goal of BeyondATC is to provide a realistic experience within the simulator's constraints, rather than replicate real-time airport operations, where ATC controllers make decisions based on a much broader range of factors.
If you believe a SOP is wrong or could be improved, please share your log file and suggestion in our support channel on Discord. Please note that without a log file, we won't be able to review your suggestion/bug report.
List of airports with custom operations
Continent | Country | Airports | |
North America | |||
Canada | CYEG, CYHZ, CYOW, CYUL, CYVR, CYWG, CYYC, CYYZ | ||
USA | KABQ, KAFW, KASE, KATL, KAUS, KAVL, KBDL, KBFI, KBFL, KBNA, KBOI, KBOS, KBUF, KBUR, KBWI, KCID, KCLE, KCLT, KCMA, KCNO, KCRP, KCRQ, KCVG, KDAB, KDAL, KDCA, KDEN, KDFW, KDTW, KEGE, KELP, KEUG, KEWR, KFAR, KFAT, KFLL, KGEG, KGFK, KGJT, KGSP, KHOU, KHPN, KIAD, KIAH, KILM, KIND, KJAN, KJAX, KJFK, KLAS, KLAX, KLGA, KLGB, KMCI, KMCO, KMDT, KMDW, KMEM, KMIA, KMKE, KMSP, KMSY, KMYR, KOAK, KOKC, KOMA, KONT, KORD, KORF, KPAE, KPBI, KPDX, KPHL, KPHX, KPIT, KPVD, KRDU, KRIC, KRNO, KRNT, KROC, KRSW, KSAN, KSAT, KSAV, KSBA, KSBP, KSDF, KSEA, KSFO, KSGF, KSJC, KSLC, KSMF, KSMX, KSNA, KSTL, KSUX, KSYR, KTCM, KTEB, KTIW, KTLH, KTPA, KTUS, KVNY | ||
Mexico | MDPC, MDPP, MDSD, MHLM, MHTG, MMGL, MMMX, MMMY, MMPR, MMSM, MMTJ, MMUN, MNMG, MPTO, MRLB, MROC, MYNN | ||
Africa | |||
Algeria | DAAG | ||
Tunisia | DTTA | ||
South Africa | FACT, FAOR | ||
Madagascar | FMEE | ||
Ethiopia | HAAB | ||
Egypt | HECA | ||
Kenya | HKJK, HKMO | ||
Europe | |||
Belgium | EBBR, EBCI, EBLG | ||
Germany | EDDB, EDDF, EDDG, EDDH, EDDK, EDDL, EDDM, EDDS, EDDV, EDXW | ||
UK | EGAA, EGAC, EGBB, EGCC, EGGD, EGGP, EGGW, EGHI, EGJB, EGJJ, EGKK, EGLL, EGNT, EGNX, EGPF, EGPH, EGPK, EGSS, EGTE | ||
Netherlands | EHAM, EHGG | ||
Ireland | EICK, EIDW, EINN | ||
Denmark | EKCH, EKYT | ||
Latvia | EVRA | ||
Spain | LEAL, LEBB, LEBL, LEBZ, LEGR, LEMD, LEMG, LEPA, LERS, LESO, LEST, LESU, LEVC, LEVT, LEZG, LEZL | ||
France | LFBD, LFBE, LFBO, LFBZ, LFCK, LFKC, LFKJ, LFLC, LFLL, LFLS, LFML, LFMN, LFMP, LFMT, LFPB, LFPG, LFPO, LFQQ, LFRN, LFRS, LFSB, LFST, LFTW | ||
Greece | LGAV, LGIR, LGKL, LGKO, LGKR, LGKV, LGMK, LGPZ, LGRP, LGSA, LGSM, LGSR, LGTS, LGZA | ||
Hungary | LHBP | ||
Italy | LIBD, LIBP, LIBR, LICB, LICJ, LICT, LIMC, LIME, LIMF, LIMJ, LIML, LIMP, LIMZ, LIPE, LIPH, LIPR, LIPX, LIPY, LIPZ, LIRA, LIRF, LIRI, LIRN, LIRP, LIRQ, LIRZ | ||
Czech Republic | LKPR | ||
Malta | LMML | ||
Portugal | LPPR, LPPT | ||
Switzerland | LSGG, LSGS, LSZA, LSZB, LSZH | ||
Turkey | LTAC, LTAI, LTAU, LTBJ, LTBS, LTCC, LTCG, LTCI, LTFE, LTFG, LTFH, LTFJ, LTFM | ||
Oceania | |||
Fiji | NFFN | ||
New Zealand | NSFA, NSTU | ||
Australia | YMEN, YMML | ||
Asia | |||
Bahrain | OBBI | ||
Saudi Arabia | OEJN, OERK | ||
Iran | OIIE | ||
Kuwait | OKKK | ||
Lebanon | OLBA | ||
UAE | OMAA, OMDB, OMSJ | ||
Pakistan | OPIS | ||
Taiwan | RCSS, RCTP | ||
Japan | RJAA, RJBB, RJCC, RJCH, RJCO, RJFF, RJFK, RJFM, RJFO, RJFT, RJFU, RJGG, RJNK, RJOA, RJOB, RJOH, RJOO, RJOS, RJOT, RJSN, RJSS, RJTT | ||
South Korea | RKJJ, RKPC, RKPK, RKSI, RKSS, RKTN, RKTU | ||
Philippines | RPLL | ||
Nepal | VNKT, VNLK, VNPL | ||
India | VOBL, VOHS, VOMM, VOVZ | ||
Thailand | VTBD, VTBS, VTSP | ||
Vietnam | VVDN, VVNB, VVTS | ||
Indonesia | WIDD, WIHH, WIII, WIMM | ||
Malaysia | WMKK, WMKL | ||
China | ZSOF, ZSPD | ||
South America | |||
Argentina | SAAR, SACO, SAEZ, SASA, SASJ, SAWH | ||
Brazil | SBAR, SBBE, SBBI, SBBR, SBCF, SBCG, SBCT, SBCY, SBEG, SBFI, SBFL, SBFZ, SBGL, SBGO, SBGR, SBJP, SBJR, SBJV, SBKP, SBMN, SBMO, SBNF, SBNT, SBPA, SBPS, SBPV, SBRF, SBRJ, SBRP, SBSG, SBSP, SBSV, SBTE, SBVT | ||
Chile | SCCI, SCEL, SCFA, SCIE | ||
Ecuador | SEGU, SEQM | ||
Colombia | SKBO, SKCG, SKMD, SKRG | ||
Peru | SPJC, SPZO |