neurosynchro.grtrans
: helpers for working with grtrans
¶
This module provides helpers for doing radiative transfer integrations with grtrans, including a simple framework for running endtoend tests.
In order to use this functionality, the Python module radtrans_integrate
must be importable. Sadly grtrans
doesn’t install itself like a regular Python package, so getting this working
can be a pain. Documenting the installation procedure is beyond the scope of
this project.

neurosynchro.grtrans.
integrate
(d, coeffs, psi)[source]¶ Integrate a ray with grtrans, using reasonable defaults.
Call signature
 d
 An array giving the location of each sample along the ray, starting from zero, in cm.
 coeffs
 An array of shape (N, 8) of RT coefficients in the basis where the
Stokes U coefficients are always zero. Such arrays are returned by
neurosynchro.impl.PhysicalApproximator.compute_all_nontrivial()
.  psi
 An array of angles between the local magnetic field and the observer’s Stokes U axis, in radians.
 Return value
 An array of shape (4,), giving the Stokes IQUV at the end of the ray.
This function is mainly intended to test what happens if the passedin coefficients are slightly different due to the neural network approximation. So we don’t provide many knobs or diagnostics here.
Lowlevel Interfaces to grtrans
¶

neurosynchro.grtrans.
integrate_ray_formal
(x, j, K)[source]¶ Use grtrans to integrate one ray using its “formal” (matricant / Omatrix) method.
Call signature
 x
 1D array, shape (n,). Path length along ray, starting from zero, in cm.
 j
 Array, shape (n, 4). Emission coefficients:
j_{IQUV}
, in that order.  K
 Array, shape (n, 7). Absorption coefficients and Faraday mixing coefficients:
alpha_{IQUV}, rho_{QUV}
.  Return value
 Array of shape (4, m): Stokes intensities
IQUV
along parts of the ray with nonzero total emissivities; m <= n.

neurosynchro.grtrans.
integrate_ray_lsoda
(x, j, K, atol=1e08, rtol=1e06, max_step_size=None, frac_max_step_size=0.001, max_steps=100000)[source]¶ Use grtrans to integrate one ray using its LSODA method.
Call signature
 x
 1D array, shape (n,). Path length along ray, starting from zero, in cm.
 j
 Array, shape (n, 4). Emission coefficients:
j_{IQUV}
, in that order.  K
 Array, shape (n, 7). Absorption coefficients and Faraday mixing coefficients:
alpha_{IQUV}, rho_{QUV}
.  atol
 Some kind of tolerance parameter.
 rtol
 Some kind of tolerance parameter.
 max_step_size
 The maximum absolute step size. Overrides frac_max_step_size.
 frac_max_step_size
 If max_step_size is not specified, the maximum step size passed to the
integrator is
x.max()
multiplied by this parameter. Experience shows that (for LSODA at least) this parameter must be pretty small to get good convergence!  max_steps
 The maximum number of steps to take.
 Return value
 Array of shape (4, m): Stokes intensities IQUV along parts of the ray with nonzero total emissivities; m <= n.