diff --git a/Nasal/contrail.nas b/Nasal/contrail.nas new file mode 100644 index 000000000..167759324 --- /dev/null +++ b/Nasal/contrail.nas @@ -0,0 +1,39 @@ +######### +# contrail calculator. Based on an approxmation to the "Appleman Chart" +# y = -0.077x2 + 2.7188x - 64.36 +# +######## + +updateContrail = func{ + var pressure_Node = props.globals.getNode("environment/pressure-inhg"); + var temperature_Node = props.globals.getNode("environment/temperature-degc"); + var contrail_Node = props.globals.getNode("environment/contrail"); + var contrail_temp_Node = props.globals.getNode("environment/contrail-temperature-degc"); + + var x = pressure_Node.getValue(); + var y = temperature_Node.getValue(); + var con_temp = -0.077 * x * x + 2.7188 * x - 64.36; + contrail_temp_Node.setValue(con_temp); + + if (y < con_temp and y < -40){ + contrail_Node.setValue(1); + } else { + contrail_Node.setValue(0); + } + + settimer(updateContrail,30) +} + +### Contrail + +print ("init contrail"); +_setlistener("/sim/signals/nasal-dir-initialized", func { + props.globals.initNode("environment/pressure-inhg", 1, "DOUBLE"); + props.globals.initNode("environment/temperature-degc", 1, "DOUBLE"); + props.globals.initNode("environment/contrail", 1, "BOOL"); + props.globals.initNode("environment/contrail-temperature-degc", 1, "DOUBLE"); + var static_contrail_node = props.globals.getNode("sim/ai/aircraft/contrail", 1); + var time_node = props.globals.getNode("sim/time/elapsed-sec", 1); + + updateContrail(); +});