turbigen 2.2.1__tar.gz → 2.3.0__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.
- {turbigen-2.2.1 → turbigen-2.3.0}/.gitlab-ci.yml +1 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/PKG-INFO +4 -1
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/changelog.rst +15 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/conf.py +1 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/generate_examples.py +6 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/generate_solver.py +18 -7
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/index.rst +1 -0
- turbigen-2.3.0/doc/refs.bib +80 -0
- turbigen-2.3.0/doc/solver.rst +455 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/examples/axial_turbine.yaml +8 -1
- {turbigen-2.2.1 → turbigen-2.3.0}/examples/turbine_cascade.yaml +1 -1
- {turbigen-2.2.1 → turbigen-2.3.0}/plots/profile.txt +105 -105
- {turbigen-2.2.1 → turbigen-2.3.0}/pyproject.toml +5 -2
- turbigen-2.3.0/scripts/make_table.py +11 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/profile.sh +1 -1
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/distribute.f90 +26 -34
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/embsolve.f90 +1 -23
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/fluxes.f90 +37 -56
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/multigrid.f90 +0 -8
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/operators.f90 +0 -12
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/smooth.f90 +2 -8
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/viscous.f90 +0 -14
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/autogrid.py +44 -29
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/base.py +0 -249
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/config2.py +81 -11
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/meanline.py +4 -4
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/nblade.py +15 -2
- turbigen-2.3.0/src/turbigen/op_point.py +27 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/solvers/base.py +42 -9
- turbigen-2.2.1/src/turbigen/solvers/emb.py → turbigen-2.3.0/src/turbigen/solvers/ember.py +27 -14
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/solvers/ts3.py +34 -11
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/solvers/ts4.py +103 -82
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/tables.py +4 -5
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/util.py +21 -519
- turbigen-2.3.0/tests/data/hydrogen_table_known_good.npz +0 -0
- turbigen-2.3.0/tests/data/water_table_known_good.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_bcond.py +5 -5
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_distribute.py +16 -11
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_nozzle.py +10 -10
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_operators.py +2 -2
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_periodic_step.py +2 -2
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_smooth.py +9 -14
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_tables.py +0 -6
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_visc.py +4 -4
- turbigen-2.2.1/doc/solver.rst +0 -153
- turbigen-2.2.1/plots/bench.dat +0 -5
- turbigen-2.2.1/src/turbigen/post/contour.py +0 -280
- turbigen-2.2.1/src/turbigen/post/plot_convergence.py +0 -122
- turbigen-2.2.1/src/turbigen/post/write_annulus.py +0 -28
- turbigen-2.2.1/tests/not_test_body.py +0 -261
- turbigen-2.2.1/tests/not_test_examples.py +0 -65
- {turbigen-2.2.1 → turbigen-2.3.0}/.flake8 +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/.gitignore +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/.gitlab-ci-local/.gitignore +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/.pre-commit-config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/COPYING +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/MANIFEST.in +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/Makefile +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/README.md +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/bin/get_ssh_agent.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/bin/noquit.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/bin/setup.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/Makefile +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/_static/siunitx.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/examples/index.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/generate_meanline.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/license.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/meanline.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/nomenclature.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/quickstart.rst +0 -0
- {turbigen-2.2.1/doc-old → turbigen-2.3.0/doc}/references.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/turbigen-logo.svg +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/tutorial.rst.not +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc/usage.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/Makefile +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.buildinfo +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/changelog.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/config.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/environment.pickle +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/fluid.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/index.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/install.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/license.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/meanline.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/mesh.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/nomenclature.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/post.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/references.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/solver.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/tutorial.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/.doctrees/usage.doctree +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/index.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/base.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/fluid.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/hmesh.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/meanline/axial_turbine.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/meanline/radial_compressor.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/meanline/turbine_cascade.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/ohmesh.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/solvers/ts3.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_modules/turbigen/solvers/ts4.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/changelog.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/config.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/fluid.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/index.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/install.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/license.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/meanline.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/mesh.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/nomenclature.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/post.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/references.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/solver.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/tutorial.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_sources/usage.rst.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/alabaster.css +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/basic.css +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/custom.css +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/doctools.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/documentation_options.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/file.png +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/language_data.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/minus.png +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/plot_directive.css +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/plus.png +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/pygments.css +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/searchtools.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/siunitx.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/_static/sphinx_highlight.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/changelog.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/config.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/fluid.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/genindex.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/index.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/install.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/license.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/meanline.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/mesh.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/nomenclature.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/objects.inv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/post.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/py-modindex.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/references.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/search.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/searchindex.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/solver.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/tutorial.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_build/usage.html +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/_static/siunitx.js +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/changelog.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/conf.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/config.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/dummy_post.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/fluid.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/index.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/install.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/license.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/make.bat +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/meanline.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/mesh.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/method.md +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/nomenclature.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/post.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/refs.bib +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade/config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade/inverse.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade/log_turbigen.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade/mean_line_actual.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade/mean_line_nominal.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade_test/config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade_test/inverse.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade_test/log_turbigen.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade_test/mean_line_actual.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/runs/cascade_test/mean_line_nominal.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/solver.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/tutorial.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/doc-old/usage.rst +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/dspace.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/matplotlibrc +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/meson.build +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/analysis.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/axial_compressor_rotor.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/axial_turbine.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/axial_turbine_ts4.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_fit.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_iter.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_off_design.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_p3d.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_post.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/cascade_test.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/flat_plate.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/include1.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/include2.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/mixed_compressor.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/profile.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/pure_radial_compressor.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/quad_camber.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/radial_compressor.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/seminar_df.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/seminar_ds_025.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/seminar_ds_04.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/seminar_ds_055.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/seminar_xpeak.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/turbine_cascade.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/old-examples/turbine_include.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/pytest.ini +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/benchmark.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/benchmark.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/eval_fitted_design_space.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/fit_eta_tt.json +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/plot_benchmark.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/plot_camber.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/plot_dspace.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/plot_thickness.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/read_cuts.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/scripts/test_dspace.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/embsolvec-f2pywrappers.f +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/embsolvec-f2pywrappers2.f90 +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/embsolvecmodule.c +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/indexing.f90 +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/embsolve/meson.build +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/__init__.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/__main__.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/annulus.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/__init__.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/ag_server.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/reader.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/script_ag.py2 +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/script_igg.py2 +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/script_sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/autogrid/server.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/average.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/blade.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/camber.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/__init__.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/check.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/double.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/exceptions.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/plot.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/single.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/symmetric.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/clusterfunc/util.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/compflow_native.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/dspace.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/exceptions.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/flowfield.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/fluid.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/geometry.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/grid.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/hmesh.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/inlet.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/iterators.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/job.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/job_server.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/main.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/marching_cubes.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/mesh.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/ohmesh.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/polynomial.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/calc_surf_dissipation.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/check_phase.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/find_extrema.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_blade.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_camber.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_incidence.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_nose.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_section.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/plot_thickness.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/spanwise.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/write_cuts.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/write_ibl.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post/write_stl.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/post.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/solvers/convert_ts3_to_ts4_native.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/solvers/plot3d.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/thickness.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/util_post.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/src/turbigen/yaml.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/emb.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/inverse.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/log_turbigen.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/mean_line_actual.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/mean_line_nominal.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/post/contour_Cp_spf_0.51.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3/post/pressure_distributions_raw.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/compressor/ts3.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/stage.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/emb.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/plot.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/run/config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/run/log_turbigen.txt +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/run/mean_line_nominal.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/ts3/inverse.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/ts3/post/contour_Ys_m_2.05.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/ts3/post/pressure_distributions_raw.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine/ts3.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/back-to-back/turbine_oh/emb.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/data/cascade_splitter.tar.gz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/data/cascade_splitter.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/data/cfd_cut.json +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/data/sections.dat +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/gpu/submit.sh +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/gpu/ts3.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/gpu/ts4.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/not_test_periodic.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/not_test_rotor.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/not_test_splitter.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/pdist_ts3.npz +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/pipe.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/plate.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/reformat_sections.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_average.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_cells.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_fluid.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/test_wall.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/turning_duct.py +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcd_yp5_ts3.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcd_yp5_turb.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcf_ts3.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcf_turb_ts3.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcf_yp5_ts3.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tests/xcf_yp5_turb.csv +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tutorial/config.yaml +0 -0
- {turbigen-2.2.1 → turbigen-2.3.0}/tutorial/fan.notpy +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: turbigen
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Framework for turbomachinery design and computational fluid dynamics simulation
|
|
5
5
|
Keywords: turbomachinery,computational fluid dynamics,compressor,turbine
|
|
6
6
|
Author-Email: James Brind <jb753@cam.ac.uk>
|
|
@@ -24,6 +24,8 @@ Requires-Dist: sphinx; extra == "dev"
|
|
|
24
24
|
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
25
25
|
Requires-Dist: sphinx-argparse; extra == "dev"
|
|
26
26
|
Requires-Dist: sphinxcontrib-programoutput; extra == "dev"
|
|
27
|
+
Requires-Dist: sphinxcontrib-bibtex; extra == "dev"
|
|
28
|
+
Requires-Dist: snowballstemmer==2.2.0; extra == "dev"
|
|
27
29
|
Requires-Dist: autodocsumm; extra == "dev"
|
|
28
30
|
Requires-Dist: pytest; extra == "dev"
|
|
29
31
|
Requires-Dist: pre-commit; extra == "dev"
|
|
@@ -31,6 +33,7 @@ Requires-Dist: build; extra == "dev"
|
|
|
31
33
|
Requires-Dist: cibuildwheel; extra == "dev"
|
|
32
34
|
Requires-Dist: twine; extra == "dev"
|
|
33
35
|
Requires-Dist: bump-my-version; extra == "dev"
|
|
36
|
+
Requires-Dist: setuptools; extra == "dev"
|
|
34
37
|
Provides-Extra: parallel
|
|
35
38
|
Requires-Dist: mpi4py~=3.1.6; extra == "parallel"
|
|
36
39
|
Description-Content-Type: text/markdown
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
v2.3.0
|
|
5
|
+
^^^^^^
|
|
6
|
+
|
|
7
|
+
* Improve AutoGrid meshing robustness, error messages, and locate ssh-agent on via host host automatically
|
|
8
|
+
* Enable operating point change in new configuration format
|
|
9
|
+
* Fix exit PID controller
|
|
10
|
+
* Log full error message and exit if we fail to import a plugin
|
|
11
|
+
|
|
12
|
+
v2.2.2
|
|
13
|
+
^^^^^^
|
|
14
|
+
|
|
15
|
+
* Error if trying to set viscosity from Reynolds with real working fluid
|
|
16
|
+
* Show mean-line table limits in the log when running real gas
|
|
17
|
+
* Add solver documentation page
|
|
18
|
+
|
|
4
19
|
v2.2.0
|
|
5
20
|
^^^^^^
|
|
6
21
|
|
|
@@ -21,6 +21,12 @@ def run_example(input_yaml):
|
|
|
21
21
|
text=True,
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
+
# Check return code
|
|
25
|
+
if out.returncode != 0:
|
|
26
|
+
print(f"Error running example: {input_yaml}")
|
|
27
|
+
print(out.stderr)
|
|
28
|
+
quit(1)
|
|
29
|
+
|
|
24
30
|
# Load the yaml
|
|
25
31
|
with open(input_yaml, "r") as f:
|
|
26
32
|
yaml_str = f.read()
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"""Make documentation for an abstract base class and subclasses."""
|
|
2
2
|
|
|
3
3
|
import turbigen.solvers.base
|
|
4
|
-
|
|
5
|
-
from turbigen import util
|
|
4
|
+
from turbigen.solvers import ember, ts3, ts4
|
|
6
5
|
import inspect
|
|
7
6
|
import dataclasses
|
|
8
7
|
|
|
@@ -20,8 +19,6 @@ def generate_subclass(cls, fname):
|
|
|
20
19
|
rst_str += "\n\n"
|
|
21
20
|
rst_str += inspect.getdoc(subclass)
|
|
22
21
|
rst_str += "\n\n"
|
|
23
|
-
|
|
24
|
-
cls_name = util.camel_to_snake(subclass.__name__)
|
|
25
22
|
rst_str += generate_rst_table(subclass)
|
|
26
23
|
|
|
27
24
|
if len(doc) > 1:
|
|
@@ -58,10 +55,15 @@ def generate_rst_table(cls):
|
|
|
58
55
|
doc_map[current_field] = doc
|
|
59
56
|
current_field = None
|
|
60
57
|
|
|
58
|
+
doc_map.pop("workdir", None)
|
|
59
|
+
|
|
61
60
|
# RST table header
|
|
62
61
|
lines = [
|
|
63
|
-
"
|
|
64
|
-
"
|
|
62
|
+
"Configuration options",
|
|
63
|
+
"~~~~~~~~~~~~~~~~~~~~~",
|
|
64
|
+
"",
|
|
65
|
+
".. list-table::",
|
|
66
|
+
" :widths: 10 10 10 70",
|
|
65
67
|
" :header-rows: 1",
|
|
66
68
|
"",
|
|
67
69
|
" * - Name",
|
|
@@ -70,17 +72,26 @@ def generate_rst_table(cls):
|
|
|
70
72
|
" - Description",
|
|
71
73
|
]
|
|
72
74
|
|
|
75
|
+
# Sort alphabetically
|
|
76
|
+
fields = sorted(fields, key=lambda f: f.name)
|
|
77
|
+
|
|
73
78
|
for f in fields:
|
|
74
79
|
name = f.name
|
|
75
80
|
type_ = f.type.__name__ if hasattr(f.type, "__name__") else str(f.type)
|
|
76
81
|
default = f.default if f.default != dataclasses.MISSING else "Required"
|
|
77
|
-
doc
|
|
82
|
+
if not (doc := doc_map.get(name, None)):
|
|
83
|
+
continue
|
|
84
|
+
if len(str(default)) > 10:
|
|
85
|
+
default = str(default)[:10] + "..."
|
|
78
86
|
try:
|
|
79
87
|
getattr(turbigen.solvers.base.BaseSolver, name)
|
|
80
88
|
print(f"Skipping field: {name}")
|
|
81
89
|
continue
|
|
82
90
|
except AttributeError:
|
|
83
91
|
pass
|
|
92
|
+
# Catch empty defaults
|
|
93
|
+
if default == "":
|
|
94
|
+
default = " "
|
|
84
95
|
lines.append(f" * - ``{name}``")
|
|
85
96
|
lines.append(f" - ``{type_}``")
|
|
86
97
|
lines.append(f" - ``{default}``")
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
@article{Taylor2016
|
|
2
|
+
author = {Taylor, J. V. and Miller, R. J.},
|
|
3
|
+
title = "{Competing Three-Dimensional Mechanisms in Compressor Flows}",
|
|
4
|
+
journal = {J. Turbomach.},
|
|
5
|
+
volume = {139},
|
|
6
|
+
number = {2},
|
|
7
|
+
year = {2016},
|
|
8
|
+
doi = {10.1115/1.4034685},
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@proceedings{Clark2019,
|
|
12
|
+
author = {Clark, Christopher J.},
|
|
13
|
+
title = "{A Step Towards an Intelligent Aerodynamic Design Process}",
|
|
14
|
+
volume = {Volume 2C: Turbomachinery},
|
|
15
|
+
series = {Turbo Expo: Power for Land, Sea, and Air},
|
|
16
|
+
year = {2019},
|
|
17
|
+
doi = {10.1115/GT2019-91637},
|
|
18
|
+
note = {V02CT41A033},
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@article{Kulfan2008,
|
|
23
|
+
author = {Kulfan, Brenda M.},
|
|
24
|
+
title = "{Universal Parametric Geometry Representation Method}",
|
|
25
|
+
journal = {J. Aircr.},
|
|
26
|
+
volume = {45},
|
|
27
|
+
number = {1},
|
|
28
|
+
pages = {142-158},
|
|
29
|
+
year = {2008},
|
|
30
|
+
doi = {10.2514/1.29958},
|
|
31
|
+
}"
|
|
32
|
+
|
|
33
|
+
@phdthesis{Kaufmann2020,
|
|
34
|
+
doi = {10.17863/CAM.81122},
|
|
35
|
+
author = {Kaufmann, Shaun Michael},
|
|
36
|
+
title = "{A Unified Turbine Preliminary Design Study}",
|
|
37
|
+
year = {2022},
|
|
38
|
+
school = {University of Cambridge},
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@article{Coull2013,
|
|
42
|
+
author = {Coull, John D. and Hodson, Howard P.},
|
|
43
|
+
title = "{Blade Loading and Its Application in the Mean-Line Design of Low Pressure Turbines}",
|
|
44
|
+
journal = {J. Turbomach},
|
|
45
|
+
volume = {135},
|
|
46
|
+
number = {2},
|
|
47
|
+
year = {2012},
|
|
48
|
+
doi = {10.1115/1.4006588},
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Article{Brandvik2011,
|
|
52
|
+
author = {Brandvik, T. and Pullan, G.},
|
|
53
|
+
title = {{"An Accelerated 3D Navier--Stokes Solver for Flows in Turbomachines"}},
|
|
54
|
+
journal = {J.\ Turbomach.},
|
|
55
|
+
year = {2011},
|
|
56
|
+
volume = {133},
|
|
57
|
+
number = {2},
|
|
58
|
+
doi = {10.1115/1.4001192}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@article{Denton2017,
|
|
62
|
+
title = {{"Multall---An Open Source, Computational Fluid Dynamics Based, Turbomachinery Design System"}},
|
|
63
|
+
volume = {139},
|
|
64
|
+
DOI = {10.1115/1.4037819},
|
|
65
|
+
number = {12},
|
|
66
|
+
journal = {J. Turbomach.},
|
|
67
|
+
author = {Denton, J.D.},
|
|
68
|
+
year = {2017}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@article{Denton1992,
|
|
72
|
+
title = {{"The Calculation of Three-Dimensional Viscous Flow Through Multistage Turbomachines"}},
|
|
73
|
+
volume = {114},
|
|
74
|
+
DOI = {10.1115/1.2927983},
|
|
75
|
+
number = {1},
|
|
76
|
+
journal = {J. of Turbomach.},
|
|
77
|
+
author = {Denton, J. D.},
|
|
78
|
+
year = {1992},
|
|
79
|
+
pages = {18–26}
|
|
80
|
+
}
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
Flow solvers
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
Once the machine geometry is generated, and the fluid domain discretised
|
|
5
|
+
using a suitable mesh, the next step is to predict the flow field and hence
|
|
6
|
+
aerodynamic performance using a computational fluid dynamics (CFD) solver.
|
|
7
|
+
|
|
8
|
+
:program:`turbigen` is solver-agnostic: either the built in CFD solver or
|
|
9
|
+
an interface to an external code can be used for flow field prediction;
|
|
10
|
+
pre- and post-processing is done in common, native Python code. Adding a new
|
|
11
|
+
external solver only requires implementing functions to save input files,
|
|
12
|
+
execute the solver, and then read back the output file into
|
|
13
|
+
:program:`turbigen`'s internal data structures. See the
|
|
14
|
+
:ref:`solver-custom` section for more details.
|
|
15
|
+
|
|
16
|
+
Select which solver to use by setting the `type` key under the `solver` section
|
|
17
|
+
of the configuration file. Valid choices are:
|
|
18
|
+
|
|
19
|
+
- `ember`: :ref:`Enhanced Multi-Block solvER<solver-ember>`
|
|
20
|
+
- `ts3`: :ref:`solver-ts3`
|
|
21
|
+
- `ts4`: :ref:`solver-ts4`
|
|
22
|
+
|
|
23
|
+
Each CFD solver accepts different configuration options. Solver options and
|
|
24
|
+
their default values are listed below; override the defaults using the
|
|
25
|
+
`solver` section of the configuration file. For example, to use the
|
|
26
|
+
built-in :program:`ember` solver, with a reduced damping factor:
|
|
27
|
+
|
|
28
|
+
.. code-block:: yaml
|
|
29
|
+
|
|
30
|
+
solver:
|
|
31
|
+
type: ember
|
|
32
|
+
n_step: 1000 # Case-dependent
|
|
33
|
+
n_step_avg: 250 # Typically ~1/4 of n_step
|
|
34
|
+
damping_factor: 10. # Override default value of 25.0
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Every solver accepts a `soft_start` flag, which runs a precursor simulation
|
|
38
|
+
with more robust settings before running the actual simulation. Enabling
|
|
39
|
+
this option should be the first step when a simulation fails to converge.
|
|
40
|
+
If a design does not run with `soft_start` enabled, this suggests the mesh
|
|
41
|
+
is poor quality, or the aerodynamic design itself is not feasible.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
.. _solver-ember:
|
|
46
|
+
|
|
47
|
+
ember
|
|
48
|
+
-----
|
|
49
|
+
|
|
50
|
+
:program:`ember` is the 'Enhanced MultiBlock flow solvER' built into :program:`turbigen`. It is a hybrid Python--Fortran reimplementation of the classic :cite:t:`Denton1992,Denton2017` algorithms
|
|
51
|
+
for compressible turbomachinery flows, with a few enhancements.
|
|
52
|
+
|
|
53
|
+
To use this solver, add the following to your configuration file:
|
|
54
|
+
|
|
55
|
+
.. code-block:: yaml
|
|
56
|
+
|
|
57
|
+
solver:
|
|
58
|
+
type: emb
|
|
59
|
+
n_step: 2000 # Case-dependent
|
|
60
|
+
n_step_avg: 500 # Typically ~0.25 n_step
|
|
61
|
+
|
|
62
|
+
Configuration options
|
|
63
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
64
|
+
|
|
65
|
+
.. list-table::
|
|
66
|
+
:widths: 10 10 10 70
|
|
67
|
+
:header-rows: 1
|
|
68
|
+
|
|
69
|
+
* - Name
|
|
70
|
+
- Type
|
|
71
|
+
- Default
|
|
72
|
+
- Description
|
|
73
|
+
* - ``CFL``
|
|
74
|
+
- ``float``
|
|
75
|
+
- ``0.65``
|
|
76
|
+
- Courant--Friedrichs--Lewy number, time step normalised by local wave speed and cell size.
|
|
77
|
+
* - ``K_exit``
|
|
78
|
+
- ``float``
|
|
79
|
+
- ``0.5``
|
|
80
|
+
- Relaxation factor for outlet boundary.
|
|
81
|
+
* - ``K_inlet``
|
|
82
|
+
- ``float``
|
|
83
|
+
- ``0.5``
|
|
84
|
+
- Relaxation factor for inlet boundary.
|
|
85
|
+
* - ``K_mix``
|
|
86
|
+
- ``float``
|
|
87
|
+
- ``0.1``
|
|
88
|
+
- Relaxation factor for mixing plane.
|
|
89
|
+
* - ``Pr_turb``
|
|
90
|
+
- ``float``
|
|
91
|
+
- ``1.0``
|
|
92
|
+
- Turbulent Prandtl number.
|
|
93
|
+
* - ``area_avg_Pout``
|
|
94
|
+
- ``bool``
|
|
95
|
+
- ``True``
|
|
96
|
+
- Force area-averaged outlet pressure to target, otherwise use uniform outlet pressure.
|
|
97
|
+
* - ``damping_factor``
|
|
98
|
+
- ``float``
|
|
99
|
+
- ``25.0``
|
|
100
|
+
- Negative feedback to damp down high residuals. Smaller values are more stable.
|
|
101
|
+
* - ``fmgrid``
|
|
102
|
+
- ``float``
|
|
103
|
+
- ``0.2``
|
|
104
|
+
- Factor scaling the multigrid residual.
|
|
105
|
+
* - ``i_loss``
|
|
106
|
+
- ``int``
|
|
107
|
+
- ``1``
|
|
108
|
+
- Viscous loss model. 0: inviscid, 1: viscous.
|
|
109
|
+
* - ``i_scheme``
|
|
110
|
+
- ``int``
|
|
111
|
+
- ``1``
|
|
112
|
+
- Which time-stepping scheme to use. 0: scree, 1: super.
|
|
113
|
+
* - ``multigrid``
|
|
114
|
+
- ``tuple``
|
|
115
|
+
- ``(2, 2, 2)``
|
|
116
|
+
- Number of cells forming each multigrid level. `(2, 2, 2)` gives coarse cells of side length 2, 4, and 8 fine cells.
|
|
117
|
+
* - ``n_loss``
|
|
118
|
+
- ``int``
|
|
119
|
+
- ``5``
|
|
120
|
+
- Number of time steps between viscous force updates.
|
|
121
|
+
* - ``n_step``
|
|
122
|
+
- ``int``
|
|
123
|
+
- ``5000``
|
|
124
|
+
- Total number of time steps to run.
|
|
125
|
+
* - ``n_step_avg``
|
|
126
|
+
- ``int``
|
|
127
|
+
- ``1``
|
|
128
|
+
- Number of final time steps to average over.
|
|
129
|
+
* - ``n_step_dt``
|
|
130
|
+
- ``int``
|
|
131
|
+
- ``10``
|
|
132
|
+
- Number of time steps between updates of the local time step.
|
|
133
|
+
* - ``n_step_log``
|
|
134
|
+
- ``int``
|
|
135
|
+
- ``500``
|
|
136
|
+
- Number of time steps between log prints.
|
|
137
|
+
* - ``n_step_mix``
|
|
138
|
+
- ``int``
|
|
139
|
+
- ``5``
|
|
140
|
+
- Number of time steps between mixing plane updates.
|
|
141
|
+
* - ``n_step_ramp``
|
|
142
|
+
- ``int``
|
|
143
|
+
- ``250``
|
|
144
|
+
- Number of inital time steps to ramp smoothing and damping down.
|
|
145
|
+
* - ``nstep_damp``
|
|
146
|
+
- ``int``
|
|
147
|
+
- ``-1``
|
|
148
|
+
- Number of steps to apply damping, -1 for all steps.
|
|
149
|
+
* - ``precision``
|
|
150
|
+
- ``int``
|
|
151
|
+
- ``1``
|
|
152
|
+
- Precision of the solver. 1: single, 2: double.
|
|
153
|
+
* - ``print_conv``
|
|
154
|
+
- ``bool``
|
|
155
|
+
- ``True``
|
|
156
|
+
- Print convergence history in the log.
|
|
157
|
+
* - ``sf_mix``
|
|
158
|
+
- ``float``
|
|
159
|
+
- ``0.01``
|
|
160
|
+
- Smoothing factor for uniform enthalpy and entropy downstream of mixing plane.
|
|
161
|
+
* - ``smooth2_adapt``
|
|
162
|
+
- ``float``
|
|
163
|
+
- ``1.0``
|
|
164
|
+
- Second-order smoothing factor, adaptive on pressure.
|
|
165
|
+
* - ``smooth2_const``
|
|
166
|
+
- ``float``
|
|
167
|
+
- ``0.0``
|
|
168
|
+
- Second-order smoothing factor, constant throughout the flow.
|
|
169
|
+
* - ``smooth4``
|
|
170
|
+
- ``float``
|
|
171
|
+
- ``0.01``
|
|
172
|
+
- Fourth-order smoothing factor.
|
|
173
|
+
* - ``smooth_ratio_min``
|
|
174
|
+
- ``float``
|
|
175
|
+
- ``0.1``
|
|
176
|
+
- Largest directional reduction in smoothing on a non-isotropic grid. Unity disables directional scaling.
|
|
177
|
+
* - ``xllim_pitch``
|
|
178
|
+
- ``float``
|
|
179
|
+
- ``0.03``
|
|
180
|
+
- Maximum mixing length as a fraction of row pitch.
|
|
181
|
+
|
|
182
|
+
.. _solver-ts3:
|
|
183
|
+
|
|
184
|
+
Turbostream 3
|
|
185
|
+
-------------
|
|
186
|
+
|
|
187
|
+
Turbostream 3 is a multi-block structured, GPU-accelerated Reynolds-averaged
|
|
188
|
+
Navier--Stokes code developed by :cite:t:`Brandvik2011`.
|
|
189
|
+
|
|
190
|
+
To use this solver, add the following to your configuration file:
|
|
191
|
+
|
|
192
|
+
.. code-block:: yaml
|
|
193
|
+
|
|
194
|
+
solver:
|
|
195
|
+
type: ts3
|
|
196
|
+
nstep: 10000 # Case-dependent
|
|
197
|
+
nstep_avg: 2500 # Typically ~0.25 nstep
|
|
198
|
+
|
|
199
|
+
Configuration options
|
|
200
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
201
|
+
|
|
202
|
+
.. list-table::
|
|
203
|
+
:widths: 10 10 10 70
|
|
204
|
+
:header-rows: 1
|
|
205
|
+
|
|
206
|
+
* - Name
|
|
207
|
+
- Type
|
|
208
|
+
- Default
|
|
209
|
+
- Description
|
|
210
|
+
* - ``Lref_xllim``
|
|
211
|
+
- ``str``
|
|
212
|
+
- ``pitch``
|
|
213
|
+
- Mixing length characteristic dimension, "pitch" or "span".
|
|
214
|
+
* - ``atol_eta``
|
|
215
|
+
- ``float``
|
|
216
|
+
- ``0.005``
|
|
217
|
+
- Absolute tolerance on drift in isentropic efficiency.
|
|
218
|
+
* - ``cfl``
|
|
219
|
+
- ``float``
|
|
220
|
+
- ``0.4``
|
|
221
|
+
- Courant--Friedrichs--Lewy number, reduce for more stability.
|
|
222
|
+
* - ``dampin``
|
|
223
|
+
- ``float``
|
|
224
|
+
- ``25.0``
|
|
225
|
+
- Negative feedback factor, reduce for more stability.
|
|
226
|
+
* - ``environment_script``
|
|
227
|
+
- ``Path``
|
|
228
|
+
- ``/usr/local...``
|
|
229
|
+
- Setup environment shell script to be sourced before running.
|
|
230
|
+
* - ``facsecin``
|
|
231
|
+
- ``float``
|
|
232
|
+
- ``0.005``
|
|
233
|
+
- Fourth-order smoothing feedback factor, increase for more stability.
|
|
234
|
+
* - ``fmgrid``
|
|
235
|
+
- ``float``
|
|
236
|
+
- ``0.2``
|
|
237
|
+
- Multigrid factor, reduce for more stability.
|
|
238
|
+
* - ``ilos``
|
|
239
|
+
- ``int``
|
|
240
|
+
- ``2``
|
|
241
|
+
- Viscous model, 0 for inviscid, 1 for mixing-length, 2 for Spalart-Allmaras.
|
|
242
|
+
* - ``nchange``
|
|
243
|
+
- ``int``
|
|
244
|
+
- ``2000``
|
|
245
|
+
- At start of simulation, ramp smoothing and damping over this many time steps.
|
|
246
|
+
* - ``nstep``
|
|
247
|
+
- ``int``
|
|
248
|
+
- ``10000``
|
|
249
|
+
- Number of time steps.
|
|
250
|
+
* - ``nstep_avg``
|
|
251
|
+
- ``int``
|
|
252
|
+
- ``5000``
|
|
253
|
+
- Average over the last `nstep_avg` steps of the calculation.
|
|
254
|
+
* - ``nstep_soft``
|
|
255
|
+
- ``int``
|
|
256
|
+
- ``0``
|
|
257
|
+
- Number of steps for soft start precursor simulation.
|
|
258
|
+
* - ``rfin``
|
|
259
|
+
- ``float``
|
|
260
|
+
- ``0.5``
|
|
261
|
+
- Inlet relaxation factor, reduce for low-Mach flows.
|
|
262
|
+
* - ``rfmix``
|
|
263
|
+
- ``float``
|
|
264
|
+
- ``0.0``
|
|
265
|
+
- Mixing plane relaxation factor.
|
|
266
|
+
* - ``rtol_mdot``
|
|
267
|
+
- ``float``
|
|
268
|
+
- ``0.01``
|
|
269
|
+
- Relative tolerance on mass flow conservation error and drift.
|
|
270
|
+
* - ``sa_ch2``
|
|
271
|
+
- ``float``
|
|
272
|
+
- ``0.6``
|
|
273
|
+
- Convert the configuration to a dictionary.
|
|
274
|
+
* - ``sa_helicity_option``
|
|
275
|
+
- ``int``
|
|
276
|
+
- ``0``
|
|
277
|
+
- Spalart--Allmaras turbulence model helicity correction.
|
|
278
|
+
* - ``sfin``
|
|
279
|
+
- ``float``
|
|
280
|
+
- ``0.5``
|
|
281
|
+
- Proportion of second-order smoothing, increase for more stability.
|
|
282
|
+
* - ``tvr``
|
|
283
|
+
- ``float``
|
|
284
|
+
- ``10.0``
|
|
285
|
+
- Initial guess of turbulent viscosity ratio.
|
|
286
|
+
* - ``xllim``
|
|
287
|
+
- ``float``
|
|
288
|
+
- ``0.03``
|
|
289
|
+
- Mixing length limit as a fraction of characteristic dimension.
|
|
290
|
+
|
|
291
|
+
.. _solver-ts4:
|
|
292
|
+
|
|
293
|
+
Turbostream 4
|
|
294
|
+
-------------
|
|
295
|
+
|
|
296
|
+
Turbostream 4 is an unstructured, GPU-accelerated Reynolds-averaged
|
|
297
|
+
Navier--Stokes code developed by Turbostream Ltd.
|
|
298
|
+
|
|
299
|
+
To use this solver, add the following to your configuration file:
|
|
300
|
+
|
|
301
|
+
.. code-block:: yaml
|
|
302
|
+
|
|
303
|
+
solver:
|
|
304
|
+
type: ts4
|
|
305
|
+
nstep: 10000 # Case-dependent
|
|
306
|
+
nstep_avg: 2500 # Typically ~0.25 nstep
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
.. _solver-ts4-tables:
|
|
310
|
+
|
|
311
|
+
Real gas tables generation
|
|
312
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
313
|
+
|
|
314
|
+
For real gas simulations, working fluid property tables must be
|
|
315
|
+
pre-generated before the calculation. This can be done using the
|
|
316
|
+
:meth:`turbigen.tables.make_tables` function following the example script below:
|
|
317
|
+
|
|
318
|
+
.. code-block:: python
|
|
319
|
+
|
|
320
|
+
from turbigen.tables import make_tables
|
|
321
|
+
|
|
322
|
+
fluid_name = "water" # Fluid name in CoolProp
|
|
323
|
+
smin = 7308.0 # Minimum entropy in J/kg/K
|
|
324
|
+
smax = 7600.0 # Maximum entropy in J/kg/K
|
|
325
|
+
Pmin = 37746.0 # Minimum pressure in Pa
|
|
326
|
+
Tmax = 550.0 # Maximum temperature in K
|
|
327
|
+
ni = 200 # Number of interpolation points in each direction
|
|
328
|
+
new_npz_path = "water_new.npz" # Path to save the new tables
|
|
329
|
+
|
|
330
|
+
make_tables(fluid_name, smin, smax, Pmin, Tmax, ni, new_npz_path)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
The enthalpy and entropy datums are those used by CoolProp, so in general
|
|
334
|
+
|
|
335
|
+
.. math::
|
|
336
|
+
|
|
337
|
+
h &= c_p (T - T_\mathrm{ref}) \\
|
|
338
|
+
s &= c_p \ln \left( \frac{T}{T_\mathrm{ref}} \right) - R \ln \left( \frac{P}{P_\mathrm{ref}} \right)
|
|
339
|
+
|
|
340
|
+
This means that the correct numerical values for the entropy limits are not
|
|
341
|
+
immediately obvious. :program:`turbigen` will print out numerical values for
|
|
342
|
+
the limits calculated from the nominal mean-line design. These should be,
|
|
343
|
+
however, extended by some margin of safety. It is vital that the limits
|
|
344
|
+
of the tables are wide enough to cover fluid property values over the
|
|
345
|
+
entire flow field, including local features like the suction peak, shock
|
|
346
|
+
waves and boundary layers.
|
|
347
|
+
|
|
348
|
+
Finally, in the configuration file, specify the path to the tables:
|
|
349
|
+
|
|
350
|
+
.. code-block:: yaml
|
|
351
|
+
|
|
352
|
+
solver:
|
|
353
|
+
type: ts4
|
|
354
|
+
tables_path: water_new.npz
|
|
355
|
+
|
|
356
|
+
Some notes on real gas calculations:
|
|
357
|
+
|
|
358
|
+
- The real gas working fluid is less stable than the ideal gas, so take
|
|
359
|
+
care with mesh generation and avoid racy solver settings.
|
|
360
|
+
- There is no handling of phase changes in the tables, so the fluid must
|
|
361
|
+
remain a single phase for accurate results.
|
|
362
|
+
- Of order 1000 points may be required in each direction to get
|
|
363
|
+
discretisation-independent results.
|
|
364
|
+
|
|
365
|
+
Configuration options
|
|
366
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
367
|
+
|
|
368
|
+
.. list-table::
|
|
369
|
+
:widths: 10 10 10 70
|
|
370
|
+
:header-rows: 1
|
|
371
|
+
|
|
372
|
+
* - Name
|
|
373
|
+
- Type
|
|
374
|
+
- Default
|
|
375
|
+
- Description
|
|
376
|
+
* - ``area_avg_pout``
|
|
377
|
+
- ``bool``
|
|
378
|
+
- ``True``
|
|
379
|
+
- Allow non-uniform outlet pressure, force area-average to target.
|
|
380
|
+
* - ``cfl``
|
|
381
|
+
- ``float``
|
|
382
|
+
- ``25.0``
|
|
383
|
+
- Courant--Friedrichs--Lewy number setting the time step.
|
|
384
|
+
* - ``cfl_ramp_nstep``
|
|
385
|
+
- ``int``
|
|
386
|
+
- ``500``
|
|
387
|
+
- Ramp the CFL number up over this many initial time steps.
|
|
388
|
+
* - ``cfl_ramp_st``
|
|
389
|
+
- ``int``
|
|
390
|
+
- ``1.0``
|
|
391
|
+
- Starting value for CFL ramp.
|
|
392
|
+
* - ``custom_pipeline``
|
|
393
|
+
- ``str``
|
|
394
|
+
- `` ``
|
|
395
|
+
- Specify a custom pipeline to convert Turbostream 3 to 4 input file. Should run using pvpython and take two command-line arguments like `pvpython custom_pipeline.py input_ts3.hdf5 input_ts4`
|
|
396
|
+
* - ``environment_script``
|
|
397
|
+
- ``Path``
|
|
398
|
+
- ``/usr/local...``
|
|
399
|
+
- Setup shell script to be sourced before running.
|
|
400
|
+
* - ``implicit_scheme``
|
|
401
|
+
- ``int``
|
|
402
|
+
- ``1``
|
|
403
|
+
- 1: implicit, 0: explicit time marching.
|
|
404
|
+
* - ``interpolation_update``
|
|
405
|
+
- ``int``
|
|
406
|
+
- ``1``
|
|
407
|
+
- Explicit with a slow CFL ramp.
|
|
408
|
+
* - ``nstep``
|
|
409
|
+
- ``int``
|
|
410
|
+
- ``5000``
|
|
411
|
+
- Number of time steps for the calculation.
|
|
412
|
+
* - ``nstep_avg``
|
|
413
|
+
- ``int``
|
|
414
|
+
- ``1000``
|
|
415
|
+
- Number of final time steps to average over.
|
|
416
|
+
* - ``nstep_soft``
|
|
417
|
+
- ``int``
|
|
418
|
+
- ``5000``
|
|
419
|
+
- Number of time steps for soft start.
|
|
420
|
+
* - ``nstep_ts3``
|
|
421
|
+
- ``int``
|
|
422
|
+
- ``0``
|
|
423
|
+
- Number of steps to run a Turbostream 3 initial guess
|
|
424
|
+
* - ``outlet_tag``
|
|
425
|
+
- ``str``
|
|
426
|
+
- ``Outlet``
|
|
427
|
+
- String to identify the outlet boundary condition in the TS4 input file. Only requires changing for custom pipelines.
|
|
428
|
+
* - ``tables_path``
|
|
429
|
+
- ``str``
|
|
430
|
+
- `` ``
|
|
431
|
+
- Path to gas tables npz for real working fluids. See :ref:`solver-ts4-tables`.
|
|
432
|
+
* - ``viscous_model``
|
|
433
|
+
- ``int``
|
|
434
|
+
- ``2``
|
|
435
|
+
- Turbulence model, 0: inviscid, 1: laminar, 2: Spalart-Allmaras, 3: k-omega.
|
|
436
|
+
|
|
437
|
+
.. _solver-custom:
|
|
438
|
+
|
|
439
|
+
Custom solvers
|
|
440
|
+
--------------
|
|
441
|
+
|
|
442
|
+
To add a new solver, create a new Python module in the user-defined plugin
|
|
443
|
+
directory, say `./plug/my_solver.py` and set `plugdir: ./plug` in the
|
|
444
|
+
configuration file. Write a new class that inherits from
|
|
445
|
+
:class:`turbigen.solvers.base.BaseSolver` and implement the following
|
|
446
|
+
methods:
|
|
447
|
+
|
|
448
|
+
- :meth:`run`: Run the solver on the given grid and machine geometry.
|
|
449
|
+
- :meth:`robust`: Create a copy of the config with more robust settings.
|
|
450
|
+
- :meth:`restart`: Create a copy of the config with settings to restart from converged solution.
|
|
451
|
+
|
|
452
|
+
:class:`turbigen.solvers.base.BaseSolver` is a dataclass, so has an automatic constructor and
|
|
453
|
+
useful built-in methods. The configuration file `solver` section
|
|
454
|
+
is fed into the constructor as keyword arguments and becomes attributes of
|
|
455
|
+
the instance.
|
|
@@ -59,7 +59,7 @@ nblade:
|
|
|
59
59
|
|
|
60
60
|
# Configure the RANS solver
|
|
61
61
|
solver:
|
|
62
|
-
type:
|
|
62
|
+
type: ember
|
|
63
63
|
n_step: 2000
|
|
64
64
|
n_step_avg: 100
|
|
65
65
|
n_step_ramp: 1000
|
|
@@ -97,3 +97,10 @@ post_process:
|
|
|
97
97
|
coord: spf
|
|
98
98
|
value: 0.5
|
|
99
99
|
variable: Ma_rel
|
|
100
|
+
|
|
101
|
+
# operating_point:
|
|
102
|
+
# # Omega_adjust: 0.2
|
|
103
|
+
# # PR_ts_adjust: -0.2
|
|
104
|
+
# # mdot_adjust: 0.1
|
|
105
|
+
# pid: [0.5, 0.1, 0.0]
|
|
106
|
+
#
|