{"id":"v001","input":{"levels":[{"altitude":"6000 ft","direction":"270 deg","speed":"20 kt","temperature":"3 degC"},{"altitude":"9000 ft","direction":"300 deg","speed":"30 kt","temperature":"-3 degC"}],"altitude":"7500 ft"},"expect":{"result.u.value":22.99038105676658,"result.v.value":-7.5,"result.speed.value":24.182795974314708,"result.below.value":6000.0,"result.above.value":9000.0,"result.direction.value":288.06753729197504,"result.temperature.value":0.0,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.direction.value":{"rel":0,"abs":1e-09},"result.temperature.value":{"rel":0,"abs":1e-09}}}
{"id":"v002","input":{"levels":[{"altitude":"3000 ft","direction":"250 deg","speed":"10 kt","temperature":"15 degC"},{"altitude":"6000 ft","direction":"260 deg","speed":"20 kt","temperature":"9 degC"},{"altitude":"9000 ft","direction":"280 deg","speed":"35 kt","temperature":"3 degC"},{"altitude":"12000 ft","direction":"290 deg","speed":"45 kt","temperature":"-3 degC"}],"altitude":"10500 ft"},"expect":{"result.u.value":38.37721964539658,"result.v.value":-10.734296333998827,"result.speed.value":39.85017070850655,"result.below.value":9000.0,"result.above.value":12000.0,"result.direction.value":285.62656641902794,"result.temperature.value":0.0,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.direction.value":{"rel":0,"abs":1e-09},"result.temperature.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"levels":[{"altitude":"6000 ft","direction":"350 deg","speed":"15 kt"},{"altitude":"9000 ft","direction":"10 deg","speed":"15 kt"}],"altitude":"7000 ft"},"expect":{"result.u.value":0.8682408883346522,"result.v.value":-14.772116295183121,"result.speed.value":14.797610012383448,"result.below.value":6000.0,"result.above.value":9000.0,"result.direction.value":356.636272588377,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.direction.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"levels":[{"altitude":"18000 ft","direction":"240 deg","speed":"60 kt","temperature":"-21 degC"},{"altitude":"24000 ft","direction":"250 deg","speed":"80 kt","temperature":"-33 degC"},{"altitude":"30000 ft","direction":"250 deg","speed":"95 kt","temperature":"-45 degC"}],"altitude":"24000 ft"},"expect":{"result.u.value":75.17540966287268,"result.v.value":27.361611466053482,"result.speed.value":80.0,"result.below.value":18000.0,"result.above.value":24000.0,"result.direction.value":250.0,"result.temperature.value":-33.0,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.direction.value":{"rel":0,"abs":1e-09},"result.temperature.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"levels":[{"altitude":"3000 ft","direction":"90 deg","speed":"5 kt","temperature":"20 degC"},{"altitude":"6000 ft","direction":"270 deg","speed":"5 kt","temperature":"14 degC"}],"altitude":"4500 ft"},"expect":{"result.u.value":0.0,"result.v.value":3.061616997868382e-16,"result.speed.value":3.061616997868382e-16,"result.below.value":3000.0,"result.above.value":6000.0,"result.temperature.value":17.0,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.temperature.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"levels":[{"altitude":"9000 ft","direction":"300 deg","speed":"30 kt","temperature":"-3 degC"},{"altitude":"6000 ft","direction":"270 deg","speed":"20 kt","temperature":"3 degC"}],"altitude":"6000 ft"},"expect":{"result.u.value":20.0,"result.v.value":3.673940397442059e-15,"result.speed.value":20.0,"result.below.value":6000.0,"result.above.value":9000.0,"result.direction.value":270.0,"result.temperature.value":3.0,"ok":true},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{"result.u.value":{"rel":0,"abs":1e-09},"result.v.value":{"rel":0,"abs":1e-09},"result.speed.value":{"rel":0,"abs":1e-09},"result.below.value":{"rel":0,"abs":1e-09},"result.above.value":{"rel":0,"abs":1e-09},"result.direction.value":{"rel":0,"abs":1e-09},"result.temperature.value":{"rel":0,"abs":1e-09}}}
{"id":"v007","input":{"levels":[{"altitude":"6000 ft","direction":"270 deg","speed":"20 kt"},{"altitude":"9000 ft","direction":"300 deg","speed":"30 kt"}],"altitude":"12000 ft"},"expect":{"ok":false,"error.code":"OUT_OF_DOMAIN"},"source":"Meteorological u/v convention and linear interpolation worked in Python (tools/vectors/gen_aloft.py)","sourceVersion":"2026","tolerance":{}}
