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