Changeset 3207

Show
Ignore:
Timestamp:
11/18/11 12:16:26 (6 months ago)
Author:
farhi
Message:

monitor_nD: fixed per_cm2 and per_steradian options which may have caused spikes

Location:
trunk/lib/share
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/share/monitor_nd-lib.c

    r3180 r3207  
    140140    Vars->Flag_Exclusive    = 0;   /* absorb neutrons out of monitor limits */ 
    141141    Vars->Flag_per_cm2      = 0;   /* flux is per cm2 */ 
    142     Vars->Flag_per_st       = 0;   /* flux is per steradian (in Auto mode only) */ 
    143142    Vars->Flag_log          = 0;   /* log10 of the flux */ 
    144143    Vars->Flag_parallel     = 0;   /* set neutron state back after detection (parallel components) */ 
     
    157156    Vars->min_x = Vars->max_x  =0; 
    158157    Vars->min_y = Vars->max_y  =0; 
    159     Vars->steradian=0; 
    160158 
    161159    Set_Vars_Coord_Type = DEFS->COORD_NONE; 
     
    205203 
    206204    if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; 
    207     if (strstr(Vars->option, "steradian")) Vars->Flag_per_st = 1; 
    208205 
    209206    if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) 
     
    356353            strncat(Set_Vars_Coord_Label, " [n/s", 30); 
    357354            if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); 
    358             if (Vars->Flag_per_st) { 
    359               if (Vars->Flag_Auto_Limits) 
    360                 strncat(Set_Vars_Coord_Label, "/sr", 30); 
    361             } 
    362355            if (XY > 1 && Vars->Coord_Number) 
    363356              strncat(Set_Vars_Coord_Label, "/bin", 30); 
     
    571564      strncat(Vars->Coord_Label[0], " [n/s", 30); 
    572565      if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); 
    573       if (Vars->Flag_per_st) { 
    574         if (Vars->Flag_Auto_Limits) 
    575           strncat(Vars->Coord_Label[0], "/sr", 30); 
    576         else 
    577           printf("Monitor_nD: %s: Flux per steradian requires Auto limits mode\n" 
    578                  "WARNING     use options=\"... auto ...\". Unactivating this option.\n", Vars->compcurname); 
    579       } 
     566       
    580567      if (XY > 1 && Vars->Coord_Number) 
    581568        strncat(Vars->Coord_Label[0], "/bin", 30); 
     
    827814        Vars->mean_dy += Vars->cp*fabs(Vars->cvy/v); 
    828815      } 
    829       Vars->area =(Vars->max_x-Vars->min_x) 
    830                        *(Vars->max_y-Vars->min_y)*1E4; /* cm2 */ 
    831       if (Vars->Flag_per_st) 
    832       Vars->steradian = 2*fabs(2*atan(Vars->mean_dx/Vars->mean_p) 
    833                                 *sin(2*atan(Vars->mean_dy/Vars->mean_p)/2)); 
    834816         
    835817      for (i = 0; i <= Vars->Coord_Number; i++) 
     
    967949      if (Vars->Flag_per_cm2 && Vars->area      != 0) 
    968950        pp /= Vars->area; 
    969       if (Vars->Flag_per_st  && Vars->steradian != 0) 
    970         pp /= Vars->steradian; 
    971951 
    972952      /* 1D and n1D case : Vars->Flag_Multiple */ 
     
    10431023 
    10441024    ratio = 100.0*mcget_run_num()/mcget_ncount(); 
    1045     if (Vars->Flag_per_cm2 && Vars->area && Vars->Flag_Verbose) 
    1046       printf("Monitor_nD: %s: detector area is %g [cm2]\n", 
    1047         Vars->compcurname, Vars->area); 
    1048     if (Vars->Flag_per_st && Vars->steradian && Vars->Flag_Verbose) 
    1049       printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg2])\n", 
    1050         Vars->compcurname, Vars->steradian, 
     1025    if (Vars->Flag_Verbose || Vars->Flag_per_cm2) { 
     1026      printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", 
     1027        Vars->compcurname, (Vars->max_x-Vars->min_x) 
     1028                          *(Vars->max_y-Vars->min_y)*1E4, Vars->area); 
     1029      printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", 
     1030        Vars->compcurname,  
     1031        2*fabs(2*atan(Vars->mean_dx/Vars->mean_p) 
     1032         *sin(2*atan(Vars->mean_dy/Vars->mean_p)/2)), 
    10511033        atan(Vars->mean_dx/Vars->mean_p)*RAD2DEG, 
    10521034        atan(Vars->mean_dy/Vars->mean_p)*RAD2DEG); 
     1035    } 
    10531036 
    10541037    /* check Buffer flush when end of simulation reached */ 
     
    11121095        if (Vars->Flag_per_cm2 && Vars->area      != 0) 
    11131096          pp /= Vars->area; 
    1114         if (Vars->Flag_per_st  && Vars->steradian != 0) 
    1115           pp /= Vars->steradian; 
    11161097 
    11171098        /* 1D and n1D case : Vars->Flag_Multiple */ 
  • trunk/lib/share/monitor_nd-lib.h

    r2772 r3207  
    9696  typedef struct MonitornD_Variables 
    9797  { 
    98     double area, steradian; 
     98    double area; 
    9999    double Sphere_Radius     ; 
    100100    double Cylinder_Height   ; 
     
    108108    char   Flag_Exclusive    ;   /* absorb neutrons out of monitor limits */ 
    109109    char   Flag_per_cm2      ;   /* flux is per cm2 */ 
    110     char   Flag_per_st       ;   /* flux is per steradian */ 
    111110    char   Flag_log          ;   /* log10 of the flux */ 
    112111    char   Flag_parallel     ;   /* set neutron state back after detection (parallel components) */