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

Comparing ray/src/util/evalglare.c (file contents):
Revision 2.4 by greg, Thu Jul 28 16:46:10 2016 UTC vs.
Revision 2.10 by greg, Tue Nov 27 18:08:24 2018 UTC

# Line 1 | Line 1
1   #ifndef lint
2   static const char RCSid[] = "$Id$";
3   #endif
4 < /* EVALGLARE V1.29
4 > /* EVALGLARE V2.08
5   * Evalglare Software License, Version 2.0
6   *
7   * Copyright (c) 1995 - 2016 Fraunhofer ISE, EPFL.
# Line 310 | Line 310 | changed masking threshold to 0.05 cd/m2
310     */
311   /* evalglare.c, v1.30 2016/07/28 change zonal output: If just one zone is specified, only one zone shows up in the output (bug removal).
312     */
313 + /* evalglare.c, v1.31 2016/08/02  bug removal: default output did not calculate the amout of glare sources before and therefore no_glaresources was set to zero causing dgi,ugr being set to zero as well. Now renumbering of the glare sources and calculation of the amount of glare sources is done for all output versions.
314 +   */
315 + /* evalglare.c, v2.00 2016/11/15  add of a second fast calculation mode for annual calculations, activted by -2. Output: dgp,ugr
316 +   */
317 + /* evalglare.c, v2.01 2016/11/16  change of -2 option (now -2 dir_illum). External provision of the direct illuminance necessary, since the sun interpolation of daysim is causing problems in calculation of the background luminance.
318 +   */
319 + /* evalglare.c, v2.02 2017/02/28  change of warning message, when invalid exposure setting is found. Reason: tab removal is not in all cases the right measure - it depends which tool caused the invalid exposure entry   */
320 +
321 + /* evalglare.c, v2.03 2017/08/04  ad of -O option - disk replacement by providing luminance, not documented
322 +  */
323 +
324 + /* evalglare.c, v2.04 2017/08/04  adding -q option: use of Ev/pi as background luminance. not documented. no combination with -n option!!!
325 +  */
326 +
327 + /* evalglare.c, v2.05 2018/08/28  change of the -q option for the choice of the background luminance calculation mode: 0: CIE method (Ev-Edir)/pi, 1: mathematical correct average background luminance, 2: Ev/pi.
328 + change of default options:
329 + - cosinus weighted calculation of the background luminance (according to CIE) is now default.
330 + - absolute threshold for the glare source detection is now default (2000cd/m2), based on study of C. Pierson
331 +  */
332 +
333 + /* evalglare.c, v2.06 2018/08/29  
334 + change of default value of multiplier b to 5.0, if task options (-t or -T ) are activated AND -b NOT used. To be downward compatible when using the task method.
335 +  */
336 +
337 + /* evalglare.c, v2.07 2018/11/17  
338 + bugfix: correction of error in the equations of PGSV_con and PGSV_sat
339 + all three PGSV equations are calculated now
340 + illuminance from the masking area (E_v_mask) is also printed
341 + bugfix: in VCPs error fuction equation, value of 6.347 replaced by 6.374
342 +  */
343 +
344 + /* evalglare.c, v2.08 2018/11/27
345 + bugfix: checkroutine for same image size for the masking corrected
346 +  */
347 +
348 +
349 +  
350   #define EVALGLARE
351   #define PROGNAME "evalglare"
352 < #define VERSION "1.30 release 29.07.2016 by EPFL, J.Wienold"
352 > #define VERSION "2.08 release 27.11.2018 by EPFL, J.Wienold"
353   #define RELEASENAME PROGNAME " " VERSION
354  
355  
# Line 1164 | Line 1201 | float get_vcp(float dgr )
1201   {
1202          float vcp;
1203  
1204 <        vcp = 50 * erf((6.347 - 1.3227 * log(dgr)) / 1.414213562373) + 50;
1204 >        vcp = 50 * erf((6.374 - 1.3227 * log(dgr)) / 1.414213562373) + 50;
1205          if (dgr > 750) {
1206                  vcp = 0;
1207          }
# Line 1199 | Line 1236 | float get_ugr(pict * p, double lum_backg, int igs, int
1236                  }
1237          }
1238          ugr = 8 * log10(0.25 / lum_backg * sum_glare);
1239 <
1239 >        if (sum_glare==0) {
1240 >        ugr=0.0;
1241 >        }
1242 >        if (lum_backg<=0) {
1243 >        ugr=-99.0;
1244 >        }
1245 >        
1246          return ugr;
1247  
1248   }
# Line 1329 | Line 1372 | float get_cgi(pict * p, double E_v, double E_v_dir, in
1372          return cgi;
1373   }      
1374  
1375 < /* subroutine for the calculation of the PGSV; is only applied, when masking is done, since it refers only to the window. Important: masking area must be the window! */
1376 < float get_pgsv(double E_v, double E_mask,double omega_mask,double lum_mask_av)
1375 >
1376 >
1377 > /* subroutine for the calculation of the PGSV_con; is only applied, when masking is done, since it refers only to the window. Important: masking area must be the window! */
1378 > float get_pgsv_con(double E_v, double E_mask,double omega_mask,double lum_mask_av, double Lavg)
1379   {
1380 <        float pgsv;
1380 >        float pgsv_con;
1381          double Lb;
1382  
1383 <        Lb = (E_v-E_mask)/1.414213562373;
1383 > /*        Lb = (E_v-E_mask)/3.14159265359;  */
1384 > /*        Lb = (2*E_v-lum_mask_av*omega_mask)/(2*3.14159265359-omega_mask); */
1385 >          Lb = (2*3.14159265359*Lavg-lum_mask_av*omega_mask)/(2*3.14159265359-omega_mask);
1386  
1340        pgsv =3.2*log10(lum_mask_av)-0.64*log10(omega_mask)+(0.79*log10(omega_mask)-0.61)*log10(Lb)-8.2 ;
1387  
1388 +        pgsv_con =3.2*log10(lum_mask_av)-0.64*log10(omega_mask)+(0.79*log10(omega_mask)-0.61)*log10(Lb)-8.2 ;
1389  
1390 <        return pgsv;
1390 >
1391 >        return pgsv_con;
1392   }
1393  
1394   /* subroutine for the calculation of the PGSV_saturation; is only applied, when masking is done, since it refers only to the window. Important: masking area must be the window! */
# Line 1348 | Line 1396 | float get_pgsv_sat(double E_v)
1396   {
1397          float pgsv_sat;
1398  
1399 <        pgsv_sat =3.3-(0.57+3.3)/pow((1+E_v/1.414213562373/1250),1.7);
1399 >        pgsv_sat =3.3-(0.57+3.3)/(1+pow(E_v/3.14159265359/1250,1.7));
1400  
1401  
1402          return pgsv_sat;
1403   }
1404  
1405 + /* subroutine for the calculation of the PGSV; is only applied, when masking is done, since it refers only to the window. Important: masking area must be the window! */
1406  
1407 + float get_pgsv(double E_v, double E_mask,double omega_mask,double lum_mask_av,double Ltask, double Lavg)
1408 + {
1409 +        float pgsv;
1410 +        double Lb;
1411  
1412 + /*        Lb = (E_v-E_mask)/3.14159265359;  */
1413 + /*        Lb = (2*E_v-lum_mask_av*omega_mask)/(2*3.14159265359-omega_mask); */
1414 +          Lb = (2*3.14159265359*Lavg-lum_mask_av*omega_mask)/(2*3.14159265359-omega_mask);
1415 +        
1416 +        if (Lb==0.0 ) {
1417 +               fprintf(stderr,  " warning: Background luminance is 0 or masking area = full image! pgsv cannot be calculated (set to -99)!!\n");
1418 +                pgsv=-99;
1419 +                        }else{
1420 +                if ( (lum_mask_av/Lb) > (E_v/(3.14159265359*Ltask))) {
1421 +                        pgsv=get_pgsv_con(E_v,E_mask,omega_mask,lum_mask_av, Lavg);
1422 +                }else{
1423 +                        pgsv=get_pgsv_sat(E_v)  ;
1424 +                        }}
1425 +        return pgsv;
1426  
1427 + }
1428 +
1429 +
1430 +
1431   #ifdef  EVALGLARE
1432  
1433  
# Line 1371 | Line 1442 | int main(int argc, char **argv)
1442          pict *pm = pict_create();
1443          int     skip_second_scan,calcfast,age_corr,cut_view,cut_view_type,calc_vill, output, detail_out2, x1,y1, fill, yfillmax, yfillmin,
1444                  ext_vill, set_lum_max, set_lum_max2, img_corr,x_disk,y_disk,task_color, i_splitstart,zones,act_gsn,splitgs,
1445 <                i_split, posindex_2, task_lum, checkfile, rval, i, i_max, x, y,x2,y2,x_zone,y_zone, i_z1, i_z2,
1445 >                i_split, posindex_2, task_lum, checkfile, rval, i, i_max, x, y,x2,y2,x_zone,y_zone, i_z1, i_z2, thres_activate,
1446                  igs, actual_igs, lastpixelwas_gs, icol, xt, yt, change,checkpixels, before_igs, sgs, splithigh,uniform_gs,x_max, y_max,y_mid,
1447                  detail_out, posindex_picture, non_cos_lb, rx, ry, rmx,rmy,apply_disability,band_calc,band_color,masking,i_mask,no_glaresources,force;
1448 <        double  lum_total_max,age_corr_factor,age,dgp_ext,dgp,low_light_corr,omega_cos_contr, setvalue, lum_ideal, E_v_contr, sigma,om,delta_E,
1449 <                E_vl_ext, lum_max, new_lum_max, r_center, ugp, ugr_exp, dgi_mod,lum_a, pgsv,E_v_mask,pgsv_sat,angle_disk,dist,n_corner_px,zero_corner_px,
1450 <                search_pix, a1, a2, a3, a4, a5, c3, c1, c2, r_split, max_angle,r_actual,lum_actual,
1448 >        double  LUM_replace,lum_total_max,age_corr_factor,age,dgp_ext,dgp,low_light_corr,omega_cos_contr, setvalue, lum_ideal, E_v_contr, sigma,om,delta_E,
1449 >                E_vl_ext, lum_max, new_lum_max, r_center, ugp, ugr_exp, dgi_mod,lum_a, E_v_mask,angle_disk,dist,n_corner_px,zero_corner_px,
1450 >                search_pix, a1, a2, a3, a4, a5, c3, c1, c2, r_split, max_angle,r_actual,lum_actual,dir_ill,
1451                  omegat, sang, E_v, E_v2, E_v_dir, avlum, act_lum, ang, angle_z1, angle_z2,per_95_band,per_75_band,pos,
1452                  l_max, lum_backg, lum_backg_cos, omega_sources, lum_sources,per_75_mask,per_95_mask,per_75_z1,per_95_z1,per_75_z2,per_95_z2,
1453                  lum, lum_source,teta,Lveil_cie,Lveil_cie_sum,disability_thresh,u_r,u_g,u_b,band_angle,band_avlum,
# Line 1385 | Line 1456 | int main(int argc, char **argv)
1456                  lum_z1[1],lum_z1_av,lum_z1_std[1],lum_z1_median[1],omega_z1,bbox_z1[2],
1457                  lum_z2[1],lum_z2_av,lum_z2_std[1],lum_z2_median[1],omega_z2,bbox_z2[2],
1458                  lum_pos[1],lum_nopos_median[1],lum_pos_median[1],lum_pos2_median[1],lum_pos_mean,lum_pos2_mean;
1459 <        float lum_task, lum_thres, dgi,  vcp, cgi, ugr, limit, dgr,
1459 >        float lum_task, lum_thres, dgi,  vcp, cgi, ugr, limit, dgr,pgsv ,pgsv_sat,pgsv_con,
1460                  abs_max, Lveil;
1461          char maskfile[500],file_out[500], file_out2[500], version[500];
1462          char *cline;
# Line 1425 | Line 1496 | int main(int argc, char **argv)
1496          muc_rvar_clear(s_posweight2);
1497  
1498          /*set required user view parameters to invalid values*/
1499 +        dir_ill=0.0;
1500          delta_E=0.0;
1501          no_glaresources=0;
1502          n_corner_px=0;
# Line 1446 | Line 1518 | int main(int argc, char **argv)
1518          lum_band_av = 0.0;
1519          omega_band = 0.0;
1520          pgsv = 0.0 ;
1521 +        pgsv_con = 0.0 ;
1522          pgsv_sat = 0.0 ;
1523          E_v_mask = 0.0;
1524          lum_z1_av = 0.0;
# Line 1487 | Line 1560 | int main(int argc, char **argv)
1560          omega_cos_contr = 0.0;
1561          lum_ideal = 0.0;
1562          max_angle = 0.2;
1563 <        lum_thres = 5.0;
1563 >        lum_thres = 2000.0;
1564 >        lum_task = 0.0;
1565          task_lum = 0;
1566          sgs = 0;
1567          splithigh = 1;
# Line 1505 | Line 1579 | int main(int argc, char **argv)
1579          c1 = 5.87e-05;
1580          c2 = 0.092;
1581          c3 = 0.159;
1582 <        non_cos_lb = 1;
1582 >        non_cos_lb = 0;
1583          posindex_2 = 0;
1584          task_color = 0;
1585          limit = 50000.0;
# Line 1527 | Line 1601 | int main(int argc, char **argv)
1601          omega_mask=0.0;
1602          i_mask=0;
1603          actual_igs=0;
1604 +        LUM_replace=0;
1605 +        thres_activate=0;
1606   /* command line for output picture*/
1607  
1608          cline = (char *) malloc(CLINEMAX+1);
# Line 1577 | Line 1653 | int main(int argc, char **argv)
1653                          break;
1654                  case 'b':
1655                          lum_thres = atof(argv[++i]);
1656 +                        thres_activate = 1;
1657                          break;
1658                  case 'c':
1659                          checkfile = 1;
# Line 1665 | Line 1742 | int main(int argc, char **argv)
1742                          strcpy(file_out2, argv[++i]);
1743   /*                      printf("max lum set to %f\n",new_lum_max);*/
1744                          break;
1745 +                case 'O':
1746 +                        img_corr = 1;
1747 +                        set_lum_max2 = 3;
1748 +                        x_disk = atoi(argv[++i]);
1749 +                        y_disk = atoi(argv[++i]);
1750 +                        angle_disk = atof(argv[++i]);
1751 +                        LUM_replace = atof(argv[++i]);
1752 +                        strcpy(file_out2, argv[++i]);
1753 + /*                      printf("max lum set to %f\n",new_lum_max);*/
1754 +                        break;
1755  
1756 <                case 'n':
1756 >
1757 > /* deactivated          case 'n':
1758                          non_cos_lb = 0;
1759                          break;
1760 + */
1761 +                case 'q':
1762 +                        non_cos_lb = atoi(argv[++i]);
1763 +                        break;
1764  
1765                  case 't':
1766                          task_lum = 1;
# Line 1737 | Line 1829 | int main(int argc, char **argv)
1829                  case '1':
1830                          output = 1;
1831                          break;
1832 +                case '2':
1833 +                        output = 2;
1834 +                        dir_ill = atof(argv[++i]);
1835 +                        break;
1836  
1837                  case 'v':
1838                          if (argv[i][2] == '\0') {
# Line 1766 | Line 1862 | int main(int argc, char **argv)
1862                  }
1863          }
1864  
1865 + /* set multiplier for task method to 5, if not specified */
1866 +
1867 + if ( task_lum == 1 && thres_activate == 0){
1868 +                lum_thres = 5.0;
1869 + }
1870   /*fast calculation, if gendgp_profile is used: No Vertical illuminance calculation, only dgp is calculated*/
1871  
1872 < if (output == 1 && ext_vill == 1) {
1872 > if (output == 1 && ext_vill == 1 ) {
1873                         calcfast=1;
1874                         }
1875 +                      
1876 + if (output == 2 && ext_vill == 1 ) {
1877 +                       calcfast=2;
1878 +                       }
1879 +                      
1880   /*masking and zoning cannot be applied at the same time*/
1881  
1882   if (masking ==1 && zones >0) {
# Line 1831 | Line 1937 | if (masking ==1 && zones >0) {
1937  
1938          if (masking == 1) {
1939  
1940 <                if (!pict_get_xsize(p)==pict_get_xsize(pm) || !pict_get_ysize(p)==pict_get_ysize(pm)) {
1940 >                if (pict_get_xsize(p)!=pict_get_xsize(pm) || pict_get_ysize(p)!=pict_get_ysize(pm)) {
1941                  fprintf(stderr, "error: masking image has other resolution than main image ! \n");
1942                  fprintf(stderr, "size must be identical \n");
1943                  printf("resolution main image : %dx%d\n",pict_get_xsize(p),pict_get_ysize(p));
# Line 2059 | Line 2165 | if (cut_view==2) {
2165          lum_pos_mean= lum_pos_mean/sang;
2166          lum_pos2_mean= lum_pos2_mean/sang;
2167  
2168 <        if (set_lum_max2 >= 1 && E_v_contr > 0 && (E_vl_ext - E_v) > 0) {
2168 >        if ((set_lum_max2 >= 1 && E_v_contr > 0 && (E_vl_ext - E_v) > 0 ) || set_lum_max2==3) {
2169  
2170 +                if (set_lum_max2<3){
2171                  lum_ideal = (E_vl_ext - E_v + E_v_contr) / omega_cos_contr;
2172                  if (set_lum_max2 == 2 && lum_ideal >= 2e9) {
2173                  printf("warning! luminance of replacement pixels would be larger than 2e9 cd/m2. Value set to 2e9cd/m2!\n") ;
# Line 2071 | Line 2178 | if (cut_view==2) {
2178                  }
2179                  printf("change luminance values!! lum_ideal,setvalue,E_vl_ext,E_v,E_v_contr %f  %f %f %f %f\n",
2180                           lum_ideal, setvalue, E_vl_ext, E_v, E_v_contr);
2181 +                          }else{setvalue=LUM_replace;
2182 +                         }
2183  
2184              
2185                  for (x = 0; x < pict_get_xsize(p); x++)
# Line 2090 | Line 2199 | if (cut_view==2) {
2199                                                          pict_get_color(p, x, y)[BLU] =
2200                                                                  setvalue / 179.0;
2201  
2202 <                                                }else{ if(set_lum_max2 ==2 ) {
2202 >                                                }else{ if(set_lum_max2 >1 ) {
2203                                                          r_actual =acos(DOT(pict_get_cached_dir(p, x_disk, y_disk), pict_get_cached_dir(p, x, y))) * 2;
2204                                                          if (x_disk == x && y_disk==y ) r_actual=0.0;
2205  
# Line 2103 | Line 2212 | if (cut_view==2) {
2212                                                          pict_get_color(p, x, y)[BLU] =
2213                                                                  setvalue / 179.0;
2214                                                        
2215 <                                                       }
2107 <                                                                
2108 <                                                
2215 >                                                       }                                                
2216                                                  }
2217                                                  }
2218                                          }
# Line 2221 | Line 2328 | if (cut_view==1) {
2328   /*      pict_write(p,"firstscan.pic");   */
2329  
2330  
2331 < if (calcfast == 1 || search_pix <= 1.0) {
2331 >
2332 >
2333 > if (calcfast ==1 || search_pix <= 1.0 || calcfast == 2 ) {
2334     skip_second_scan=1;
2335     }
2336 +  
2337  
2338   /* second glare source scan: combine glare sources facing each other */
2339          change = 1;
# Line 2398 | Line 2508 | if (calcfast == 1 || search_pix <= 1.0) {
2508  
2509   /* calculation of direct vertical illuminance for CGI and for disability glare, coloring glare sources*/
2510  
2511 <        if (calcfast == 0) {
2511 >        if (calcfast == 0 || calcfast == 2) {
2512          for (x = 0; x < pict_get_xsize(p); x++)
2513                  for (y = 0; y < pict_get_ysize(p); y++) {
2514                          if (pict_get_hangle(p, x, y, p->view.vdir, p->view.vup, &ang)) {
# Line 2486 | Line 2596 | if (calcfast == 1 || search_pix <= 1.0) {
2596                          lum_backg = lum_backg_cos;
2597          }
2598  
2599 +        if (non_cos_lb == 2) {
2600 +                        lum_backg = E_v / 3.1415927;
2601 +        }
2602 +
2603 +
2604   /* file writing NOT here
2605          if (checkfile == 1) {
2606                  pict_write(p, file_out);
# Line 2495 | Line 2610 | if (calcfast == 1 || search_pix <= 1.0) {
2610   /* print detailed output */
2611          
2612          
2498        if (detail_out == 1) {
2613  
2614   /* masking */
2615  
# Line 2538 | Line 2652 | if (calcfast == 1 || search_pix <= 1.0) {
2652                  muc_rvar_get_median(s_mask,lum_mask_median);
2653                  muc_rvar_get_bounding_box(s_mask,bbox);
2654   /* PSGV only why masking of window is applied! */
2655 <                 pgsv = get_pgsv(E_v, E_v_mask, omega_mask, lum_mask_av);
2655 >
2656 >        
2657 >        if (task_lum == 0 || lum_task == 0.0 ) {
2658 >                        fprintf(stderr, " warning: Task area not set or task luminance=0 ! pgsv cannot be calculated (set to -99)!!\n");
2659 >                        pgsv = -99;
2660 >                } else {
2661 >                        pgsv = get_pgsv(E_v, E_v_mask, omega_mask, lum_mask_av,lum_task,avlum);
2662 >                        }
2663 >
2664 >                 pgsv_con = get_pgsv_con(E_v, E_v_mask, omega_mask, lum_mask_av,avlum);
2665                   pgsv_sat =get_pgsv_sat(E_v);
2543                printf ("masking:no_pixels,omega,av_lum,median_lum,std_lum,perc_75,perc_95,lum_min,lum_max,pgsv,pgsv_sat: %i %f %f %f %f %f %f %f %f %f %f\n",i_mask,omega_mask,lum_mask_av,lum_mask_median[0],sqrt(lum_mask_std[0]),per_75_mask,per_95_mask,bbox[0],bbox[1],pgsv,pgsv_sat );
2666  
2667 +        if (detail_out == 1) {
2668 +
2669 +                printf ("masking:no_pixels,omega,av_lum,median_lum,std_lum,perc_75,perc_95,lum_min,lum_max,pgsv_con,pgsv_sat,pgsv,Ev_mask: %i %f %f %f %f %f %f %f %f %f %f %f %f\n",i_mask,omega_mask,lum_mask_av,lum_mask_median[0],sqrt(lum_mask_std[0]),per_75_mask,per_95_mask,bbox[0],bbox[1],pgsv_con,pgsv_sat,pgsv,E_v_mask );
2670 +
2671 +        }      
2672                  
2546                
2673          }
2674  
2675   /* zones */
# Line 2633 | Line 2759 | if (calcfast == 1 || search_pix <= 1.0) {
2759                  per_95_z1=lum_z1_median[0];
2760                  muc_rvar_get_median(s_z1,lum_z1_median);
2761                  muc_rvar_get_bounding_box(s_z1,bbox_z1);
2762 <
2762 >        if (detail_out == 1) {
2763 >
2764                  printf ("zoning:z1_omega,z1_av_lum,z1_median_lum,z1_std_lum,z1_perc_75,z1_perc_95,z1_lum_min,z1_lum_max: %f %f %f %f %f %f %f %f\n",omega_z1,lum_z1_av,lum_z1_median[0],sqrt(lum_z1_std[0]),per_75_z1,per_95_z1,bbox_z1[0],bbox_z1[1] );
2765  
2766                 if (zones == 2 ) {
2767  
2768                  printf ("zoning:z2_omega,z2_av_lum,z2_median_lum,z2_std_lum,z2_perc_75,z2_perc_95,z2_lum_min,z2_lum_max:  %f %f %f %f %f %f %f %f\n",omega_z2,lum_z2_av,lum_z2_median[0],sqrt(lum_z2_std[0]),per_75_z2,per_95_z2,bbox_z2[0],bbox_z2[1] );
2769 < }            
2769 > } }            
2770                  
2771          }
2772  
# Line 2653 | Line 2780 | if (calcfast == 1 || search_pix <= 1.0) {
2780                  no_glaresources=i;
2781  
2782   /* glare sources */
2783 +        if (detail_out == 1) {
2784 +
2785                  printf
2786                          ("%i No pixels x-pos y-pos L_s Omega_s Posindx L_b L_t E_vert Edir Max_Lum Sigma xdir ydir zdir Eglare_cie Lveil_cie teta glare_zone\n",
2787                           i);
# Line 2817 | Line 2946 | if (calcfast == 0) {
2946                                  if (E_vl_ext < 1000) {
2947                                  low_light_corr=1.0*exp(0.024*E_vl_ext-4)/(1+exp(0.024*E_vl_ext-4)); } else {low_light_corr=1.0 ;}
2948                                  dgp =low_light_corr*dgp;
2949 <                                dgp =age_corr_factor*dgp;
2950 <                printf("%f\n", dgp);
2949 >
2950 >                     if (calcfast == 2) {
2951 >                    
2952 >                         lum_backg_cos=(E_vl_ext-dir_ill)/3.1415927;
2953 >                         ugr = get_ugr(p, lum_backg_cos, igs, posindex_2);
2954 >                         printf("%f %f \n", dgp,ugr);
2955 >                     }else{      
2956 >                         printf("%f\n", dgp);
2957 >                }
2958          }
2959  
2960  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines