ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/gendaylit.c
(Generate patch)

Comparing ray/src/gen/gendaylit.c (file contents):
Revision 2.17 by greg, Fri Aug 31 16:01:45 2018 UTC vs.
Revision 2.20 by greg, Wed Nov 18 17:18:41 2020 UTC

# Line 104 | Line 104 | double         air_mass();
104  
105   double  solar_sunset(int month, int day);
106   double  solar_sunrise(int month, int day);
107 double  stadj();
108 int     jdate(int month, int day);
107  
108   const double    AU = 149597890E3;
109   const double    solar_constant_e = 1367;    /* solar constant W/m^2 */
# Line 122 | Line 120 | const double   skybrigsup = 0.6;
120  
121  
122   /* required values */
123 + int  year = 0;                                  /* year (optional) */
124   int     month, day;                             /* date */
125   double  hour;                                   /* time */
126   int     tsolar;                                 /* 0=standard, 1=solar */
# Line 204 | Line 203 | int main(int argc, char** argv)
203                                  cloudy = 0;
204                                  dosun = argv[i][0] == '+';
205                                  break;
206 +                        case 'y':
207 +                                year = atoi(argv[++i]);
208 +                                break;
209                          case 'R':
210                                  u_solar = argv[i][1] == 'R' ? -1 : 1;
211                                  solarbr = atof(argv[++i]);
# Line 347 | Line 349 | void computesky()
349          /* compute solar direction */
350                  
351          if (month) {                    /* from date and time */
350                int  jd;
352                  double  sd;
353  
354 <                jd = jdate(month, day);         /* Julian date */
355 <                sd = sdec(jd);                  /* solar declination */
356 <                if (tsolar)                     /* solar time */
357 <                        st = hour;
358 <                else
359 <                        st = hour + stadj(jd);
360 <                
361 <                                        
354 >                st = hour;
355 >                if (year) {                     /* Michalsky algorithm? */
356 >                        double  mjd = mjdate(year, month, day, hour);
357 >                        if (tsolar)
358 >                                sd = msdec(mjd, NULL);
359 >                        else
360 >                                sd = msdec(mjd, &st);
361 >                } else {
362 >                        int  jd = jdate(month, day);    /* Julian date */
363 >                        sd = sdec(jd);                  /* solar declination */
364 >                        if (!tsolar)                    /* get solar time? */
365 >                                st = hour + stadj(jd);
366 >                }
367 >                                                        
368                  if(timeinterval) {
369                          
370                          if(timeinterval<0) {
# Line 781 | Line 788 | void usage_error(char* msg)                    /* print usage error and
788   {
789          if (msg != NULL)
790                  fprintf(stderr, "%s: Use error - %s\n\n", progname, msg);
791 <        fprintf(stderr, "Usage: %s      month day hour    [...]\n", progname);
792 <        fprintf(stderr, "   or: %s -ang altitude azimuth  [...]\n", progname);
791 >        fprintf(stderr, "Usage: %s      month day hour [-y year]        [...]\n", progname);
792 >        fprintf(stderr, "   or: %s -ang altitude azimuth                [...]\n", progname);
793          fprintf(stderr, "               followed by:      -P          epsilon delta [options]\n");
794          fprintf(stderr, "                        or:      [-W|-L|-G]  direct_value diffuse_value [options]\n");
795 <        fprintf(stderr, "                        or:      -E          global_irradiance [options]\n\n");
796 <        fprintf(stderr, "       Description:\n");
795 >        fprintf(stderr, "                        or:      -E          global_irradiance [options]\n\n");
796 >        fprintf(stderr, "    Description:\n");
797          fprintf(stderr, "       -P epsilon delta  (these are the Perez parameters) \n");
798          fprintf(stderr, "       -W direct-normal-irradiance diffuse-horizontal-irradiance (W/m^2)\n");
799          fprintf(stderr, "       -L direct-normal-illuminance diffuse-horizontal-illuminance (lux)\n");
# Line 1420 | Line 1427 | void coeff_lum_perez(double Z, double epsilon, double
1427   /* degrees into radians */
1428   double radians(double degres)
1429   {
1430 <        return degres*M_PI/180.0;
1430 >        return degres*(M_PI/180.);
1431   }
1432  
1433  
1434   /* radian into degrees */
1435   double degres(double radians)
1436   {
1437 <        return radians/M_PI*180.0;
1437 >        return radians*(180./M_PI);
1438   }
1439  
1440  
# Line 1458 | Line 1465 | double integ_lv(float *lv,float *theta)
1465                  buffer += (*(lv+i))*cos(radians(*(theta+i)));
1466          }
1467                          
1468 <        return buffer*2*M_PI/144;
1468 >        return buffer*(2.*M_PI/145.);
1469   }
1470  
1471  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines