Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 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
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
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/build_deploy_pdoc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
export PETSC_DIR="/home/runner/micromamba/envs/uw3_test/lib"
VERSION=`python3 setup.py --version`
echo "UW - version " ${VERSION}
./compile.sh
./scripts/compile.sh

- name: Build docs with pdoc
shell: bash -l {0}
Expand All @@ -53,7 +53,7 @@ jobs:
echo "VERSION=$(echo $VERSION)" >> $GITHUB_ENV
# mkdir -p docs
pip install pdoc3
./build_api_docs.sh
./scripts/build_api_docs.sh

# There is an action to build the jupyter book to a different directory
# and then they can be uploaded side by side
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build_uw3_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ jobs:
VERSION=`python3 setup.py --version`
echo "UW - version " ${VERSION}

## TODO. Use compile.sh once it is in development
## TODO. Use scripts/compile.sh once it is in development
pip install -e . --no-build-isolation

- name: Run tests
- name: Run tests
shell: bash -l {0}
run: |
./test.sh
./scripts/test.sh --p 2
10 changes: 5 additions & 5 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@ jobs:
post-cleanup: "all"
create-args: quarto

- name: Render docs with quarto
- name: Render unified docs with quarto
shell: bash -l {0}
run: |
quarto install tinytex
cd docs/user
cd docs
quarto render --cache-refresh --log-level info
## Always deploy to version directory
- name: Deploy quarto book
- name: Deploy unified documentation
uses: peaceiris/actions-gh-pages@v3

with:
github_token: ${{ secrets.GITHUB_TOKEN }}
destination_dir: ${{ github.ref_name }}/_quickstart
publish_dir: docs/user/_build/book
destination_dir: ${{ github.ref_name }}/docs
publish_dir: docs/_build

# - name: Deploy quarto lectures
# uses: peaceiris/actions-gh-pages@v3
Expand Down
156 changes: 150 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ maths.c
swarm.c
*_debug.txt
compile.log
*.log
.env
**/__pycache__
*.so
Expand All @@ -27,10 +28,89 @@ old
keep/*
*.swp
nohup.out
src/underworld3/_uwid.py
*.png # Add these explicitly if you want to keep them

# quarto build relics
src/underworld3/_uwid.py

# TeX/LaTeX/PDF build artifacts (comprehensive)
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*.nav
*.snm
*.vrb
*.xdv
*.idx
*.ilg
*.ind
*.glg
*.glo
*.gls
*.ist
*.acn
*.acr
*.alg
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls

# Quarto build artifacts (comprehensive coverage for all docs subdirectories)
docs/_build/
docs/.quarto/
docs/_freeze/
docs/*/_build/
docs/*/.quarto/
docs/*/_freeze/
docs/*/*/_build/
docs/*/*/.quarto/
docs/*/*/_freeze/
docs/**/*.pdf
docs/**/*.tex
docs/**/*.aux
docs/**/*.log
docs/**/*.toc
docs/**/*.out
docs/**/*.fls
docs/**/*.fdb_latexmk
docs/**/*.synctex.gz
docs/**/*.nav
docs/**/*.snm
docs/**/*.vrb

# Additional documentation build artifacts
docs/**/.ipynb_checkpoints/
docs/**/site_libs/
docs/**/libs/
docs/**/_site/
docs/**/dist/
docs/**/node_modules/
docs/**/.sass-cache/
docs/**/.jekyll-cache/
docs/**/.jekyll-metadata
docs/**/*.rdb
docs/**/*.rdx

documentation/index.aux
documentation/index.pdf
Expand Down Expand Up @@ -61,15 +141,35 @@ joss-paper/paper.pdf
.ash_history


# Mesh files etc
# Example output files (comprehensive exclusion)

# Mesh files
uw_*.msh
*.msh # unless we really want to add some examples
*.msh
*.h5
*.xdmf
*.vtk
*.pbin

# Visualization outputs (exclude generated, allow curated assets)
docs/examples/**/output/**
docs/examples/**/*.png
docs/examples/**/*.jpg
docs/examples/**/*.gif
docs/examples/**/*.mp4
docs/examples/**/*.html
# But allow curated documentation images
!docs/examples/assets/**

# Additional example artifacts
docs/examples/**/*.txt
docs/examples/**/*.dat
docs/examples/**/*.csv
docs/examples/**/*.log
docs/examples/**/checkpoint_*
docs/examples/**/restart_*
docs/examples/**/.meshes/

# Any checkpoints from notebooks (since .md files can be run in setups with
# jupytext and will produce spurious/unexpected checkpoints.

