Ответ 1
Я приветствую использование явных единиц в научных вычислительных приложениях. Использование явных единиц аналогично чистке зубов. Это добавляет немного скуки, но безопасность типа, которую вы получаете, может сэкономить массу неприятностей в долгосрочной перспективе. Например, не сбивает $125 миллионов орбиталей на планеты.
Вероятно, вы также можете проверить эти два других пакета/количества пакетов python:
Scientific.Physics.PhysicalQuantity
Я когда-то исследовал Scientific.Physics.PhysicalQuantity. Это не совсем отвечало моим потребностям, но могло удовлетворить ваши. Трудно сказать, какие функции вам нужны из вашего краткого описания.
Я закончил тем, что написал свой собственный пакет python для преобразования единиц измерения и анализа размеров, но он пока еще не упакован для выпуска. Мы используем мою единую систему в привязках python для нашей системы OpenMM для ускоренной молекулярной механики с графическим процессором. Вы можете просмотреть репозиторий svn моего кода элементов python по адресу:
В конце концов я собираюсь упаковать его для распространения. Если вы считаете это интересным, пожалуйста, дайте мне знать. Это может побудить меня упаковать его раньше. Функции, которые я искал, когда я разрабатывал систему питонов SimTK, включали следующее:
- Единицы НЕ обязательно хранятся в единицах СИ внутри. Это очень важно для меня, потому что одна важная область применения для нас - в молекулярном масштабе. Использование внутренних блоков СИ может привести к переполнению экспоненты в широко используемых расчетах молекулярной силы. Внутри, все единичные системы одинаково важны в SimTK.
- Мне нужна была аналогичная мощность и гибкость для системы Boost.Units на С++. И потому, что я знаком с этой системой, и потому, что она была разработана под пристальным наблюдением большой группы блестящих инженеров. Boost.Units - это хорошо продуманная система анализа второго поколения. Таким образом, я могу утверждать, что система единиц SimTK представляет собой систему третьего поколения:). Имейте в виду, что, хотя Boost.Units - это "нулевая служебная" система без затрат времени исполнения, все реализации количества питонов, включая блоки SimTK, вероятно, требуют затрат времени исполнения.
- Я хочу, чтобы размерные количества, совместимые с массивами numpy, но необязательно требуют пакет python numpy. Другими словами, количество может быть основано либо на массивах numpy, либо на встроенных типах python.
Какие функции важны для вас?