Skip to content

BiorthBasis::Cylinder deprojection improvements#208

Draft
The9Cat wants to merge 25 commits intodevelfrom
Toomre
Draft

BiorthBasis::Cylinder deprojection improvements#208
The9Cat wants to merge 25 commits intodevelfrom
Toomre

Conversation

@The9Cat
Copy link
Member

@The9Cat The9Cat commented Mar 13, 2026

Movitation

Needed a less cuspy option than exponential for attempting to produce a doughnut-shaped basis. So this adds a Toomre model for that purpose.

Improvements

  • I noticed that the numerical Abel transform had poor systematics in the inner profile. This is not a bug fix, but it is a noticeable improvement. The original version would not cause failure but could result in weaker EOF convergece.
  • I added all three numerical variants as source configuration choices and switched to the internal derivative form by default. I provided some verification and test routines for this in utils/Tests. These methods could be made user selectable but I have not done this in this PR.

@The9Cat The9Cat requested a review from Copilot March 13, 2026 16:26
@The9Cat The9Cat changed the title Toomre BiorthBasis::Cylinder deprojection improvements Mar 13, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Toomre disk option for cylindrical-basis deprojection/conditioning, expands the Abel inversion implementations used during deprojection, and introduces several standalone test/verification executables under utils/Test.

Changes:

  • Add a new Toomre disk model and wire a configurable deprojection model selector (dmodel) into Cylindrical basis initialization.
  • Update EmpCylSL::create_deprojection to support multiple Abel inversion variants (Derivative/Subtraction/IBP) with derivative as default.
  • Add Deprojector/EmpDeproj test utilities and build targets in utils/Test.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 16 comments.

Show a summary per file
File Description
utils/Test/testEmpDeproj.cc New CLI test comparing EmpDeproj vs Deprojector across profiles/methods
utils/Test/testDeproject.cc New example program for Deprojector (sampled + analytic construction)
utils/Test/testDeprojPlummer.cc New simple deprojection verification driver (currently hardwired)
utils/Test/EmpDeproj.cc New empirical deprojection implementation used by test programs
utils/Test/EmpDeproj.H Header for EmpDeproj test-class API
utils/Test/Deprojector.cc New numerical Abel deprojection implementation and grid integration logic
utils/Test/Deprojector.H Header/API for Deprojector
utils/Test/CubicSpline.cc New spline helper for sampled-data deprojection path
utils/Test/CubicSpline.H Header for CubicSpline
utils/Test/CMakeLists.txt Adds new test executables to the build
include/EmpCylSL.H Adds AbelType + abel_type member to control deprojection variant
include/DiskModels.H Adds Toomre disk density model for deprojection conditioning
exputil/EmpCylSL.cc Switchable Abel inversion variants used in deprojection pipeline
expui/BiorthBasis.cc Adds dmodel config key + lookup map and uses it when deproject is enabled
expui/BiorthBasis.H Introduces DeprojType enum + lookup map for deprojection disk models

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

The9Cat and others added 8 commits March 13, 2026 12:42
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Toomre-based option for cylindrical deprojection and refines the numerical Abel inversion machinery, along with several small test/verification executables under utils/Test.

Changes:

  • Add a new Toomre disk model for deprojection and wire it into cylindrical basis initialization via a dmodel lookup.
  • Introduce multiple Abel inversion variants (derivative/subtraction/IBP) in the EmpCylSL deprojection path (defaulting to derivative).
  • Add standalone utils/Test deprojection utilities (Deprojector, EmpDeproj) and test drivers, and hook them into utils/Test/CMakeLists.txt.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
utils/Test/testEmpDeproj.cc New CLI test comparing EmpDeproj against Deprojector for several analytic profiles.
utils/Test/testEmp.cc New CLI test for donut-shaped (inner cut) empirical deprojection.
utils/Test/testDeproject.cc New minimal examples for Deprojector from sampled data vs functor.
utils/Test/testDeprojPlummer.cc New Plummer/Gaussian/Toomre Deprojector validation driver.
utils/Test/EmpDeproj.cc Adds an empirical deprojection implementation used by the new test drivers.
utils/Test/EmpDeproj.H Declares the EmpDeproj helper class and AbelType selection.
utils/Test/Deprojector.cc Adds a standalone deprojection implementation with tail-matching and improved inner integration handling.
utils/Test/Deprojector.H Declares the standalone Deprojector API used by tests.
utils/Test/CubicSpline.cc Adds a basic natural cubic spline for sampled-data deprojection.
utils/Test/CubicSpline.H Declares the cubic spline used by Deprojector sampled-data ctor.
utils/Test/CMakeLists.txt Registers the new utils/Test executables in the build.
include/EmpCylSL.H Adds AbelType state to EmpCylSL for selecting deprojection variant.
include/DiskModels.H Adds a new Toomre disk density model (used for deprojection conditioning).
exputil/EmpCylSL.cc Updates EmpCylSL’s Abel inversion integral to support multiple variants.
expui/BiorthBasis.cc Adds dmodel string parsing + lookup for selecting deprojection model (mn/exponential/toomre/python).
expui/BiorthBasis.H Adds DeprojType and makes DiskType an enum class for stronger typing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

The9Cat and others added 10 commits March 13, 2026 14:32
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@The9Cat The9Cat marked this pull request as draft March 13, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants