trenchfoot 0.3.1__tar.gz → 0.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of trenchfoot might be problematic. Click here for more details.

Files changed (111) hide show
  1. trenchfoot-0.4.1/.gitignore +9 -0
  2. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/CHANGELOG.md +30 -0
  3. trenchfoot-0.4.1/Makefile +35 -0
  4. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/PKG-INFO +1 -1
  5. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/generate_scenarios.py +27 -27
  6. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/render_colors.py +1 -0
  7. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/sdf_metadata.json +23 -4
  8. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S02_straight_slope_pipe/sdf_metadata.json +60 -0
  9. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/sdf_metadata.json +84 -0
  10. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/sdf_metadata.json +104 -0
  11. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S05_wide_slope_pair/sdf_metadata.json +84 -0
  12. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/sdf_metadata.json +88 -0
  13. trenchfoot-0.4.1/packages/trenchfoot/scenarios/S07_circular_well/sdf_metadata.json +212 -0
  14. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/trench_scene_generator_v3.py +136 -24
  15. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/pyproject.toml +1 -1
  16. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/tests/test_sdf_readiness.py +66 -1
  17. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/uv.lock +1 -1
  18. trenchfoot-0.3.1/.env +0 -1
  19. trenchfoot-0.3.1/.github_token.env +0 -1
  20. trenchfoot-0.3.1/.pypi_token.env +0 -1
  21. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S02_straight_slope_pipe/sdf_metadata.json +0 -29
  22. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/sdf_metadata.json +0 -37
  23. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/sdf_metadata.json +0 -45
  24. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S05_wide_slope_pair/sdf_metadata.json +0 -37
  25. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/sdf_metadata.json +0 -61
  26. trenchfoot-0.3.1/packages/trenchfoot/scenarios/S07_circular_well/sdf_metadata.json +0 -277
  27. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/.github/workflows/ci.yml +0 -0
  28. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/CLAUDE.md +0 -0
  29. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/LICENSE +0 -0
  30. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/README.md +0 -0
  31. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/STATUS.md +0 -0
  32. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/docs/scenario_gallery.md +0 -0
  33. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/__init__.py +0 -0
  34. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/Dockerfile +0 -0
  35. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/README.md +0 -0
  36. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/__init__.py +0 -0
  37. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/gmsh_sloped_trench_mesher.py +0 -0
  38. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/plot_mesh.py +0 -0
  39. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/ground_truth_isosurface.html +0 -0
  40. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/meshes/trench_scene_culled.obj +0 -0
  41. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/metrics.json +0 -0
  42. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/point_clouds/culled/resolution0p050.pth +0 -0
  43. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/point_clouds/full/resolution0p050.pth +0 -0
  44. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/preview.png +0 -0
  45. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/preview_oblique.png +0 -0
  46. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/preview_side.png +0 -0
  47. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/preview_top.png +0 -0
  48. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/scene.json +0 -0
  49. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/trench_scene.obj +0 -0
  50. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S01_straight_vwalls/volumetric/trench_volume.msh +0 -0
  51. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/ground_truth_isosurface.html +0 -0
  52. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/meshes/trench_scene_culled.obj +0 -0
  53. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/metrics.json +0 -0
  54. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/culled/resolution0p050.pth +0 -0
  55. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/full/resolution0p050.pth +0 -0
  56. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview.png +0 -0
  57. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_oblique.png +0 -0
  58. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_side.png +0 -0
  59. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_top.png +0 -0
  60. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/scene.json +0 -0
  61. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/trench_scene.obj +0 -0
  62. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S02_straight_slope_pipe/volumetric/trench_volume.msh +0 -0
  63. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/ground_truth_isosurface.html +0 -0
  64. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/meshes/trench_scene_culled.obj +0 -0
  65. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/metrics.json +0 -0
  66. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/culled/resolution0p050.pth +0 -0
  67. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/full/resolution0p050.pth +0 -0
  68. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview.png +0 -0
  69. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_oblique.png +0 -0
  70. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_side.png +0 -0
  71. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_top.png +0 -0
  72. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/scene.json +0 -0
  73. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/trench_scene.obj +0 -0
  74. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/volumetric/trench_volume.msh +0 -0
  75. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/ground_truth_isosurface.html +0 -0
  76. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/meshes/trench_scene_culled.obj +0 -0
  77. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/metrics.json +0 -0
  78. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview.png +0 -0
  79. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_oblique.png +0 -0
  80. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_side.png +0 -0
  81. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_top.png +0 -0
  82. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/scene.json +0 -0
  83. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/trench_scene.obj +0 -0
  84. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S04_U_slope_multi_noise/volumetric/trench_volume.msh +0 -0
  85. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/ground_truth_isosurface.html +0 -0
  86. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/metrics.json +0 -0
  87. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_oblique.png +0 -0
  88. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_side.png +0 -0
  89. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_top.png +0 -0
  90. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/scene.json +0 -0
  91. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj +0 -0
  92. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S05_wide_slope_pair/volumetric/trench_volume.msh +0 -0
  93. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/ground_truth_isosurface.html +0 -0
  94. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/metrics.json +0 -0
  95. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_oblique.png +0 -0
  96. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_side.png +0 -0
  97. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_top.png +0 -0
  98. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/scene.json +0 -0
  99. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/trench_scene.obj +0 -0
  100. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S06_bumpy_wide_loop/volumetric/trench_volume.msh +0 -0
  101. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/ground_truth_isosurface.html +0 -0
  102. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/metrics.json +0 -0
  103. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/preview_oblique.png +0 -0
  104. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/preview_side.png +0 -0
  105. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/preview_top.png +0 -0
  106. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/scene.json +0 -0
  107. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/trench_scene.obj +0 -0
  108. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/S07_circular_well/volumetric/trench_volume.msh +0 -0
  109. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scenarios/SUMMARY.json +0 -0
  110. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/packages/trenchfoot/scene_spec_example.json +0 -0
  111. {trenchfoot-0.3.1 → trenchfoot-0.4.1}/tests/test_trenchfoot_generation.py +0 -0
