Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
4ecb7fc
clean up
lmoresi Aug 8, 2025
43c2020
Evaluation fixes
lmoresi Aug 8, 2025
f9ffdd4
Data structures for swarm and mesh variables
lmoresi Aug 8, 2025
dd81f28
Update __init__.py
lmoresi Aug 8, 2025
276cf76
Notebooks to match
lmoresi Aug 8, 2025
d090f6c
Update terrain_flow_plot.html
lmoresi Aug 8, 2025
ff65767
Evaluation updates
lmoresi Aug 11, 2025
b63ebb4
Fixes for the comments
lmoresi Aug 15, 2025
84f58f2
Merge branch 'development' into global_evaluation_rewrite
lmoresi Aug 15, 2025
5017dd8
Modified kdtree query calls, added query wrapper for pykdtree
Aug 19, 2025
da0546a
Same fixes as for development
lmoresi Aug 19, 2025
9218047
Merge branch 'global_evaluation_rewrite' of https://github.com/underw…
lmoresi Aug 19, 2025
90a044a
Merge branch 'development' into global_evaluation_rewrite
lmoresi Aug 20, 2025
f629790
Updates to global evaluation routine.
lmoresi Aug 22, 2025
38923e1
Fix to set particle ranks when adding locally
lmoresi Aug 22, 2025
098669c
rbf interpolator does not need write access to vars
lmoresi Aug 22, 2025
7512104
Update test_0503_evaluate2.py
lmoresi Aug 23, 2025
3ebf2e4
Tests passing again
lmoresi Aug 23, 2025
fe575bf
Fixing serious bug in kd-tree based particle migration
lmoresi Aug 25, 2025
2b81b66
Fix a swarm issue
lmoresi Aug 25, 2025
c0d2dea
Update swarm.py
lmoresi Aug 25, 2025
d239bd6
Update swarm.py
lmoresi Aug 26, 2025
cf42885
Swarm fixes, derivative changes
lmoresi Aug 28, 2025
04171b3
Corrected swarm rank indexing, points_in_domain return if empty
Aug 28, 2025
d2bf127
Update swarm advection to use global evaluation for mid-point calcula…
lmoresi Aug 29, 2025
99b84eb
Moving PIC swarm to its own file
lmoresi Sep 1, 2025
5c3acc8
Moving NodalPointUWSwarm to NodalPointSwarm
lmoresi Sep 1, 2025
24115dd
Update swarm.py
lmoresi Sep 1, 2025
6cb735b
Refactor discretisation into two files
lmoresi Sep 1, 2025
5d24f12
Updating the swarm.particle_coordinate and hiding it so we can wrap i…
lmoresi Sep 3, 2025
b4d8b96
Updating swarm so particle updates are through the data variable
lmoresi Sep 3, 2025
af308d8
Implementation of swarm.points
lmoresi Sep 6, 2025
d00f613
First pass at updating the ddt.py code to work with the swarm changes
lmoresi Sep 9, 2025
d6120f1
Fixing up Semi-Lagrange ddt so that it uses the global evaluation
lmoresi Sep 15, 2025
51fea08
Implementing NDArray_with_callback for meshVariable / swarmVariable
lmoresi Sep 17, 2025
ddbd0b5
Adding examples and re-working their structure to be more AI friendly
lmoresi Sep 20, 2025
494fae9
Ensure solver internal expressions use the unique-name option
lmoresi Sep 21, 2025
f2ad242
First pass at AI training examples and documentation
lmoresi Sep 21, 2025
589308a
Moving examples code into underworld3 and re-factoring
lmoresi Sep 23, 2025
b1de287
Update docs
lmoresi Sep 25, 2025
65a9e5b
Lots or renumbering of files and re-structuring of where docs live
lmoresi Sep 29, 2025
d7ce754
Clean up repository and fix regression tests
lmoresi Oct 10, 2025
ee29df2
Complete data access migration and universal units system
lmoresi Oct 10, 2025
c1b484f
Fix MPI hanging in global statistics and add parallel testing infrast…
lmoresi Oct 13, 2025
790d7b3
Add planning documentation for coordinate interface and units system …
lmoresi Oct 13, 2025
9b738ea
Bug fixes and follow-up changes for units system and coordinate inter…
lmoresi Oct 13, 2025
a6dfcb0
Add tutorial 13 (Coordinate Units and Gradients) and ignore visualiza…
lmoresi Oct 13, 2025
ccaeb02
Minor improvements to Units System tutorial (notebook 12)
lmoresi Oct 13, 2025
99cde09
Add uw.expression shorthand for uw.function.expression
lmoresi Oct 13, 2025
60ba830
Consolidate parallel tests into modern pytest suite
lmoresi Oct 13, 2025
a8f0ca1
Improve units handling in geometric calculations (WIP)
lmoresi Oct 13, 2025
d76b3fe
Fix infinite loop in mesh geometric calculations with units
lmoresi Oct 13, 2025
54d1181
Document internal coordinate access pattern and deprecate mesh.data
lmoresi Oct 13, 2025
60d56b5
Rename internal _points to _coords and deprecate points properties
lmoresi Oct 13, 2025
0bd538a
Fix coordinate units arithmetic and test assertion issues
lmoresi Oct 21, 2025
3762958
Improve Notebook 12 to suppress reference quantities warnings
lmoresi Oct 22, 2025
d16b3f2
Clarify that reference quantities are optional but recommended
lmoresi Oct 22, 2025
bbb23b6
Fix reference quantities timing and clarify optional nature
lmoresi Oct 22, 2025
cd29f34
Fix reference quantities parameter names to match expected values
lmoresi Oct 22, 2025
bbb0333
Improve Notebook 14: enforce Units Everywhere principle in constituti…
lmoresi Oct 29, 2025
021e45b
Fix unit system consistency in semi-Lagrangian characteristic tracing
lmoresi Oct 29, 2025
75d52e1
Fix UnitAwareArray non-dimensionalisation import errors
lmoresi Nov 1, 2025
509e3fb
fix(coords): Properly scale variable-specific DOF coordinates with units
lmoresi Nov 1, 2025
7e821ae
fix(coords): Properly dimensionalise meshVariable.coords using uw.dim…
lmoresi Nov 1, 2025
7b475c9
Fix multiplication between UWexpression and MeshVariable objects
lmoresi Nov 3, 2025
0b07a5a
Fix critical units system bugs affecting visualization, SymPy compati…
lmoresi Nov 10, 2025
18e4235
Fix parameter units with lazy evaluation in constitutive models
lmoresi Nov 12, 2025
0afd4af
Fix non-dimensionalisation of parameters during JIT compilation
lmoresi Nov 12, 2025
d03988a
Migrate DiffusionModel to Parameter descriptor pattern
lmoresi Nov 12, 2025
538be1a
Migrate DiffusionModel and DarcyFlowModel to Parameter descriptor pat…
lmoresi Nov 12, 2025
fcd3754
Fix show_nondimensional_form() to handle all expression types univers…
lmoresi Nov 12, 2025
99e74a2
Many fixes for unit aware quantities and non-dimensionalisation
lmoresi Nov 12, 2025
2f780cb
Fix critical bugs in non-dimensionalization and visualization
lmoresi Nov 14, 2025
6576946
Clean up _apply_scaling_to_unwrapped after scaling fix
lmoresi Nov 14, 2025
fe079aa
Refactor: Consolidate UWQuantity unwrapping into main JIT flow
lmoresi Nov 14, 2025
45654c6
Add TODO list for future work
lmoresi Nov 14, 2025
f150554
Refactor: Switch evaluate() to use unwrap_for_evaluate()
lmoresi Nov 14, 2025
97b56a5
Refactor: Move EnhancedMeshVariable to enhanced_variables.py
lmoresi Nov 14, 2025
0887023
Fix: Critical non-dimensionalization bug in units.py
lmoresi Nov 14, 2025
7cc9dbb
Enhance: Improve units handling in mesh variable array property
lmoresi Nov 14, 2025
6e03bd2
Add: Architecture analysis document
lmoresi Nov 14, 2025
07a6708
Major cleanup: Organize 73 markdown files and prevent future clutter
lmoresi Nov 14, 2025
2c0bb95
Cleanup: Remove temporary debug and demo scripts from root
lmoresi Nov 14, 2025
e5351fd
Add GitHub integration for architectural reviews
lmoresi Nov 18, 2025
61ff9cf
Add Review System Infrastructure review (meta-review)
lmoresi Nov 18, 2025
367916b
Add review history markers to Review System Infrastructure files
lmoresi Nov 18, 2025
9296407
Address reviewer feedback: Add navigation and workflow sections
lmoresi Nov 18, 2025
5599a27
Add code change review requirements and fix branch links
lmoresi Nov 18, 2025
3df5265
[REVIEW] Review System Infrastructure (#10) (#35)
lmoresi Nov 19, 2025
c012dd4
fix(units): Prevent double-conversion in .to_base_units() and .to_red…
lmoresi Nov 25, 2025
3383493
fix(units): Critical fixes for ND scaling and data caching in solvers
lmoresi Nov 29, 2025
33396c8
test(units): Add model reset to fix strict units collection error
lmoresi Nov 29, 2025
2e302bd
Fix quad mesh boundary interpolation in Semi-Lagrangian scheme
lmoresi Nov 30, 2025
d8abddb
Reorganize documentation and clean up repository root
lmoresi Nov 30, 2025
10b56a0
refactor(tests): Migrate test system from file patterns to pytest mar…
lmoresi Nov 30, 2025
b7a3d7f
fix(tests): Move test_0503_evaluate2 from level_1 to level_2
lmoresi Nov 30, 2025
8871f1d
fix(tests): Fix Level 1 test assertions and move units TDD tests to L…
lmoresi Nov 30, 2025
5112dc8
Merge remote-tracking branch 'origin/review/review-system-infrastruct…
lmoresi Dec 3, 2025
e219f73
snapshot: Pre-UWCoordinate implementation - units system WIP
lmoresi Dec 5, 2025
a65e2bf
fix(units): Smart BC scaling for numeric vs symbolic values
lmoresi Dec 7, 2025
fe3eb54
Fix meshVariable_to_pv_mesh_object returning 0 points with units
lmoresi Dec 7, 2025
5471366
fix(vis): propagate coord_array through Delaunay triangulation
lmoresi Dec 7, 2025
c2a1b3d
fix: Add missing coords_nd property to EnhancedMeshVariable
lmoresi Dec 8, 2025
ed40ee4
feat(units): Enhance solver estimate_dt and expression handling
lmoresi Dec 8, 2025
806cff0
refactor(swarm): Update IndexSwarmVariable and PIC swarm handling
lmoresi Dec 8, 2025
281e164
test: Update pointwise function and integral tests
lmoresi Dec 8, 2025
953e24a
docs(tutorials): Update solver and timestepping tutorials
lmoresi Dec 8, 2025
8ccf7b3
docs(tutorials): Update multi-material and scaling tutorials
lmoresi Dec 8, 2025
fd15497
chore(tutorials): Remove deprecated notebook variants
lmoresi Dec 8, 2025
a743f41
docs: Update Quarto configuration and review process
lmoresi Dec 8, 2025
4765ae0
docs(tutorials): Update coupled timestepping tutorial
lmoresi Dec 8, 2025
25b13a8
docs(tutorials): Add new units-aware tutorials
lmoresi Dec 8, 2025
53ab850
wip(tutorials): Add work-in-progress tutorial drafts
lmoresi Dec 8, 2025
01da257
docs(design): Add units system analysis and development utilities
lmoresi Dec 8, 2025
4fc6257
docs(presentations): Add Quarto presentation system
lmoresi Dec 8, 2025
9cdb75a
docs(reviews): Add units system analysis for December 2025
lmoresi Dec 8, 2025
1e93d92
fix(evaluate): Unwrap UWexpressions before extracting coordinate symbols
lmoresi Dec 12, 2025
d549b58
docs(claude): Reorganize CLAUDE.md for leaner AI context
lmoresi Dec 14, 2025
22bd989
test(units): Check dimensionality instead of specific unit strings
lmoresi Dec 15, 2025
70dc148
fix(tests): Move module-level mesh creation inside test functions
lmoresi Dec 16, 2025
e27b1b2
docs: Add symbol disambiguation to CHANGELOG
lmoresi Dec 16, 2025
ca8469b
Add PETSc 3.24 API compatibility for setCoordinateDisc
lmoresi Dec 16, 2025
94ae766
Fix PETSc 3.24 swarm addNPoints off-by-one bug workaround
lmoresi Dec 16, 2025
648b1fd
fix: PETSc 3.24 API compatibility for addNPoints and setCoordinateDisc
lmoresi Dec 16, 2025
42ebc3f
fix(tests): Make visualization imports optional
lmoresi Dec 16, 2025
4230884
feat: Add pixi build system with conda-forge PETSc
lmoresi Dec 16, 2025
201dff5
refactor: Move global reduction logic to parent class with OOP inheri…
lmoresi Dec 16, 2025
7f7dfaf
feat: Add AMR environment with custom PETSc build infrastructure
lmoresi Dec 16, 2025
2673262
feat: Add ./uw wrapper script with status, setup wizard, and help
lmoresi Dec 16, 2025
14e1269
refactor: Simplify ./uw wrapper and make test default to level 1
lmoresi Dec 16, 2025
4486185
refactor: Flip test script defaults to fast mode
lmoresi Dec 16, 2025
c4926a6
docs: Update ./uw help with test passthrough examples
lmoresi Dec 17, 2025
1dd5293
refactor: Consolidate PETSc tasks to petsc-local-build
lmoresi Dec 17, 2025
b003ebb
docs: Add setup to welcome message commands
lmoresi Dec 17, 2025
430c0c1
fix: Show "(not configured)" when no environment set
lmoresi Dec 17, 2025
d33bcae
docs: Add Jupyter kernel info to setup completion message
lmoresi Dec 17, 2025
f6efcef
feat: Add pixi-kernel to runtime environments
lmoresi Dec 17, 2025
e4d0218
feat: Add ipykernel and pixi-kernel to ALL environments
lmoresi Dec 17, 2025
cb84486
feat: Add automatic pixi installation to setup wizard
lmoresi Dec 17, 2025
6a65fac
feat: Show all environments with status in ./uw welcome
lmoresi Dec 17, 2025
80457d1
refactor: Replace colors with text symbols in env status
lmoresi Dec 17, 2025
69bd6e6
chore: Update pixi.lock for ipykernel/pixi-kernel in base deps
lmoresi Dec 17, 2025
7367c39
docs: Update README with pixi-based installation instructions
lmoresi Dec 17, 2025
d3a918b
docs: Expand README environment documentation
lmoresi Dec 17, 2025
fab4adf
docs: Add Getting Started section with tutorial path
lmoresi Dec 17, 2025
7247e2c
docs: Open tutorial index directly in Getting Started
lmoresi Dec 17, 2025
788ff6b
fix: Update VTK/PyVista versions for vtkCapsuleSource compatibility
lmoresi Dec 17, 2025
0d27149
fix: Use private attributes for PyVista 0.46 compatibility
lmoresi Dec 17, 2025
7d594a2
Improve expression display in notebooks and solver view()
lmoresi Dec 21, 2025
360e6f1
Add status and update commands to ./uw script
lmoresi Dec 21, 2025
c031d83
docs: Add status and update commands to README
lmoresi Dec 21, 2025
62fee03
docs: Update installation docs to focus on ./uw workflow
lmoresi Dec 21, 2025
fd47f07
docs: Add ./uw wrapper and documentation overhaul to CHANGELOG
lmoresi Dec 21, 2025
0b6af0b
docs: Move parallel visualization patterns to design docs
lmoresi Dec 21, 2025
46b9368
feat: Add docstring sweep tool for systematic documentation
lmoresi Dec 21, 2025
6cd4fe2
chore: Ignore Untitled notebooks
lmoresi Dec 21, 2025
5fb0f2e
docs: Comprehensive docstring overhaul with RST math notation
lmoresi Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
130 changes: 130 additions & 0 deletions .github/ISSUE_TEMPLATE/architectural-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Architectural Review
description: Submit a formal architectural review for approval
title: "[REVIEW] "
labels: ["architectural-review", "review:submitted"]
assignees: []

body:
- type: markdown
attributes:
value: |
## Architectural Review Submission

This template is for formal architectural reviews documented in `docs/reviews/`.
These reviews cover system design, implementation rationale, and architectural decisions.

**See**: `docs/developer/CODE-REVIEW-PROCESS.md` for the full review process.

- type: input
id: review-doc
attributes:
label: Review Document Path
description: Path to review document in docs/reviews/
placeholder: docs/reviews/2025-11/FUNCTION-EVALUATION-SYSTEM-REVIEW.md
validations:
required: true

- type: dropdown
id: priority
attributes:
label: Priority
description: Urgency level for this review
options:
- HIGH
- MEDIUM
- LOW
validations:
required: true

- type: dropdown
id: review-type
attributes:
label: Review Category
description: Primary focus area of this review
options:
- System Architecture
- Code Implementation
- Testing Infrastructure
- Documentation
- Performance Optimization
validations:
required: true

- type: textarea
id: summary
attributes:
label: Executive Summary
description: 2-3 sentence overview of what this review covers
placeholder: |
This review documents the merger of evaluate() and global_evaluate() code paths,
introducing automatic lambdification optimization that provides ~10,000x speedup
for pure SymPy expressions through cached compiled functions.
validations:
required: true

- type: textarea
id: scope
attributes:
label: Scope & Key Changes
description: What files, systems, or components are affected?
placeholder: |
**Files Modified**:
- src/underworld3/function/functions_unit_system.py
- src/underworld3/function/pure_sympy_evaluator.py

**Systems Affected**:
- Function evaluation system
- Expression unwrapping
- DMInterpolation caching

- type: textarea
id: metrics
attributes:
label: Key Metrics
description: Quantified impacts (performance, test coverage, LOC, etc.)
placeholder: |
- Performance: 22s → 0.003s (7,400x faster)
- Test coverage: 20 comprehensive tests, all passing
- New code: ~360 lines in pure_sympy_evaluator.py

- type: textarea
id: dependencies
attributes:
label: Dependencies & Blockers
description: Does this review depend on or block other reviews?
placeholder: |
**Depends on**: None
**Blocks**: #XXX (Related feature implementation)
**Related**: #YYY (Units system review)

- type: checkboxes
id: checklist
attributes:
label: Pre-Submission Checklist
description: Ensure review is ready for formal evaluation
options:
- label: All referenced tests are passing
required: true
- label: Review document follows template structure
required: true
- label: Sign-off table is included
required: true
- label: Known limitations are documented
required: true
- label: Testing instructions are provided
required: true
- label: Tracking index (REVIEW-TRACKING-INDEX.md) is updated
required: true

- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other information reviewers should know
placeholder: |
- Background discussions: Link to GitHub Discussions
- Related PRs: #XXX, #YYY
- External references: Papers, benchmarks, etc.

# Reviewed for: Review System Infrastructure & GitHub Integration (Review #10, 2025-11-17)
# Part of formal architectural review process implementation
136 changes: 136 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/architectural-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
<!--
This PR template is for architectural review submissions.
For regular code changes, delete this template and use the default.
-->

## Architectural Review Submission

**Review Type**: [Code Implementation / System Architecture / Testing / Documentation / Performance]
**Priority**: [HIGH / MEDIUM / LOW]
**Review Period**: [YYYY-MM]

---

### 📄 Review Document
- **File**: `docs/reviews/YYYY-MM/[NAME]-REVIEW.md`
- **Related Issue**: Closes #XXX
- **Tracking Index**: `docs/reviews/YYYY-MM/REVIEW-TRACKING-INDEX.md`

### 📋 Executive Summary
<!-- 2-3 sentence overview of what this review documents -->



### 🎯 Scope
**Systems Affected**:
- [ ] Core solvers (Stokes, Poisson, Advection-Diffusion)
- [ ] Variable system (Mesh/Swarm variables, arrays)
- [ ] Units & non-dimensionalization
- [ ] Parallel operations (MPI, collective operations)
- [ ] Testing infrastructure
- [ ] Documentation & examples
- [ ] Other: _________________

**Files Changed**:
- New files: [count]
- Modified files: [count]
- Total LOC: ~[count]

### ✅ Testing Status
- [ ] All tests passing: `pixi run underworld-test`
- [ ] New tests added: [count] tests
- [ ] Test coverage: [X]% (or N/A)
- [ ] Regression tests validated
- [ ] Performance benchmarks run (if applicable)

**Test Results**:
```bash
# Command used
pixi run -e default pytest tests/test_XXXX*.py -v

# Results summary
[X] passed, [Y] failed, [Z] skipped
```

### 📊 Key Metrics & Impact
<!-- Quantify the changes: performance, coverage, complexity -->

**Performance**:
- Before: [metric]
- After: [metric]
- Improvement: [X]x faster / [Y]% reduction

**Quality**:
- Test coverage: [X]%
- Code complexity: [increase/decrease/unchanged]
- Documentation: [X pages / X examples]

### 🔍 Review Checklist (for Reviewers)

**Design & Architecture**:
- [ ] Design rationale is clear and well-justified
- [ ] Trade-offs are documented with alternatives considered
- [ ] System architecture is comprehensible
- [ ] Integration points are identified

**Implementation**:
- [ ] Implementation matches documented design
- [ ] Code quality meets project standards
- [ ] Breaking changes are identified and justified
- [ ] Backward compatibility is addressed

**Testing & Validation**:
- [ ] Testing strategy is adequate
- [ ] Test coverage is sufficient
- [ ] Edge cases are covered
- [ ] Performance impact is assessed

**Documentation**:
- [ ] Known limitations are clearly documented
- [ ] Benefits are quantified
- [ ] User-facing changes are documented
- [ ] Migration guide provided (if needed)

### ⚠️ Known Limitations
<!-- List any current constraints or future work needed -->

1.
2.

### 🔗 Dependencies & Related Work
**Depends on**:
- [ ] Review #XXX (must be approved first)

**Blocks**:
- [ ] Review #YYY (waiting on this review)

**Related**:
- Discussion: [Link to GitHub Discussion]
- Prior art: [Links to related reviews]

---

## 🖊️ Sign-Off

**This PR merge represents formal approval of the architectural review.**

Reviewers: Please review the full document at `docs/reviews/YYYY-MM/[NAME]-REVIEW.md` and approve this PR only when satisfied with the design, implementation, and documentation.

| Role | GitHub Handle | Sign-Off Date | Status |
|------|---------------|---------------|--------|
| **Author** | @username | YYYY-MM-DD | ✅ Submitted |
| **Primary Reviewer** | @reviewer1 | | ⏳ Pending |
| **Secondary Reviewer** | @reviewer2 | | ⏳ Pending |
| **Project Lead** | @lead | | ⏳ Pending |

---

### 📝 Additional Context
<!-- Optional: Any other information reviewers should know -->



<!--
REVIEW HISTORY:
- Review #10 (2025-11-17): Template created as part of Review System Infrastructure review
-->
Loading