On 10/16/12 7:56 PM, "Jack de Valpine" <je...@visarc.com<mailto:je...@visarc.com>> wrote:
Hi Tim, I cannot test this right now, however I do know that it is possible for gendaylit to fail in select conditions. If I recall correctly, one is if the direct normal radiance is zero (not the case here). There are other cases where it fails more dramatically, which is what you are facing I believe. In this case I think that the thing to do is re-use a previous value from the data set (eg the previous hour). Unfortunately, what you really need to do is actually "test" if gendaylit is going to produce valid output prior to actually getting the output. This can be done by evaluating the result of: gendaylit $myArgs > /dev/null 2>&1 which in your case would be gendaylit 7 19 14.500 -W 924 65 -a 34.3 -o 116.17 -m 120 > /dev/null 2>&1 Assuming your are processing a complete weather file then you need to test every time step that is not definitively at night, so that you can catch any time steps that case an error for gendaylit and then do something in those places. This has been a constant headache for us as well, as we are trying to use gendaylit in the OpenStudio annual simulation stuff. We do a test like Jack has illustrated above, again cribbing from Axel's excellent tutorials. We have found that bad sky descriptions can still be written (or nothing), and our test can miss some. The error reporting in gendaylit seems inconsistent. We try to scan for all the warnings/errors we have seen coming from gendaylit like so: gendaylit_command = "gendaylit -ang #{tsSolarAlt} #{tsSolarAzi} -L #{tsDirectNormIllum} #{tsDiffuseHorIllum} 2>&1" tempIO = IO.popen(gendaylit_command) gendaylit_output = tempIO.readlines.to_s tempIO.close tempSky = true if /[wW]arning/.match(gendaylit_output) or /[eE]rror/.match(gendaylit_output) or /valid/.match(gendaylit_output) or /[cC]heck/.match(gendaylit_output) or /skyclearness/.match(gendaylit_output) tempSky = false End …we fall back on gensky if found. Andy McNeil proposes scanning for a really tiny file (one of the failure modes for gendaylit is it writes a blank file with no errors generated). I implemented that in Ruby with the tempfile class, but obviously I did a poor job because the tempfiles were not being properly killed, so I took that out for now. But I do need to beef up this error checking as we'd prefer to use gendaylit. - Rob _______________________________________________ Radiance-dev mailing list Radiance-dev@radiance-online.org http://www.radiance-online.org/mailman/listinfo/radiance-dev