@@ -0,0 +1,9 @@
1
+
2
+ # Secrets
3
+ .env
4
+ *.env
5
+ .pypi_token.env
6
+ .github_token.env
7
+
8
+ # Generated mesh data for local inspection
9
+ data/
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.1] - 2026-01-28
4
+
5
+ ### Fixed
6
+ - **Non-convex polygon extraction**: `_build_sdf_metadata()` now correctly extracts boundary polygons for non-convex shapes (L-shaped, U-shaped trenches) using boundary edge chaining instead of ConvexHull. ConvexHull was incorrectly filling in concave regions, causing sign computation errors at trench edges.
7
+ - **sdf_metadata version bumped to 2.0**: Updated version to reflect the corrected polygon format.
8
+
9
+ ### Added
10
+ - **`_extract_boundary_polygon()` helper**: New geometry helper that extracts ordered boundary vertices from triangulated meshes by finding boundary edges (edges appearing in only one face) and chaining them together.
11
+ - **L-shaped polygon test**: Added `test_metadata_l_shaped_polygon_is_non_convex` to verify correct handling of non-convex trench shapes.
12
+
13
+ ## [0.4.0] - 2026-01-26
14
+
15
+ ### Added
16
+ - **Makefile**: Added `make dump-meshes`, `make dump-meshes-volumetric`, and `make clean-meshes` targets for local mesh inspection
17
+ - **Inner column lid for circular wells**: S07 and other closed-path trenches now have a proper ground surface capping the central column
18
+ - **`fill_interior` option for GroundSpec**: Closed-path trenches can optionally fill the interior island with ground surface (used in S06)
19
+ - **`inner_column_lid` render color**: Gray color matching ground surface
20
+
21
+ ### Fixed
22
+ - **S03 box-pipe intersection**: Reduced box size to create clearance from nearby pipe
23
+ - **S04 diagonal pipe clipping**: Adjusted pipe offset to prevent intersection with inner corner
24
+ - **S05 pipe-box intersection**: Moved box position and offset to avoid pipe collision
25
+ - **S06 ground overhang at open ends**: Closed the loop path to use proper annulus triangulation
26
+ - **S07 pipe positions**: Repositioned all pipes with tangential orientation and negative offset to avoid crossing the central opening
27
+ - **Circular path seam artifact**: `_offset_closed_polyline` now removes duplicate closing point that caused triangular protrusion on inner walls
28
+ - **`.gitignore`**: Added `data/` directory for generated mesh inspection
29
+
30
+ ### Changed
31
+ - **S07 pipe configuration**: All pipes now tangential (angle_deg=0) with offset_u=-0.4, lengths increased to 7.0-8.0 for wall penetration
32
+
3
33
  ## [0.3.1] - 2026-01-08
