Skip to content

DISORT/VDISORT overhaul - #1163

Open
riclarsson wants to merge 84 commits into
atmtools:mainfrom
riclarsson:vdisort1
Open

DISORT/VDISORT overhaul#1163
riclarsson wants to merge 84 commits into
atmtools:mainfrom
riclarsson:vdisort1

Conversation

@riclarsson

Copy link
Copy Markdown
Contributor

This is a PR written mostly by AI (ChatGPT 5.6 Sol) with my guidance to ensure that existing and known tests are working (and that there is consistency between DISORT and VDISORT). Below is what it considers done, missing, and requests from a review.

My main gripe is I need the VDISORT test suite. I have set up some simple tests for known physics, like simple Fresnel-to-Brewster and Rayleigh at 90 deg. But I do not have a wide enough range of tests to confirm if this is working in all ways we want, so there is no user facing VDISORT code.

Done:

  • Validate CPP-DISORT against the supported Fortran DISORT reference suite. Latest version
  • Extend VDISORT to reproduce the same 16 plane-parallel tests through its scalar embedding.
  • Add arbitrary-angle radiances, unified flux results, DFDT, IMS/TMS corrections, delta-M preprocessing, and scalar delta-M-plus.
  • Stabilize conservative and near-conservative scattering.
  • Add polarized sources, boundaries, BRDFs, Fresnel and Cox–Munk surfaces, and combined surface models.
  • Share common DISORT/VDISORT algorithms and BRDF kernels.
  • Improve eigenmode validation, LAPACK error handling, caching, and allocation behavior.
  • Expand analytic, reference, Python-interface, BRDF, and polarization tests.
  • Document solver mathematics, matrix layouts, numerical behavior, validation scope, and known limitations.
  • Reorganize the test and CMake structure.

Missing:

  • Independent polarized VDISORT reference data for many-stream Mueller problems, reference-plane rotations, and polarized IMS/TMS.
  • User-facing VDISORT workspace methods.
  • The limiting solution and warning policy for beam–eigenmode resonance.
  • General polarized delta-M-plus peak inference.
  • Exact zero-thickness layer support.
  • Additional conservative Jordan pairs beyond energy conservation.
  • Off-grid ideal-Fresnel direct-beam reflection; Cox–Munk remains the beam-compatible alternative.
  • Pseudo-spherical geometry, intentionally out of scope.

Requests:

  • Standard polarized VDISORT benchmark cases with complete atmospheric, illumination, boundary, and output data.
  • Many-stream Mueller-scattering cases with nonzero (Q), (U), and (V).
  • Non-principal-plane cases that verify Stokes reference-plane rotations and the sign conventions for (U) and (V).
  • Polarized IMS/TMS and delta-M cases with strongly forward-peaked scattering.
  • Conservative polarized media, especially any physical example with more than one conserved mode.
  • Direct-beam cases near beam–eigenmode resonance.
  • Polarized surface cases for Fresnel, rough Fresnel/Cox–Munk, and mixed diffuse/specular reflection.
  • Cross-platform numerical results for GCC, Clang, MSVC, and alternative LAPACK implementations.
  • Realistic ARTS use cases that can guide the eventual user-facing VDISORT workspace interface.

@riclarsson
riclarsson requested review from m-brath and olemke September 1, 2026 11:20
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.

1 participant