Skip to content

fix: relax DISORT test tolerance under LGPL build - #1148

Merged
olemke merged 1 commit into
atmtools:mainfrom
olemke:relax-disort-error-condition
Jul 15, 2026
Merged

fix: relax DISORT test tolerance under LGPL build#1148
olemke merged 1 commit into
atmtools:mainfrom
olemke:relax-disort-error-condition

Conversation

@olemke

@olemke olemke commented Jul 15, 2026

Copy link
Copy Markdown
Member

The LGPL-compatible ARTS build uses a different eigensolver implementation than the default build, which can produce slightly different floating-point results. The existing test tolerance of 1e-6 was too strict for this configuration and caused the disort-test-4.cpp to fail. This PR widens the accepted relative-error threshold for the LGPL build to 2e-6 so the test passes without weakening the default build's stricter check.

Loosen the relative-error threshold in disort-test.h from 1e-6
to 2e-6 when ARTS_LGPL is defined, accommodating the lower
precision of the LGPL-compatible DISORT configuration.
disort-test-4 hardcodes reference u values (`disort-test-4.cpp:66-227`)
that were generated with the GPL eigensolver — the ported EISPACK.
The linux-lgpl-gcc build instead compiles `disort-eigen.lgpl.cpp:5`,
which wraps the standard diagonalize_inplace from lin_alg.h
(LAPACK/Eigen-based).
The two solvers produce eigendecompositions that differ at the
~1e-7 level. test_4a is a near-conservative single-layer case
(omega = 1 - 1e-6, NQuad = 32, delta-M scaling), which makes the
eigenproblem ill-conditioned, so the solver difference propagates
into u.
@olemke
olemke merged commit 01a582e into atmtools:main Jul 15, 2026
9 checks passed
@olemke
olemke deleted the relax-disort-error-condition branch July 15, 2026 10:31
@riclarsson

Copy link
Copy Markdown
Contributor

Would it not be better to simply set OpenMP counts to 1? Because as far as I can see, that the Lapack is multi-threaded should be the only real difference.

@olemke

olemke commented Jul 15, 2026

Copy link
Copy Markdown
Member Author

Have a look at my change-disort-test4-single-threaded branch
It reverts the previous change and adds an arts_omp_num_threads(1) to main() for disort-cpp-test-4 instead.
And still, the lgpl test failed

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