123 |
|
# Output MGF description if requested |
124 |
|
if ( $geout ) { |
125 |
|
print "\t<Geometry format=\"MGF\">\n"; |
126 |
< |
print "<MGFblock unit=\"$gunit\">\n"; |
126 |
> |
print "\t\t<MGFblock unit=\"$gunit\">\n"; |
127 |
|
printf "xf -t %.6f %.6f 0\n", -($dim[0]+$dim[1])/2, -($dim[2]+$dim[3])/2; |
128 |
|
open(MGFSCN, "< $mgfscn"); |
129 |
|
while (<MGFSCN>) { print $_; } |
130 |
|
close MGFSCN; |
131 |
|
print "xf\n"; |
132 |
< |
print "\t\t</MGFblock>\n"; |
132 |
> |
print "</MGFblock>\n"; |
133 |
|
print "\t</Geometry>\n"; |
134 |
|
} |
135 |
|
# Set up surface sampling |
136 |
< |
my $nx = int(sqrt($nsamp*($dim[1]-$dim[0])/($dim[3]-$dim[2])) + .5); |
137 |
< |
my $ny = int($nsamp/$nx + .5); |
136 |
> |
my $nx = int(sqrt($nsamp*($dim[1]-$dim[0])/($dim[3]-$dim[2])) + 1); |
137 |
> |
my $ny = int($nsamp/$nx + 1); |
138 |
|
$nsamp = $nx * $ny; |
139 |
|
my $ns = 2**$ttlog2; |
140 |
|
my (@pdiv, $disk2sq, $sq2disk, $tcal, $kcal); |
181 |
|
norm_radians(p) : if(-p - PI/4, p + 2*PI, p); |
182 |
|
in_disk_r = .999995*sqrt(Dx*Dx + Dy*Dy); |
183 |
|
in_disk_phi = norm_radians(atan2(Dy, Dx)); |
184 |
< |
in_disk_rgn = floor((in_disk_phi + PI/4)/(PI/2)) + 1; |
184 |
> |
in_disk_rgn = floor((.999995*in_disk_phi + PI/4)/(PI/2)) + 1; |
185 |
|
out_square_a = select(in_disk_rgn, |
186 |
|
in_disk_r, |
187 |
|
(PI/2 - in_disk_phi)*in_disk_r/(PI/4), |
277 |
|
q{-e '$1=(0.265*$1+0.670*$2+0.065*$3)/Omega' }; |
278 |
|
if ($pctcull >= 0) { |
279 |
|
$cmd .= "-of $td/" . ($bmodnm,$fmodnm)[$forw] . ".flt " . |
280 |
< |
"| rttree_reduce -a -h -ff -t $pctcull -r $tensortree -g $ttlog2"; |
280 |
> |
"| rttree_reduce -h -ff -t $pctcull -r $tensortree -g $ttlog2"; |
281 |
> |
$cmd .= " -a" if ($tensortree == 3); |
282 |
|
system "$cmd" || die "Failure running rttree_reduce"; |
283 |
|
} else { |
284 |
|
$cmd .= "$td/" . ($bmodnm,$fmodnm)[$forw] . ".flt"; |