turbo-turtle 1.2.4__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.
- turbo_turtle-1.2.4/CITATION.bib +33 -0
- turbo_turtle-1.2.4/CITATION.cff +21 -0
- turbo_turtle-1.2.4/LICENSE.txt +23 -0
- turbo_turtle-1.2.4/MANIFEST.in +29 -0
- turbo_turtle-1.2.4/PKG-INFO +224 -0
- turbo_turtle-1.2.4/README.rst +200 -0
- turbo_turtle-1.2.4/profiles.py +130 -0
- turbo_turtle-1.2.4/pyproject.toml +79 -0
- turbo_turtle-1.2.4/setup.cfg +4 -0
- turbo_turtle-1.2.4/turbo_turtle/README.rst +200 -0
- turbo_turtle-1.2.4/turbo_turtle/__init__.py +62 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/_turbo_turtle_plugin.py +109 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turboTurtleIcon.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/__init__.py +0 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/_abaqus_utilities.py +252 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/_mixed_settings.py +106 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/_mixed_utilities.py +212 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/cylinder.py +172 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/export.py +267 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/geometry.py +399 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/image.py +301 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/merge.py +106 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/mesh_module.py +237 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/parsers.py +958 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/partition.py +380 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/sets.py +130 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/sphere.py +263 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_abaqus_utilities.py +47 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_mixed_utilities.py +92 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_parsers.py +65 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_vertices.py +583 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/vertices.py +435 -0
- turbo_turtle-1.2.4/turbo_turtle/_abaqus_wrappers.py +204 -0
- turbo_turtle-1.2.4/turbo_turtle/_cubit_python.py +1043 -0
- turbo_turtle-1.2.4/turbo_turtle/_cubit_wrappers.py +175 -0
- turbo_turtle-1.2.4/turbo_turtle/_docs.py +59 -0
- turbo_turtle-1.2.4/turbo_turtle/_fetch.py +320 -0
- turbo_turtle-1.2.4/turbo_turtle/_gmsh_python.py +473 -0
- turbo_turtle-1.2.4/turbo_turtle/_gmsh_wrappers.py +127 -0
- turbo_turtle-1.2.4/turbo_turtle/_main.py +306 -0
- turbo_turtle-1.2.4/turbo_turtle/_settings.py +21 -0
- turbo_turtle-1.2.4/turbo_turtle/_utilities.py +233 -0
- turbo_turtle-1.2.4/turbo_turtle/_version.py +21 -0
- turbo_turtle-1.2.4/turbo_turtle/conftest.py +38 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/README.html +645 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_images/axisymmetric-cubit.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_images/axisymmetric.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_images/sphere-cubit.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_images/sphere.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/index.html +426 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/_abaqus_utilities.html +680 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/_mixed_utilities.html +637 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/cylinder.html +579 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/export.html +680 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/geometry.html +809 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/image.html +711 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/merge.html +504 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/mesh_module.html +647 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/parsers.html +1389 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/partition.html +799 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/sets.html +531 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/sphere.html +673 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_abaqus_utilities.html +445 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_mixed_utilities.html +490 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_parsers.html +463 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/test_vertices.html +981 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_python/turbo_turtle_abaqus/vertices.html +887 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_abaqus_wrappers.html +626 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_cubit_python.html +1561 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_cubit_wrappers.html +597 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_gmsh_python.html +901 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_main.html +716 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/_utilities.html +661 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/geometry_xyplot.html +562 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/scons_extensions.html +1210 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_fetch.html +825 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_main.html +414 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_mixed_utilities.html +778 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_parsers.html +515 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_scons_extensions.html +656 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_system.html +1112 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_utilities.html +574 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_vertices.html +1067 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_modules/turbo_turtle/tests/test_wrappers.html +916 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/README.rst +8 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/changelog.rst +906 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/citation.rst +9 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/cli.rst +146 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/devops.rst +221 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/external_api.rst +21 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/gui.rst +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/index.rst +77 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/installation.rst +48 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/internal_api.rst +344 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/license.rst +9 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/release_philosophy.rst +81 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/user.rst +169 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_sources/zreferences.rst +8 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/basic.css +906 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/check-solid.svg +4 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/clipboard.min.js +7 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/copy-button.svg +5 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/copybutton.css +94 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/copybutton.js +248 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/copybutton_funcs.js +73 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/custom.css +11 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/doctools.js +149 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/documentation_options.js +13 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/favicon.ico +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/file.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/images/logo_binder.svg +19 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/images/logo_colab.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/images/logo_deepnote.svg +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/images/logo_jupyterhub.svg +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/language_data.js +192 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ar/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ar/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/bg/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/bg/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/bn/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/bn/LC_MESSAGES/booktheme.po +63 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ca/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ca/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/cs/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/cs/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/da/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/da/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/de/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/de/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/el/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/el/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/eo/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/eo/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/es/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/es/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/et/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/et/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/fi/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/fi/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/fr/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/fr/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/hr/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/hr/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/id/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/id/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/it/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/it/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/iw/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/iw/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ja/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ja/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ko/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ko/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/lt/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/lt/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/lv/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/lv/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ml/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ml/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/mr/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/mr/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ms/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ms/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/nl/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/nl/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/no/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/no/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/pl/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/pl/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/pt/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/pt/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ro/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ro/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ru/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ru/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sk/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sk/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sl/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sl/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sr/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sr/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sv/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/sv/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ta/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ta/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/te/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/te/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tg/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tg/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/th/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/th/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tl/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tl/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tr/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/tr/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/uk/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/uk/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ur/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/ur/LC_MESSAGES/booktheme.po +66 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/vi/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/vi/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po +75 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/minus.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/plus.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/pygments.css +152 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/sbt-webpack-macros.html +11 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/bootstrap.js +3 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/bootstrap.js.LICENSE.txt +5 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/bootstrap.js.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/pydata-sphinx-theme.js +2 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/pydata-sphinx-theme.js.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/sphinx-book-theme.js +2 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/scripts/sphinx-book-theme.js.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/searchtools.js +635 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/sphinx_highlight.js +154 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/bootstrap.css +6 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/bootstrap.css.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/pydata-sphinx-theme.css +2 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/pydata-sphinx-theme.css.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/sphinx-book-theme.css +19 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/sphinx-book-theme.css.map +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/styles/theme.css +2 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/turbo-turtle-logo.png +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/LICENSE.txt +165 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/css/all.min.css +5 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js +2 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js.LICENSE.txt +5 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.ttf +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2 +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.ttf +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2 +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.ttf +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2 +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.ttf +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.woff2 +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/_static/webpack-macros.html +31 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/changelog.html +2139 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/citation.html +530 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/cli.html +1365 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/devops.html +761 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/external_api.html +1349 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/genindex.html +1328 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/gui.html +589 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/index.html +562 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/installation.html +498 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/internal_api.html +6207 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/license.html +519 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/objects.inv +0 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/py-modindex.html +576 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/release_philosophy.html +593 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/search.html +388 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/searchindex.js +1 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/turbo-turtle.1 +1627 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/user.html +837 -0
- turbo_turtle-1.2.4/turbo_turtle/docs/zreferences.html +525 -0
- turbo_turtle-1.2.4/turbo_turtle/geometry_xyplot.py +164 -0
- turbo_turtle-1.2.4/turbo_turtle/pyproject.toml +79 -0
- turbo_turtle-1.2.4/turbo_turtle/scons_extensions.py +782 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/SConstruct +351 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/legacy_geometry.py +234 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_cubit_python.py +153 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_docs.py +56 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_fetch.py +427 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_geometry_xyplot.py +46 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_main.py +16 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_mixed_utilities.py +371 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_parsers.py +117 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_scons_extensions.py +258 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_system.py +708 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_utilities.py +170 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_vertices.py +660 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/test_wrappers.py +518 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/vase.csv +14 -0
- turbo_turtle-1.2.4/turbo_turtle/tests/washer.csv +4 -0
- turbo_turtle-1.2.4/turbo_turtle/tutorials/SConscript +50 -0
- turbo_turtle-1.2.4/turbo_turtle/tutorials/SConstruct +80 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/PKG-INFO +224 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/SOURCES.txt +284 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/dependency_links.txt +1 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/entry_points.txt +2 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/not-zip-safe +1 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/requires.txt +3 -0
- turbo_turtle-1.2.4/turbo_turtle.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# General with "All versions" Zenodo
|
|
2
|
+
@misc{turbo-turtle-software,
|
|
3
|
+
title = {{turbo-turtle}},
|
|
4
|
+
author = {Brindley, Kyle and Roberts, Thomas},
|
|
5
|
+
doi = {10.5281/zenodo.13787498},
|
|
6
|
+
organization = {Los Alamos National Laboratory},
|
|
7
|
+
address = {Los Alamos, New Mexico, USA},
|
|
8
|
+
license = {BSD 3-Clause},
|
|
9
|
+
url = {https://github.com/lanl-aea/turbo-turtle},
|
|
10
|
+
year = {2025}
|
|
11
|
+
}
|
|
12
|
+
# Current with "All versions" Zenodo
|
|
13
|
+
@misc{turbo-turtle-1-2-4,
|
|
14
|
+
title = {{turbo-turtle} 1.2.4},
|
|
15
|
+
author = {Brindley, Kyle and Roberts, Thomas},
|
|
16
|
+
doi = {10.5281/zenodo.13787498},
|
|
17
|
+
organization = {Los Alamos National Laboratory},
|
|
18
|
+
address = {Los Alamos, New Mexico, USA},
|
|
19
|
+
license = {BSD 3-Clause},
|
|
20
|
+
url = {https://github.com/lanl-aea/turbo-turtle},
|
|
21
|
+
year = {2025}
|
|
22
|
+
}
|
|
23
|
+
# Most up-to-date Zenodo
|
|
24
|
+
@misc{turbo-turtle-1-1-5,
|
|
25
|
+
title = {{turbo-turtle} 1.1.5},
|
|
26
|
+
author = {Brindley, Kyle and Roberts, Thomas},
|
|
27
|
+
doi = {10.5281/zenodo.15115383},
|
|
28
|
+
organization = {Los Alamos National Laboratory},
|
|
29
|
+
address = {Los Alamos, New Mexico, USA},
|
|
30
|
+
license = {BSD 3-Clause},
|
|
31
|
+
url = {https://github.com/lanl-aea/turbo-turtle},
|
|
32
|
+
year = {2025}
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "Brindley"
|
|
5
|
+
given-names: "Kyle"
|
|
6
|
+
orcid: "https://orcid.org/0000-0002-9637-4706"
|
|
7
|
+
- family-names: "Roberts"
|
|
8
|
+
given-names: "Thomas"
|
|
9
|
+
orcid: "https://orcid.org/0000-0001-7121-1823"
|
|
10
|
+
title: "turbo-turtle"
|
|
11
|
+
doi: 10.5281/zenodo.13787499
|
|
12
|
+
url: "https://github.com/lanl-aea/turbo-turtle"
|
|
13
|
+
license: BSD-3-Clause
|
|
14
|
+
date-released: 2025-05-21
|
|
15
|
+
identifiers:
|
|
16
|
+
- description: "All versions"
|
|
17
|
+
type: doi
|
|
18
|
+
value: 10.5281/zenodo.13787499
|
|
19
|
+
- description: "1.1.5"
|
|
20
|
+
type: doi
|
|
21
|
+
value: 10.5281/zenodo.15115383
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024, Triad National Security, LLC. All rights reserved.
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
|
6
|
+
following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
|
9
|
+
disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
|
12
|
+
disclaimer in the documentation and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products
|
|
15
|
+
derived from this software without specific prior written permission.
|
|
16
|
+
|
|
17
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
18
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
19
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
20
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
21
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
22
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
23
|
+
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
recursive-include turbo_turtle/docs *
|
|
2
|
+
recursive-include turbo_turtle/tutorials *
|
|
3
|
+
recursive-exclude turbo_turtle/docs/.doctrees *
|
|
4
|
+
recursive-exclude build *
|
|
5
|
+
recursive-exclude */*/build *
|
|
6
|
+
recursive-exclude */*/*/build* *
|
|
7
|
+
recursive-exclude *cache* *
|
|
8
|
+
recursive-exclude */*cache* *
|
|
9
|
+
recursive-exclude */*/*cache* *
|
|
10
|
+
recursive-exclude docs *
|
|
11
|
+
recursive-exclude recipe* *
|
|
12
|
+
recursive-exclude modulefiles *
|
|
13
|
+
recursive-exclude .github *
|
|
14
|
+
global-exclude *.pyc
|
|
15
|
+
global-exclude config.log
|
|
16
|
+
global-exclude .sconsign.dblite
|
|
17
|
+
exclude turbo_turtle/docs/.buildinfo*
|
|
18
|
+
exclude .flake8
|
|
19
|
+
exclude .git*
|
|
20
|
+
exclude *.yml
|
|
21
|
+
exclude turbo_turtle/.coveragerc
|
|
22
|
+
exclude import_package.py
|
|
23
|
+
exclude SConstruct
|
|
24
|
+
exclude style
|
|
25
|
+
exclude mypy
|
|
26
|
+
exclude cProfile
|
|
27
|
+
exclude pytest
|
|
28
|
+
include turbo_turtle/README.rst
|
|
29
|
+
include turbo_turtle/pyproject.toml
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: turbo-turtle
|
|
3
|
+
Version: 1.2.4
|
|
4
|
+
Summary: Solid body modeling tools for 2D sketched, 2D axisymmetric, and 3D revolved models
|
|
5
|
+
Author-email: Kyle Brindley <kbrindley@lanl.gov>, Thomas Roberts <tproberts@lanl.gov>
|
|
6
|
+
License-Expression: BSD-3-Clause
|
|
7
|
+
Project-URL: homepage, https://github.com/lanl-aea/turbo-turtle
|
|
8
|
+
Project-URL: documentation, https://lanl-aea.github.io/turbo-turtle/
|
|
9
|
+
Project-URL: repository, https://github.com/lanl-aea/turbo-turtle
|
|
10
|
+
Project-URL: changelog, https://lanl-aea.github.io/turbo-turtle/changelog.html
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Description-Content-Type: text/x-rst
|
|
19
|
+
License-File: LICENSE.txt
|
|
20
|
+
Requires-Dist: lazy_loader>=0.4
|
|
21
|
+
Requires-Dist: scons>=4.6
|
|
22
|
+
Requires-Dist: waves-workflows>=0.13.0
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
.. target-start-do-not-remove
|
|
26
|
+
|
|
27
|
+
.. _`Turbo-Turtle`: https://lanl-aea.github.io/turbo-turtle/index.html
|
|
28
|
+
.. _`Turbo-Turtle repository`: https://re-git.lanl.gov/aea/python-projects/turbo-turtle
|
|
29
|
+
.. _`AEA Gitlab Group`: https://re-git.lanl.gov/aea
|
|
30
|
+
.. _`Gitlab CI/CD`: https://docs.gitlab.com/ee/ci/
|
|
31
|
+
.. _`AEA Compute Environment`: https://re-git.lanl.gov/aea/developer-operations/aea_compute_environment
|
|
32
|
+
.. _`AEA Conda channel`: https://aea.re-pages.lanl.gov/developer-operations/aea_compute_environment/aea_compute_environment.html#aea-conda-channel
|
|
33
|
+
.. _`Bash rsync`: https://re-git.lanl.gov/aea/developer-operations/aea_compute_environment
|
|
34
|
+
.. _Conda: https://docs.conda.io/en/latest/
|
|
35
|
+
.. _Conda installation: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html
|
|
36
|
+
.. _Conda environment management: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
|
|
37
|
+
.. _SCons: https://scons.org/
|
|
38
|
+
|
|
39
|
+
.. _`Kyle Brindley`: kbrindley@lanl.gov
|
|
40
|
+
.. _`Thomas Roberts`: tproberts@lanl.gov
|
|
41
|
+
.. _`Matthew Fister`: mwfister@lanl.gov
|
|
42
|
+
.. _`Paula Rutherford`: pmiller@lanl.gov
|
|
43
|
+
|
|
44
|
+
.. target-end-do-not-remove
|
|
45
|
+
|
|
46
|
+
############
|
|
47
|
+
Turbo Turtle
|
|
48
|
+
############
|
|
49
|
+
|
|
50
|
+
.. |pipeline| image:: https://img.shields.io/github/actions/workflow/status/lanl-aea/turbo-turtle/pages.yml?branch=main&label=GitHub-Pages
|
|
51
|
+
:target: https://lanl-aea.github.io/turbo-turtle/
|
|
52
|
+
|
|
53
|
+
.. |release| image:: https://img.shields.io/github/v/release/lanl-aea/turbo-turtle?label=GitHub-Release
|
|
54
|
+
:target: https://github.com/lanl-aea/turbo-turtle/releases
|
|
55
|
+
|
|
56
|
+
.. |conda-forge version| image:: https://img.shields.io/conda/vn/conda-forge/turbo_turtle
|
|
57
|
+
:target: https://anaconda.org/conda-forge/turbo_turtle
|
|
58
|
+
|
|
59
|
+
.. |conda-forge downloads| image:: https://img.shields.io/conda/dn/conda-forge/turbo_turtle.svg?label=Conda%20downloads
|
|
60
|
+
:target: https://anaconda.org/conda-forge/turbo_turtle
|
|
61
|
+
|
|
62
|
+
.. |zenodo| image:: https://zenodo.org/badge/855818315.svg
|
|
63
|
+
:target: https://zenodo.org/doi/10.5281/zenodo.13787498
|
|
64
|
+
|
|
65
|
+
|pipeline| |release| |conda-forge version| |conda-forge downloads| |zenodo|
|
|
66
|
+
|
|
67
|
+
.. inclusion-marker-do-not-remove
|
|
68
|
+
|
|
69
|
+
***********
|
|
70
|
+
Description
|
|
71
|
+
***********
|
|
72
|
+
|
|
73
|
+
.. description-start-do-not-remove
|
|
74
|
+
|
|
75
|
+
`Turbo-Turtle`_ (LANL code O4765) is a collection of solid body modeling tools for 2D sketched, 2D axisymmetric, and 3D
|
|
76
|
+
revolved models. It also contains general purpose meshing and image generation utilities appropriate for any model, not
|
|
77
|
+
just those created with this package. Implemented for Abaqus and Cubit as backend modeling and meshing software. Orginal
|
|
78
|
+
implementation targeted Abaqus so most options and descriptions use Abaqus modeling concepts and language.
|
|
79
|
+
|
|
80
|
+
Turbo-Turtle makes a best effort to maintain common behaviors and features across each third-party software's modeling
|
|
81
|
+
concepts. As much as possible, the work for each subcommand is performed in Python 3 to minimize solution approach
|
|
82
|
+
duplication in third-party tools. The third-party scripting interface is only accessed when creating the final tool
|
|
83
|
+
specific objects and output. The tools contained in this project can be expanded to drive other meshing utilities in the
|
|
84
|
+
future, as needed by the user community.
|
|
85
|
+
|
|
86
|
+
This project derives its name from the origins as a sphere partitioning utility following the turtle shell (or soccer
|
|
87
|
+
ball) pattern.
|
|
88
|
+
|
|
89
|
+
.. description-end-do-not-remove
|
|
90
|
+
|
|
91
|
+
Documentation
|
|
92
|
+
=============
|
|
93
|
+
|
|
94
|
+
* GitHub: https://lanl-aea.github.io/turbo-turtle/
|
|
95
|
+
* LANL: https://aea.re-pages.lanl.gov/python-projects/turbo-turtle/
|
|
96
|
+
|
|
97
|
+
Author Info
|
|
98
|
+
===========
|
|
99
|
+
|
|
100
|
+
* `Kyle Brindley`_
|
|
101
|
+
* `Thomas Roberts`_
|
|
102
|
+
|
|
103
|
+
************
|
|
104
|
+
Installation
|
|
105
|
+
************
|
|
106
|
+
|
|
107
|
+
.. installation-start-do-not-remove
|
|
108
|
+
|
|
109
|
+
`Turbo-Turtle`_ can be installed in a `Conda`_ environment with the `Conda`_ package manager. See the `Conda
|
|
110
|
+
installation`_ and `Conda environment management`_ documentation for more details about using `Conda`_.
|
|
111
|
+
|
|
112
|
+
.. code-block::
|
|
113
|
+
|
|
114
|
+
$ conda install --channel conda-forge turbo_turtle
|
|
115
|
+
|
|
116
|
+
.. installation-end-do-not-remove
|
|
117
|
+
|
|
118
|
+
***********
|
|
119
|
+
Quick Start
|
|
120
|
+
***********
|
|
121
|
+
|
|
122
|
+
.. user-start-do-not-remove
|
|
123
|
+
|
|
124
|
+
1. View the CLI usage
|
|
125
|
+
|
|
126
|
+
.. code-block::
|
|
127
|
+
|
|
128
|
+
$ turbo-turtle -h
|
|
129
|
+
$ turbo-turtle docs -h
|
|
130
|
+
$ turbo-turtle geometry -h
|
|
131
|
+
$ turbo-turtle cylinder -h
|
|
132
|
+
$ turbo-turtle sphere -h
|
|
133
|
+
$ turbo-turtle partition -h
|
|
134
|
+
$ turbo-turtle mesh -h
|
|
135
|
+
$ turbo-turtle image -h
|
|
136
|
+
$ turbo-turtle merge -h
|
|
137
|
+
$ turbo-turtle export -h
|
|
138
|
+
|
|
139
|
+
.. user-end-do-not-remove
|
|
140
|
+
|
|
141
|
+
****************
|
|
142
|
+
Copyright Notice
|
|
143
|
+
****************
|
|
144
|
+
|
|
145
|
+
.. copyright-start-do-not-remove
|
|
146
|
+
|
|
147
|
+
Copyright (c) 2024, Triad National Security, LLC. All rights reserved.
|
|
148
|
+
|
|
149
|
+
This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL),
|
|
150
|
+
which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security
|
|
151
|
+
Administration. All rights in the program are reserved by Triad National Security, LLC, and the U.S. Department of
|
|
152
|
+
Energy/National Nuclear Security Administration. The Government is granted for itself and others acting on its behalf a
|
|
153
|
+
nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare derivative works, distribute
|
|
154
|
+
copies to the public, perform publicly and display publicly, and to permit others to do so.
|
|
155
|
+
|
|
156
|
+
.. copyright-end-do-not-remove
|
|
157
|
+
|
|
158
|
+
**********************
|
|
159
|
+
Developer Instructions
|
|
160
|
+
**********************
|
|
161
|
+
|
|
162
|
+
Cloning the Repository
|
|
163
|
+
======================
|
|
164
|
+
|
|
165
|
+
.. cloning-the-repo-start-do-not-remove
|
|
166
|
+
|
|
167
|
+
Cloning the repository is very easy, simply refer to the sample session below. Keep in mind that you get to choose the
|
|
168
|
+
location of your local `Turbo-Turtle repository`_ clone. Here we use ``/projects/roppenheimer/repos`` as an example.
|
|
169
|
+
|
|
170
|
+
.. code-block:: bash
|
|
171
|
+
|
|
172
|
+
[roppenheimer@sstelmo repos]$ git clone ssh://git@re-git.lanl.gov:10022/aea/python-projects/turbo-turtle.git
|
|
173
|
+
|
|
174
|
+
.. cloning-the-repo-end-do-not-remove
|
|
175
|
+
|
|
176
|
+
Compute Environment
|
|
177
|
+
===================
|
|
178
|
+
|
|
179
|
+
.. compute-env-start-do-not-remove
|
|
180
|
+
|
|
181
|
+
This project uses `Conda`_ to manage most of the compute environment. Some software, e.g. Abaqus and Cubit, can not be
|
|
182
|
+
installed with `Conda`_ and must be installed separately.
|
|
183
|
+
|
|
184
|
+
`SCons`_ can be installed in a `Conda`_ environment with the `Conda`_ package manager. See the `Conda installation`_
|
|
185
|
+
and `Conda environment management`_ documentation for more details about using `Conda`_.
|
|
186
|
+
|
|
187
|
+
1. Create the environment if it doesn't exist
|
|
188
|
+
|
|
189
|
+
.. code-block::
|
|
190
|
+
|
|
191
|
+
$ conda env create --name berms-env --file environment.yml
|
|
192
|
+
|
|
193
|
+
2. Activate the environment
|
|
194
|
+
|
|
195
|
+
.. code-block::
|
|
196
|
+
|
|
197
|
+
$ conda activate berms-env
|
|
198
|
+
|
|
199
|
+
.. compute-env-end-do-not-remove
|
|
200
|
+
|
|
201
|
+
Testing
|
|
202
|
+
=======
|
|
203
|
+
|
|
204
|
+
.. testing-start-do-not-remove
|
|
205
|
+
|
|
206
|
+
This project now performs CI testing on AEA compute servers. The up-to-date test commands can be found in the
|
|
207
|
+
``.gitlab-ci.yml`` file. The full regression suite includes the documentation builds, Python 3 unit tests, Abaqus Python
|
|
208
|
+
unit tests, and the system tests.
|
|
209
|
+
|
|
210
|
+
.. code-block::
|
|
211
|
+
|
|
212
|
+
$ pwd
|
|
213
|
+
/home/roppenheimer/repos/turbo-turtle
|
|
214
|
+
$ scons regression
|
|
215
|
+
|
|
216
|
+
There is also a separate style guide check run as
|
|
217
|
+
|
|
218
|
+
.. code-block::
|
|
219
|
+
|
|
220
|
+
$ scons flake8 black-check
|
|
221
|
+
|
|
222
|
+
The full list of available aliases can be found as ``scons -h``.
|
|
223
|
+
|
|
224
|
+
.. testing-end-do-not-remove
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
.. target-start-do-not-remove
|
|
2
|
+
|
|
3
|
+
.. _`Turbo-Turtle`: https://lanl-aea.github.io/turbo-turtle/index.html
|
|
4
|
+
.. _`Turbo-Turtle repository`: https://re-git.lanl.gov/aea/python-projects/turbo-turtle
|
|
5
|
+
.. _`AEA Gitlab Group`: https://re-git.lanl.gov/aea
|
|
6
|
+
.. _`Gitlab CI/CD`: https://docs.gitlab.com/ee/ci/
|
|
7
|
+
.. _`AEA Compute Environment`: https://re-git.lanl.gov/aea/developer-operations/aea_compute_environment
|
|
8
|
+
.. _`AEA Conda channel`: https://aea.re-pages.lanl.gov/developer-operations/aea_compute_environment/aea_compute_environment.html#aea-conda-channel
|
|
9
|
+
.. _`Bash rsync`: https://re-git.lanl.gov/aea/developer-operations/aea_compute_environment
|
|
10
|
+
.. _Conda: https://docs.conda.io/en/latest/
|
|
11
|
+
.. _Conda installation: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html
|
|
12
|
+
.. _Conda environment management: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
|
|
13
|
+
.. _SCons: https://scons.org/
|
|
14
|
+
|
|
15
|
+
.. _`Kyle Brindley`: kbrindley@lanl.gov
|
|
16
|
+
.. _`Thomas Roberts`: tproberts@lanl.gov
|
|
17
|
+
.. _`Matthew Fister`: mwfister@lanl.gov
|
|
18
|
+
.. _`Paula Rutherford`: pmiller@lanl.gov
|
|
19
|
+
|
|
20
|
+
.. target-end-do-not-remove
|
|
21
|
+
|
|
22
|
+
############
|
|
23
|
+
Turbo Turtle
|
|
24
|
+
############
|
|
25
|
+
|
|
26
|
+
.. |pipeline| image:: https://img.shields.io/github/actions/workflow/status/lanl-aea/turbo-turtle/pages.yml?branch=main&label=GitHub-Pages
|
|
27
|
+
:target: https://lanl-aea.github.io/turbo-turtle/
|
|
28
|
+
|
|
29
|
+
.. |release| image:: https://img.shields.io/github/v/release/lanl-aea/turbo-turtle?label=GitHub-Release
|
|
30
|
+
:target: https://github.com/lanl-aea/turbo-turtle/releases
|
|
31
|
+
|
|
32
|
+
.. |conda-forge version| image:: https://img.shields.io/conda/vn/conda-forge/turbo_turtle
|
|
33
|
+
:target: https://anaconda.org/conda-forge/turbo_turtle
|
|
34
|
+
|
|
35
|
+
.. |conda-forge downloads| image:: https://img.shields.io/conda/dn/conda-forge/turbo_turtle.svg?label=Conda%20downloads
|
|
36
|
+
:target: https://anaconda.org/conda-forge/turbo_turtle
|
|
37
|
+
|
|
38
|
+
.. |zenodo| image:: https://zenodo.org/badge/855818315.svg
|
|
39
|
+
:target: https://zenodo.org/doi/10.5281/zenodo.13787498
|
|
40
|
+
|
|
41
|
+
|pipeline| |release| |conda-forge version| |conda-forge downloads| |zenodo|
|
|
42
|
+
|
|
43
|
+
.. inclusion-marker-do-not-remove
|
|
44
|
+
|
|
45
|
+
***********
|
|
46
|
+
Description
|
|
47
|
+
***********
|
|
48
|
+
|
|
49
|
+
.. description-start-do-not-remove
|
|
50
|
+
|
|
51
|
+
`Turbo-Turtle`_ (LANL code O4765) is a collection of solid body modeling tools for 2D sketched, 2D axisymmetric, and 3D
|
|
52
|
+
revolved models. It also contains general purpose meshing and image generation utilities appropriate for any model, not
|
|
53
|
+
just those created with this package. Implemented for Abaqus and Cubit as backend modeling and meshing software. Orginal
|
|
54
|
+
implementation targeted Abaqus so most options and descriptions use Abaqus modeling concepts and language.
|
|
55
|
+
|
|
56
|
+
Turbo-Turtle makes a best effort to maintain common behaviors and features across each third-party software's modeling
|
|
57
|
+
concepts. As much as possible, the work for each subcommand is performed in Python 3 to minimize solution approach
|
|
58
|
+
duplication in third-party tools. The third-party scripting interface is only accessed when creating the final tool
|
|
59
|
+
specific objects and output. The tools contained in this project can be expanded to drive other meshing utilities in the
|
|
60
|
+
future, as needed by the user community.
|
|
61
|
+
|
|
62
|
+
This project derives its name from the origins as a sphere partitioning utility following the turtle shell (or soccer
|
|
63
|
+
ball) pattern.
|
|
64
|
+
|
|
65
|
+
.. description-end-do-not-remove
|
|
66
|
+
|
|
67
|
+
Documentation
|
|
68
|
+
=============
|
|
69
|
+
|
|
70
|
+
* GitHub: https://lanl-aea.github.io/turbo-turtle/
|
|
71
|
+
* LANL: https://aea.re-pages.lanl.gov/python-projects/turbo-turtle/
|
|
72
|
+
|
|
73
|
+
Author Info
|
|
74
|
+
===========
|
|
75
|
+
|
|
76
|
+
* `Kyle Brindley`_
|
|
77
|
+
* `Thomas Roberts`_
|
|
78
|
+
|
|
79
|
+
************
|
|
80
|
+
Installation
|
|
81
|
+
************
|
|
82
|
+
|
|
83
|
+
.. installation-start-do-not-remove
|
|
84
|
+
|
|
85
|
+
`Turbo-Turtle`_ can be installed in a `Conda`_ environment with the `Conda`_ package manager. See the `Conda
|
|
86
|
+
installation`_ and `Conda environment management`_ documentation for more details about using `Conda`_.
|
|
87
|
+
|
|
88
|
+
.. code-block::
|
|
89
|
+
|
|
90
|
+
$ conda install --channel conda-forge turbo_turtle
|
|
91
|
+
|
|
92
|
+
.. installation-end-do-not-remove
|
|
93
|
+
|
|
94
|
+
***********
|
|
95
|
+
Quick Start
|
|
96
|
+
***********
|
|
97
|
+
|
|
98
|
+
.. user-start-do-not-remove
|
|
99
|
+
|
|
100
|
+
1. View the CLI usage
|
|
101
|
+
|
|
102
|
+
.. code-block::
|
|
103
|
+
|
|
104
|
+
$ turbo-turtle -h
|
|
105
|
+
$ turbo-turtle docs -h
|
|
106
|
+
$ turbo-turtle geometry -h
|
|
107
|
+
$ turbo-turtle cylinder -h
|
|
108
|
+
$ turbo-turtle sphere -h
|
|
109
|
+
$ turbo-turtle partition -h
|
|
110
|
+
$ turbo-turtle mesh -h
|
|
111
|
+
$ turbo-turtle image -h
|
|
112
|
+
$ turbo-turtle merge -h
|
|
113
|
+
$ turbo-turtle export -h
|
|
114
|
+
|
|
115
|
+
.. user-end-do-not-remove
|
|
116
|
+
|
|
117
|
+
****************
|
|
118
|
+
Copyright Notice
|
|
119
|
+
****************
|
|
120
|
+
|
|
121
|
+
.. copyright-start-do-not-remove
|
|
122
|
+
|
|
123
|
+
Copyright (c) 2024, Triad National Security, LLC. All rights reserved.
|
|
124
|
+
|
|
125
|
+
This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL),
|
|
126
|
+
which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security
|
|
127
|
+
Administration. All rights in the program are reserved by Triad National Security, LLC, and the U.S. Department of
|
|
128
|
+
Energy/National Nuclear Security Administration. The Government is granted for itself and others acting on its behalf a
|
|
129
|
+
nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare derivative works, distribute
|
|
130
|
+
copies to the public, perform publicly and display publicly, and to permit others to do so.
|
|
131
|
+
|
|
132
|
+
.. copyright-end-do-not-remove
|
|
133
|
+
|
|
134
|
+
**********************
|
|
135
|
+
Developer Instructions
|
|
136
|
+
**********************
|
|
137
|
+
|
|
138
|
+
Cloning the Repository
|
|
139
|
+
======================
|
|
140
|
+
|
|
141
|
+
.. cloning-the-repo-start-do-not-remove
|
|
142
|
+
|
|
143
|
+
Cloning the repository is very easy, simply refer to the sample session below. Keep in mind that you get to choose the
|
|
144
|
+
location of your local `Turbo-Turtle repository`_ clone. Here we use ``/projects/roppenheimer/repos`` as an example.
|
|
145
|
+
|
|
146
|
+
.. code-block:: bash
|
|
147
|
+
|
|
148
|
+
[roppenheimer@sstelmo repos]$ git clone ssh://git@re-git.lanl.gov:10022/aea/python-projects/turbo-turtle.git
|
|
149
|
+
|
|
150
|
+
.. cloning-the-repo-end-do-not-remove
|
|
151
|
+
|
|
152
|
+
Compute Environment
|
|
153
|
+
===================
|
|
154
|
+
|
|
155
|
+
.. compute-env-start-do-not-remove
|
|
156
|
+
|
|
157
|
+
This project uses `Conda`_ to manage most of the compute environment. Some software, e.g. Abaqus and Cubit, can not be
|
|
158
|
+
installed with `Conda`_ and must be installed separately.
|
|
159
|
+
|
|
160
|
+
`SCons`_ can be installed in a `Conda`_ environment with the `Conda`_ package manager. See the `Conda installation`_
|
|
161
|
+
and `Conda environment management`_ documentation for more details about using `Conda`_.
|
|
162
|
+
|
|
163
|
+
1. Create the environment if it doesn't exist
|
|
164
|
+
|
|
165
|
+
.. code-block::
|
|
166
|
+
|
|
167
|
+
$ conda env create --name berms-env --file environment.yml
|
|
168
|
+
|
|
169
|
+
2. Activate the environment
|
|
170
|
+
|
|
171
|
+
.. code-block::
|
|
172
|
+
|
|
173
|
+
$ conda activate berms-env
|
|
174
|
+
|
|
175
|
+
.. compute-env-end-do-not-remove
|
|
176
|
+
|
|
177
|
+
Testing
|
|
178
|
+
=======
|
|
179
|
+
|
|
180
|
+
.. testing-start-do-not-remove
|
|
181
|
+
|
|
182
|
+
This project now performs CI testing on AEA compute servers. The up-to-date test commands can be found in the
|
|
183
|
+
``.gitlab-ci.yml`` file. The full regression suite includes the documentation builds, Python 3 unit tests, Abaqus Python
|
|
184
|
+
unit tests, and the system tests.
|
|
185
|
+
|
|
186
|
+
.. code-block::
|
|
187
|
+
|
|
188
|
+
$ pwd
|
|
189
|
+
/home/roppenheimer/repos/turbo-turtle
|
|
190
|
+
$ scons regression
|
|
191
|
+
|
|
192
|
+
There is also a separate style guide check run as
|
|
193
|
+
|
|
194
|
+
.. code-block::
|
|
195
|
+
|
|
196
|
+
$ scons flake8 black-check
|
|
197
|
+
|
|
198
|
+
The full list of available aliases can be found as ``scons -h``.
|
|
199
|
+
|
|
200
|
+
.. testing-end-do-not-remove
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""Read cProfile files and plot.
|
|
2
|
+
|
|
3
|
+
Files *must* use extensions ``*.cprofile.{lazy,eager}``
|
|
4
|
+
|
|
5
|
+
.. warning::
|
|
6
|
+
|
|
7
|
+
requires Python >=3.9
|
|
8
|
+
|
|
9
|
+
.. code-block::
|
|
10
|
+
|
|
11
|
+
$ python -m cProfile -m profiler.cprofile.lazy -m turbo_turtle._main
|
|
12
|
+
$ EAGER_IMPORT=eager python -m cProfile -m profiler.cprofile.eager -m turbo_turtle._main
|
|
13
|
+
$ python profile_package.py profiler.cprofile.{eager,lazy} -o profiler.png
|
|
14
|
+
"""
|
|
15
|
+
import typing
|
|
16
|
+
import pstats
|
|
17
|
+
import pathlib
|
|
18
|
+
import argparse
|
|
19
|
+
|
|
20
|
+
import numpy
|
|
21
|
+
import xarray
|
|
22
|
+
import matplotlib.pyplot
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
default_figsize = [10, 5]
|
|
26
|
+
default_output = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_parser() -> argparse.Namespace():
|
|
30
|
+
"""Get CLI parser
|
|
31
|
+
|
|
32
|
+
:returns: profiler.py CLI parser
|
|
33
|
+
"""
|
|
34
|
+
parser = argparse.ArgumentParser(
|
|
35
|
+
description="Read multiple cProfile files and plot. Files *must* use extensions ``.cprofile.{lazy,eager}``"
|
|
36
|
+
)
|
|
37
|
+
parser.add_argument(
|
|
38
|
+
"FILE",
|
|
39
|
+
nargs="+",
|
|
40
|
+
help="cProfile output file"
|
|
41
|
+
)
|
|
42
|
+
parser.add_argument(
|
|
43
|
+
"-o", "--output",
|
|
44
|
+
default=default_output,
|
|
45
|
+
help="Output file to save as figure. Must use an extension supported by matplotlib. (default: %(default)s)"
|
|
46
|
+
)
|
|
47
|
+
parser.add_argument(
|
|
48
|
+
"-f", "--figsize",
|
|
49
|
+
nargs=2,
|
|
50
|
+
type=float,
|
|
51
|
+
default=default_figsize,
|
|
52
|
+
help="Matplotlib figure size [width, height] in inches. (default: %(default)s)"
|
|
53
|
+
)
|
|
54
|
+
return parser
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def smallest_stem(path: pathlib.Path) -> str:
|
|
58
|
+
"""Return the smallest stem from a pathlib Path object by removing all suffixes
|
|
59
|
+
|
|
60
|
+
.. warning::
|
|
61
|
+
|
|
62
|
+
requires Python >=3.9
|
|
63
|
+
|
|
64
|
+
:param path: pathlib Path object to process
|
|
65
|
+
|
|
66
|
+
:returns: shortest stem (all suffixes removed)
|
|
67
|
+
"""
|
|
68
|
+
# Python >=3.9 for the ``.removesuffix`` method
|
|
69
|
+
return str(path.name).removesuffix("".join(path.suffixes))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def plot(
|
|
73
|
+
dataset: xarray.Dataset,
|
|
74
|
+
figsize: typing.Tuple[float, float] = default_figsize,
|
|
75
|
+
output: typing.Optional[str] = default_output,
|
|
76
|
+
**kwargs
|
|
77
|
+
) -> None:
|
|
78
|
+
"""Plot Xarray Dataset, optionally saving and output file
|
|
79
|
+
|
|
80
|
+
If no output file is specified, open a matplotlib figure window
|
|
81
|
+
|
|
82
|
+
:param dataset: Xarray dataset to plot
|
|
83
|
+
:param figsize: Matplotlib figure size argument (width, height) in inches
|
|
84
|
+
:param output: Output file to save. Optional.
|
|
85
|
+
:param **kwargs: ``dataset.plot.scatter`` keyword arguments
|
|
86
|
+
"""
|
|
87
|
+
figure = matplotlib.pyplot.figure(figsize=figsize)
|
|
88
|
+
dataset.plot.scatter(**kwargs)
|
|
89
|
+
figure.axes[0].set_xticklabels(labels=dataset["file"].values, rotation=6)
|
|
90
|
+
if output is not None:
|
|
91
|
+
figure.savefig(output)
|
|
92
|
+
else:
|
|
93
|
+
matplotlib.pyplot.show()
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def main() -> None:
|
|
97
|
+
"""Read cProfile files and plot"""
|
|
98
|
+
parser = get_parser()
|
|
99
|
+
args = parser.parse_args()
|
|
100
|
+
|
|
101
|
+
dispositions = [".eager", ".lazy"]
|
|
102
|
+
paths = [pathlib.Path(path) for path in args.FILE]
|
|
103
|
+
stems = list(set([smallest_stem(path)for path in paths]))
|
|
104
|
+
|
|
105
|
+
total_time = numpy.zeros([len(stems), len(dispositions)])
|
|
106
|
+
for path in paths:
|
|
107
|
+
stats = pstats.Stats(str(path))
|
|
108
|
+
|
|
109
|
+
stem = smallest_stem(path)
|
|
110
|
+
disposition = path.suffixes[-1]
|
|
111
|
+
disposition_index = dispositions.index(disposition)
|
|
112
|
+
stems_index = stems.index(stem)
|
|
113
|
+
total_time[stems_index, disposition_index] = stats.total_tt
|
|
114
|
+
|
|
115
|
+
dataset = xarray.Dataset(
|
|
116
|
+
{"total time": (["file", "disposition"], total_time)},
|
|
117
|
+
coords={
|
|
118
|
+
"file": stems,
|
|
119
|
+
"disposition": dispositions
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
dataset["total time"].attrs["units"] = "s"
|
|
123
|
+
dataset = dataset.sortby("file")
|
|
124
|
+
|
|
125
|
+
plot(dataset, figsize=tuple(args.figsize), output=args.output,
|
|
126
|
+
x="file", y="total time", hue="disposition", add_legend=True, add_colorbar=False)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
if __name__ == "__main__":
|
|
130
|
+
main()
|