Edit: see the wikipage: https://zero-k.info/mediawiki/index.php?title=Wind/Tidal_Generator
How exactly is the energy output for wind generators calculated?
There's a global "wind power", this is a number from 0 to 1. Every 32s the target value changes randomly (uniform distribution) but is reached smoothly over 10s (for example: if power changes from 0.3 to 0.7, it will increase by 0.04 per s for 10s, then sit on that value for the next 22s until the next change). Available as GRP: WindStrength
Each windgen has a minimum income dependent on height, and a maximum of 2.5 E/s. Energy produced is basic interpolation based on power. For example if power is 0.5 then a 0-minimum windgen will produce 1.25 while at the same time a 2.0-minimum one will produce 2.25
Minimum is 2.5 * (0-1 MAP_DEPENDENT_SCALING_FACTOR) * (0-1* height value)
The height value is 0 for windgens at the map's lowest point (or sea level if the map has underwater parts), and 1 for the map's highest peak. You can actually terraform higher to get >1 (as the values depend on initial map state), which helps because the scaling factor is usually <1, but Factor*height caps out at 1 (ie the minimum wind at 2.5)
The map factor is `1/(1+e^(4 - groundExtreme/105))` where groundExtreme is the difference in height between the map's highest and lowest point. Available as GRP: WindSlope
You can space-click a windgen to see a processed "+X min income per 100 elmo" value for given map.
ZK wind strength for energy purposes is independent of engine-side wind, which is what BA etc use. Engine wind strength affects things like smoke particles from geospots or wrecks, or confetti from unit deaths. Their direction is correlated but not exactly 1:1 (windgens rotate to match engine-wind direction every 32s when strength updates, but this is a snapshot - physics-wind can change more often than that).
Only Quantum may know or understand why the wind generation is the way that it is.
I'm no Quantum but the mechanics of wind power (uniform distribution, gradual change, updates periodically) are inherited from OTA, the only things that differs is the height bonus. The map scaling factor is so that you won't get a powerful windgen by placing it on, say, the highest "peak" of CCR. The height bonus is probably an attempt at "realism" with interesting emergent gameplay consequences.