turbigen 2.2.3__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.
Files changed (330) hide show
  1. {turbigen-2.2.3 → turbigen-2.4.0}/.gitignore +2 -0
  2. {turbigen-2.2.3 → turbigen-2.4.0}/.gitlab-ci.yml +3 -4
  3. {turbigen-2.2.3 → turbigen-2.4.0}/PKG-INFO +2 -1
  4. {turbigen-2.2.3 → turbigen-2.4.0}/doc/changelog.rst +17 -0
  5. turbigen-2.4.0/doc/data_structures.rst +319 -0
  6. turbigen-2.4.0/doc/generate_data_structures.py +199 -0
  7. {turbigen-2.2.3 → turbigen-2.4.0}/doc/index.rst +10 -0
  8. {turbigen-2.2.3 → turbigen-2.4.0}/doc/nomenclature.rst +23 -0
  9. {turbigen-2.2.3 → turbigen-2.4.0}/doc/refs.bib +18 -0
  10. turbigen-2.4.0/doc/tutorial.rst +673 -0
  11. {turbigen-2.2.3 → turbigen-2.4.0}/examples/axial_turbine.yaml +4 -4
  12. {turbigen-2.2.3 → turbigen-2.4.0}/examples/turbine_cascade.yaml +2 -2
  13. {turbigen-2.2.3 → turbigen-2.4.0}/meson.build +1 -0
  14. {turbigen-2.2.3 → turbigen-2.4.0}/plots/profile.txt +105 -105
  15. {turbigen-2.2.3 → turbigen-2.4.0}/pyproject.toml +3 -2
  16. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/benchmark.py +5 -5
  17. turbigen-2.4.0/scripts/link_packages.py +69 -0
  18. turbigen-2.4.0/scripts/plot_mixing.py +49 -0
  19. turbigen-2.4.0/scripts/profile.sh +4 -0
  20. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/distribute.f90 +26 -34
  21. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/embsolve.f90 +2 -23
  22. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/fluxes.f90 +37 -56
  23. turbigen-2.4.0/src/embsolve/matmul.f90 +58 -0
  24. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/multigrid.f90 +0 -8
  25. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/operators.f90 +0 -12
  26. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/smooth.f90 +2 -8
  27. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/viscous.f90 +0 -14
  28. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/__init__.py +1 -0
  29. turbigen-2.4.0/src/turbigen/abstract.py +661 -0
  30. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/base.py +15 -14
  31. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/blade.py +19 -19
  32. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/config2.py +51 -5
  33. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/flowfield.py +9 -3
  34. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/fluid.py +45 -6
  35. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/geometry.py +18 -18
  36. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/iterators.py +3 -3
  37. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/main.py +4 -4
  38. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/nblade.py +1 -16
  39. turbigen-2.4.0/src/turbigen/op_point.py +30 -0
  40. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post.py +1 -1
  41. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/ember.py +75 -11
  42. turbigen-2.4.0/src/turbigen/state.py +1354 -0
  43. turbigen-2.4.0/test_matmul.py +64 -0
  44. turbigen-2.4.0/test_stack.py +56 -0
  45. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_distribute.py +15 -10
  46. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_fluid.py +38 -188
  47. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_operators.py +1 -1
  48. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_smooth.py +8 -13
  49. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_tables.py +1 -1
  50. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_visc.py +9 -5
  51. turbigen-2.2.3/plots/bench.dat +0 -5
  52. turbigen-2.2.3/scripts/profile.sh +0 -11
  53. turbigen-2.2.3/tests/back-to-back/compressor/emb.yaml +0 -67
  54. turbigen-2.2.3/tests/back-to-back/compressor/ts3/config.yaml +0 -70
  55. turbigen-2.2.3/tests/back-to-back/compressor/ts3/inverse.yaml +0 -8
  56. turbigen-2.2.3/tests/back-to-back/compressor/ts3/log_turbigen.txt +0 -136
  57. turbigen-2.2.3/tests/back-to-back/compressor/ts3/mean_line_actual.yaml +0 -53
  58. turbigen-2.2.3/tests/back-to-back/compressor/ts3/mean_line_nominal.yaml +0 -48
  59. turbigen-2.2.3/tests/back-to-back/compressor/ts3/post/contour_Cp_spf_0.51.npz +0 -0
  60. turbigen-2.2.3/tests/back-to-back/compressor/ts3/post/pressure_distributions_raw.npz +0 -0
  61. turbigen-2.2.3/tests/back-to-back/compressor/ts3.yaml +0 -62
  62. turbigen-2.2.3/tests/back-to-back/stage.yaml +0 -63
  63. turbigen-2.2.3/tests/back-to-back/turbine/emb.yaml +0 -68
  64. turbigen-2.2.3/tests/back-to-back/turbine/plot.py +0 -152
  65. turbigen-2.2.3/tests/back-to-back/turbine/run/config.yaml +0 -71
  66. turbigen-2.2.3/tests/back-to-back/turbine/run/log_turbigen.txt +0 -63
  67. turbigen-2.2.3/tests/back-to-back/turbine/run/mean_line_nominal.yaml +0 -49
  68. turbigen-2.2.3/tests/back-to-back/turbine/ts3/inverse.yaml +0 -15
  69. turbigen-2.2.3/tests/back-to-back/turbine/ts3/post/contour_Ys_m_2.05.npz +0 -0
  70. turbigen-2.2.3/tests/back-to-back/turbine/ts3/post/pressure_distributions_raw.npz +0 -0
  71. turbigen-2.2.3/tests/back-to-back/turbine/ts3.yaml +0 -66
  72. turbigen-2.2.3/tests/back-to-back/turbine_oh/emb.yaml +0 -74
  73. turbigen-2.2.3/tests/not_test_periodic.py +0 -203
  74. turbigen-2.2.3/tests/not_test_splitter.py +0 -42
  75. turbigen-2.2.3/tests/pipe.py +0 -252
  76. turbigen-2.2.3/tests/reformat_sections.py +0 -35
  77. turbigen-2.2.3/tests/turning_duct.py +0 -241
  78. turbigen-2.2.3/tutorial/config.yaml +0 -46
  79. turbigen-2.2.3/tutorial/fan.notpy +0 -82
  80. {turbigen-2.2.3 → turbigen-2.4.0}/.flake8 +0 -0
  81. {turbigen-2.2.3 → turbigen-2.4.0}/.gitlab-ci-local/.gitignore +0 -0
  82. {turbigen-2.2.3 → turbigen-2.4.0}/.pre-commit-config.yaml +0 -0
  83. {turbigen-2.2.3 → turbigen-2.4.0}/COPYING +0 -0
  84. {turbigen-2.2.3 → turbigen-2.4.0}/MANIFEST.in +0 -0
  85. {turbigen-2.2.3 → turbigen-2.4.0}/Makefile +0 -0
  86. {turbigen-2.2.3 → turbigen-2.4.0}/README.md +0 -0
  87. {turbigen-2.2.3 → turbigen-2.4.0}/bin/get_ssh_agent.sh +0 -0
  88. {turbigen-2.2.3 → turbigen-2.4.0}/bin/noquit.sh +0 -0
  89. {turbigen-2.2.3 → turbigen-2.4.0}/bin/setup.sh +0 -0
  90. {turbigen-2.2.3 → turbigen-2.4.0}/doc/Makefile +0 -0
  91. {turbigen-2.2.3 → turbigen-2.4.0}/doc/_static/siunitx.js +0 -0
  92. {turbigen-2.2.3 → turbigen-2.4.0}/doc/conf.py +0 -0
  93. {turbigen-2.2.3 → turbigen-2.4.0}/doc/examples/index.rst +0 -0
  94. {turbigen-2.2.3 → turbigen-2.4.0}/doc/generate_examples.py +0 -0
  95. {turbigen-2.2.3 → turbigen-2.4.0}/doc/generate_meanline.py +0 -0
  96. {turbigen-2.2.3 → turbigen-2.4.0}/doc/generate_solver.py +0 -0
  97. {turbigen-2.2.3 → turbigen-2.4.0}/doc/license.rst +0 -0
  98. {turbigen-2.2.3 → turbigen-2.4.0}/doc/meanline.rst +0 -0
  99. {turbigen-2.2.3 → turbigen-2.4.0}/doc/quickstart.rst +0 -0
  100. {turbigen-2.2.3 → turbigen-2.4.0}/doc/references.rst +0 -0
  101. {turbigen-2.2.3 → turbigen-2.4.0}/doc/solver.rst +0 -0
  102. {turbigen-2.2.3 → turbigen-2.4.0}/doc/turbigen-logo.svg +0 -0
  103. {turbigen-2.2.3 → turbigen-2.4.0}/doc/tutorial.rst.not +0 -0
  104. {turbigen-2.2.3 → turbigen-2.4.0}/doc/usage.rst +0 -0
  105. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/Makefile +0 -0
  106. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.buildinfo +0 -0
  107. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/changelog.doctree +0 -0
  108. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/config.doctree +0 -0
  109. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/environment.pickle +0 -0
  110. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/fluid.doctree +0 -0
  111. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/index.doctree +0 -0
  112. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/install.doctree +0 -0
  113. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/license.doctree +0 -0
  114. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/meanline.doctree +0 -0
  115. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/mesh.doctree +0 -0
  116. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/nomenclature.doctree +0 -0
  117. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/post.doctree +0 -0
  118. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/references.doctree +0 -0
  119. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/solver.doctree +0 -0
  120. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/tutorial.doctree +0 -0
  121. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/.doctrees/usage.doctree +0 -0
  122. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/index.html +0 -0
  123. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/base.html +0 -0
  124. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/fluid.html +0 -0
  125. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/hmesh.html +0 -0
  126. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/axial_turbine.html +0 -0
  127. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/radial_compressor.html +0 -0
  128. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/meanline/turbine_cascade.html +0 -0
  129. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/ohmesh.html +0 -0
  130. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/solvers/ts3.html +0 -0
  131. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_modules/turbigen/solvers/ts4.html +0 -0
  132. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/changelog.rst.txt +0 -0
  133. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/config.rst.txt +0 -0
  134. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/fluid.rst.txt +0 -0
  135. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/index.rst.txt +0 -0
  136. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/install.rst.txt +0 -0
  137. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/license.rst.txt +0 -0
  138. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/meanline.rst.txt +0 -0
  139. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/mesh.rst.txt +0 -0
  140. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/nomenclature.rst.txt +0 -0
  141. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/post.rst.txt +0 -0
  142. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/references.rst.txt +0 -0
  143. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/solver.rst.txt +0 -0
  144. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/tutorial.rst.txt +0 -0
  145. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_sources/usage.rst.txt +0 -0
  146. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/alabaster.css +0 -0
  147. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/basic.css +0 -0
  148. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/custom.css +0 -0
  149. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/doctools.js +0 -0
  150. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/documentation_options.js +0 -0
  151. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/file.png +0 -0
  152. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/language_data.js +0 -0
  153. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/minus.png +0 -0
  154. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/plot_directive.css +0 -0
  155. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/plus.png +0 -0
  156. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/pygments.css +0 -0
  157. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/searchtools.js +0 -0
  158. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/siunitx.js +0 -0
  159. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/_static/sphinx_highlight.js +0 -0
  160. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/changelog.html +0 -0
  161. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/config.html +0 -0
  162. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/fluid.html +0 -0
  163. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/genindex.html +0 -0
  164. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/index.html +0 -0
  165. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/install.html +0 -0
  166. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/license.html +0 -0
  167. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/meanline.html +0 -0
  168. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/mesh.html +0 -0
  169. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/nomenclature.html +0 -0
  170. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/objects.inv +0 -0
  171. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/post.html +0 -0
  172. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/py-modindex.html +0 -0
  173. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/references.html +0 -0
  174. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/search.html +0 -0
  175. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/searchindex.js +0 -0
  176. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/solver.html +0 -0
  177. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/tutorial.html +0 -0
  178. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_build/usage.html +0 -0
  179. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/_static/siunitx.js +0 -0
  180. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/changelog.rst +0 -0
  181. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/conf.py +0 -0
  182. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/config.rst +0 -0
  183. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/dummy_post.py +0 -0
  184. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/fluid.rst +0 -0
  185. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/index.rst +0 -0
  186. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/install.rst +0 -0
  187. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/license.rst +0 -0
  188. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/make.bat +0 -0
  189. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/meanline.rst +0 -0
  190. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/mesh.rst +0 -0
  191. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/method.md +0 -0
  192. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/nomenclature.rst +0 -0
  193. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/post.rst +0 -0
  194. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/refs.bib +0 -0
  195. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade/config.yaml +0 -0
  196. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade/inverse.yaml +0 -0
  197. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade/log_turbigen.txt +0 -0
  198. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade/mean_line_actual.yaml +0 -0
  199. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade/mean_line_nominal.yaml +0 -0
  200. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade_test/config.yaml +0 -0
  201. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade_test/inverse.yaml +0 -0
  202. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade_test/log_turbigen.txt +0 -0
  203. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade_test/mean_line_actual.yaml +0 -0
  204. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/runs/cascade_test/mean_line_nominal.yaml +0 -0
  205. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/solver.rst +0 -0
  206. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/tutorial.rst +0 -0
  207. {turbigen-2.2.3 → turbigen-2.4.0}/doc-old/usage.rst +0 -0
  208. {turbigen-2.2.3 → turbigen-2.4.0}/dspace.yaml +0 -0
  209. {turbigen-2.2.3 → turbigen-2.4.0}/matplotlibrc +0 -0
  210. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/analysis.yaml +0 -0
  211. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/axial_compressor_rotor.yaml +0 -0
  212. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/axial_turbine.yaml +0 -0
  213. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/axial_turbine_ts4.yaml +0 -0
  214. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_fit.yaml +0 -0
  215. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_iter.yaml +0 -0
  216. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_off_design.yaml +0 -0
  217. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_p3d.yaml +0 -0
  218. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_post.yaml +0 -0
  219. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/cascade_test.yaml +0 -0
  220. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/flat_plate.yaml +0 -0
  221. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/include1.yaml +0 -0
  222. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/include2.yaml +0 -0
  223. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/mixed_compressor.yaml +0 -0
  224. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/profile.yaml +0 -0
  225. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/pure_radial_compressor.yaml +0 -0
  226. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/quad_camber.yaml +0 -0
  227. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/radial_compressor.yaml +0 -0
  228. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/seminar_df.yaml +0 -0
  229. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/seminar_ds_025.yaml +0 -0
  230. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/seminar_ds_04.yaml +0 -0
  231. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/seminar_ds_055.yaml +0 -0
  232. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/seminar_xpeak.yaml +0 -0
  233. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/turbine_cascade.yaml +0 -0
  234. {turbigen-2.2.3 → turbigen-2.4.0}/old-examples/turbine_include.yaml +0 -0
  235. {turbigen-2.2.3 → turbigen-2.4.0}/pytest.ini +0 -0
  236. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/benchmark.sh +0 -0
  237. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/eval_fitted_design_space.py +0 -0
  238. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/fit_eta_tt.json +0 -0
  239. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/make_table.py +0 -0
  240. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/plot_benchmark.py +0 -0
  241. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/plot_camber.py +0 -0
  242. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/plot_dspace.py +0 -0
  243. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/plot_thickness.py +0 -0
  244. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/read_cuts.py +0 -0
  245. {turbigen-2.2.3 → turbigen-2.4.0}/scripts/test_dspace.py +0 -0
  246. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/embsolvec-f2pywrappers.f +0 -0
  247. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/embsolvec-f2pywrappers2.f90 +0 -0
  248. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/embsolvecmodule.c +0 -0
  249. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/indexing.f90 +0 -0
  250. {turbigen-2.2.3 → turbigen-2.4.0}/src/embsolve/meson.build +0 -0
  251. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/__main__.py +0 -0
  252. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/annulus.py +0 -0
  253. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/__init__.py +0 -0
  254. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/ag_server.sh +0 -0
  255. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/autogrid.py +0 -0
  256. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/reader.py +0 -0
  257. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/script_ag.py2 +0 -0
  258. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/script_igg.py2 +0 -0
  259. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/script_sh +0 -0
  260. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/autogrid/server.py +0 -0
  261. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/average.py +0 -0
  262. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/camber.py +0 -0
  263. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/__init__.py +0 -0
  264. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/check.py +0 -0
  265. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/double.py +0 -0
  266. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/exceptions.py +0 -0
  267. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/plot.py +0 -0
  268. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/single.py +0 -0
  269. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/symmetric.py +0 -0
  270. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/clusterfunc/util.py +0 -0
  271. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/compflow_native.py +0 -0
  272. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/dspace.py +0 -0
  273. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/exceptions.py +0 -0
  274. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/grid.py +0 -0
  275. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/hmesh.py +0 -0
  276. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/inlet.py +0 -0
  277. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/job.py +0 -0
  278. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/job_server.py +0 -0
  279. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/marching_cubes.py +0 -0
  280. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/meanline.py +0 -0
  281. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/mesh.py +0 -0
  282. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/ohmesh.py +0 -0
  283. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/polynomial.py +0 -0
  284. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/calc_surf_dissipation.py +0 -0
  285. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/check_phase.py +0 -0
  286. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/find_extrema.py +0 -0
  287. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_blade.py +0 -0
  288. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_camber.py +0 -0
  289. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_incidence.py +0 -0
  290. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_nose.py +0 -0
  291. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_section.py +0 -0
  292. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/plot_thickness.py +0 -0
  293. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/spanwise.py +0 -0
  294. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/write_cuts.py +0 -0
  295. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/write_ibl.py +0 -0
  296. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/post/write_stl.py +0 -0
  297. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/base.py +0 -0
  298. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/convert_ts3_to_ts4_native.py +0 -0
  299. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/plot3d.py +0 -0
  300. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/ts3.py +0 -0
  301. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/solvers/ts4.py +0 -0
  302. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/tables.py +0 -0
  303. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/thickness.py +0 -0
  304. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/util.py +0 -0
  305. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/util_post.py +0 -0
  306. {turbigen-2.2.3 → turbigen-2.4.0}/src/turbigen/yaml.py +0 -0
  307. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/cascade_splitter.tar.gz +0 -0
  308. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/cascade_splitter.yaml +0 -0
  309. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/cfd_cut.json +0 -0
  310. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/hydrogen_table_known_good.npz +0 -0
  311. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/sections.dat +0 -0
  312. {turbigen-2.2.3 → turbigen-2.4.0}/tests/data/water_table_known_good.npz +0 -0
  313. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcd_yp5_ts3.csv +0 -0
  314. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcd_yp5_turb.csv +0 -0
  315. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcf_ts3.csv +0 -0
  316. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcf_turb_ts3.csv +0 -0
  317. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcf_yp5_ts3.csv +0 -0
  318. {turbigen-2.2.3/tests → turbigen-2.4.0/tests/data}/xcf_yp5_turb.csv +0 -0
  319. {turbigen-2.2.3 → turbigen-2.4.0}/tests/gpu/submit.sh +0 -0
  320. {turbigen-2.2.3 → turbigen-2.4.0}/tests/gpu/ts3.yaml +0 -0
  321. {turbigen-2.2.3 → turbigen-2.4.0}/tests/gpu/ts4.yaml +0 -0
  322. {turbigen-2.2.3 → turbigen-2.4.0}/tests/not_test_rotor.py +0 -0
  323. {turbigen-2.2.3 → turbigen-2.4.0}/tests/pdist_ts3.npz +0 -0
  324. {turbigen-2.2.3 → turbigen-2.4.0}/tests/plate.yaml +0 -0
  325. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_average.py +0 -0
  326. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_bcond.py +0 -0
  327. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_cells.py +0 -0
  328. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_nozzle.py +0 -0
  329. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_periodic_step.py +0 -0
  330. {turbigen-2.2.3 → turbigen-2.4.0}/tests/test_wall.py +0 -0
