Changeset 3207
- Timestamp:
- 11/18/11 12:16:26 (6 months ago)
- Location:
- trunk/lib/share
- Files:
-
- 2 modified
-
monitor_nd-lib.c (modified) (9 diffs)
-
monitor_nd-lib.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/share/monitor_nd-lib.c
r3180 r3207 140 140 Vars->Flag_Exclusive = 0; /* absorb neutrons out of monitor limits */ 141 141 Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ 142 Vars->Flag_per_st = 0; /* flux is per steradian (in Auto mode only) */143 142 Vars->Flag_log = 0; /* log10 of the flux */ 144 143 Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ … … 157 156 Vars->min_x = Vars->max_x =0; 158 157 Vars->min_y = Vars->max_y =0; 159 Vars->steradian=0;160 158 161 159 Set_Vars_Coord_Type = DEFS->COORD_NONE; … … 205 203 206 204 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;208 205 209 206 if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) … … 356 353 strncat(Set_Vars_Coord_Label, " [n/s", 30); 357 354 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 }362 355 if (XY > 1 && Vars->Coord_Number) 363 356 strncat(Set_Vars_Coord_Label, "/bin", 30); … … 571 564 strncat(Vars->Coord_Label[0], " [n/s", 30); 572 565 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 580 567 if (XY > 1 && Vars->Coord_Number) 581 568 strncat(Vars->Coord_Label[0], "/bin", 30); … … 827 814 Vars->mean_dy += Vars->cp*fabs(Vars->cvy/v); 828 815 } 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));834 816 835 817 for (i = 0; i <= Vars->Coord_Number; i++) … … 967 949 if (Vars->Flag_per_cm2 && Vars->area != 0) 968 950 pp /= Vars->area; 969 if (Vars->Flag_per_st && Vars->steradian != 0)970 pp /= Vars->steradian;971 951 972 952 /* 1D and n1D case : Vars->Flag_Multiple */ … … 1043 1023 1044 1024 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)), 1051 1033 atan(Vars->mean_dx/Vars->mean_p)*RAD2DEG, 1052 1034 atan(Vars->mean_dy/Vars->mean_p)*RAD2DEG); 1035 } 1053 1036 1054 1037 /* check Buffer flush when end of simulation reached */ … … 1112 1095 if (Vars->Flag_per_cm2 && Vars->area != 0) 1113 1096 pp /= Vars->area; 1114 if (Vars->Flag_per_st && Vars->steradian != 0)1115 pp /= Vars->steradian;1116 1097 1117 1098 /* 1D and n1D case : Vars->Flag_Multiple */ -
trunk/lib/share/monitor_nd-lib.h
r2772 r3207 96 96 typedef struct MonitornD_Variables 97 97 { 98 double area , steradian;98 double area; 99 99 double Sphere_Radius ; 100 100 double Cylinder_Height ; … … 108 108 char Flag_Exclusive ; /* absorb neutrons out of monitor limits */ 109 109 char Flag_per_cm2 ; /* flux is per cm2 */ 110 char Flag_per_st ; /* flux is per steradian */111 110 char Flag_log ; /* log10 of the flux */ 112 111 char Flag_parallel ; /* set neutron state back after detection (parallel components) */
