bgmeulem / Luminet

This repo provides material for recreating the famous paper by Jean-Pierre Luminet (1979), simulating the first image of a Schwarzschild black hole.
MIT License
86 stars 6 forks source link

Improve solver for solving on a line #3

Open bgmeulem opened 11 months ago

bgmeulem commented 11 months ago

Currently, isoredshift lines and isofluxlines are calculated by sampling points on the accretion disk, calculating the apparent observer redshift/flux for each point, and plotting isolines from the sampled points in space (it is literally just the matplotlib method contourplot). Given a good solver, it may be possible to get these lines much faster. Luminet also started with isofluxlines and then manually placed dots in each surface between isofluxlines, which is the other way around.

Option 1: generative/explorative solver.

For each value of redshift or flux, find some seedpoint (i.e. the first solution, no matter the coordinate). The safest way to do this is to move horizontally until a point is found. Increase the apparent radius $b$ around that point by $db$ and find the next two solutions. Given a small enough value for $b$, the following statements should be true: At least one solution should exist, but most likely two solutions. If there are <2 solutions, it should be because they physically do not exist, and not because of some quirk of the solver, allowing us to stop exploring there. If 0 solutions exist, stop exploring, as all physical solutions have been found within the solver resolution.

Option 2: a good reference point

It may be possible to find a solution for flux where $dF/db = 0$ and $d^2F/db^2 < 0$, such that all isofluxlines are convex and concentric around that point, making a solver significantly easier; each value for $\alpha$ and $F$ should have a unique value of $b$