FireDynamics / FireDynamics/fdsvismap

Static scenes reject queries at t > 0; every caller rediscovers the workaround

Open
#45 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
11
Forks
6
Avg merge
8m
Merged PRs (30d)
4

Description

Follow-up to #41. A synthetic scene computes one time point (`[0.0]` by default), and `wp_is_visible` / `get_visibility_to_wp` call `_check_time_in_computed_range`, so the first query at t > 0 raises:

```
ValueError: time=1.0 exceeds the maximum computed time (0.0). Re-run compute_all() with a higher t_max.
```

For a uniform field this rejection protects nothing — the field is identical at every time. Downstream (pyFDS-Evac) the wrapper now clamps every query to the single computed point, but that knowledge belongs in the library: each direct user of the synthetic route will hit the same ValueError and write the same clamp.

Suggestion: when the scene is synthetic (`_uniform_extco is not None`), resolve any query time to the nearest computed point instead of raising — or expose a `static=True` flag on `set_uniform_extco` doing the same. Keep the range check for slice-backed scenes, where extrapolating past the simulation genuinely lies.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing wp_is_visible and get_visibility_to_wp into _check_time_in_computed_range, then inspect how set_uniform_extco marks synthetic scenes. Run the existing visibility queries for a synthetic scene at t > 0 and confirm the range check remains unchanged for slice-backed scenes. Done means synthetic queries no longer require caller-side clamping while non-synthetic extrapolation is still rejected.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend-api-design
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.