turbigen 2.3.0__tar.gz → 2.7.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.7.0}/.gitignore +4 -0
- turbigen-2.7.0/.gitlab-ci.yml +99 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/PKG-INFO +1 -16
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/changelog.rst +42 -0
- turbigen-2.7.0/doc/data_structures.rst +325 -0
- turbigen-2.7.0/doc/generate_data_structures.py +199 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/generate_meanline.py +2 -2
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/generate_solver.py +1 -1
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/index.rst +10 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/meanline.rst +5 -5
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/nomenclature.rst +23 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/refs.bib +18 -0
- turbigen-2.7.0/doc/tutorial.rst +673 -0
- turbigen-2.7.0/dspace.yaml +106 -0
- turbigen-2.7.0/dspace2.yaml +114 -0
- turbigen-2.7.0/dspace3.yaml +144 -0
- turbigen-2.7.0/dspace_emb.yaml +8 -0
- turbigen-2.7.0/dspace_ts3.yaml +9 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/examples/axial_turbine.yaml +17 -18
- {turbigen-2.3.0 → turbigen-2.7.0}/examples/turbine_cascade.yaml +13 -4
- turbigen-2.7.0/external.yaml +62 -0
- turbigen-2.7.0/h2.yaml +59 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/meson.build +17 -19
- {turbigen-2.3.0 → turbigen-2.7.0}/pyproject.toml +21 -22
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/benchmark.py +5 -5
- turbigen-2.7.0/scripts/generate_meson.sh +62 -0
- turbigen-2.7.0/scripts/link_packages.py +69 -0
- turbigen-2.7.0/scripts/plot_dspace.py +109 -0
- turbigen-2.7.0/scripts/plot_mixing.py +49 -0
- turbigen-2.7.0/scripts/profile.sh +4 -0
- turbigen-2.7.0/scripts/read_ts3_probe.py +18 -0
- turbigen-2.7.0/scripts/run_vki.py +530 -0
- turbigen-2.7.0/scripts/test_dspace.py +50 -0
- turbigen-2.7.0/scripts/test_matmul.py +64 -0
- turbigen-2.7.0/scripts/test_stack.py +56 -0
- turbigen-2.7.0/scripts/vki_blade.csv +206 -0
- turbigen-2.3.0/src/embsolve/embsolve.f90 → turbigen-2.7.0/src/ember/ember.f90 +25 -81
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/fluxes.f90 +99 -46
- turbigen-2.7.0/src/ember/matmul.f90 +58 -0
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/multigrid.f90 +5 -4
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/viscous.f90 +17 -27
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/__init__.py +2 -0
- turbigen-2.7.0/src/turbigen/abstract.py +670 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/annulus.py +6 -4
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/autogrid.py +35 -90
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/script_ag.py2 +6 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/script_sh +3 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/average.py +6 -6
- turbigen-2.7.0/src/turbigen/base.py +228 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/blade.py +62 -23
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/camber.py +51 -4
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/config2.py +125 -40
- turbigen-2.7.0/src/turbigen/dspace.py +754 -0
- turbigen-2.7.0/src/turbigen/flowfield.py +595 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/fluid.py +45 -6
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/geometry.py +22 -21
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/grid.py +728 -144
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/hmesh.py +323 -70
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/iterators.py +196 -63
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/job_server.py +1 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/main.py +56 -15
- turbigen-2.7.0/src/turbigen/meanline_data.py +438 -0
- turbigen-2.3.0/src/turbigen/meanline.py → turbigen-2.7.0/src/turbigen/meanline_design.py +13 -5
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/nblade.py +1 -16
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/ohmesh.py +43 -58
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/op_point.py +4 -1
- turbigen-2.7.0/src/turbigen/perturb.py +290 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post.py +257 -23
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/convert_ts3_to_ts4_native.py +7 -5
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/ember.py +603 -159
- turbigen-2.7.0/src/turbigen/solvers/external.py +89 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/ts3.py +470 -115
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/ts4.py +41 -29
- turbigen-2.7.0/src/turbigen/ssh.py +174 -0
- turbigen-2.7.0/src/turbigen/state.py +1354 -0
- turbigen-2.7.0/src/turbigen/thickness.py +233 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/util.py +183 -41
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/util_post.py +70 -2
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/yaml.py +19 -13
- turbigen-2.7.0/tests/bench_functions.py +187 -0
- turbigen-2.7.0/tests/conftest.py +21 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/not_test_rotor.py +4 -4
- turbigen-2.7.0/tests/not_test_state.py +185 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_average.py +9 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_bcond.py +29 -9
- turbigen-2.7.0/tests/test_camber.py +469 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_cells.py +20 -3
- turbigen-2.7.0/tests/test_cusp.py +222 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_distribute.py +13 -13
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_fluid.py +66 -26
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_nozzle.py +20 -31
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_operators.py +15 -15
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_periodic_step.py +2 -2
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_smooth.py +13 -13
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_tables.py +3 -1
- turbigen-2.7.0/tests/test_thickness.py +300 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_visc.py +21 -11
- turbigen-2.3.0/.gitlab-ci.yml +0 -91
- turbigen-2.3.0/dspace.yaml +0 -86
- turbigen-2.3.0/scripts/plot_dspace.py +0 -44
- turbigen-2.3.0/scripts/profile.sh +0 -11
- turbigen-2.3.0/scripts/test_dspace.py +0 -63
- turbigen-2.3.0/src/embsolve/embsolvec-f2pywrappers.f +0 -0
- turbigen-2.3.0/src/embsolve/embsolvec-f2pywrappers2.f90 +0 -40
- turbigen-2.3.0/src/embsolve/embsolvecmodule.c +0 -12562
- turbigen-2.3.0/src/embsolve/meson.build +0 -66
- turbigen-2.3.0/src/turbigen/base.py +0 -1969
- turbigen-2.3.0/src/turbigen/dspace.py +0 -469
- turbigen-2.3.0/src/turbigen/flowfield.py +0 -124
- turbigen-2.3.0/src/turbigen/thickness.py +0 -526
- 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.7.0}/.flake8 +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/.gitlab-ci-local/.gitignore +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/.pre-commit-config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/COPYING +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/MANIFEST.in +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/README.md +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/bin/get_ssh_agent.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/bin/noquit.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/bin/setup.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/conf.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/examples/index.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/generate_examples.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/license.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/quickstart.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/references.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/solver.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/turbigen-logo.svg +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/tutorial.rst.not +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc/usage.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/Makefile +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.buildinfo +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/changelog.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/config.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/environment.pickle +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/fluid.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/index.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/install.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/license.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/meanline.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/mesh.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/nomenclature.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/post.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/references.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/solver.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/tutorial.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/.doctrees/usage.doctree +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/index.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/base.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/fluid.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/hmesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/meanline/axial_turbine.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/meanline/radial_compressor.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/meanline/turbine_cascade.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/ohmesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/solvers/ts3.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_modules/turbigen/solvers/ts4.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/changelog.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/config.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/fluid.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/index.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/install.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/license.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/meanline.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/mesh.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/nomenclature.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/post.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/references.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/solver.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/tutorial.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_sources/usage.rst.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/alabaster.css +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/basic.css +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/custom.css +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/doctools.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/documentation_options.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/file.png +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/language_data.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/minus.png +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/plot_directive.css +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/plus.png +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/pygments.css +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/searchtools.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/_static/sphinx_highlight.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/changelog.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/config.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/fluid.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/genindex.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/index.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/install.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/license.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/meanline.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/mesh.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/nomenclature.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/objects.inv +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/post.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/py-modindex.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/references.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/search.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/searchindex.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/solver.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/tutorial.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_build/usage.html +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/_static/siunitx.js +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/changelog.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/conf.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/config.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/dummy_post.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/fluid.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/index.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/install.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/license.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/make.bat +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/meanline.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/mesh.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/method.md +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/nomenclature.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/post.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/refs.bib +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade/config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade/inverse.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade/log_turbigen.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade/mean_line_actual.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade/mean_line_nominal.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade_test/config.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade_test/inverse.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade_test/log_turbigen.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade_test/mean_line_actual.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/runs/cascade_test/mean_line_nominal.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/solver.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/tutorial.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/doc-old/usage.rst +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/matplotlibrc +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/analysis.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/axial_compressor_rotor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/axial_turbine.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/axial_turbine_ts4.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_fit.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_iter.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_off_design.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_p3d.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_post.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/cascade_test.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/flat_plate.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/include1.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/include2.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/mixed_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/profile.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/pure_radial_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/quad_camber.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/radial_compressor.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/seminar_df.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/seminar_ds_025.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/seminar_ds_04.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/seminar_ds_055.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/seminar_xpeak.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/turbine_cascade.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/old-examples/turbine_include.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/plots/profile.txt +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/pytest.ini +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/benchmark.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/eval_fitted_design_space.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/fit_eta_tt.json +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/make_table.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/plot_benchmark.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/plot_camber.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/plot_thickness.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/scripts/read_cuts.py +0 -0
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/distribute.f90 +0 -0
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/indexing.f90 +0 -0
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/operators.f90 +0 -0
- {turbigen-2.3.0/src/embsolve → turbigen-2.7.0/src/ember}/smooth.f90 +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/__main__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/__init__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/ag_server.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/reader.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/script_igg.py2 +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/autogrid/server.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/__init__.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/check.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/double.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/exceptions.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/plot.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/single.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/symmetric.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/clusterfunc/util.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/compflow_native.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/exceptions.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/inlet.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/job.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/marching_cubes.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/mesh.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/polynomial.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/calc_surf_dissipation.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/check_phase.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/find_extrema.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_blade.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_camber.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_incidence.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_nose.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_section.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/plot_thickness.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/spanwise.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/write_cuts.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/write_ibl.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/post/write_stl.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/base.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/solvers/plot3d.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/src/turbigen/tables.py +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/cascade_splitter.tar.gz +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/cascade_splitter.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/cfd_cut.json +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/hydrogen_table_known_good.npz +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/sections.dat +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/data/water_table_known_good.npz +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcd_yp5_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcd_yp5_turb.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcf_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcf_turb_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcf_yp5_ts3.csv +0 -0
- {turbigen-2.3.0/tests → turbigen-2.7.0/tests/data}/xcf_yp5_turb.csv +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/gpu/submit.sh +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/gpu/ts3.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/gpu/ts4.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/pdist_ts3.npz +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/plate.yaml +0 -0
- {turbigen-2.3.0 → turbigen-2.7.0}/tests/test_wall.py +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
image: python:3.11
|
|
2
|
+
|
|
3
|
+
stages:
|
|
4
|
+
- build
|
|
5
|
+
- test
|
|
6
|
+
- deploy
|
|
7
|
+
- publish
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
before_script:
|
|
11
|
+
- curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
12
|
+
- source $HOME/.local/bin/env
|
|
13
|
+
- uv venv
|
|
14
|
+
- source .venv/bin/activate
|
|
15
|
+
|
|
16
|
+
variables:
|
|
17
|
+
UV_CACHE_DIR: "$CI_PROJECT_DIR/.uv-cache"
|
|
18
|
+
DOCKER_HOST: unix:///var/run/docker.sock
|
|
19
|
+
DOCKER_TLS_CERTDIR: ""
|
|
20
|
+
|
|
21
|
+
build_test_wheel:
|
|
22
|
+
stage: build
|
|
23
|
+
script:
|
|
24
|
+
- apt update && apt install -y gfortran
|
|
25
|
+
- ./scripts/generate_meson.sh
|
|
26
|
+
- curl -sSL https://get.docker.com/ | sh
|
|
27
|
+
- uv pip install cibuildwheel
|
|
28
|
+
- cibuildwheel --only cp311-manylinux_x86_64 --output-dir dist .
|
|
29
|
+
- python -m build --sdist
|
|
30
|
+
- ls -l dist
|
|
31
|
+
artifacts:
|
|
32
|
+
expire_in: 2 hours
|
|
33
|
+
paths:
|
|
34
|
+
- dist
|
|
35
|
+
|
|
36
|
+
tests:
|
|
37
|
+
stage: test
|
|
38
|
+
script:
|
|
39
|
+
- uv pip install dist/*.whl pytest
|
|
40
|
+
- pytest --slow
|
|
41
|
+
|
|
42
|
+
profile:
|
|
43
|
+
stage: deploy
|
|
44
|
+
script:
|
|
45
|
+
- apt update && apt install -y gfortran libopenmpi-dev
|
|
46
|
+
- uv pip install mpi4py line_profiler==4.2.0 dist/*.whl
|
|
47
|
+
# Serial profiling.
|
|
48
|
+
- OMP_NUM_THREADS=1 LINE_PROFILE=1 turbigen examples/axial_turbine.yaml -I
|
|
49
|
+
- cat profile_output.txt
|
|
50
|
+
# Now parallel benchmarking
|
|
51
|
+
- ./scripts/benchmark.sh
|
|
52
|
+
|
|
53
|
+
doc:
|
|
54
|
+
stage: deploy
|
|
55
|
+
artifacts:
|
|
56
|
+
paths:
|
|
57
|
+
- doc/_build
|
|
58
|
+
script:
|
|
59
|
+
- apt update && apt install -y pdf2svg fonts-freefont-ttf
|
|
60
|
+
- uv pip install dist/*.whl sphinx sphinx-autobuild sphinx-argparse sphinxcontrib-programoutput sphinxcontrib-bibtex snowballstemmer==2.2.0 autodocsumm
|
|
61
|
+
- python doc/generate_examples.py
|
|
62
|
+
- python doc/generate_meanline.py
|
|
63
|
+
- python doc/generate_data_structures.py
|
|
64
|
+
- sphinx-build -W doc doc/_build
|
|
65
|
+
|
|
66
|
+
build_all_wheels:
|
|
67
|
+
stage: deploy
|
|
68
|
+
script:
|
|
69
|
+
- apt update && apt install -y gfortran
|
|
70
|
+
- ./scripts/generate_meson.sh
|
|
71
|
+
- curl -sSL https://get.docker.com/ | sh
|
|
72
|
+
- uv pip install cibuildwheel
|
|
73
|
+
- cibuildwheel --platform linux --output-dir dist .
|
|
74
|
+
- python -m build --sdist
|
|
75
|
+
- ls -l dist
|
|
76
|
+
artifacts:
|
|
77
|
+
expire_in: 1 day
|
|
78
|
+
paths:
|
|
79
|
+
- dist
|
|
80
|
+
|
|
81
|
+
pypi:
|
|
82
|
+
stage: publish
|
|
83
|
+
script:
|
|
84
|
+
- uv pip install twine
|
|
85
|
+
- ls -l dist
|
|
86
|
+
- twine upload dist/*
|
|
87
|
+
only:
|
|
88
|
+
- master
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
pages:
|
|
92
|
+
stage: publish
|
|
93
|
+
script:
|
|
94
|
+
- mv doc/_build public
|
|
95
|
+
artifacts:
|
|
96
|
+
paths:
|
|
97
|
+
- public
|
|
98
|
+
only:
|
|
99
|
+
- master
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: turbigen
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.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>
|
|
@@ -19,21 +19,6 @@ Requires-Dist: scipy~=1.15.0
|
|
|
19
19
|
Requires-Dist: h5py~=3.13.0
|
|
20
20
|
Requires-Dist: numpy-stl~=3.2.0
|
|
21
21
|
Requires-Dist: metis~=0.2a5
|
|
22
|
-
Provides-Extra: dev
|
|
23
|
-
Requires-Dist: sphinx; extra == "dev"
|
|
24
|
-
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
25
|
-
Requires-Dist: sphinx-argparse; extra == "dev"
|
|
26
|
-
Requires-Dist: sphinxcontrib-programoutput; extra == "dev"
|
|
27
|
-
Requires-Dist: sphinxcontrib-bibtex; extra == "dev"
|
|
28
|
-
Requires-Dist: snowballstemmer==2.2.0; extra == "dev"
|
|
29
|
-
Requires-Dist: autodocsumm; extra == "dev"
|
|
30
|
-
Requires-Dist: pytest; extra == "dev"
|
|
31
|
-
Requires-Dist: pre-commit; extra == "dev"
|
|
32
|
-
Requires-Dist: build; extra == "dev"
|
|
33
|
-
Requires-Dist: cibuildwheel; extra == "dev"
|
|
34
|
-
Requires-Dist: twine; extra == "dev"
|
|
35
|
-
Requires-Dist: bump-my-version; extra == "dev"
|
|
36
|
-
Requires-Dist: setuptools; extra == "dev"
|
|
37
22
|
Provides-Extra: parallel
|
|
38
23
|
Requires-Dist: mpi4py~=3.1.6; extra == "parallel"
|
|
39
24
|
Description-Content-Type: text/markdown
|
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
v2.6.0
|
|
5
|
+
^^^^^^
|
|
6
|
+
|
|
7
|
+
* Allow hub gaps in OH meshing by setting negative tip values
|
|
8
|
+
* Scale blade thickness on chord/span/absolute value
|
|
9
|
+
* Fix broken TS3 to TS4 conversion script on Wilkes
|
|
10
|
+
* More TS4 configuration options and better restart settings
|
|
11
|
+
* OH meshing data now saves correctly into the config file
|
|
12
|
+
* Bug fix where incidence was calculated on uncambered blades
|
|
13
|
+
* Additional TaylorQuadratic camber line setting metal angle directly instead of metal angle tangent
|
|
14
|
+
* Fix sections were always stacked at LE irrespective of mstack value
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
v2.5.0
|
|
18
|
+
^^^^^^
|
|
19
|
+
|
|
20
|
+
* Allow scaling tip gap on chord, span, or absolute value
|
|
21
|
+
* Implement trailing-edge cusps in ember
|
|
22
|
+
* Print out area-averaged yplus in ember
|
|
23
|
+
* Add post processing for inlet profile plot and streamtube loss breakdown
|
|
24
|
+
* Bugfix for overly generous block equality
|
|
25
|
+
* Speed improvement for matching patches
|
|
26
|
+
* Add function to initialise a grid from TS3 hdf5
|
|
27
|
+
* Low-level utility function for grid warping
|
|
28
|
+
* Scripts to automate rebuilding the compiled Fortran code
|
|
29
|
+
* Save config to iteration directories before running the solver
|
|
30
|
+
* Split long Fortran routines into smaller subroutines
|
|
31
|
+
* Write out metdata for TS3 probes into a yaml file
|
|
32
|
+
* Allow per block overrides of block variables in TS3
|
|
33
|
+
* Implement general unsteady inlet boundary condition
|
|
34
|
+
* Functions for post-processing TS3 unsteady probes and wave separation
|
|
35
|
+
* Much internal restructuring and tidying up
|
|
36
|
+
|
|
37
|
+
v2.4.0
|
|
38
|
+
^^^^^^
|
|
39
|
+
|
|
40
|
+
* Add exit throttling to ember solver
|
|
41
|
+
* Allow profiling the code speed by exporting LINE_PROFILE=1
|
|
42
|
+
* Bug fix for Lieblein diffusion factor
|
|
43
|
+
* Bug fix for rotor-only mean-line check
|
|
44
|
+
* Finish tutorial
|
|
45
|
+
|
|
4
46
|
v2.3.0
|
|
5
47
|
^^^^^^
|
|
6
48
|
|
|
@@ -0,0 +1,325 @@
|
|
|
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
|
+
.. _state:
|
|
11
|
+
|
|
12
|
+
State
|
|
13
|
+
-----
|
|
14
|
+
|
|
15
|
+
Both perfect and real working fluids are represented by a :class:`State`
|
|
16
|
+
class, which has a common interface for setting and reading thermodynamic
|
|
17
|
+
properties. The interface allows the same mean-line design code to work
|
|
18
|
+
with any working fluid. :class:`State` does not store velocity information
|
|
19
|
+
and hence makes no distinction between static and stagnation states, the
|
|
20
|
+
handling of which is left to the calling code.
|
|
21
|
+
|
|
22
|
+
Setter methods
|
|
23
|
+
^^^^^^^^^^^^^^
|
|
24
|
+
|
|
25
|
+
The following methods are used to set the thermodynamic state of the fluid
|
|
26
|
+
to a new value. The object is updated in-place; a copy can be explicitly
|
|
27
|
+
created using :meth:`State.copy`. By the two-property rule, the setters all
|
|
28
|
+
take two arguments to uniquely specify the thermodynamic state. The
|
|
29
|
+
following methods are available:
|
|
30
|
+
|
|
31
|
+
.. list-table::
|
|
32
|
+
:widths: 50 25 25
|
|
33
|
+
:header-rows: 1
|
|
34
|
+
|
|
35
|
+
* - Method
|
|
36
|
+
- Arguments
|
|
37
|
+
-
|
|
38
|
+
* - ``State.set_h_s(h, s)``
|
|
39
|
+
- Enthalpy
|
|
40
|
+
- Entropy
|
|
41
|
+
* - ``State.set_P_h(P, h)``
|
|
42
|
+
- Pressure
|
|
43
|
+
- Enthalpy
|
|
44
|
+
* - ``State.set_P_rho(P, rho)``
|
|
45
|
+
- Pressure
|
|
46
|
+
- Density
|
|
47
|
+
* - ``State.set_P_s(P, s)``
|
|
48
|
+
- Pressure
|
|
49
|
+
- Entropy
|
|
50
|
+
* - ``State.set_P_T(P, T)``
|
|
51
|
+
- Pressure
|
|
52
|
+
- Temperature
|
|
53
|
+
* - ``State.set_rho_u(rho, u)``
|
|
54
|
+
- Density
|
|
55
|
+
- Internal energy
|
|
56
|
+
|
|
57
|
+
Property attributes
|
|
58
|
+
^^^^^^^^^^^^^^^^^^^
|
|
59
|
+
|
|
60
|
+
Thermodynamic and transport properties of the fluid are accessed as attributes of the
|
|
61
|
+
:class:`State` object. The following properties are available:
|
|
62
|
+
|
|
63
|
+
.. list-table::
|
|
64
|
+
:widths: 25 55 20
|
|
65
|
+
:header-rows: 1
|
|
66
|
+
|
|
67
|
+
* - Property
|
|
68
|
+
- Description
|
|
69
|
+
- Units
|
|
70
|
+
|
|
71
|
+
* - ``State.a``
|
|
72
|
+
- Acoustic speed
|
|
73
|
+
- m/s
|
|
74
|
+
* - ``State.cp``
|
|
75
|
+
- Specific heat at constant pressure
|
|
76
|
+
- J/kg/K
|
|
77
|
+
* - ``State.cv``
|
|
78
|
+
- Specific heat at constant volume
|
|
79
|
+
- J/kg/K
|
|
80
|
+
* - ``State.gamma``
|
|
81
|
+
- Ratio of specific heats
|
|
82
|
+
- --
|
|
83
|
+
* - ``State.h``
|
|
84
|
+
- Specific enthalpy
|
|
85
|
+
- J/kg
|
|
86
|
+
* - ``State.mu``
|
|
87
|
+
- Kinematic viscosity
|
|
88
|
+
- m^2/s
|
|
89
|
+
* - ``State.P``
|
|
90
|
+
- Pressure
|
|
91
|
+
- Pa
|
|
92
|
+
* - ``State.Pr``
|
|
93
|
+
- Prandtl number
|
|
94
|
+
- --
|
|
95
|
+
* - ``State.rgas``
|
|
96
|
+
- Specific gas constant
|
|
97
|
+
- J/kg/K
|
|
98
|
+
* - ``State.rho``
|
|
99
|
+
- Density
|
|
100
|
+
- kg/m^3
|
|
101
|
+
* - ``State.s``
|
|
102
|
+
- Specific entropy
|
|
103
|
+
- J/kg/K
|
|
104
|
+
* - ``State.T``
|
|
105
|
+
- Temperature
|
|
106
|
+
- K
|
|
107
|
+
* - ``State.u``
|
|
108
|
+
- Specific internal energy
|
|
109
|
+
- J/kg
|
|
110
|
+
|
|
111
|
+
.. _flowfield:
|
|
112
|
+
|
|
113
|
+
Flow fields
|
|
114
|
+
-----------
|
|
115
|
+
|
|
116
|
+
Augmenting a thermodynamic state with velocity and coordinate data
|
|
117
|
+
allows the :class:`FlowField` class to represent a flow field.
|
|
118
|
+
Composite properties such as stagnation pressure and Mach number
|
|
119
|
+
can then be computed from the thermodynamic state and velocity vector.
|
|
120
|
+
Setting an angular velocity allows evaluation of quantities in a rotating
|
|
121
|
+
frame. Circumferential periodicity is represented by a number of blades.
|
|
122
|
+
|
|
123
|
+
Setter methods
|
|
124
|
+
^^^^^^^^^^^^^^
|
|
125
|
+
|
|
126
|
+
The :class:`FlowField` class has the same thermodynamic setter methods as
|
|
127
|
+
the :class:`State` class. Velocity and coordinate data are set directly
|
|
128
|
+
by assigning to the corresponding attributes.
|
|
129
|
+
|
|
130
|
+
Property attributes
|
|
131
|
+
^^^^^^^^^^^^^^^^^^^
|
|
132
|
+
|
|
133
|
+
In addition to all the pure thermodynamic properties defined in
|
|
134
|
+
:class:`State`, incorporating velocity and coordinate data allow the
|
|
135
|
+
:class:`FlowField` to provide the following other properties:
|
|
136
|
+
|
|
137
|
+
.. list-table::
|
|
138
|
+
:widths: 25 60 15
|
|
139
|
+
:header-rows: 1
|
|
140
|
+
|
|
141
|
+
* - Property
|
|
142
|
+
- Description
|
|
143
|
+
- Units
|
|
144
|
+
|
|
145
|
+
* - ``FlowField.Alpha``
|
|
146
|
+
- Yaw angle
|
|
147
|
+
- deg
|
|
148
|
+
* - ``FlowField.Alpha_rel``
|
|
149
|
+
- Relative frame yaw angle
|
|
150
|
+
- deg
|
|
151
|
+
* - ``FlowField.ao``
|
|
152
|
+
- Stagnation acoustic speed
|
|
153
|
+
- m/s
|
|
154
|
+
* - ``FlowField.Beta``
|
|
155
|
+
- Pitch angle
|
|
156
|
+
- deg
|
|
157
|
+
* - ``FlowField.e``
|
|
158
|
+
- Specific total energy
|
|
159
|
+
- J/kg
|
|
160
|
+
* - ``FlowField.halfVsq``
|
|
161
|
+
- Specific kinetic energy
|
|
162
|
+
- J/kg
|
|
163
|
+
* - ``FlowField.halfVsq_rel``
|
|
164
|
+
- Relative frame specific kinetic energy
|
|
165
|
+
- J/kg
|
|
166
|
+
* - ``FlowField.ho``
|
|
167
|
+
- Stagnation specific enthalpy
|
|
168
|
+
- J/kg
|
|
169
|
+
* - ``FlowField.ho_rel``
|
|
170
|
+
- Relative frame stagnation specific enthalpy
|
|
171
|
+
- J/kg
|
|
172
|
+
* - ``FlowField.I``
|
|
173
|
+
- Rothalpy
|
|
174
|
+
- J/kg
|
|
175
|
+
* - ``FlowField.Ma``
|
|
176
|
+
- Mach number
|
|
177
|
+
- --
|
|
178
|
+
* - ``FlowField.Ma_rel``
|
|
179
|
+
- Relative frame Mach number
|
|
180
|
+
- --
|
|
181
|
+
* - ``FlowField.Omega``
|
|
182
|
+
- Reference frame angular velocity
|
|
183
|
+
- rad/s
|
|
184
|
+
* - ``FlowField.Po``
|
|
185
|
+
- Stagnation pressure
|
|
186
|
+
- Pa
|
|
187
|
+
* - ``FlowField.Po_rel``
|
|
188
|
+
- Relative frame stagnation pressure
|
|
189
|
+
- Pa
|
|
190
|
+
* - ``FlowField.r``
|
|
191
|
+
- Radial coordinate
|
|
192
|
+
- m
|
|
193
|
+
* - ``FlowField.rhoe``
|
|
194
|
+
- Volumetric total energy
|
|
195
|
+
- J/m^3
|
|
196
|
+
* - ``FlowField.rhorVt``
|
|
197
|
+
- Volumetric angular momentum
|
|
198
|
+
- kg/m^2/s
|
|
199
|
+
* - ``FlowField.rhoVr``
|
|
200
|
+
- Volumetric radial momentum
|
|
201
|
+
- kg/m^2/s
|
|
202
|
+
* - ``FlowField.rhoVt``
|
|
203
|
+
- Volumetric angular momentum
|
|
204
|
+
- kg/m^2/s
|
|
205
|
+
* - ``FlowField.rhoVx``
|
|
206
|
+
- Volumetric axial momentum
|
|
207
|
+
- kg/m^2/s
|
|
208
|
+
* - ``FlowField.rpm``
|
|
209
|
+
- Reference frame revolutions per minute
|
|
210
|
+
- rpm
|
|
211
|
+
* - ``FlowField.t``
|
|
212
|
+
- Circumferential coordinate
|
|
213
|
+
- rad
|
|
214
|
+
* - ``FlowField.tanAlpha``
|
|
215
|
+
- Tangent of yaw angle
|
|
216
|
+
- --
|
|
217
|
+
* - ``FlowField.tanAlpha_rel``
|
|
218
|
+
- Tangent of relative frame yaw angle
|
|
219
|
+
- --
|
|
220
|
+
* - ``FlowField.tanBeta``
|
|
221
|
+
- Tangent of pitch angle
|
|
222
|
+
- --
|
|
223
|
+
* - ``FlowField.To``
|
|
224
|
+
- Stagnation temperature
|
|
225
|
+
- K
|
|
226
|
+
* - ``FlowField.To_rel``
|
|
227
|
+
- Relative frame stagnation temperature
|
|
228
|
+
- K
|
|
229
|
+
* - ``FlowField.U``
|
|
230
|
+
- Blade speed
|
|
231
|
+
- m/s
|
|
232
|
+
* - ``FlowField.V``
|
|
233
|
+
- Absolute velocity magnitude
|
|
234
|
+
- m/s
|
|
235
|
+
* - ``FlowField.V_rel``
|
|
236
|
+
- Relative frame velocity magnitude
|
|
237
|
+
- m/s
|
|
238
|
+
* - ``FlowField.Vm``
|
|
239
|
+
- Meridional velocity magnitude
|
|
240
|
+
- m/s
|
|
241
|
+
* - ``FlowField.Vr``
|
|
242
|
+
- Radial velocity
|
|
243
|
+
- m/s
|
|
244
|
+
* - ``FlowField.Vt``
|
|
245
|
+
- Circumferential velocity
|
|
246
|
+
- m/s
|
|
247
|
+
* - ``FlowField.Vt_rel``
|
|
248
|
+
- Relative frame circumferential velocity
|
|
249
|
+
- m/s
|
|
250
|
+
* - ``FlowField.Vx``
|
|
251
|
+
- Axial velocity
|
|
252
|
+
- m/s
|
|
253
|
+
* - ``FlowField.x``
|
|
254
|
+
- Axial coordinate
|
|
255
|
+
- m
|
|
256
|
+
|
|
257
|
+
.. _meanline:
|
|
258
|
+
|
|
259
|
+
Mean line
|
|
260
|
+
---------
|
|
261
|
+
|
|
262
|
+
The :class:`MeanLine` class encapsulates the quasi-one-dimensional geometry
|
|
263
|
+
and flow field of a turbomachine. In addition to thermodynamic states and
|
|
264
|
+
velocity vectors, it also contains a root-mean-square radii and annulus
|
|
265
|
+
areas. Assuming the span is perpendicular to the mean-line pitch angle,
|
|
266
|
+
These data are sufficient to determine hub and tip radii, and
|
|
267
|
+
the midspan blade angles.
|
|
268
|
+
|
|
269
|
+
Property attributes
|
|
270
|
+
^^^^^^^^^^^^^^^^^^^
|
|
271
|
+
|
|
272
|
+
In addition to the properties defined in
|
|
273
|
+
:class:`State` and
|
|
274
|
+
:class:`FlowField`, the :class:`MeanLine` class provides the following
|
|
275
|
+
|
|
276
|
+
.. list-table::
|
|
277
|
+
:widths: 25 60 15
|
|
278
|
+
:header-rows: 1
|
|
279
|
+
|
|
280
|
+
* - Property
|
|
281
|
+
- Description
|
|
282
|
+
- Units
|
|
283
|
+
|
|
284
|
+
* - ``MeanLine.A``
|
|
285
|
+
- Annulus area
|
|
286
|
+
- m^2
|
|
287
|
+
* - ``MeanLine.eta_poly``
|
|
288
|
+
- Total-to-total polytropic efficiency
|
|
289
|
+
- --
|
|
290
|
+
* - ``MeanLine.eta_ts``
|
|
291
|
+
- Total-to-static isentropic efficiency
|
|
292
|
+
- --
|
|
293
|
+
* - ``MeanLine.eta_tt``
|
|
294
|
+
- Total-to-total isentropic efficiency
|
|
295
|
+
- --
|
|
296
|
+
* - ``MeanLine.htr``
|
|
297
|
+
- Hub-to-tip radius ratio
|
|
298
|
+
- --
|
|
299
|
+
* - ``MeanLine.mdot``
|
|
300
|
+
- Mass flow rate
|
|
301
|
+
- kg/s
|
|
302
|
+
* - ``MeanLine.Nb``
|
|
303
|
+
- Number of blades
|
|
304
|
+
- --
|
|
305
|
+
* - ``MeanLine.PR_ts``
|
|
306
|
+
- Total-to-static pressure ratio
|
|
307
|
+
- --
|
|
308
|
+
* - ``MeanLine.PR_tt``
|
|
309
|
+
- Total-to-total pressure ratio
|
|
310
|
+
- --
|
|
311
|
+
* - ``MeanLine.rhub``
|
|
312
|
+
- Hub radius
|
|
313
|
+
- m
|
|
314
|
+
* - ``MeanLine.rmid``
|
|
315
|
+
- Midspan radius
|
|
316
|
+
- m
|
|
317
|
+
* - ``MeanLine.rrms``
|
|
318
|
+
- Root-mean-square radius
|
|
319
|
+
- m
|
|
320
|
+
* - ``MeanLine.rtip``
|
|
321
|
+
- Tip radius
|
|
322
|
+
- m
|
|
323
|
+
* - ``MeanLine.span``
|
|
324
|
+
- Span
|
|
325
|
+
- 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)
|