Flight plan - ATR-20240830a

Contents

Flight plan - ATR-20240830a#

Flight plan#

  • The flight is planned to take off at 2024-08-30 19:00:00+00:00 UTC and land at 2024-08-30 22:30:00+00:00 UTC.

  • Flight plan designed to sample a predicted convergence line to the SE of Sal, oriented SSW-NNE and potentially coinciding with the trough of the African Easterly Wave. There appears to be a strong gradient in column water vapor.

  • Typical MAESTRO flight plan with legs in the subcloud layer, cloud base, and mid troposphere.

Hide code cell source
from orcestra.flightplan import sal, bco, LatLon, IntoCircle, path_preview, plot_cwv, plot_usurf
import matplotlib.pyplot as plt

from datetime import datetime
import intake

cat = intake.open_catalog("https://tcodata.mpimet.mpg.de/internal.yaml")

date_time = datetime(2024, 8, 28, 12, 0, 0)
date_time_str = date_time.strftime('%Y-%m-%d')
flight_time = datetime(2024, 8, 30, 18, 0, 0)

airport = sal
wp1 = LatLon(lat=16.204, lon=-22.5, label='wp1')
wp2 = LatLon(14.550, lon=-21.675, label='wp2')

path = [airport, wp1, wp2, wp1,airport]

ds = cat.HIFS(refdate=date_time_str, reftime=date_time.hour).to_dask()
cwv_flight_time = ds["tcwv"].sel(time=flight_time, method = "nearest")
ax = path_preview(path)
ax.set_extent([-26, -19, 12.5, 17.5])
plot_cwv(cwv_flight_time)
plt.title('COLUMN WATER VAPOR')

u_latest = ds["10u"].sel(time=flight_time, method = "nearest")
v_latest = ds["10v"].sel(time=flight_time, method = "nearest")
time_of_usurf = ds["time"].sel(time=flight_time, method = "nearest")
usurf_latest = (u_latest ** 2 + v_latest ** 2) ** (1/2)
# Plot the flight path
ax = path_preview(path)
# PLot the surface wind speed
ax.set_extent([-26, -19, 12.5, 17.5])
plot_usurf(usurf_latest,levels=[0, 3])
plt.title('SURFACE WIND SPEED')

import healpix as hp
import numpy as np
import xarray as xr
MESH_GRID_SIZE = 50
QUIVER_SKIP = 2
def wind_direction_plot(ds, u10m, v10m, ax):
    # lon_min, lon_max, lat_min, lat_max = ORCESTRA_DOMAIN
    lon_min, lon_max, lat_min, lat_max = -26, -18, 12, 19
    lon1 = np.linspace(lon_min, lon_max, MESH_GRID_SIZE)
    lat1 = np.linspace(lat_min, lat_max, MESH_GRID_SIZE)
    pix = xr.DataArray(
        hp.ang2pix(
            ds.crs.healpix_nside,
            *np.meshgrid(lon1, lat1),
            nest=True,
            lonlat=True,
        ),
        coords=(("lat1", lat1), ("lon1", lon1)),
    )
    Q0 = ax.quiver(
        lon1[::QUIVER_SKIP],
        lat1[::QUIVER_SKIP],
        u10m.isel(cell=pix)[::QUIVER_SKIP, ::QUIVER_SKIP],
        v10m.isel(cell=pix)[::QUIVER_SKIP, ::QUIVER_SKIP],
        color="gray",
        pivot="middle",
        scale_units="inches",
        width=0.003,
        scale=20,
    )
    ax.quiverkey(
        Q0,
        0.95,
        1.05,
        10,
        r"$10 \frac{m}{s}$",
        labelpos="E",
        coordinates="axes",
        animated=True,
    )

wind_direction_plot(ds,u_latest,v_latest,ax)
../_images/b0f7c2b494081fe248fe0d9a964d99e8c4b3da59100cda38dbfba34a233f0411.png ../_images/a8571911900110295f89b92d8dfca47846c34af7b851671d47f35d62a2071cae.png
Hide code cell source
import pandas as pd
from dataclasses import asdict

pd.DataFrame.from_records(map(asdict, path)).set_index("label")
lat lon fl time note
label
SAL 16.734488 -22.943974 0.0 None None
wp1 16.204000 -22.500000 NaN None None
wp2 14.550000 -21.675000 NaN None None
wp1 16.204000 -22.500000 NaN None None
SAL 16.734488 -22.943974 0.0 None None

Crew#

Job

Name

Pilot

None

Pilot

None

Mechanics

None

Expé Principal

None

Expé

None

PI

Sandrine Bony

LNG

None

aWALI

None

Microphys 1

None

Microphys 2

None

RASTA

None

BASTA

None