Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Y1 #350

Closed
wants to merge 657 commits into from
Closed

Y1 #350

Show file tree
Hide file tree
Changes from 242 commits
Commits
Show all changes
657 commits
Select commit Hold shift + click to select a range
635ad49
Merge branch 'y1-update-cfl-dt' into y1-merge-cfl-dt
MTCam Jul 13, 2021
b32d7e6
Bring up-to-date with CFL/DT
MTCam Jul 13, 2021
2fe8e90
Update CFL reporting - report nodal max
MTCam Jul 13, 2021
5f13102
Merge branch 'enable-cfl-and-dt' into y1-merge-cfl-dt
MTCam Jul 13, 2021
8024d2b
Sync with cfl/dt
MTCam Jul 13, 2021
c4f8419
Add gitattributes
MTCam Jul 13, 2021
cf7e5cb
Bring up-to-date with main.
MTCam Jul 13, 2021
901b265
Merge branch 'main' into y1-production
MTCam Jul 14, 2021
8ea0727
Merge branch 'main' into mrg-main-to-y1
MTCam Jul 14, 2021
e4485e6
Merge branch 'navier-stokes' into mrg-ns-to-y1
MTCam Jul 14, 2021
441b24e
Correct whitespace in vortex example?
MTCam Jul 14, 2021
dcb906a
Merge remote-tracking branch 'origin/main' into y1-production
majosm Jul 14, 2021
493767e
fix CURRENT_FORK_OWNER
majosm Jul 14, 2021
fc278bb
Move the CURRENT_FORK_OWNER back to illinois-ceesd
MTCam Jul 14, 2021
257f18d
Update production testing setup to be slightly more robust against wi…
MTCam Jul 14, 2021
d92fc90
update production testing scripts
MTCam Jul 14, 2021
50a6778
Merge branch 'robustify-production-testing' into y1-production
MTCam Jul 14, 2021
5c631f2
Retain my (y1) copy of the production testing script - forever.
MTCam Jul 14, 2021
a4799cc
Merge main into y1
MTCam Jul 15, 2021
cc1d0c0
Merge branch 'main' into memoize-dv-main
MTCam Jul 15, 2021
d61e435
Use y1-production proper
MTCam Jul 15, 2021
ac3b155
Use y1 proper
MTCam Jul 15, 2021
eb15f5d
Update to memoization
MTCam Jul 15, 2021
eb19e95
Use y1-memoize branch for production
MTCam Jul 15, 2021
4f35ed3
Merge branch 'memoize-dv-main' into y1-memoize
MTCam Jul 15, 2021
330da96
Merge branch 'main' into memoize-dv-main
MTCam Jul 15, 2021
4005f6f
Use better names for the getters.
MTCam Jul 15, 2021
7c31144
Merged current memoize
MTCam Jul 15, 2021
daf98f1
Use y1 proper
MTCam Jul 16, 2021
700f3ad
Merge branch 'main' into mrgmn
MTCam Jul 16, 2021
6b62a3c
Merge branch 'main' into y1-production
MTCam Jul 16, 2021
9321865
Merge branch 'main' into y1-production
MTCam Jul 17, 2021
3b5d5f9
Laxify the examples in production (#441)
MTCam Jul 17, 2021
ad0e105
Merge branch 'main' into y1-production
MTCam Jul 17, 2021
0194703
Use array context comparison in init
MTCam Jul 18, 2021
ef9798c
Merge branch 'main' into mrgmn
MTCam Jul 18, 2021
1665ad0
Merge branch 'main' into mrgmn
MTCam Jul 19, 2021
aedbb43
Merge branch 'main' into y1-production
MTCam Jul 19, 2021
6e225de
Merge branch 'main' into y1-production
MTCam Jul 20, 2021
f1cd591
Pick up VTK requirement
MTCam Jul 20, 2021
0b07a5c
Merge branch 'main' into y1-production
MTCam Jul 20, 2021
6544c7d
Merge branch 'main' into y1-production
MTCam Jul 20, 2021
20dd0b7
Bring back time arg to init
MTCam Jul 21, 2021
763d7af
Merge branch 'add-av-to-ns-actx' into av-to-mrgns
MTCam Jul 21, 2021
c23e5ad
Merged up to y1-production
MTCam Jul 21, 2021
3f0ea39
Merged AV, current Euler, NS
MTCam Jul 21, 2021
dfcb4b5
Remove VTK from reqs
MTCam Jul 21, 2021
59e7afb
Remove jump operator, prefer built-in
MTCam Jul 21, 2021
b652906
Merge branch 'main' into mrgmn
MTCam Jul 21, 2021
ba3e59c
recover gmsh
MTCam Jul 21, 2021
ddd960e
Add local maximum species diffusivity calculation (#420)
jlevine18 Jul 22, 2021
927f6b2
Fix up the diffusivity presence check
MTCam Jul 22, 2021
47f70d1
Merge main
MTCam Jul 23, 2021
c13591e
Merge branch 'main' into y1-production
MTCam Jul 23, 2021
3586065
Merge branch 'main' into y1-production
MTCam Jul 23, 2021
0aabcf0
Merge branch 'navier-stokes' into remerge-ns
MTCam Jul 26, 2021
2ac137b
Fixed missing raise.
MTCam Jul 26, 2021
90505b3
Merge branch 'main' into mrgmn
MTCam Jul 26, 2021
71d7d0a
Merge branch 'main' into mrgmn
MTCam Jul 27, 2021
5acba88
Add exact soln to Poiseuille case
MTCam Jul 27, 2021
cfc7149
Correct initialization code in Poiseuille test.
MTCam Jul 27, 2021
4a2d590
Evict gmsh from requirements.txt (#461)
MTCam Jul 28, 2021
5e52d5f
Merge branch 'main' into y1-production
MTCam Jul 28, 2021
d54c7b1
Merge branch 'product-rule-grads' into mrgup
MTCam Jul 29, 2021
92626ab
Merge branch 'main' into y1-production
MTCam Jul 29, 2021
1ddeefe
Add a blurb to limit species mass fraction.
MTCam Jul 29, 2021
40f2f10
Merge branch 'spec-limit' into y1-production
MTCam Jul 29, 2021
6e94b7d
Merge branch 'main' into y1-production
MTCam Jul 30, 2021
32e47fc
Merge branch 'main' into y1-production
MTCam Jul 30, 2021
a25d80a
Merge branch 'main' into y1-production
MTCam Jul 31, 2021
39c5d81
Merge branch 'main' into y1-production
MTCam Aug 3, 2021
77ccb3e
Merge branch 'navier-stokes' into mrgup
MTCam Aug 3, 2021
dc9abbd
Switch temporarily to test
MTCam Aug 3, 2021
0bc1354
Undo production switch
MTCam Aug 3, 2021
70c2ccf
Fix up viscous timestep estimate for non-DOFArray diffusivities
MTCam Aug 3, 2021
57d771c
Fix up initializers with new EOS API
MTCam Aug 3, 2021
ba73afa
Fix up viscous timestep to deal with non DOFArrays
MTCam Aug 3, 2021
cd0f517
Merge branch 'main' into y1-production
MTCam Aug 3, 2021
f1c9938
Fix per new transport API
MTCam Aug 4, 2021
0c0701c
Merge branch 'main' into y1-production
MTCam Aug 4, 2021
f4655b6
Merge branch 'main' into y1-production
MTCam Aug 5, 2021
361cdec
Split inviscid/euler tests.
MTCam Aug 5, 2021
369fa01
Merge branch 'main' into y1-production
MTCam Aug 5, 2021
f2c9780
Fix misplaced rank check
MTCam Aug 13, 2021
993f901
Merge branch 'main' into y1-production
MTCam Aug 16, 2021
ae70244
Merge upstream
MTCam Aug 21, 2021
8830bb1
Update from upstream
MTCam Aug 21, 2021
660de61
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 21, 2021
2cdf5b9
Add back gmsh to requirements
MTCam Aug 21, 2021
bdd9b8c
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 21, 2021
3ea4cae
Update from upstream
MTCam Aug 21, 2021
9caa2ec
Y1 production update (#487)
MTCam Aug 21, 2021
d10d059
Remove gmsh from requirements
MTCam Aug 21, 2021
bde93b9
Merge branch 'y1-production-update' into y1-production
MTCam Aug 21, 2021
913eea9
Fix up power law transport to be functional.
MTCam Aug 22, 2021
e2a6a55
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 22, 2021
ed57e7b
Merge branch 'navier-stokes' into build-y1
MTCam Aug 22, 2021
ed4b28c
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 22, 2021
409d31d
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 22, 2021
4b6ea9f
Merge branch 'build-y1' into y1-production
MTCam Aug 22, 2021
448e72e
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 23, 2021
7d945a5
Merge branch 'navier-stokes' into build-y1
MTCam Aug 23, 2021
fcf6e4d
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 23, 2021
e5c8db1
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 23, 2021
422ec67
Merge branch 'build-y1' into y1-production
MTCam Aug 23, 2021
954348d
Update doublemach example with developments from upstream
MTCam Aug 23, 2021
df9cd98
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 23, 2021
d5fd42d
Merge branch 'navier-stokes' into build-y1
MTCam Aug 23, 2021
b32f544
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 23, 2021
345c4e7
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 23, 2021
5b15475
Merge branch 'build-y1' into y1-production
MTCam Aug 23, 2021
c65c653
Fix bug in av boundary routine
MTCam Aug 23, 2021
c5e9d1b
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 23, 2021
f013434
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 23, 2021
a177e87
Merge branch 'build-y1' into y1-production
MTCam Aug 23, 2021
e999d03
Remove whitespace to match upstream
MTCam Aug 23, 2021
6754804
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 24, 2021
778ff88
Merge branch 'navier-stokes' into build-y1
MTCam Aug 24, 2021
a3405a6
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 24, 2021
ba19bca
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 24, 2021
a3b349f
Merge branch 'build-y1' into y1-production
MTCam Aug 24, 2021
7c887e0
Merge branch 'navier-stokes' into add-av-to-ns-actx
MTCam Aug 25, 2021
1ea26ea
Merge branch 'navier-stokes' into build-y1
MTCam Aug 25, 2021
d118b89
Merge branch 'add-av-to-ns-actx' into build-y1
MTCam Aug 25, 2021
4d45181
Merge branch 'add-disc-init-to-ns-actx' into build-y1
MTCam Aug 25, 2021
96f47a2
Merge branch 'build-y1' into y1-production
MTCam Aug 25, 2021
124ac0b
Disable some portions of viscous flux temporarily for performance test.
MTCam Aug 26, 2021
414d24d
Add bozzle case to examples.
MTCam Aug 30, 2021
172f5ef
Add quick temporary util to get boundary info for performance debugging
MTCam Sep 1, 2021
116d768
Placate flake8
MTCam Sep 1, 2021
ebfec7d
Merge branch 'main' into mrgmain
MTCam Sep 12, 2021
b30e383
Delete bozzle from y1-production - causes CI fail.
MTCam Sep 12, 2021
8c953dd
mix-enable adiabaticnoslip
MTCam Sep 17, 2021
99bbe33
Merge branch 'main' into build-y1
MTCam Sep 20, 2021
db57d21
Merge branch 'navier-stokes' into build-y1
MTCam Sep 20, 2021
21df581
Merge branch 'build-y1' into mrgy1
MTCam Sep 20, 2021
2676958
Merge branch 'main' into test-y1
MTCam Sep 20, 2021
fc11f40
Switch-up production testing env temporarily
MTCam Sep 20, 2021
9bb772f
Update production install cause we are testing production branch itself
MTCam Sep 20, 2021
5ad71c2
Update production install cause we are testing production branch itself
MTCam Sep 20, 2021
4c81845
Revert to usual env before merge with y1-production
MTCam Sep 20, 2021
d429ee0
Merge branch 'main' into build-y1
MTCam Sep 20, 2021
85992e0
Merge branch 'navier-stokes' into build-y1
MTCam Sep 20, 2021
a208d96
Merge branch 'build-y1' into y1-production
MTCam Sep 20, 2021
b7ef6d4
Merge branch 'thermochem-override' into build-y1
MTCam Sep 23, 2021
aed7d23
Merge branch 'build-y1' into y1-production
MTCam Sep 23, 2021
815fcfc
Merge branch 'main' into build-y1
MTCam Sep 24, 2021
54017ac
Merge branch 'build-y1' into y1-production
MTCam Sep 24, 2021
6128d44
Correct some mistakes in isothermal noslip imp
MTCam Oct 6, 2021
ed0ae0d
Use correct BC
MTCam Oct 6, 2021
10724ec
Add hotplate example
MTCam Oct 8, 2021
60a7b86
Fix Poiseuille test boundary issue
MTCam Oct 11, 2021
6e4cb1d
Switch doublemach example back to Euler.
MTCam Oct 15, 2021
dbd1040
Merge from upstream
MTCam Oct 18, 2021
ca13674
account for the fact that nodal reductions now return device scalars
majosm Sep 24, 2021
599d7e6
temporarily change grudge branch
majosm Oct 11, 2021
dfb511d
account for h_min/max_from_volume returning device scalars
majosm Oct 20, 2021
47f1447
use arraycontext.outer in flux functions (#517)
majosm Oct 21, 2021
71d844b
Merge branch 'main' into navier-stokes
MTCam Oct 21, 2021
d7c6266
Merge branch 'main' into nodal-reduction-device-scalar
majosm Oct 22, 2021
50cd5dd
Update ci.yaml (#529)
matthiasdiener Oct 24, 2021
22d2516
Merge branch 'main' into nodal-reduction-device-scalar
majosm Oct 25, 2021
03a6ec8
Merge branch 'main' into navier-stokes
MTCam Oct 25, 2021
aa76745
Merge branch 'main' into mrgmain
MTCam Oct 25, 2021
9cc8d60
Use new thermochem wrapper class (#512)
MTCam Oct 25, 2021
2ff77c0
Merge upstream
MTCam Oct 26, 2021
980f6dd
Add backwards-compatible thermochem interface.
MTCam Oct 26, 2021
598519e
Update nsmix for new thermochem interface.
MTCam Oct 26, 2021
43a21e7
Merge branch 'main' into navier-stokes
MTCam Oct 26, 2021
28e67b9
Update from upstream
MTCam Oct 26, 2021
abe99d1
remove explicit actx argument from advance_state
majosm Oct 26, 2021
b7ce3a6
Merge branch 'main' into nodal-reduction-device-scalar
majosm Oct 26, 2021
35191f4
Switch to arraycontext@main
MTCam Oct 26, 2021
11c6422
restore grudge branch
majosm Oct 28, 2021
426e7e2
test production driver changes
majosm Oct 28, 2021
8a9689b
Switch nozzle production driver temporarily.
MTCam Oct 28, 2021
eb19210
Merge device scalars from upstream
MTCam Oct 28, 2021
1ca2978
Update downstream drivers with device scalars
MTCam Oct 28, 2021
32aa4fd
Use *this* branch as production.
MTCam Oct 28, 2021
aaf7734
Source the env file.
MTCam Oct 28, 2021
a97529f
Correct typo
MTCam Oct 28, 2021
c379efa
use to_numpy where approp
MTCam Oct 29, 2021
6464542
Use Y2-production branch for isolator driver
MTCam Oct 29, 2021
563cb0f
Revert the CI settings to new drivers and empty customization
MTCam Oct 29, 2021
6bd03c7
Account for grudge nodal reductions returning device scalars (#518)
majosm Oct 29, 2021
61de24a
Merge upstream
MTCam Oct 29, 2021
dbf1aea
Install mirgecom from existing source, not from scratch.
MTCam Oct 29, 2021
24340fa
Spell conda-env.yml correctly
MTCam Oct 29, 2021
044c852
Set an install prefix
MTCam Oct 29, 2021
12e1360
Find activation script in install location.
MTCam Oct 29, 2021
7881b2a
Merge remote-tracking branch 'origin/MTCam-patch-2' into ci-test-prod…
MTCam Oct 29, 2021
4151991
Configure production testing
MTCam Oct 29, 2021
9d6e82a
Debug ci more
MTCam Oct 29, 2021
ee2d099
full clone
matthiasdiener Oct 29, 2021
7c0fc6f
Clean up production testing scripts
MTCam Oct 29, 2021
65b8da2
Fix script bug
MTCam Oct 29, 2021
54bf4ca
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 29, 2021
4142d83
Clean up further
MTCam Oct 29, 2021
f4a4af1
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 29, 2021
8f40e17
Add some production testing docs
MTCam Oct 30, 2021
8a461fa
Sharpen slightly
MTCam Oct 30, 2021
ad8a04b
Sharpen more
MTCam Oct 30, 2021
57adc52
Breakout functionality for hand-running.
MTCam Oct 30, 2021
91650bd
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 30, 2021
837abd4
Update CI for changes to production test scripts.
MTCam Oct 30, 2021
d4ffa7c
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 30, 2021
0f3ca63
Rename for consistency
MTCam Oct 30, 2021
b51c5ce
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 30, 2021
e9fde38
Correct some script names in doc.
MTCam Oct 30, 2021
816418c
Clean up more, remove cruft.
MTCam Oct 30, 2021
492656d
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 30, 2021
b053d56
Uncustomize production env.
MTCam Oct 30, 2021
8034ba5
Uncustomize production env.
MTCam Oct 30, 2021
314b94e
Merge branch 'MTCam-patch-2' into ci-test-production
MTCam Oct 30, 2021
52e7e14
Merge branch 'ci-test-production' into y1-update-ci
MTCam Oct 30, 2021
0f3a188
Make CI production testing more robust and add documentation (#545)
MTCam Oct 30, 2021
3642ca5
Update integrators to handle reference state
MTCam Nov 1, 2021
c76a91b
update to use reference state for seeding temperature
MTCam Nov 1, 2021
a7b3575
Update to use reference state
MTCam Nov 1, 2021
0d0c040
Publicize temperature update routine for use in health checking.
MTCam Nov 1, 2021
3a6cf36
Merge branch 'main' into remove-advance-state-actx
majosm Nov 2, 2021
0c56fb1
rename _evaluate_state -> _force_evaluation
majosm Nov 2, 2021
c0d0d3e
Merge remote-tracking branch 'origin/main' into y1-production
majosm Nov 3, 2021
23e8100
Merge branch 'remove-advance-state-actx' into y1-production-remove-ad…
majosm Nov 3, 2021
503a940
Remove explicit `actx` argument from `advance_state` (#530)
majosm Nov 3, 2021
6e8bf71
Merge remote-tracking branch 'origin/main' into y1-production
majosm Nov 3, 2021
4e3aaf5
Refactor to incrementally centralize EOS functions
Nov 4, 2021
6cacf6c
Switch eos-side handling reference_state -> temperature_seed
Nov 4, 2021
947a546
Banish reference state from this machinery
Nov 4, 2021
7ac8b17
Use multistate in driver.
Nov 4, 2021
cd175b9
Update isolator production driver to main branch
MTCam Nov 4, 2021
cf17ab4
Update inviscid flux tests to new interface
Nov 4, 2021
6dce7bb
Switch to main branch for isolator production driver.
Nov 4, 2021
9ac881b
Merge branch 'MTCam-patch-1' into y1-production
Nov 4, 2021
ee7ec33
Update isolator production driver to main branch (#548)
MTCam Nov 4, 2021
f48f5d9
Merge branch 'main' into y1-production
Nov 4, 2021
49ecc9d
Update NS to new inviscid flux interface.
Nov 4, 2021
70720de
Merge branch 'y1-production' into seed-boundary-temperature
Nov 4, 2021
18591a1
Update inviscid divergence flux boundary interface.
Nov 5, 2021
97013bb
Sharpen docstrings
Nov 5, 2021
6a2acb0
Merge branch 'inviscid-boundary-interface' into mrgibi
Nov 5, 2021
e06aafb
Correct interface error
Nov 5, 2021
03a5e22
Merge branch 'main' into mrgmn2
Nov 5, 2021
78f215f
Merge from upstream
Nov 5, 2021
f800b4d
Merge upstream
Nov 5, 2021
a2787bc
Remove extraneous indentation in PR dev docs
inducer Nov 5, 2021
5b78cb2
Update from downstream
Nov 5, 2021
102d83e
Merge branch 'main' into inviscid-boundary-interface
Nov 5, 2021
f27c982
Merge branch 'inviscid-boundary-interface' into navier-stokes
Nov 5, 2021
0f6c0ec
Merge branch 'navier-stokes' into y1-production
Nov 5, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,13 @@ jobs:
run: |
. .ci-support/install.sh

- name: Pylint
- name: Run Pylint
run: |
MINIFORGE_INSTALL_DIR=.miniforge3
. "$MINIFORGE_INSTALL_DIR/bin/activate" testing
python -m pip install wheel
python -m pip install pylint pyyaml
curl -L -O https://raw.githubusercontent.com/inducer/ci-support/master/run-pylint.py
python run-pylint.py --yaml-rcfile=.pylintrc.yml "$(basename $GITHUB_REPOSITORY)" test examples && echo "Pylint found no errors."
./run-pylint.sh

pydocstyle:
runs-on: ubuntu-latest
Expand All @@ -57,7 +56,7 @@ jobs:
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Lint
- name: Run Pydocstyle
run: |
python3 -m venv myenv
source myenv/bin/activate
Expand Down Expand Up @@ -87,7 +86,7 @@ jobs:
export PYOPENCL_TEST=port:pthread
fi

python -m pytest --durations=10 --tb=native --junitxml=pytest.xml --doctest-modules -rxsw .
python -m pytest --durations=10 --tb=native --junitxml=pytest.xml --doctest-modules -rxsw . ../doc/*.rst ../doc/*/*.rst

examples:
name: Examples ${{ matrix.os }}
Expand All @@ -106,6 +105,7 @@ jobs:
run: |
MINIFORGE_INSTALL_DIR=.miniforge3
. "$MINIFORGE_INSTALL_DIR/bin/activate" testing
export XDG_CACHE_HOME=/tmp
examples/run_examples.sh ./examples

doc:
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ run-debug-*
*.vtk
*.silo
*.dat
*.pkl

.cache
.pytest_cache
Expand All @@ -43,3 +44,6 @@ test/nodal-dg
# Emacs backups
.#*
\#*

# Linting temp files
.run-pylint.py
4 changes: 2 additions & 2 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
"https://numpy.org/doc/stable/": None,
"https://documen.tician.de/pyopencl/": None,
"https://documen.tician.de/modepy/": None,
"https://documen.tician.de/arraycontext/": None,
"arraycontext": ("https://documen.tician.de/arraycontext/", None),
"https://documen.tician.de/meshmode/": None,
"https://documen.tician.de/grudge/": None,
"https://documen.tician.de/pytato/": None,
Expand All @@ -98,7 +98,7 @@

nitpicky = True

mathjax_config = {
mathjax3_config = {
"tex2jax": {
"inlineMath": [["\\(", "\\)"]],
"displayMath": [["\\[", "\\]"]],
Expand Down
4 changes: 4 additions & 0 deletions doc/misc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,7 @@ References
`(DOI) <https://doi.org/10.1007/978-3-642-59721-3_14>`__
.. [Ihme_2014] Yu Lv and Matthias Ihme (2014) Journal of Computationsl Physics 270 105 \
`(DOI) <http://dx.doi.org/10.1016/j.jcp.2014.03.029>`__
.. [Persson_2012] P. Persson and J. Peraire, AIAA 44 \
`(DOI) <https://doi.org/10.2514/6.2006-112>`__
.. [Woodward_1984] Woodward and Colella, Journal of Computational Physics, 54 \
`(DOI) <https://doi.org/10.1006/jcph.1996.5572>`__
4 changes: 4 additions & 0 deletions doc/operators/artificial_viscosity.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Artificial Viscosity
====================

.. automodule:: mirgecom.artificial_viscosity
1 change: 1 addition & 0 deletions doc/operators/operators.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ Operators

wave-eq
diffusion
artificial_viscosity
gas-dynamics
102 changes: 102 additions & 0 deletions doc/support/arrays.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
Arrays and Array Containers in :mod:`mirgecom`
==============================================

:mod:`mirgecom` is quite flexible in terms of what arrays it can use; in fact,
no aspect of the code prescribes the use of a specific type of array.
Instead, we use a :class:`arraycontext.ArrayContext` to determine the
types of arrays on which the computation should take place. At its simplest,
this can be a :class:`arraycontext.PyOpenCLArrayContext`, which uses
:class:`pyopencl.array.Array`\ s that are eagerly evaluated. "Eager evaluation"
means that when you type ``a + b`` with two arrays ``a`` and ``b``, then the
result is computed as soon as the expression is evaluated.

Lazy/deferred evaluation
------------------------
For efficiency, it is sometimes better to defer the evaluation of the
expression, to have an opportunity to apply some optimizations. We call this
*lazy* or *deferred evaluation*; it is a common trick in efficiency-minded
software (e.g. Google's Tensorflow, or expression templates in C++).
This is realized in :mod:`mirgecom` via an :class:`~arraycontext.ArrayContext`
based on :mod:`pytato` (not merged to ``main``) at the time of this writing.

Frozen and thawed arrays
------------------------

All array contexts have a notion of *thawed* and *frozen* arrays that is important
to understand, see :ref:`arraycontext:freeze-thaw` for more details.

You might be wondering whether a given function or method will return frozen or
thawed data. In general, the documentation should state that, however since
a fair bit of functionality predates these concepts, we are still catching up
in terms of updating the documentation. (Help welcome!)

In the meantime, these rules of thumb should cover most cases:

* If you did not provide an array context to the function
(explicitly or implicitly via an input array), you will receive frozen data.
* Any data that is cached/long-lived/"at rest" is going to be frozen.
* If the data is the result of a `memoized` function, then it will likely
be frozen.

To demonstrate the effect of this, first we need some setup:

.. doctest::

>>> import pyopencl as cl
>>> from arraycontext import PyOpenCLArrayContext, thaw
>>> ctx = cl.create_some_context()
>>> queue = cl.CommandQueue(ctx)
>>> actx = PyOpenCLArrayContext(queue)
>>> from meshmode.mesh.generation import generate_regular_rect_mesh
>>> mesh = generate_regular_rect_mesh(a=(0, 0), b=(1, 1), nelements_per_axis=(10, 10))
>>> from grudge import DiscretizationCollection
>>> dcoll = DiscretizationCollection(actx, mesh, order=5)

Most quantities that are maintained by the discretization will be frozen. For example,
if one wanted to grab the nodes of the mesh or normals of a named surface in the mesh:

.. doctest::

>>> from grudge.dof_desc import DOFDesc
>>> nodes = thaw(dcoll.nodes(), actx)
>>> dd = DOFDesc("all_faces")
>>> nhat = thaw(dcoll.normal(dd), actx)

What can go wrong? Attempts to operate on frozen data will yield errors similar to
the following:

.. doctest::

>>> dcoll.nodes() * 5
Traceback (most recent call last):
...
ValueError: array containers with frozen arrays cannot be operated upon

Fortunately, recovering from this is straightforward:

.. doctest::

>>> nodes = thaw(dcoll.nodes(), actx)
>>> result = nodes * 5

Array Containers
----------------

Arrays in :mod:`mirgecom` live in (somewhat) deeply nested data structures
that are :class:`~arraycontext.ArrayContainer`\ s. Array containers typically
support arithmetic and can be passed to most methods in
:class:`~arraycontext.ArrayContext` that take arrays: they simply get applied to
all arrays in the container. The same goes for many of the
discretization-focused functions in :mod:`grudge` and :mod:`meshmode`.

For example, think of the solver state for Euler's equations of gas dynamics:

* At the outermost level, there is :class:`mirgecom.fluid.ConservedVars`,
which contains...
* :attr:`~mirgecom.fluid.ConservedVars.momentum`, which is a :class:`numpy.ndarray`
of :class:`~numpy.dtype` "object" (an "object array" for short), which contains...
* :class:`meshmode.dof_array.DOFArray`\ s, i.e. arrays representing a scalar
solution field on a :class:`meshmode.discretization.Discretization`. These
contain...
* the actual arrays managed by the array context, typically
two-dimensional arrays of shape ``(num_elements, num_dofs_per_element)``.
1 change: 1 addition & 0 deletions doc/support/support.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Simulation Support

.. toctree::

arrays
time-integrators
integration-loops
filter
Expand Down
4 changes: 4 additions & 0 deletions doc/support/time-integrators.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
Time Integrators
================

In addition to the time integrators in this module, :mod:`mirgecom` can also
make use of the time integrators in :mod:`leap` by way of
:func:`mirgecom.steppers.advance_state`.

.. automodule:: mirgecom.integrators
16 changes: 16 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# *MIRGE-Com* examples

This directory has a collection of examples to demonstrate and test *MIRGE-Com*
capabilities. Examples using the "-mpi" naming convention are MPI parallel and
are able to run on mulitple GPUs or CPUs in a suitable MPI environemnt. All of
the example exercise some unique feature of *MIRGE-Com*. The examples and the
unique features they exercise are as follows:

- `autoignition-mpi.py`: Chemistry with Pyrometheus
- `heat-source-mpi.py`: Diffusion operator
- `lump-mpi.py`: Lump advection, advection verification case
- `mixture-mpi.py`: Mixture EOS with Pyrometheus
- `scalar-lump-mpi.py`: Scalar component lump advection verification case
- `pulse-mpi.py`: Acoustic pulse in a box, wall boundary test case
- `sod-mpi.py`: Sod's shock case: Fluid test case with strong shock
- `vortex-mpi.py`: Isentropic vortex advection: outflow boundaries, verification
74 changes: 63 additions & 11 deletions examples/autoignition-mpi.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,16 @@
from mirgecom.boundary import AdiabaticSlipBoundary
from mirgecom.initializers import MixtureInitializer
from mirgecom.eos import PyrometheusMixture
from mirgecom.inviscid import get_inviscid_cfl
import cantera
import pyrometheus as pyro

logger = logging.getLogger(__name__)


@mpi_entry_point
def main(ctx_factory=cl.create_some_context, use_leap=False):
def main(ctx_factory=cl.create_some_context, casename="autoignition", use_leap=False,
restart_step=None, restart_name=None):
"""Drive example."""
cl_ctx = ctx_factory()
queue = cl.CommandQueue(cl_ctx)
Expand All @@ -73,14 +75,15 @@ def main(ctx_factory=cl.create_some_context, use_leap=False):
# This example runs only 3 steps by default (to keep CI ~short)
# With the mixture defined below, equilibrium is achieved at ~40ms
# To run to equlibrium, set t_final >= 40ms.
t_final = 3e-9
t_final = 1e-8
current_cfl = 1.0
velocity = np.zeros(shape=(dim,))
current_dt = 1e-9
current_t = 0
constant_cfl = False
nstatus = 1
nviz = 5
nrestart = 5
rank = 0
checkpoint_t = current_t
current_step = 0
Expand All @@ -97,12 +100,31 @@ def main(ctx_factory=cl.create_some_context, use_leap=False):
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()

from meshmode.mesh.generation import generate_regular_rect_mesh
generate_mesh = partial(generate_regular_rect_mesh, a=(box_ll,) * dim,
b=(box_ur,) * dim, nelements_per_axis=(nel_1d,) * dim)
local_mesh, global_nelements = generate_and_distribute_mesh(comm, generate_mesh)
local_nelements = local_mesh.nelements
nproc = comm.Get_size()

restart_file_pattern = "{casename}-{step:04d}-{rank:04d}.pkl"
restart_path = "restart_data/"
if restart_step:
if not restart_name:
restart_name = casename
rst_filename = (
restart_path
+ restart_file_pattern.format(casename=restart_name,
step=restart_step, rank=rank)
)
from mirgecom.restart import read_restart_data
restart_data = read_restart_data(actx, rst_filename)
local_mesh = restart_data["local_mesh"]
local_nelements = local_mesh.nelements
global_nelements = restart_data["global_nelements"]
assert restart_data["nparts"] == nproc
else:
from meshmode.mesh.generation import generate_regular_rect_mesh
generate_mesh = partial(generate_regular_rect_mesh, a=(box_ll,)*dim,
b=(box_ur,) * dim, nelements_per_axis=(nel_1d,)*dim)
local_mesh, global_nelements = generate_and_distribute_mesh(comm,
generate_mesh)
local_nelements = local_mesh.nelements

discr = EagerDGDiscretization(
actx, local_mesh, order=order, mpi_communicator=comm
Expand Down Expand Up @@ -160,7 +182,6 @@ def main(ctx_factory=cl.create_some_context, use_leap=False):
# Create a Pyrometheus EOS with the Cantera soln. Pyrometheus uses Cantera and
# generates a set of methods to calculate chemothermomechanical properties and
# states for this particular mechanism.
casename = "autoignition"
pyrometheus_mechanism = pyro.get_thermochem_class(cantera_soln)(actx.np)
eos = PyrometheusMixture(pyrometheus_mechanism,
temperature_guess=init_temperature)
Expand All @@ -178,7 +199,14 @@ def main(ctx_factory=cl.create_some_context, use_leap=False):

my_boundary = AdiabaticSlipBoundary()
boundaries = {BTAG_ALL: my_boundary}
current_state = initializer(eos=eos, x_vec=nodes, time=0)

if restart_step:
current_t = restart_data["t"]
current_step = restart_step
current_state = restart_data["state"]
else:
# Set the current state from time 0
current_state = initializer(eos=eos, x_vec=nodes, time=0)

# Inspection at physics debugging time
if debug:
Expand Down Expand Up @@ -223,10 +251,34 @@ def my_rhs(t, state):
+ eos.get_species_source_terms(state))

def my_checkpoint(step, t, dt, state):
if check_step(step, nrestart) and step != restart_step:
rst_filename = (
restart_path
+ restart_file_pattern.format(casename=casename, step=step,
rank=rank)
)
rst_data = {
"local_mesh": local_mesh,
"state": current_state,
"t": t,
"step": step,
"global_nelements": global_nelements,
"num_parts": nproc
}
from mirgecom.restart import write_restart_file
write_restart_file(actx, rst_data, rst_filename, comm)

# awful - computes potentially expensive viz quantities
# regardless of whether it is time to viz
reaction_rates = eos.get_production_rates(state)
local_cfl = get_inviscid_cfl(discr, eos=eos, dt=current_dt, cv=state)
viz_fields = [("reaction_rates", reaction_rates),
("cfl", local_cfl)]
from grudge.op import nodal_max
max_cfl = nodal_max(discr, "vol", local_cfl)
viz_fields = [("reaction_rates", reaction_rates)]
return sim_checkpoint(discr, visualizer, eos, cv=state,
vizname=casename, step=step,
vizname=casename, step=step, cfl=max_cfl,
t=t, dt=dt, nstatus=nstatus, nviz=nviz,
constant_cfl=constant_cfl, comm=comm,
viz_fields=viz_fields)
Expand Down
Loading