@@ -5,7 +5,7 @@ const lineprofile = @import("line-profile.zig");
55
66// number of parameters in the table
77const NPARAMS = 2 ;
8- const MODELPATH = "kerr-transfer-functions.fits" ;
8+ const MODELPATH = "./ kerr-transfer-functions.fits" ;
99
1010// refinement for the energy grid
1111const REFINEMENT = 5 ;
@@ -61,7 +61,7 @@ fn setup() !void {
6161 );
6262
6363 // build r grid
64- r_grid = try util .inverse_grid (f32 , allocator , 3 .0 , 50.0 , 1000 );
64+ r_grid = try util .inverse_grid (f32 , allocator , 1 .0 , 50.0 , 2000 );
6565 errdefer allocator .free (r_grid );
6666
6767 // build some g grid, it will be refined anyway
@@ -118,6 +118,7 @@ fn integrate_lineprofile(
118118
119119 // rebin for output
120120 var j : usize = 0 ;
121+ var total_flux : f64 = 0 ;
121122 for (0.. flux .len ) | i | {
122123 // ensure it is zeroed
123124 flux [i ] = 0 ;
@@ -132,9 +133,10 @@ fn integrate_lineprofile(
132133 // normalize to counts per bin
133134 const e_midpoint = 0.5 * (energy [i + 1 ] + energy [i ]);
134135 flux [i ] = flux [i ] / e_midpoint ;
136+ total_flux += flux [i ];
135137 }
136138 // normalize output by area
137- util . normalize ( f64 , flux );
139+ for ( flux ) | * f | f .* /= total_flux ;
138140}
139141
140142export fn kerrlineprofile (
@@ -148,15 +150,15 @@ export fn kerrlineprofile(
148150 init_ptr : * const u8 ,
149151) callconv (.C ) void {
150152 // unused
151- _ = init_ptr ;
152- _ = flux_variance_ptr ;
153153 _ = spectrum ;
154+ _ = flux_variance_ptr ;
155+ _ = init_ptr ;
154156
155157 const N = @intCast (usize , n_flux );
156158 // convert to slices
157159 const energy = @ptrCast ([* ]const f64 , energy_ptr )[0 .. N + 1 ];
158160 var flux = @ptrCast ([* ]f64 , flux_ptr )[0.. N ];
159161
160- var parameters = Parameters (f32 ).from_ptr (parameters_ptr );
162+ const parameters = Parameters (f32 ).from_ptr (parameters_ptr );
161163 integrate_lineprofile (f32 , energy , flux , parameters );
162164}
0 commit comments