turbigen 2.3.0__tar.gz → 2.4.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.3.0 → turbigen-2.4.0}/.gitignore +2 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/.gitlab-ci.yml +3 -4
- {turbigen-2.3.0 → turbigen-2.4.0}/PKG-INFO +1 -1
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/changelog.rst +9 -0
- turbigen-2.4.0/doc/data_structures.rst +319 -0
- turbigen-2.4.0/doc/generate_data_structures.py +199 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/index.rst +10 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/nomenclature.rst +23 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/refs.bib +18 -0
- turbigen-2.4.0/doc/tutorial.rst +673 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/examples/axial_turbine.yaml +4 -11
- {turbigen-2.3.0 → turbigen-2.4.0}/examples/turbine_cascade.yaml +2 -2
- {turbigen-2.3.0 → turbigen-2.4.0}/meson.build +1 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/pyproject.toml +2 -2
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/benchmark.py +5 -5
- turbigen-2.4.0/scripts/link_packages.py +69 -0
- turbigen-2.4.0/scripts/plot_mixing.py +49 -0
- turbigen-2.4.0/scripts/profile.sh +4 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/embsolve.f90 +1 -0
- turbigen-2.4.0/src/embsolve/matmul.f90 +58 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/__init__.py +1 -0
- turbigen-2.4.0/src/turbigen/abstract.py +661 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/base.py +15 -14
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/blade.py +19 -19
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/config2.py +5 -1
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/flowfield.py +9 -3
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/fluid.py +45 -6
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/geometry.py +18 -18
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/iterators.py +3 -3
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/main.py +4 -4
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/nblade.py +1 -16
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/op_point.py +4 -1
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post.py +1 -1
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/ember.py +75 -11
- turbigen-2.4.0/src/turbigen/state.py +1354 -0
- turbigen-2.4.0/test_matmul.py +64 -0
- turbigen-2.4.0/test_stack.py +56 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_fluid.py +38 -188
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_tables.py +1 -1
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_visc.py +9 -5
- turbigen-2.3.0/scripts/profile.sh +0 -11
- turbigen-2.3.0/tests/back-to-back/compressor/emb.yaml +0 -67
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/config.yaml +0 -70
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/inverse.yaml +0 -8
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/log_turbigen.txt +0 -136
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/mean_line_actual.yaml +0 -53
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/mean_line_nominal.yaml +0 -48
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/post/contour_Cp_spf_0.51.npz +0 -0
- turbigen-2.3.0/tests/back-to-back/compressor/ts3/post/pressure_distributions_raw.npz +0 -0
- turbigen-2.3.0/tests/back-to-back/compressor/ts3.yaml +0 -62
- turbigen-2.3.0/tests/back-to-back/stage.yaml +0 -63
- turbigen-2.3.0/tests/back-to-back/turbine/emb.yaml +0 -68
- turbigen-2.3.0/tests/back-to-back/turbine/plot.py +0 -152
- turbigen-2.3.0/tests/back-to-back/turbine/run/config.yaml +0 -71
- turbigen-2.3.0/tests/back-to-back/turbine/run/log_turbigen.txt +0 -63
- turbigen-2.3.0/tests/back-to-back/turbine/run/mean_line_nominal.yaml +0 -49
- turbigen-2.3.0/tests/back-to-back/turbine/ts3/inverse.yaml +0 -15
- turbigen-2.3.0/tests/back-to-back/turbine/ts3/post/contour_Ys_m_2.05.npz +0 -0
- turbigen-2.3.0/tests/back-to-back/turbine/ts3/post/pressure_distributions_raw.npz +0 -0
- turbigen-2.3.0/tests/back-to-back/turbine/ts3.yaml +0 -66
- turbigen-2.3.0/tests/back-to-back/turbine_oh/emb.yaml +0 -74
- turbigen-2.3.0/tests/not_test_periodic.py +0 -203
- turbigen-2.3.0/tests/not_test_splitter.py +0 -42
- turbigen-2.3.0/tests/pipe.py +0 -252
- turbigen-2.3.0/tests/reformat_sections.py +0 -35
- turbigen-2.3.0/tests/turning_duct.py +0 -241
- turbigen-2.3.0/tutorial/config.yaml +0 -46
- turbigen-2.3.0/tutorial/fan.notpy +0 -82
- {turbigen-2.3.0 → turbigen-2.4.0}/.flake8 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/.gitlab-ci-local/.gitignore +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/.pre-commit-config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/COPYING +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/MANIFEST.in +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/README.md +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/bin/get_ssh_agent.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/bin/noquit.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/bin/setup.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/conf.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/examples/index.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/generate_examples.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/generate_meanline.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/generate_solver.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/license.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/meanline.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/quickstart.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/references.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/solver.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/turbigen-logo.svg +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/tutorial.rst.not +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc/usage.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.buildinfo +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/changelog.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/config.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/environment.pickle +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/fluid.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/index.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/install.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/license.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/meanline.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/mesh.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/nomenclature.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/post.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/references.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/solver.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/tutorial.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/.doctrees/usage.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/index.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/base.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/fluid.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/hmesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/axial_turbine.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/radial_compressor.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/turbine_cascade.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/ohmesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/solvers/ts3.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/solvers/ts4.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/changelog.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/config.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/fluid.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/index.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/install.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/license.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/meanline.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/mesh.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/nomenclature.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/post.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/references.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/solver.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/tutorial.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_sources/usage.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/alabaster.css +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/basic.css +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/custom.css +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/doctools.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/documentation_options.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/file.png +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/language_data.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/minus.png +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/plot_directive.css +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/plus.png +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/pygments.css +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/searchtools.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/_static/sphinx_highlight.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/changelog.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/config.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/fluid.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/genindex.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/index.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/install.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/license.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/meanline.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/mesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/nomenclature.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/objects.inv +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/post.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/py-modindex.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/references.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/search.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/searchindex.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/solver.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/tutorial.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_build/usage.html +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/changelog.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/conf.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/config.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/dummy_post.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/fluid.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/index.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/install.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/license.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/make.bat +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/meanline.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/mesh.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/method.md +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/nomenclature.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/post.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/refs.bib +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade/config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade/inverse.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade/log_turbigen.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade/mean_line_actual.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade/mean_line_nominal.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade_test/config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade_test/inverse.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade_test/log_turbigen.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade_test/mean_line_actual.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/runs/cascade_test/mean_line_nominal.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/solver.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/tutorial.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/doc-old/usage.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/dspace.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/matplotlibrc +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/analysis.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/axial_compressor_rotor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/axial_turbine.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/axial_turbine_ts4.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_fit.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_iter.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_off_design.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_p3d.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_post.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/cascade_test.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/flat_plate.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/include1.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/include2.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/mixed_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/profile.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/pure_radial_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/quad_camber.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/radial_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/seminar_df.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/seminar_ds_025.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/seminar_ds_04.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/seminar_ds_055.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/seminar_xpeak.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/turbine_cascade.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/old-examples/turbine_include.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/plots/profile.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/pytest.ini +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/benchmark.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/eval_fitted_design_space.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/fit_eta_tt.json +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/make_table.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/plot_benchmark.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/plot_camber.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/plot_dspace.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/plot_thickness.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/read_cuts.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/scripts/test_dspace.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/distribute.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/embsolvec-f2pywrappers.f +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/embsolvec-f2pywrappers2.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/embsolvecmodule.c +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/fluxes.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/indexing.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/meson.build +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/multigrid.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/operators.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/smooth.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/embsolve/viscous.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/__main__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/annulus.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/__init__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/ag_server.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/autogrid.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/reader.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/script_ag.py2 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/script_igg.py2 +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/script_sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/autogrid/server.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/average.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/camber.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/__init__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/check.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/double.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/exceptions.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/plot.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/single.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/symmetric.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/clusterfunc/util.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/compflow_native.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/dspace.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/exceptions.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/grid.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/hmesh.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/inlet.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/job.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/job_server.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/marching_cubes.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/meanline.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/mesh.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/ohmesh.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/polynomial.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/calc_surf_dissipation.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/check_phase.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/find_extrema.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_blade.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_camber.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_incidence.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_nose.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_section.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/plot_thickness.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/spanwise.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/write_cuts.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/write_ibl.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/post/write_stl.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/base.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/convert_ts3_to_ts4_native.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/plot3d.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/ts3.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/solvers/ts4.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/tables.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/thickness.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/util.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/util_post.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/src/turbigen/yaml.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/cascade_splitter.tar.gz +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/cascade_splitter.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/cfd_cut.json +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/hydrogen_table_known_good.npz +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/sections.dat +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/data/water_table_known_good.npz +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcd_yp5_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcd_yp5_turb.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcf_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcf_turb_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcf_yp5_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.4.0/tests/data}/xcf_yp5_turb.csv +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/gpu/submit.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/gpu/ts3.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/gpu/ts4.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/not_test_rotor.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/pdist_ts3.npz +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/plate.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_average.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_bcond.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_cells.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_distribute.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_nozzle.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_operators.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_periodic_step.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_smooth.py +0 -0
- {turbigen-2.3.0 → turbigen-2.4.0}/tests/test_wall.py +0 -0
|
@@ -36,13 +36,11 @@ build_wheels:
|
|
|
36
36
|
|
|
37
37
|
profile:
|
|
38
38
|
stage: test
|
|
39
|
-
artifacts:
|
|
40
|
-
paths:
|
|
41
|
-
- plots
|
|
42
39
|
script:
|
|
43
40
|
- uv pip install .[parallel]
|
|
44
41
|
# Serial profiling.
|
|
45
|
-
-
|
|
42
|
+
- OMP_NUM_THREADS=1 LINE_PROFILE=1 turbigen examples/axial_turbine.yaml -I
|
|
43
|
+
- cat profile_output.txt
|
|
46
44
|
# Now parallel benchmarking
|
|
47
45
|
- ./scripts/benchmark.sh
|
|
48
46
|
|
|
@@ -67,6 +65,7 @@ doc:
|
|
|
67
65
|
script:
|
|
68
66
|
- python doc/generate_examples.py
|
|
69
67
|
- python doc/generate_meanline.py
|
|
68
|
+
- python doc/generate_data_structures.py
|
|
70
69
|
- sphinx-build -W doc doc/_build
|
|
71
70
|
|
|
72
71
|
pages:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: turbigen
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.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>
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
v2.4.0
|
|
5
|
+
^^^^^^
|
|
6
|
+
|
|
7
|
+
* Add exit throttling to ember solver
|
|
8
|
+
* Allow profiling the code speed by exporting LINE_PROFILE=1
|
|
9
|
+
* Bug fix for Lieblein diffusion factor
|
|
10
|
+
* Bug fix for rotor-only mean-line check
|
|
11
|
+
* Finish tutorial
|
|
12
|
+
|
|
4
13
|
v2.3.0
|
|
5
14
|
^^^^^^
|
|
6
15
|
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
|
|
2
|
+
Data Structures
|
|
3
|
+
===============
|
|
4
|
+
|
|
5
|
+
This page documents the internal data structures used in :program:`turbigen`.
|
|
6
|
+
It is intended as a reference for users extending the program using custom
|
|
7
|
+
plugins or developers modifying the source code.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Working fluids
|
|
11
|
+
--------------
|
|
12
|
+
|
|
13
|
+
Both perfect and real working fluids are represented by a :class:`State`
|
|
14
|
+
class, which has a common interface for setting and reading thermodynamic
|
|
15
|
+
properties. The interface allows the same mean-line design code to work
|
|
16
|
+
with any working fluid. :class:`State` does not store velocity information
|
|
17
|
+
and hence makes no distinction between static and stagnation states, the
|
|
18
|
+
handling of which is left to the calling code.
|
|
19
|
+
|
|
20
|
+
Setter methods
|
|
21
|
+
^^^^^^^^^^^^^^
|
|
22
|
+
|
|
23
|
+
The following methods are used to set the thermodynamic state of the fluid
|
|
24
|
+
to a new value. The object is updated in-place; a copy can be explicitly
|
|
25
|
+
created using :meth:`State.copy`. By the two-property rule, the setters all
|
|
26
|
+
take two arguments to uniquely specify the thermodynamic state. The
|
|
27
|
+
following methods are available:
|
|
28
|
+
|
|
29
|
+
.. list-table::
|
|
30
|
+
:widths: 50 25 25
|
|
31
|
+
:header-rows: 1
|
|
32
|
+
|
|
33
|
+
* - Method
|
|
34
|
+
- Arguments
|
|
35
|
+
-
|
|
36
|
+
* - ``State.set_h_s(h, s)``
|
|
37
|
+
- Enthalpy
|
|
38
|
+
- Entropy
|
|
39
|
+
* - ``State.set_P_h(P, h)``
|
|
40
|
+
- Pressure
|
|
41
|
+
- Enthalpy
|
|
42
|
+
* - ``State.set_P_rho(P, rho)``
|
|
43
|
+
- Pressure
|
|
44
|
+
- Density
|
|
45
|
+
* - ``State.set_P_s(P, s)``
|
|
46
|
+
- Pressure
|
|
47
|
+
- Entropy
|
|
48
|
+
* - ``State.set_P_T(P, T)``
|
|
49
|
+
- Pressure
|
|
50
|
+
- Temperature
|
|
51
|
+
* - ``State.set_rho_u(rho, u)``
|
|
52
|
+
- Density
|
|
53
|
+
- Internal energy
|
|
54
|
+
|
|
55
|
+
Property attributes
|
|
56
|
+
^^^^^^^^^^^^^^^^^^^
|
|
57
|
+
|
|
58
|
+
Thermodynamic and transport properties of the fluid are accessed as attributes of the
|
|
59
|
+
:class:`State` object. The following properties are available:
|
|
60
|
+
|
|
61
|
+
.. list-table::
|
|
62
|
+
:widths: 25 55 20
|
|
63
|
+
:header-rows: 1
|
|
64
|
+
|
|
65
|
+
* - Property
|
|
66
|
+
- Description
|
|
67
|
+
- Units
|
|
68
|
+
|
|
69
|
+
* - ``State.a``
|
|
70
|
+
- Acoustic speed
|
|
71
|
+
- m/s
|
|
72
|
+
* - ``State.cp``
|
|
73
|
+
- Specific heat at constant pressure
|
|
74
|
+
- J/kg/K
|
|
75
|
+
* - ``State.cv``
|
|
76
|
+
- Specific heat at constant volume
|
|
77
|
+
- J/kg/K
|
|
78
|
+
* - ``State.gamma``
|
|
79
|
+
- Ratio of specific heats
|
|
80
|
+
- --
|
|
81
|
+
* - ``State.h``
|
|
82
|
+
- Specific enthalpy
|
|
83
|
+
- J/kg
|
|
84
|
+
* - ``State.mu``
|
|
85
|
+
- Kinematic viscosity
|
|
86
|
+
- m^2/s
|
|
87
|
+
* - ``State.P``
|
|
88
|
+
- Pressure
|
|
89
|
+
- Pa
|
|
90
|
+
* - ``State.Pr``
|
|
91
|
+
- Prandtl number
|
|
92
|
+
- --
|
|
93
|
+
* - ``State.rgas``
|
|
94
|
+
- Specific gas constant
|
|
95
|
+
- J/kg/K
|
|
96
|
+
* - ``State.rho``
|
|
97
|
+
- Density
|
|
98
|
+
- kg/m^3
|
|
99
|
+
* - ``State.s``
|
|
100
|
+
- Specific entropy
|
|
101
|
+
- J/kg/K
|
|
102
|
+
* - ``State.T``
|
|
103
|
+
- Temperature
|
|
104
|
+
- K
|
|
105
|
+
* - ``State.u``
|
|
106
|
+
- Specific internal energy
|
|
107
|
+
- J/kg
|
|
108
|
+
|
|
109
|
+
Flow fields
|
|
110
|
+
-----------
|
|
111
|
+
|
|
112
|
+
Augmenting a thermodynamic state with velocity and coordinate data
|
|
113
|
+
allows the :class:`FlowField` class to represent a flow field.
|
|
114
|
+
Composite properties such as stagnation pressure and Mach number
|
|
115
|
+
can then be computed from the thermodynamic state and velocity vector.
|
|
116
|
+
Setting an angular velocity allows evaluation of quantities in a rotating
|
|
117
|
+
frame. Circumferential periodicity is represented by a number of blades.
|
|
118
|
+
|
|
119
|
+
Setter methods
|
|
120
|
+
^^^^^^^^^^^^^^
|
|
121
|
+
|
|
122
|
+
The :class:`FlowField` class has the same thermodynamic setter methods as
|
|
123
|
+
the :class:`State` class. Velocity and coordinate data are set directly
|
|
124
|
+
by assigning to the corresponding attributes.
|
|
125
|
+
|
|
126
|
+
Property attributes
|
|
127
|
+
^^^^^^^^^^^^^^^^^^^
|
|
128
|
+
|
|
129
|
+
In addition to all the pure thermodynamic properties defined in
|
|
130
|
+
:class:`State`, incorporating velocity and coordinate data allow the
|
|
131
|
+
:class:`FlowField` to provide the following other properties:
|
|
132
|
+
|
|
133
|
+
.. list-table::
|
|
134
|
+
:widths: 25 60 15
|
|
135
|
+
:header-rows: 1
|
|
136
|
+
|
|
137
|
+
* - Property
|
|
138
|
+
- Description
|
|
139
|
+
- Units
|
|
140
|
+
|
|
141
|
+
* - ``FlowField.Alpha``
|
|
142
|
+
- Yaw angle
|
|
143
|
+
- deg
|
|
144
|
+
* - ``FlowField.Alpha_rel``
|
|
145
|
+
- Relative frame yaw angle
|
|
146
|
+
- deg
|
|
147
|
+
* - ``FlowField.ao``
|
|
148
|
+
- Stagnation acoustic speed
|
|
149
|
+
- m/s
|
|
150
|
+
* - ``FlowField.Beta``
|
|
151
|
+
- Pitch angle
|
|
152
|
+
- deg
|
|
153
|
+
* - ``FlowField.e``
|
|
154
|
+
- Specific total energy
|
|
155
|
+
- J/kg
|
|
156
|
+
* - ``FlowField.halfVsq``
|
|
157
|
+
- Specific kinetic energy
|
|
158
|
+
- J/kg
|
|
159
|
+
* - ``FlowField.halfVsq_rel``
|
|
160
|
+
- Relative frame specific kinetic energy
|
|
161
|
+
- J/kg
|
|
162
|
+
* - ``FlowField.ho``
|
|
163
|
+
- Stagnation specific enthalpy
|
|
164
|
+
- J/kg
|
|
165
|
+
* - ``FlowField.ho_rel``
|
|
166
|
+
- Relative frame stagnation specific enthalpy
|
|
167
|
+
- J/kg
|
|
168
|
+
* - ``FlowField.I``
|
|
169
|
+
- Rothalpy
|
|
170
|
+
- J/kg
|
|
171
|
+
* - ``FlowField.Ma``
|
|
172
|
+
- Mach number
|
|
173
|
+
- --
|
|
174
|
+
* - ``FlowField.Ma_rel``
|
|
175
|
+
- Relative frame Mach number
|
|
176
|
+
- --
|
|
177
|
+
* - ``FlowField.Omega``
|
|
178
|
+
- Reference frame angular velocity
|
|
179
|
+
- rad/s
|
|
180
|
+
* - ``FlowField.Po``
|
|
181
|
+
- Stagnation pressure
|
|
182
|
+
- Pa
|
|
183
|
+
* - ``FlowField.Po_rel``
|
|
184
|
+
- Relative frame stagnation pressure
|
|
185
|
+
- Pa
|
|
186
|
+
* - ``FlowField.r``
|
|
187
|
+
- Radial coordinate
|
|
188
|
+
- m
|
|
189
|
+
* - ``FlowField.rhoe``
|
|
190
|
+
- Volumetric total energy
|
|
191
|
+
- J/m^3
|
|
192
|
+
* - ``FlowField.rhorVt``
|
|
193
|
+
- Volumetric angular momentum
|
|
194
|
+
- kg/m^2/s
|
|
195
|
+
* - ``FlowField.rhoVr``
|
|
196
|
+
- Volumetric radial momentum
|
|
197
|
+
- kg/m^2/s
|
|
198
|
+
* - ``FlowField.rhoVt``
|
|
199
|
+
- Volumetric angular momentum
|
|
200
|
+
- kg/m^2/s
|
|
201
|
+
* - ``FlowField.rhoVx``
|
|
202
|
+
- Volumetric axial momentum
|
|
203
|
+
- kg/m^2/s
|
|
204
|
+
* - ``FlowField.rpm``
|
|
205
|
+
- Reference frame revolutions per minute
|
|
206
|
+
- rpm
|
|
207
|
+
* - ``FlowField.t``
|
|
208
|
+
- Circumferential coordinate
|
|
209
|
+
- rad
|
|
210
|
+
* - ``FlowField.tanAlpha``
|
|
211
|
+
- Tangent of yaw angle
|
|
212
|
+
- --
|
|
213
|
+
* - ``FlowField.tanAlpha_rel``
|
|
214
|
+
- Tangent of relative frame yaw angle
|
|
215
|
+
- --
|
|
216
|
+
* - ``FlowField.tanBeta``
|
|
217
|
+
- Tangent of pitch angle
|
|
218
|
+
- --
|
|
219
|
+
* - ``FlowField.To``
|
|
220
|
+
- Stagnation temperature
|
|
221
|
+
- K
|
|
222
|
+
* - ``FlowField.To_rel``
|
|
223
|
+
- Relative frame stagnation temperature
|
|
224
|
+
- K
|
|
225
|
+
* - ``FlowField.U``
|
|
226
|
+
- Blade speed
|
|
227
|
+
- m/s
|
|
228
|
+
* - ``FlowField.V``
|
|
229
|
+
- Absolute velocity magnitude
|
|
230
|
+
- m/s
|
|
231
|
+
* - ``FlowField.V_rel``
|
|
232
|
+
- Relative frame velocity magnitude
|
|
233
|
+
- m/s
|
|
234
|
+
* - ``FlowField.Vm``
|
|
235
|
+
- Meridional velocity magnitude
|
|
236
|
+
- m/s
|
|
237
|
+
* - ``FlowField.Vr``
|
|
238
|
+
- Radial velocity
|
|
239
|
+
- m/s
|
|
240
|
+
* - ``FlowField.Vt``
|
|
241
|
+
- Circumferential velocity
|
|
242
|
+
- m/s
|
|
243
|
+
* - ``FlowField.Vt_rel``
|
|
244
|
+
- Relative frame circumferential velocity
|
|
245
|
+
- m/s
|
|
246
|
+
* - ``FlowField.Vx``
|
|
247
|
+
- Axial velocity
|
|
248
|
+
- m/s
|
|
249
|
+
* - ``FlowField.x``
|
|
250
|
+
- Axial coordinate
|
|
251
|
+
- m
|
|
252
|
+
|
|
253
|
+
Mean line
|
|
254
|
+
---------
|
|
255
|
+
|
|
256
|
+
The :class:`MeanLine` class encapsulates the quasi-one-dimensional geometry
|
|
257
|
+
and flow field of a turbomachine. In addition to thermodynamic states and
|
|
258
|
+
velocity vectors, it also contains a root-mean-square radii and annulus
|
|
259
|
+
areas. Assuming the span is perpendicular to the mean-line pitch angle,
|
|
260
|
+
These data are sufficient to determine hub and tip radii, and
|
|
261
|
+
the midspan blade angles.
|
|
262
|
+
|
|
263
|
+
Property attributes
|
|
264
|
+
^^^^^^^^^^^^^^^^^^^
|
|
265
|
+
|
|
266
|
+
In addition to the properties defined in
|
|
267
|
+
:class:`State` and
|
|
268
|
+
:class:`FlowField`, the :class:`MeanLine` class provides the following
|
|
269
|
+
|
|
270
|
+
.. list-table::
|
|
271
|
+
:widths: 25 60 15
|
|
272
|
+
:header-rows: 1
|
|
273
|
+
|
|
274
|
+
* - Property
|
|
275
|
+
- Description
|
|
276
|
+
- Units
|
|
277
|
+
|
|
278
|
+
* - ``MeanLine.A``
|
|
279
|
+
- Annulus area
|
|
280
|
+
- m^2
|
|
281
|
+
* - ``MeanLine.eta_poly``
|
|
282
|
+
- Total-to-total polytropic efficiency
|
|
283
|
+
- --
|
|
284
|
+
* - ``MeanLine.eta_ts``
|
|
285
|
+
- Total-to-static isentropic efficiency
|
|
286
|
+
- --
|
|
287
|
+
* - ``MeanLine.eta_tt``
|
|
288
|
+
- Total-to-total isentropic efficiency
|
|
289
|
+
- --
|
|
290
|
+
* - ``MeanLine.htr``
|
|
291
|
+
- Hub-to-tip radius ratio
|
|
292
|
+
- --
|
|
293
|
+
* - ``MeanLine.mdot``
|
|
294
|
+
- Mass flow rate
|
|
295
|
+
- kg/s
|
|
296
|
+
* - ``MeanLine.Nb``
|
|
297
|
+
- Number of blades
|
|
298
|
+
- --
|
|
299
|
+
* - ``MeanLine.PR_ts``
|
|
300
|
+
- Total-to-static pressure ratio
|
|
301
|
+
- --
|
|
302
|
+
* - ``MeanLine.PR_tt``
|
|
303
|
+
- Total-to-total pressure ratio
|
|
304
|
+
- --
|
|
305
|
+
* - ``MeanLine.rhub``
|
|
306
|
+
- Hub radius
|
|
307
|
+
- m
|
|
308
|
+
* - ``MeanLine.rmid``
|
|
309
|
+
- Midspan radius
|
|
310
|
+
- m
|
|
311
|
+
* - ``MeanLine.rrms``
|
|
312
|
+
- Root-mean-square radius
|
|
313
|
+
- m
|
|
314
|
+
* - ``MeanLine.rtip``
|
|
315
|
+
- Tip radius
|
|
316
|
+
- m
|
|
317
|
+
* - ``MeanLine.span``
|
|
318
|
+
- Span
|
|
319
|
+
- m
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"""Make documentation for fluid, flowfield, meanline data structures."""
|
|
2
|
+
|
|
3
|
+
import turbigen.abstract
|
|
4
|
+
import inspect
|
|
5
|
+
|
|
6
|
+
prop_names = {
|
|
7
|
+
"rho": "Density",
|
|
8
|
+
"u": "Internal energy",
|
|
9
|
+
"T": "Temperature",
|
|
10
|
+
"P": "Pressure",
|
|
11
|
+
"h": "Enthalpy",
|
|
12
|
+
"s": "Entropy",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def generate_fluid(cls):
|
|
17
|
+
rst_str = ""
|
|
18
|
+
|
|
19
|
+
# Base class first
|
|
20
|
+
doc = inspect.getdoc(cls)
|
|
21
|
+
rst_str += doc
|
|
22
|
+
|
|
23
|
+
# Get names of setter methods
|
|
24
|
+
setters = [
|
|
25
|
+
m[0]
|
|
26
|
+
for m in inspect.getmembers(cls, predicate=inspect.isfunction)
|
|
27
|
+
if m[0].startswith("set_")
|
|
28
|
+
]
|
|
29
|
+
setters.sort(key=str.lower)
|
|
30
|
+
|
|
31
|
+
# Start table
|
|
32
|
+
setter_str = ".. list-table::\n :widths: 50 25 25\n :header-rows: 1\n\n"
|
|
33
|
+
setter_str += " * - Method\n - Arguments\n - "
|
|
34
|
+
for method in setters:
|
|
35
|
+
props = method.split("_")[1:]
|
|
36
|
+
methods_str = f" * - ``{cls.__name__}.{method}({', '.join(props)})``"
|
|
37
|
+
params_str = "\n - ".join([prop_names[p] for p in props])
|
|
38
|
+
setter_str += f"\n{methods_str}\n - {params_str}"
|
|
39
|
+
|
|
40
|
+
rst_str = rst_str.replace("xxx", setter_str)
|
|
41
|
+
|
|
42
|
+
# Get names and docstrings of quantities that use @property decorator
|
|
43
|
+
quantities = [
|
|
44
|
+
m[0]
|
|
45
|
+
for m in inspect.getmembers(cls)
|
|
46
|
+
if isinstance(m[1], property) and not m[0].startswith("_")
|
|
47
|
+
]
|
|
48
|
+
quantities.sort(key=str.lower)
|
|
49
|
+
# Start quantities table
|
|
50
|
+
quantities_str = ".. list-table::\n :widths: 25 55 20\n :header-rows: 1\n\n"
|
|
51
|
+
quantities_str += " * - Property\n - Description\n - Units\n"
|
|
52
|
+
for quantity in quantities:
|
|
53
|
+
doc = inspect.getdoc(getattr(cls, quantity))
|
|
54
|
+
# get units
|
|
55
|
+
if not doc:
|
|
56
|
+
continue
|
|
57
|
+
split = doc.split(" [")
|
|
58
|
+
name = split[0]
|
|
59
|
+
if len(split) == 1:
|
|
60
|
+
units = ""
|
|
61
|
+
else:
|
|
62
|
+
units = split[1]
|
|
63
|
+
units = units.split("]")[0]
|
|
64
|
+
quantities_str += (
|
|
65
|
+
f"\n * - ``{cls.__name__}.{quantity}``\n - {name}\n - {units}"
|
|
66
|
+
)
|
|
67
|
+
rst_str = rst_str.replace("yyy", quantities_str)
|
|
68
|
+
|
|
69
|
+
return rst_str
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def generate_flowfield(cls):
|
|
73
|
+
rst_str = ""
|
|
74
|
+
|
|
75
|
+
# Base class first
|
|
76
|
+
doc = inspect.getdoc(cls)
|
|
77
|
+
rst_str += doc
|
|
78
|
+
|
|
79
|
+
# Get names of setter methods
|
|
80
|
+
setters = [
|
|
81
|
+
m[0]
|
|
82
|
+
for m in inspect.getmembers(cls, predicate=inspect.isfunction)
|
|
83
|
+
if m[0].startswith("set_")
|
|
84
|
+
]
|
|
85
|
+
setters.sort(key=str.lower)
|
|
86
|
+
|
|
87
|
+
# Start table
|
|
88
|
+
setter_str = ".. list-table::\n :widths: 65 35\n :header-rows: 1\n\n"
|
|
89
|
+
setter_str += " * - Method\n - Arguments\n"
|
|
90
|
+
for method in setters:
|
|
91
|
+
args = [
|
|
92
|
+
k
|
|
93
|
+
for k in inspect.signature(getattr(cls, method)).parameters.keys()
|
|
94
|
+
if k != "self"
|
|
95
|
+
]
|
|
96
|
+
methods_str = f" * - ``{cls.__name__}.{method}({', '.join(args)})``"
|
|
97
|
+
doc = inspect.getdoc(getattr(cls, method)).splitlines()[0].strip(".")
|
|
98
|
+
setter_str += f"\n{methods_str}\n - {doc}"
|
|
99
|
+
|
|
100
|
+
rst_str = rst_str.replace("xxx", setter_str)
|
|
101
|
+
|
|
102
|
+
# Get names and docstrings of quantities that use @property decorator
|
|
103
|
+
quantities = [m[0] for m in inspect.getmembers(cls) if not m[0].startswith("_")]
|
|
104
|
+
quantities.sort(key=str.lower)
|
|
105
|
+
# Start quantities table
|
|
106
|
+
quantities_str = ".. list-table::\n :widths: 25 60 15\n :header-rows: 1\n\n"
|
|
107
|
+
quantities_str += " * - Property\n - Description\n - Units\n"
|
|
108
|
+
for quantity in quantities:
|
|
109
|
+
doc = inspect.getdoc(getattr(cls, quantity))
|
|
110
|
+
try:
|
|
111
|
+
assert len(doc.split(" [")) == 2
|
|
112
|
+
assert "\n" not in doc
|
|
113
|
+
name, units = doc.split(" [")
|
|
114
|
+
except (AttributeError, ValueError, AssertionError):
|
|
115
|
+
continue
|
|
116
|
+
units = units.split("]")[0]
|
|
117
|
+
quantities_str += (
|
|
118
|
+
f"\n * - ``{cls.__name__}.{quantity}``\n - {name}\n - {units}"
|
|
119
|
+
)
|
|
120
|
+
rst_str = rst_str.replace("yyy", quantities_str)
|
|
121
|
+
|
|
122
|
+
return rst_str
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def generate_meanline(cls):
|
|
126
|
+
rst_str = ""
|
|
127
|
+
|
|
128
|
+
# Base class first
|
|
129
|
+
doc = inspect.getdoc(cls)
|
|
130
|
+
rst_str += doc
|
|
131
|
+
|
|
132
|
+
# Get names of setter methods
|
|
133
|
+
setters = [
|
|
134
|
+
m[0]
|
|
135
|
+
for m in inspect.getmembers(cls, predicate=inspect.isfunction)
|
|
136
|
+
if m[0].startswith("set_")
|
|
137
|
+
]
|
|
138
|
+
setters.sort(key=str.lower)
|
|
139
|
+
|
|
140
|
+
# Start table
|
|
141
|
+
setter_str = ".. list-table::\n :widths: 65 35\n :header-rows: 1\n\n"
|
|
142
|
+
setter_str += " * - Method\n - Arguments\n"
|
|
143
|
+
for method in setters:
|
|
144
|
+
args = [
|
|
145
|
+
k
|
|
146
|
+
for k in inspect.signature(getattr(cls, method)).parameters.keys()
|
|
147
|
+
if k != "self"
|
|
148
|
+
]
|
|
149
|
+
methods_str = f" * - ``{cls.__name__}.{method}({', '.join(args)})``"
|
|
150
|
+
doc = inspect.getdoc(getattr(cls, method)).splitlines()[0].strip(".")
|
|
151
|
+
setter_str += f"\n{methods_str}\n - {doc}"
|
|
152
|
+
|
|
153
|
+
rst_str = rst_str.replace("xxx", setter_str)
|
|
154
|
+
|
|
155
|
+
# Get names and docstrings of quantities that use @property decorator
|
|
156
|
+
quantities = [m[0] for m in inspect.getmembers(cls) if not m[0].startswith("_")]
|
|
157
|
+
quantities.sort(key=str.lower)
|
|
158
|
+
# Start quantities table
|
|
159
|
+
quantities_str = ".. list-table::\n :widths: 25 60 15\n :header-rows: 1\n\n"
|
|
160
|
+
quantities_str += " * - Property\n - Description\n - Units\n"
|
|
161
|
+
for quantity in quantities:
|
|
162
|
+
doc = inspect.getdoc(getattr(cls, quantity))
|
|
163
|
+
try:
|
|
164
|
+
assert len(doc.split(" [")) == 2
|
|
165
|
+
assert "\n" not in doc
|
|
166
|
+
name, units = doc.split(" [")
|
|
167
|
+
except (AttributeError, ValueError, AssertionError):
|
|
168
|
+
continue
|
|
169
|
+
units = units.split("]")[0]
|
|
170
|
+
quantities_str += (
|
|
171
|
+
f"\n * - ``{cls.__name__}.{quantity}``\n - {name}\n - {units}"
|
|
172
|
+
)
|
|
173
|
+
rst_str = rst_str.replace("yyy", quantities_str)
|
|
174
|
+
|
|
175
|
+
return rst_str
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
if __name__ == "__main__":
|
|
179
|
+
state_str = generate_fluid(turbigen.abstract.State)
|
|
180
|
+
|
|
181
|
+
rst_str = """
|
|
182
|
+
Data Structures
|
|
183
|
+
===============
|
|
184
|
+
|
|
185
|
+
This page documents the internal data structures used in :program:`turbigen`.
|
|
186
|
+
It is intended as a reference for users extending the program using custom
|
|
187
|
+
plugins or developers modifying the source code.
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
rst_str += state_str + "\n\n"
|
|
193
|
+
|
|
194
|
+
rst_str += generate_flowfield(turbigen.abstract.FlowField)
|
|
195
|
+
rst_str += "\n\n"
|
|
196
|
+
rst_str += generate_flowfield(turbigen.abstract.MeanLine)
|
|
197
|
+
# Write the rst string to a file
|
|
198
|
+
with open("doc/data_structures.rst", "w") as f:
|
|
199
|
+
f.write(rst_str)
|
|
@@ -9,17 +9,27 @@
|
|
|
9
9
|
This documentation contains
|
|
10
10
|
usage instructions, descriptions of the theory involved, and listings of configuration options.
|
|
11
11
|
|
|
12
|
+
Publications using :program:`turbigen`:
|
|
13
|
+
|
|
14
|
+
- Brind, J., "Data-driven radial compressor design space mapping". *J. Turbomach.* :cite:`Brind2024`.
|
|
15
|
+
|
|
16
|
+
- Torres-Gomez, A., Brind, J., and Pullan, G. "Cryogenic Radial Turbine Design for High-Efficiency Hydrogen Liquefaction Plants". *ASME Turbo Expo 2025* :cite:`TorresGomez2025`.
|
|
17
|
+
|
|
18
|
+
|
|
12
19
|
User manual
|
|
13
20
|
===========
|
|
14
21
|
.. toctree::
|
|
15
22
|
:maxdepth: 2
|
|
16
23
|
|
|
17
24
|
quickstart
|
|
25
|
+
tutorial
|
|
18
26
|
nomenclature
|
|
19
27
|
usage
|
|
28
|
+
data_structures
|
|
20
29
|
meanline
|
|
21
30
|
solver
|
|
22
31
|
examples/index
|
|
23
32
|
changelog
|
|
24
33
|
license
|
|
34
|
+
Source code repository <https://gitlab.developers.cam.ac.uk/jb753/turbigen>
|
|
25
35
|
references
|
|
@@ -8,6 +8,29 @@ General conventions for variable names:
|
|
|
8
8
|
* Stagnation quantities are denoted by a subscript letter oh: `Po`, `ho_rel`.
|
|
9
9
|
* Depending on context, concatenation of symbols is either: a product, such as `rhoVx`; or a stack along the first array dimension, like `xrt`.
|
|
10
10
|
|
|
11
|
+
The yaw angle, `Alpha` or :math:`\alpha`, is defined as the angle between the flow direction and
|
|
12
|
+
the meridional direction:
|
|
13
|
+
|
|
14
|
+
.. math::
|
|
15
|
+
\alpha = \arctan\left(\frac{V_\theta}{V_m}\right)
|
|
16
|
+
|
|
17
|
+
where :math:`V_\theta` is the tangential and :math:`V_m` the meridional
|
|
18
|
+
components of flow velocity. In the rotating frame, the relative yaw angle,
|
|
19
|
+
`Alpha_rel` or :math:`\alpha^\mathrm{rel}`, is defined as:
|
|
20
|
+
|
|
21
|
+
.. math::
|
|
22
|
+
\alpha^\mathrm{rel} = \arctan\left(\frac{V_\theta^\mathrm{rel}}{V_m}\right)
|
|
23
|
+
|
|
24
|
+
The pitch angle, `Beta`, is defined as the angle between
|
|
25
|
+
the meridional flow direction and the axial direction:
|
|
26
|
+
|
|
27
|
+
.. math::
|
|
28
|
+
\beta = \arctan\left(\frac{V_r}{V_x}\right)
|
|
29
|
+
|
|
30
|
+
where :math:`V_r` is the radial velocity component. Throughout the code, angles
|
|
31
|
+
have units of degrees.
|
|
32
|
+
|
|
33
|
+
|
|
11
34
|
=========== ============================================ =======
|
|
12
35
|
Symbol Quantity Units
|
|
13
36
|
=========== ============================================ =======
|
|
@@ -78,3 +78,21 @@
|
|
|
78
78
|
year = {1992},
|
|
79
79
|
pages = {18–26}
|
|
80
80
|
}
|
|
81
|
+
|
|
82
|
+
@article{Brind2024,
|
|
83
|
+
title = {{Data-Driven Radial Compressor Design Space Mapping}},
|
|
84
|
+
volume = {147},
|
|
85
|
+
DOI = {10.1115/1.4066229},
|
|
86
|
+
number = {2},
|
|
87
|
+
journal = {J. Turbomach.},
|
|
88
|
+
author = {Brind, J.},
|
|
89
|
+
year = {2024}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@article{TorresGomez2025,
|
|
94
|
+
author = {A. Torres-Gomez, J. Brind, and G. Pullan},
|
|
95
|
+
title = {{Cryogenic Radial Turbine Design for High-Efficiency Hydrogen Liquefaction Plants}},
|
|
96
|
+
journal = {ASME Turbo Expo},
|
|
97
|
+
year = {2025},
|
|
98
|
+
}
|