Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Numerical: Up BC Improvement for High L #3

Open
thompsonphys opened this issue May 26, 2020 · 6 comments
Open

Numerical: Up BC Improvement for High L #3

thompsonphys opened this issue May 26, 2020 · 6 comments
Assignees
Labels
enhancement New feature or request question Further information is requested

Comments

@thompsonphys
Copy link
Collaborator

The current BC code for the Up solution may struggle when the orbital index \ell grows to be large, e.g. for \ell\ge100. The idea would be to add two changes to improve this behavior:

  • Implement radial-stepping functionality, where the recurrence loop will increase the evaluation radius when the loop doesn't converge within an appropriate number of steps.
  • Improve the starting Ansatz for the Up BC evaluation. Currently this is fixed at 100\omega^{-1}, but this outer boundary is not necessarily appropriate again for high \ell, as the potential grows as \ell^2. Further, this choice is maybe too large for low \ell, and moving the outer boundary inward would improve the speed of the code.

I've got a tentative change in the works, but was wondering if anyone has any comments/ideas.

@thompsonphys thompsonphys added enhancement New feature or request question Further information is requested labels May 26, 2020
@thompsonphys thompsonphys self-assigned this May 26, 2020
@barrywardell
Copy link
Member

Another possibility would be to use the MST series to set boundary conditions. That should be convergent at any radius.

@thompsonphys
Copy link
Collaborator Author

thompsonphys commented May 26, 2020

Yeah, I was thinking an "MST" option under the boundary condition choices would be a nice addition. The question is then about balancing speed vs. accuracy, I suppose. I'm not familiar with how long it takes to evaluate a mode object with MST compared to the numerical integration, but I could imagine that getting the boundary data using MST closer to the orbit would win out over using an asymptotic BC farther away only above a certain numerical precision requirement. Certainly something to test.

@nielsw2
Copy link
Member

nielsw2 commented May 26, 2020

I think the MST series converges very rapidly at large radius so it would work but we'd need to test it first. Also issues around precision as MST typically needs high precision but the numerical integration does not. For eccentric orbits our plan was to have the default using MST to compute the solution at, say, rmax and then solve the ODES to get the values down to rmin.

thompsonphys added a commit that referenced this issue May 26, 2020
integration method using the function ReggeWheelerMSTBC. Still needs hooking up
with the rest of the NumericalIntegration code. #3
@thompsonphys
Copy link
Collaborator Author

I've added a quick function ReggeWheelerMSTBC that will compute the MST radial function at specified domain boundaries, but I'm terrible with the rather opaque Mathematica package code, so it's not hooked into anything yet.

@thompsonphys
Copy link
Collaborator Author

I think that perhaps the best way to toggle is between MST and series initial data would be to add an additional parameter to the method options, e.g.:
Method->{"NumericalIntegration", "Domain" -> {10, 10^2}, "BCGeneration"->"MST"||"Series"}

The question is whether we want the MST initial data to have more freedom than the current implementation, such as evaluating the BC data at the boundary of the desired domain when the function is called.

@barrywardell
Copy link
Member

I agree suboptions to the NumercalIntegration method are the way to go. Maybe we want "BoundaryMethod" -> "MST" | "Series" and "BoundaryLocation" -> r options?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants