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