Thanks all for the feedback.
For those not familiar with the user interface, here is a screen shot. <hopefully it is visible>
As the scroll bars are moved, the line drawing of the earth moves with the season, the yellow line latitude indicator moves, and the approx blue line graph indicator for incident solar changes.
I don't see any point in calculating yearly harvest, or even monthly, as there really is no way of factoring in weather data. It is relatively easy to make allowance for fixed panel orientation and even a full 2 axis solar tracking. My own fixed panel arrays give approx 20% more power in winter than the std pyranometer and calculated flat array power, and 10% less power in peak summer.
I use the picture display to better visualize how the seasonal earth position relative to the sun affects the day length and incident solar. The calculated daily solar was a few extra lines of code in the loop that draws the daily incident solar graph.
I use the calculated energy harvest to check seasonal performance of my panels only. Even with a recording pyranometer, it is useful to have a calculated number to reassure one in winter that the panels are producing expected power. Where I live, the winter sun is a max of 2.78kWh/kW and the summer sun is 7.75kWh/kW, on a flat array. It is relatively easy in winter to think that low yield indicates a fault, until the calculated solar is looked at.
This is a relatively small program, and to add complexity will require changes to the way the program works. Presently for each change to the latitude, or day number, the program has to recalculate and redraw new graphs of the earth position etc, and new half hourly calculations of the incident solar, and replot it, and update the calculated integrated daily energy harvest.
Updates of the program will be available from my file server.
Gordon.