4
34
 
5
35
  ### Added
@@ -0,0 +1,35 @@
1
+ # ABOUTME: Makefile for trenchfoot development tasks.
2
+ # ABOUTME: Provides targets for testing, mesh generation, and other common operations.
3
+
4
+ .PHONY: test dump-meshes dump-meshes-volumetric clean-meshes
5
+
6
+ # Default data directory for generated meshes
7
+ DATA_DIR := data/scenarios
8
+
9
+ # Run tests
10
+ test:
11
+ uv run pytest -rs
12
+
13
+ # Generate scenario meshes (surface only, with previews) for inspection
14
+ dump-meshes:
15
+ @mkdir -p $(DATA_DIR)
16
+ uv run python -m trenchfoot.generate_scenarios \
17
+ --out $(DATA_DIR) \
18
+ --preview \
19
+ --skip-volumetric
20
+ @echo "Meshes written to $(DATA_DIR)"
21
+
22
+ # Generate scenario meshes including volumetric (requires gmsh)
23
+ dump-meshes-volumetric:
24
+ @mkdir -p $(DATA_DIR)
25
+ uv run python -m trenchfoot.generate_scenarios \
26
+ --out $(DATA_DIR) \
27
+ --preview \
28
+ --volumetric \
29
+ --lc 0.4
30
+ @echo "Meshes (including volumetric) written to $(DATA_DIR)"
31
+
32
+ # Remove generated mesh data
33
+ clean-meshes:
34
+ rm -rf $(DATA_DIR)
35
+ @echo "Cleaned $(DATA_DIR)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trenchfoot
3
- Version: 0.3.1
3
+ Version: 0.4.1
4
4
  Summary: Synthetic trench scenario generator bundle (surfaces + volumetrics).
5
5
  Author: Liam Moore
6
6
  License-File: LICENSE
@@ -223,9 +223,9 @@ def default_scenarios() -> List[ScenarioDefinition]:
223
223
  ],
224
224
  "boxes": [
225
225
  {
226
- "along": 0.8,
227
- "across": 0.5,
228
- "height": 0.4,
226
+ "along": 0.4,
227
+ "across": 0.3,
228
+ "height": 0.25,
229
229
  "s": 0.55,
230
230
  "offset_u": 0.0,
231
231
  }
@@ -266,7 +266,7 @@ def default_scenarios() -> List[ScenarioDefinition]:
266
266
  "angle_deg": 45,
267
267
  "s_center": 0.55,
268
268
  "z": -0.65,
269
- "offset_u": -0.2,
269
+ "offset_u": -0.4,
270
270
  },
271
271
  {
272
272
  "radius": 0.08,
@@ -304,7 +304,7 @@ def default_scenarios() -> List[ScenarioDefinition]:
304
304
  "radius": 0.2,
305
305
  "length": 5.5,
306
306
  "angle_deg": 10,
307
- "s_center": 0.35,
307
+ "s_center": 0.2,
308
308
  "z": -0.4,
309
309
  "offset_u": 0.3,
310
310
  "clearance_scale": 0.9,
@@ -324,8 +324,8 @@ def default_scenarios() -> List[ScenarioDefinition]:
324
324
  "along": 1.2,
325
325
  "across": 0.9,
326
326
  "height": 0.35,
327
- "s": 0.55,
328
- "offset_u": -0.25,
327
+ "s": 0.45,
328
+ "offset_u": -0.4,
329
329
  "z": -0.35,
330
330
  }
331
331
  ],
