GEOS-DEV / GEOS-DEV/GEOS

Consider adding a pseudo-2D mode command line flag

Open
#2,874 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: feature type: new type: testing
Dominant language
C++
Stars
287
Forks
109
Avg merge
4d 41m
Merged PRs (30d)
5

Description

What is the requested feature?
Add a global --2d-mode (or something alike) GEOS command line flag to run cheap 2D computations for non-regression tests.

Is your request related to a specific problem?
GEOS breaks all the time because it is not well covered (at least speaking from the wave propagation side). Writing relevant unit-test is hard, reasoning on a 2D problem is also relatively easier. From the point of view of operator splitting, 2D is more relevant than 1D, and usually extending a 2D problem to 3D is straightforward.

Describe the solution you'd like
I don't know if this is feasible without changing the algorithms too much (I 'm not asking to rewrite 2D solvers within a 3D code - only to modify the algorithms to account for a 2D "mode"), but in the context of finite volumes or finite difference for example, running a 3D mode in a "degraded / faster" 2D mode will consists in computing with a single transverse cell in the y direction and nullify the transverse fluxes or any transverse contribution in matrices, (or in a matrix free algorithm (e.g. multigrid) nullify the contribution of the split transverse operator).

The rationale for this is that we do not have "physical" unit tests (regression tests) within the GEOS repository itself, and we must instead run the costly integratedTests without even observing the solution or quantifying its quality / evolution.

Instead, we could run faster smaller 2D cases, generate some simple plots (lines, heatmaps, ...) in addition to simple reductions (norms, ...) aggregate them in a single image or documentation and visually inspect for regressions.

Describe alternatives you've considered
When we need to update the integratedTests, the 3D cases are usually computationally intensive, and must be reduced / coarsified (for test time / resources purposes) to the point where their physical relevance is questionable.

Additional context
Example uncaught regression https://github.com/GEOS-DEV/GEOS/pull/2849 following the merge of https://github.com/GEOS-DEV/GEOS/pull/2729.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing GEOS command-line handling and the existing integratedTests workflow, then examine how finite-volume, finite-difference, and matrix-free computations represent transverse contributions. Define whether a global 2D mode is feasible without rewriting solvers, and document a scoped implementation and regression-test outcome using faster 2D cases and basic plots or reductions.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
hpc, testing-qa
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.