A flux implementation for non-uniform limb-darkened maps. This merges lots of other branches so I open the PR mainly for discussion and I am happy to open another one once the mergings are figured out (See #74).
As discussed with @dfm, the limd-darkening map product is done on the polynomial representation. This has several advantages:
Map product implementation is simpler (see Pijk products compared toYlm)
The rotation is done on maps with lower degree (and not on the full u_deg + y_deg degree)
Once y is represented as p_y, in the polynomial basis , the design matrix for p_y is x = jnp.where(b_occ, sTA2, rT(full_deg)) (less matrices multiplications?)
This version has been tested against starry (see tests/flux_test.py). The sparse matrices still have to be figured out to avoid calls to todense (can you help with that @dfm?). Also tests in float32 don't pass... (half the light curve is nan, to be solved)
Edit: I also added the theta_z rotation in the fused rotation, very simple edit and computing the left_project is straight-forward (see rotation.py). I hope we can use the None args for efficiency, as was implemented for the dot_rotation_matrix.
A
flux
implementation for non-uniform limb-darkened maps. This merges lots of other branches so I open the PR mainly for discussion and I am happy to open another one once the mergings are figured out (See #74).As discussed with @dfm, the limd-darkening map product is done on the polynomial representation. This has several advantages:
Pijk
products compared toYlm
)u_deg + y_deg
degree)y
is represented asp_y
, in the polynomial basis , the design matrix forp_y
isx = jnp.where(b_occ, sTA2, rT(full_deg))
(less matrices multiplications?)This version has been tested against starry (see
tests/flux_test.py
). The sparse matrices still have to be figured out to avoid calls totodense
(can you help with that @dfm?). Also tests in float32 don't pass... (half the light curve is nan, to be solved)Edit: I also added the
theta_z
rotation in the fused rotation, very simple edit and computing theleft_project
is straight-forward (seerotation.py
). I hope we can use theNone
args for efficiency, as was implemented for thedot_rotation_matrix
.