def solarangles (self):
ln = self.RSM.lon<EOL>month = self.simTime.month<EOL>day = self.simTime.day<EOL>secDay = self.simTime.secDay    <EOL>inobis = self.simTime.inobis    <EOL>canAspect = self.UCM.canAspect<EOL>lon = self.RSM.lon<EOL>lat = self.RSM.lat<EOL>GMT = self.RSM.GMT<EOL>self.ut = (<NUM_LIT> + (int(secDay)/<NUM_LIT>%<NUM_LIT>)) % <NUM_LIT> <EOL>ibis = list(range(len(inobis)))<EOL>for JI in range(<NUM_LIT:1>, <NUM_LIT:12>):<EOL><INDENT>ibis[JI] = inobis[JI]+<NUM_LIT:1><EOL><DEDENT>date = day + inobis[month-<NUM_LIT:1>]-<NUM_LIT:1> <EOL>self.ad = <NUM_LIT> * math.pi/<NUM_LIT> * (date-<NUM_LIT:1> + (self.ut-(<NUM_LIT:12>/<NUM_LIT>)))     <EOL>self.eqtime = <NUM_LIT> * (<NUM_LIT>+<NUM_LIT>*math.cos(self.ad)-<NUM_LIT>*math.sin(self.ad) -<NUM_LIT>*math.cos(<NUM_LIT:2>*self.ad)-<NUM_LIT>*math.sin(<NUM_LIT:2>*self.ad))<EOL>self.decsol = <NUM_LIT>-<NUM_LIT>*math.cos(self.ad)+<NUM_LIT>*math.sin(self.ad)-<NUM_LIT>*math.cos(<NUM_LIT>*self.ad)+<NUM_LIT>*math.sin(<NUM_LIT>*self.ad)-<NUM_LIT>*math.cos(<NUM_LIT>*self.ad)+<NUM_LIT> *math.sin(<NUM_LIT>*self.ad)<EOL>time_offset = self.eqtime - <NUM_LIT> * lon + <NUM_LIT> * GMT<EOL>tst = secDay + time_offset * <NUM_LIT><EOL>ha = (tst/<NUM_LIT>/<NUM_LIT>-<NUM_LIT>) * math.pi/<NUM_LIT><EOL>zlat = lat * (math.pi/<NUM_LIT>)   <EOL>self.zenith = math.acos(math.sin(zlat)*math.sin(self.decsol) + math.cos(zlat)*math.cos(self.decsol)*math.cos(ha))<EOL>if abs(<NUM_LIT:0.5>*math.pi - self.zenith) < <NUM_LIT>:<EOL><INDENT>if <NUM_LIT:0.5>*math.pi - self.zenith > <NUM_LIT:0.>:<EOL><INDENT>self.tanzen = math.tan(<NUM_LIT:0.5>*math.pi-<NUM_LIT>)<EOL><DEDENT>elif <NUM_LIT:0.5>*math.pi - self.zenith <= <NUM_LIT:0.>:<EOL><INDENT>self.tanzen = math.tan(<NUM_LIT:0.5>*math.pi+<NUM_LIT>)<EOL><DEDENT><DEDENT>elif abs(self.zenith) < <NUM_LIT>:<EOL><INDENT>self.tanzen = <NUM_LIT><EOL><DEDENT>else:<EOL><INDENT>self.tanzen = math.tan(self.zenith)<EOL><DEDENT>self.critOrient = math.asin(min(abs( <NUM_LIT:1.>/self.tanzen)/canAspect, <NUM_LIT:1.> ))<EOL>
Calculation based on NOAA. Solves for zenith angle, tangent of zenithal angle,
and critical canyon angle based on following parameters:
    canAspect       # aspect Ratio of canyon
    simTime         # simulation parameters
    RSM.lon         # longitude (deg)
    RSM.lat         # latitude (deg)
    RSM.GMT         # GMT hour correction

Properties
    self.ut         # elapsed hours on current day
    self.ad         # fractional year in radians
    self.eqtime
    self.decsol     # solar declination angle
    self.zenith     # Angle between normal to earth's surface and sun position
    self.tanzen     # tangente of solar zenithal angle
    self.critOrient # critical canyon angle for which solar radiation reaches the road