Expand Down Expand Up @@ -101,3 +201,47 @@ Jupyterbook/.DS_Store
Jupyterbook/Notebooks/.DS_Store
Jupyterbook/Notebooks/Examples-NavierStokes/order_1/NS_test_Re_250_0.06_step_0.png
Documentation/index.aux

# Claude Code files
CLAUDE.md
.claude/

# Prevent future markdown clutter in root (allow essential docs only)
/*_ANALYSIS.md
/*_REPORT.md
/*_SUMMARY.md
/*_STATUS.md
/*_PROGRESS.md
/*_REVIEW.md
/*_PLAN.md
/*_FIXES.md
/SESSION_SUMMARY*.md
/PHASE_*.md
# Exceptions for essential docs
!TODO.md
!README.md
!CLAUDE.md
!CONTRIBUTING.md
!CHANGES.md
!SPELLING_CONVENTION.md
!LICENSE.md

# Temporary test files (can be deleted)
temp_tests_deletable/
debug_*.py
/test_*.py
# Allow legitimate test files in tests/ directory
!tests/**/test_*.py

# IDE and editor artifacts
.ropeproject/
.vscode/

# Mesh cache directory
.meshes/

# Additional cache directories
.pytest_cache/

# Visualization output files (generated during notebook execution)
docs/beginner/tutorials/html5/*.html
119 changes: 62 additions & 57 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -1,59 +1,64 @@
{
"creators": [
{
"name": "Louis Moresi",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3685-174X"
},
{
"name": "John Mansour",
"affiliation": "School of Earth, Atmospheric & Environmental Science, Monash University",
"orcid": "0000-0001-5865-1664"
},
{
"name": "Julian Giordani",
"affiliation": "School of Earth Science, The University of Sydney",
"orcid": "0000-0003-4515-9296"
},
{
"name": "Matt Knepley",
"orcid": "0000-0002-2292-0735",
"affiliation": "Computer Science and Engineering, University at Buffalo"
},
{
"name": "Ben Knight",
"affiliation": "School of Earth and Planetary Sciences, Curtin University",
"orcid": "0000-0001-7919-2575"
},
{
"name": "Juan Carlos Graciosa",
"orcid": "0000-0003-0817-354X",
"affiliation": "Research School of Earth Sciences, The Australian National University"
},
{
"name": "Thyagarajulu Gollapalli",
"orcid": "0000-0001-9394-4104",
"affiliation": "School of Earth, Atmospheric & Environmental Science, Monash University"
},
{
"name": "Neng Lu",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0001-9424-2315"
},
{
"name": "Romain Beucher",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3891-5444"
}
],
"license": "lgpl-3.0",
"title": "Underworld3: Mathematically Self-Describing Modelling in Python for Desktop, HPC and Cloud",
"upload_type": "software",
"access_right": "open",
"keywords": [
"geodynamics",
"finite elements",
"particle-in-cell",
"symbolic computation"
]
"creators": [
{
"name": "Louis Moresi",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3685-174X"
},
{
"name": "Julian Giordani",
"affiliation": "School of Earth Science, The University of Sydney",
"orcid": "0000-0003-4515-9296"
},
{
"name": "Matt Knepley",
"orcid": "0000-0002-2292-0735",
"affiliation": "Computer Science and Engineering, University at Buffalo"
},
{
"name": "Romain Beucher",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3891-5444"
},
{
"name": "Thyagarajulu Gollapalli",
"orcid": "0000-0001-9394-4104",
"affiliation": "School of Earth, Atmospheric & Environmental Science, Monash University"
},
{
"name": "Juan Carlos Graciosa",
"orcid": "0000-0003-0817-354X",
"affiliation": "Research School of Earth Sciences, The Australian National University"
},
{
"name": "Ben Knight",
"affiliation": "School of Earth and Planetary Sciences, Curtin University, Australia",
"orcid": "0000-0001-7919-2575"
},
{
"name": "Neng Lu",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0001-9424-2315"
},
{
"name": "John Mansour",
"affiliation": "School of Earth, Atmospheric & Environmental Science, Monash University",
"orcid": "0000-0001-5865-1664"
},
{
"name": "Romain Beucher",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3891-5444"
}
],
"license": "lgpl-3.0",
"title": "Underworld3: Mathematically Self-Describing Modelling in Python for Desktop, HPC and Cloud",
"upload_type": "software",
"access_right": "open",
"keywords": [
"geodynamics",
"finite elements",
"particle-in-cell",
"symbolic computation"
]
}
Loading