@@ -1,4 +1,6 @@
1
1
  venv
2
+ .coverage
3
+ plug
2
4
  uv.lock
3
5
  tests/back-to-back/*/emb
4
6
  doc/examples/*.rst
@@ -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
- - ./scripts/profile.sh
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.2.3
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>
@@ -25,6 +25,7 @@ Requires-Dist: sphinx-autobuild; extra == "dev"
25
25
  Requires-Dist: sphinx-argparse; extra == "dev"
26
26
  Requires-Dist: sphinxcontrib-programoutput; extra == "dev"
27
27
  Requires-Dist: sphinxcontrib-bibtex; extra == "dev"
28
+ Requires-Dist: snowballstemmer==2.2.0; extra == "dev"
28
29
  Requires-Dist: autodocsumm; extra == "dev"
29
30
  Requires-Dist: pytest; extra == "dev"
30
31
  Requires-Dist: pre-commit; extra == "dev"
@@ -1,6 +1,23 @@
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
+
13
+ v2.3.0
14
+ ^^^^^^
15
+
16
+ * Improve AutoGrid meshing robustness, error messages, and locate ssh-agent on via host host automatically
17
+ * Enable operating point change in new configuration format
18
+ * Fix exit PID controller
19
+ * Log full error message and exit if we fail to import a plugin
20
+
4
21
  v2.2.2
5
22
  ^^^^^^
6
23
 
@@ -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
+ }