@@ -344,12 +344,12 @@ def default_scenarios() -> List[ScenarioDefinition]:
344
344
  ScenarioDefinition(
345
345
  "S06_bumpy_wide_loop",
346
346
  {
347
- "path_xy": [[0, 0], [4, -1], [8, 0], [8, 5], [2, 5], [-1, 2]],
347
+ "path_xy": [[0, 0], [4, -1], [8, 0], [8, 5], [2, 5], [-1, 2], [0, 0]],
348
348
  "width": 2.6,
349
349
  "depth": 0.85,
350
350
  "wall_slope": 0.12,
351
351
  "ground_margin": 2.0,
352
- "ground": {"z0": 0.2, "slope": [0.015, 0.03], "size_margin": 1.8},
352
+ "ground": {"z0": 0.2, "slope": [0.015, 0.03], "size_margin": 1.8, "fill_interior": True},
353
353
  "pipes": [
354
354
  {
355
355
  "radius": 0.18,
@@ -395,41 +395,41 @@ def default_scenarios() -> List[ScenarioDefinition]:
395
395
  "ground_margin": 1.0,
396
396
  "ground": {"z0": 0.0, "slope": [0.0, 0.0], "size_margin": 2.0},
397
397
  "pipes": [
398
- # Upper pipe - large diameter, horizontal
398
+ # Upper pipe - tangential
399
399
  {
400
400
  "radius": 0.20,
401
- "length": 4.0,
401
+ "length": 8.0,
402
402
  "angle_deg": 0,
403
- "s_center": 0.25,
403
+ "s_center": 0.0,
404
404
  "z": -0.5,
405
- "offset_u": 0.0,
405
+ "offset_u": -0.4,
406
406
  },
407
- # Middle pipe - medium, angled
407
+ # Middle pipe - tangential
408
408
  {
409
409
  "radius": 0.15,
410
- "length": 3.5,
411
- "angle_deg": 45,
410
+ "length": 7.5,
411
+ "angle_deg": 0,
412
412
  "s_center": 0.5,
413
413
  "z": -1.2,
414
- "offset_u": 0.1,
414
+ "offset_u": -0.4,
415
415
  },
416
- # Lower pipe - small, opposite angle
416
+ # Lower pipe - tangential
417
417
  {
418
418
  "radius": 0.10,
419
- "length": 3.0,
420
- "angle_deg": -60,
421
- "s_center": 0.75,
419
+ "length": 7.0,
420
+ "angle_deg": 0,
421
+ "s_center": 0.25,
422
422
  "z": -1.8,
423
- "offset_u": -0.15,
423
+ "offset_u": -0.4,
424
424
  },
425
- # Deep pipe - crossing at bottom
425
+ # Deep pipe - tangential
426
426
  {
427
427
  "radius": 0.12,
428
- "length": 3.2,
429
- "angle_deg": 90,
430
- "s_center": 0.0,
428
+ "length": 7.5,
429
+ "angle_deg": 0,
430
+ "s_center": 0.75,
431
431
  "z": -2.2,
432
- "offset_u": 0.0,
432
+ "offset_u": -0.4,
433
433
  },
434
434
  ],
435
435
  "boxes": [],
@@ -6,6 +6,7 @@ _TRENCH_COLORS = {
6
6
  "trench_bottom": "#d2a679",
7
7
  "trench_cap_for_volume": "#e6cfa4",
8
8
  "ground_surface": "#b0b0b0",
9
+ "inner_column_lid": "#b0b0b0", # same as ground
9
10
  }
10
11
 
11
12
  _PIPE_COLORS = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b"]
@@ -8,22 +8,41 @@
8
8
  "vertices_xy": [
9
9
  [
10
10
  0.0,
11
- 0.5
11
+ -0.5
12
12
  ],
13
13
  [
14
- 5.0,
14
+ 0.0,
15
15
  0.5
16
16
  ],
17
17
  [
18
18
  5.0,
19
- -0.5
19
+ 0.5
20
20
  ],
21
21
  [
22
- 0.0,
22
+ 5.0,
23
23
  -0.5
24
24
  ]
25
25
  ],
26
26
  "z_level": 0.0
27
+ },
28
+ "surface_groups": {
29
+ "trench_bottom": {
30
+ "normal_direction": "up",
31
+ "surface_type": "floor"
32
+ },
33
+ "trench_walls": {
34
+ "normal_direction": "inward",
35
+ "surface_type": "wall"
36
+ },
37
+ "ground_surface": {
38
+ "normal_direction": "up",
39
+ "surface_type": "ground"
40
+ }
41
+ },
42
+ "embedded_objects": {
43
+ "pipes": 0,
44
+ "boxes": 0,
45
+ "spheres": 0
27
46
  }
28
47
  }
29
48
  }
@@ -0,0 +1,60 @@
1
+ {
2
+ "sdf_metadata": {
3
+ "version": "2.0",
4
+ "normal_convention": "into_void",
5
+ "geometry_type": "open_trench",
6
+ "trench_opening": {
7
+ "type": "polygon",
8
+ "vertices_xy": [
9
+ [
10
+ 0.0,
11
+ -0.6
12
+ ],
13
+ [
14
+ 0.0,
15
+ 0.6
16
+ ],
17
+ [
18
+ 6.0,
19
+ 0.6
20
+ ],
21
+ [
22
+ 6.0,
23
+ -0.6
24
+ ]
25
+ ],
26
+ "z_level": 0.0
27
+ },
28
+ "surface_groups": {
29
+ "trench_bottom": {
30
+ "normal_direction": "up",
31
+ "surface_type": "floor"
32
+ },
33
+ "trench_walls": {
34
+ "normal_direction": "inward",
35
+ "surface_type": "wall"
36
+ },
37
+ "ground_surface": {
38
+ "normal_direction": "up",
39
+ "surface_type": "ground"
40
+ },
41
+ "pipe0_pipe_side": {
42
+ "normal_direction": "outward",
43
+ "surface_type": "embedded_object"
44
+ },
45
+ "pipe0_pipe_cap_neg": {
46
+ "normal_direction": "outward",
47
+ "surface_type": "embedded_object"
48
+ },
49
+ "pipe0_pipe_cap_pos": {
50
+ "normal_direction": "outward",
51
+ "surface_type": "embedded_object"
52
+ }
53
+ },
54
+ "embedded_objects": {
55
+ "pipes": 1,
56
+ "boxes": 0,
57
+ "spheres": 0
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "sdf_metadata": {
3
+ "version": "2.0",
4
+ "normal_convention": "into_void",
5
+ "geometry_type": "open_trench",
6
+ "trench_opening": {
7
+ "type": "polygon",
8
+ "vertices_xy": [
9
+ [
10
+ 0.0,
11
+ -0.6
12
+ ],
13
+ [
14
+ 0.0,
15
+ 0.6
16
+ ],
17
+ [
18
+ 5.4,
19
+ 0.6
20
+ ],
21
+ [
22
+ 5.4,
23
+ 4.0
24
+ ],
25
+ [
26
+ 6.6,
27
+ 4.0
28
+ ],
29
+ [
30
+ 6.6,
31
+ -0.6
32
+ ]
33
+ ],
34
+ "z_level": 0.0
35
+ },
36
+ "surface_groups": {
37
+ "trench_bottom": {
38
+ "normal_direction": "up",
39
+ "surface_type": "floor"
40
+ },
41
+ "trench_walls": {
42
+ "normal_direction": "inward",
43
+ "surface_type": "wall"
44
+ },
45
+ "ground_surface": {
46
+ "normal_direction": "up",
47
+ "surface_type": "ground"
48
+ },
49
+ "pipe0_pipe_side": {
50
+ "normal_direction": "outward",
51
+ "surface_type": "embedded_object"
52
+ },
53
+ "pipe0_pipe_cap_neg": {
54
+ "normal_direction": "outward",
55
+ "surface_type": "embedded_object"
56
+ },
57
+ "pipe0_pipe_cap_pos": {
58
+ "normal_direction": "outward",
59
+ "surface_type": "embedded_object"
60
+ },
61
+ "pipe1_pipe_side": {
62
+ "normal_direction": "outward",
63
+ "surface_type": "embedded_object"
64
+ },
65
+ "pipe1_pipe_cap_neg": {
66
+ "normal_direction": "outward",
67
+ "surface_type": "embedded_object"
68
+ },
69
+ "pipe1_pipe_cap_pos": {
70
+ "normal_direction": "outward",
71
+ "surface_type": "embedded_object"
72
+ },
73
+ "box0": {
74
+ "normal_direction": "outward",
75
+ "surface_type": "embedded_object"
76
+ }
77
+ },
78
+ "embedded_objects": {
79
+ "pipes": 2,
80
+ "boxes": 1,
81
+ "spheres": 0
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "sdf_metadata": {
3
+ "version": "2.0",
4
+ "normal_convention": "into_void",
5
+ "geometry_type": "open_trench",
6
+ "trench_opening": {
7
+ "type": "polygon",
8
+ "vertices_xy": [
9
+ [
10
+ 0.0,
11
+ -0.7
12
+ ],
13
+ [
14
+ 0.0,
15
+ 0.7
16
+ ],
17
+ [
18
+ 5.3,
19
+ 0.7
20
+ ],
21
+ [
22
+ 5.3,
23
+ 3.3
24
+ ],
25
+ [
26
+ 0.0,
27
+ 3.3
28
+ ],
29
+ [
30
+ 0.0,
31
+ 4.7
32
+ ],
33
+ [
34
+ 6.7,
35
+ 4.7
36
+ ],
37
+ [
38
+ 6.7,
39
+ -0.7
40
+ ]
41
+ ],
42
+ "z_level": 0.0
43
+ },
44
+ "surface_groups": {
45
+ "trench_bottom": {
46
+ "normal_direction": "up",
47
+ "surface_type": "floor"
48
+ },
49
+ "trench_walls": {
50
+ "normal_direction": "inward",
51
+ "surface_type": "wall"
52
+ },
53
+ "ground_surface": {
54
+ "normal_direction": "up",
55
+ "surface_type": "ground"
56
+ },
57
+ "pipe0_pipe_side": {
58
+ "normal_direction": "outward",
59
+ "surface_type": "embedded_object"
60
+ },
61
+ "pipe0_pipe_cap_neg": {
62
+ "normal_direction": "outward",
63
+ "surface_type": "embedded_object"
64
+ },
65
+ "pipe0_pipe_cap_pos": {
66
+ "normal_direction": "outward",
67
+ "surface_type": "embedded_object"
68
+ },
69
+ "pipe1_pipe_side": {
70
+ "normal_direction": "outward",
71
+ "surface_type": "embedded_object"
72
+ },
73
+ "pipe1_pipe_cap_neg": {
74
+ "normal_direction": "outward",
75
+ "surface_type": "embedded_object"
76
+ },
77
+ "pipe1_pipe_cap_pos": {
78
+ "normal_direction": "outward",
79
+ "surface_type": "embedded_object"
80
+ },
81
+ "pipe2_pipe_side": {
82
+ "normal_direction": "outward",
83
+ "surface_type": "embedded_object"
84
+ },
85
+ "pipe2_pipe_cap_neg": {
86
+ "normal_direction": "outward",
87
+ "surface_type": "embedded_object"
88
+ },
89
+ "pipe2_pipe_cap_pos": {
90
+ "normal_direction": "outward",
91
+ "surface_type": "embedded_object"
92
+ },
93
+ "sphere0": {
94
+ "normal_direction": "outward",
95
+ "surface_type": "embedded_object"
96
+ }
97
+ },
98
+ "embedded_objects": {
99
+ "pipes": 3,
100
+ "boxes": 0,
101
+ "spheres": 1
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "sdf_metadata": {
3
+ "version": "2.0",
4
+ "normal_convention": "into_void",
5
+ "geometry_type": "open_trench",
6
+ "trench_opening": {
7
+ "type": "polygon",
8
+ "vertices_xy": [
9
+ [
10
+ 0.0,
11
+ -1.2
12
+ ],
13
+ [
14
+ 0.0,
15
+ 1.2
16
+ ],
17
+ [
18
+ 7.8,
19
+ 1.2
20
+ ],
21
+ [
22
+ 7.8,
23
+ 3.0
24
+ ],
25
+ [
26
+ 10.2,
27
+ 3.0
28
+ ],
29
+ [
30
+ 10.2,
31
+ -1.2
32
+ ]
33
+ ],
34
+ "z_level": 0.0
35
+ },
36
+ "surface_groups": {
37
+ "trench_bottom": {
38
+ "normal_direction": "up",
39
+ "surface_type": "floor"
40
+ },
41
+ "trench_walls": {
42
+ "normal_direction": "inward",
43
+ "surface_type": "wall"
44
+ },
45
+ "ground_surface": {
46
+ "normal_direction": "up",
47
+ "surface_type": "ground"
48
+ },
49
+ "pipe0_pipe_side": {
50
+ "normal_direction": "outward",
51
+ "surface_type": "embedded_object"
52
+ },
53
+ "pipe0_pipe_cap_neg": {
54
+ "normal_direction": "outward",
55
+ "surface_type": "embedded_object"
56
+ },
57
+ "pipe0_pipe_cap_pos": {
58
+ "normal_direction": "outward",
59
+ "surface_type": "embedded_object"
60
+ },
61
+ "pipe1_pipe_side": {
62
+ "normal_direction": "outward",
63
+ "surface_type": "embedded_object"
64
+ },
65
+ "pipe1_pipe_cap_neg": {
66
+ "normal_direction": "outward",
67
+ "surface_type": "embedded_object"
68
+ },
69
+ "pipe1_pipe_cap_pos": {
70
+ "normal_direction": "outward",
71
+ "surface_type": "embedded_object"
72
+ },
73
+ "box0": {
74
+ "normal_direction": "outward",
75
+ "surface_type": "embedded_object"
76
+ }
77
+ },
78
+ "embedded_objects": {
79
+ "pipes": 2,
80
+ "boxes": 1,
81
+ "spheres": 0
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "sdf_metadata": {
3
+ "version": "2.0",
4
+ "normal_convention": "into_void",
5
+ "geometry_type": "closed_well",
6
+ "trench_opening": {
7
+ "type": "polygon",
8
+ "vertices_xy": [
9
+ [
10
+ -0.8953594528137068,
11
+ -1.116169465122313
12
+ ],
13
+ [
14
+ 4.0,
15
+ -2.3400093283257397
16
+ ],
17
+ [
18
+ 9.3,
19
+ -1.0150093283257395
20
+ ],
21
+ [
22
+ 9.3,
23
+ 6.3
24
+ ],
25
+ [
26
+ 1.4615223689149763,
27
+ 6.3
28
+ ],
29
+ [
30
+ -2.58178866727825,
31
+ 2.2566889638067735
32
+ ]
33
+ ],
34
+ "z_level": 0.2
35
+ },
36
+ "surface_groups": {
37
+ "trench_bottom": {
38
+ "normal_direction": "up",
39
+ "surface_type": "floor"
40
+ },
41
+ "trench_walls": {
42
+ "normal_direction": "inward",
43
+ "surface_type": "wall"
44
+ },
45
+ "ground_surface": {
46
+ "normal_direction": "up",
47
+ "surface_type": "ground"
48
+ },
49
+ "ground_island": {
50
+ "normal_direction": "up",
51
+ "surface_type": "ground"
52
+ },
53
+ "pipe0_pipe_side": {
54
+ "normal_direction": "outward",
55
+ "surface_type": "embedded_object"
56
+ },
57
+ "pipe0_pipe_cap_neg": {
58
+ "normal_direction": "outward",
59
+ "surface_type": "embedded_object"
60
+ },
61
+ "pipe0_pipe_cap_pos": {
62
+ "normal_direction": "outward",
63
+ "surface_type": "embedded_object"
64
+ },
65
+ "pipe1_pipe_side": {
66
+ "normal_direction": "outward",
67
+ "surface_type": "embedded_object"
68
+ },
69
+ "pipe1_pipe_cap_neg": {
70
+ "normal_direction": "outward",
71
+ "surface_type": "embedded_object"
72
+ },
73
+ "pipe1_pipe_cap_pos": {
74
+ "normal_direction": "outward",
75
+ "surface_type": "embedded_object"
76
+ },
77
+ "sphere0": {
78
+ "normal_direction": "outward",
79
+ "surface_type": "embedded_object"
80
+ }
81
+ },
82
+ "embedded_objects": {
83
+ "pipes": 2,
84
+ "boxes": 0,
85
+ "spheres": 1
86
+ }
87
+ }
88
+ }