refraction_cutoff_mask#

exo_skryer.refraction.refraction_cutoff_mask(state: Dict[str, Array], params: Dict[str, Array], opac: Dict[str, Array]) Array[source]#

Return a boolean mask for impact parameters blocked by refraction.

The mask is defined on the same “impact parameter grid” used by the current transit RT kernels: b R0 + z_lay (layer midpoints).

For each (layer, wavelength), we estimate the bending angle using the exponential-atmosphere approximation:

alpha(b, λ) ≈ (n(b, λ) - 1) * sqrt(2π b / H)

and mark a ray as blocked if:

alpha(b, λ) > theta_star, theta_star = asin(R_s / a)

where a = a_sm * AU.

Parameters:
statedict

Must contain R0, R_s, z_lay, T_lay, mu_lay, nd_lay, and vmr_lay.

paramsdict

Must contain log_10_g and a_sm (AU).

opacdict

Must contain ray_refractivity_coeff_table aligned with registry_ray.ray_species_names().

Returns:
maskjnp.ndarray, shape (nlay, nwl), dtype bool

True where refraction blocks stellar rays (treat as fully opaque).