|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как создать расчетное программное обеспечение с открытым исходным кодом (конструктивные решения)
Регистрация: 18.11.2019
Сообщений: 1,705
|
||
Просмотров: 106106
|
|
||||
Инженер Регистрация: 20.01.2016
Сообщений: 309
|
Цитата:
1. Поиск финансирования 2. Поиск исполнителей 3. Разработка интерфейса ввода-вывода 4. Разработка МКЭ-решателя 5. Разработка конструирующих систем 6. ???? 7. PROFIT!!!
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004 |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
https://github.com/zamtmn/zcad - отечественный CAD, с открытым исходным кодом. В нем Вы можете реализовать самые смелые свои идеи.
Плюсы: - абсолютно бесплатный; - проект медленно, но развивается (возможно Вы сможете изменить темпы развития); - кроссплатформенность (автор ее даже на милинке запускал); - быстро и стабильно работает. Минусы: - Ни кто не захочет слезть с (autocad, nanocad и т.д.); - Ни кто не захочет что то считать и разрабатывать за бесплатно; - Те кто попробуют упрутся в порог вхождения и сразу осознают, что не такой он уж и "корявый" редактор расчетной программы. Все есть, берите и начинайте программировать... |
|||
![]() |
|
||||
Регистрация: 19.05.2015
Сообщений: 212
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Решили продолжить тему ?)
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
![]() А если серьезно, то кадры решают все. Разработка расчетной программы довольно наукоемкая задача. Кто будет писать мат. МКЭ ядро? Нужны люди со знанием МКЭ. Этим людям нужно за что-то жить. Даже если взять за основу какой-нибудь opensource МКЭ решатель (коих, к слову сказать не так уж и мало), разобраться с его кодом для написания к нему нормального интерфейса - тоже задача на полмиллиона. Времени на решение этих задач уйдет очень не мало, что приведет к одному из двух исходов: 1) проект будет развиваться крайне медленно из-за того, что исполнители(в случае их наличия) заняты основной работой 2) возникнет необходимость в финансировании исполнителей(в случае их наличия) для того, что б, закончить проект в каком-то обозримом будущем А вообще я бы поучаствовал в такой разработке. Некоторые личные наработки по МКЭ и конструтивным расчетам по нормам РФ имеются. ----- добавлено через ~2 мин. ----- Это не совсем та тема ----- добавлено через ~2 мин. ----- Никогда не говори "никогда". Все возможно. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
----- добавлено через ~4 мин. ----- Цитата:
----- добавлено через ~7 мин. ----- Цитата:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
но если в относительно благополучном 2012 не смогли собрать рабочую команду исполнителей - здесь будет тот же результат, имхо) Единственные бесплатные работающие программы тут - от людей, кто не фантазирует о возглавлении команды "единомышленников/спонсоров", а сам потихоньку делает и поддерживает (p.s. спонсоры - не обязательно материально, что свое личное время потратил - это тоже спонсорство).
----- добавлено через ~2 мин. ----- за разработку любого ПО, вне зависимости от типа лицензирования, все равно кто-то платит... |
|||
![]() |
|
||||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Цитата:
Цитата:
Имхо, денег ни опенсурс никто не даст. Возможно, что какую-то выгоду могли бы получать участники системы следствии использования разрабатываемого функционала. Может быть, например, попробовать написать модуль нелинейного расчета плит перекрытий на прогиб, так как в СКАДе и Лире этот модуль реализован, имхо, кошмарным образом. Цитата:
![]() Повторять философию и концепцию Лиры и Скада было бы, наверно, неразумно. Последний раз редактировалось nickname2019, 24.09.2021 в 19:24. |
|||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну так с этого и надо начинать) Создать тему, выложить свои более менее сформулированные соображения по убыстрению расчетов, а там и специалисты-расчетчики с форума подтянуться с критикой и предложениями. Потом если процесс не умрет/не зафлудится - можно уже и ТЗ на программу оформлять и искать финансирование. А то пока это все напоминает один старый анекдот
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Ну ладно Лира... Но СКАД чем не угодил в плане решателя? У него один из самых быстрых решателей на рынке.
----- добавлено через 56 сек. ----- А что такое MVP? Паттерн Model-View-Presenter? ----- добавлено через ~35 мин. ----- https://www.dealii.org/ http://sfepy.org/doc-devel/index.html ----- добавлено через ~36 мин. ----- https://getfem.org/ ----- добавлено через ~36 мин. ----- https://freefem.org/ ----- добавлено через ~37 мин. ----- https://code-aster.org/spip.php?rubrique2 ----- добавлено через ~37 мин. ----- http://www.calculix.de/ ----- добавлено через ~38 мин. ----- https://ngsolve.org/ ----- добавлено через ~40 мин. ----- Цитата:
----- добавлено через ~41 мин. ----- https://habr.com/ru/post/181616/ |
|||
![]() |
|
||||
Регистрация: 23.01.2014
Красноярск/Москва
Сообщений: 206
|
архитектурно это должно быть максимально модульное по
как пример - софистик или опенсис. отдельно препроцессор и мешер, которые готовят схему в текстовом виде отдельно решатель, отдельно постпроцессор, отдельно конструктивные модули. БД должна быть открыта и понятна, чтобы постпроцессор и конструктивные модули могли легко считывать данные конструктивные модели тогда могут быть любые и под любые проверки |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Как я понял, Вы опять хотите в одной программе чертить объект полностью (автокад, нанокад), а в другой программе чертить, что бы затем рассчитать (аналог scad).
Мое мнение, на реализации графического ядра программы, все полягут. Если хотите хоть что то сделать кроме ля-ля тополя, то вклинивайтесь в уже существующий и хоть как то рабочий CAD. Например возьмите freecad, он позволяет построить модель здания(визуально, конечно по-любому надо будет что то доделывать, и ваши любимы сетки напряжения там есть уже готовые), а расчеты вы уж сами на питоне оформите или опять скажите что писать под это могут только пару человек? Вы из тех кто, я же все сам с нуля? |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Идея - разработать расчетные библиотеки с открытым исходным кодом, которые любой, обладающий соответствующими навыками программирования, может подцепить к своей программе и выполнить свой расчет. Так как для иллюстрации и отлаживания библиотек так или иначе нужен графический редактор, практическое приложение (исполняемый файл) проще всего оформить как приложение под Autocad/Nanocad (наиболее распространены, исходный код на c++ идентичен). Цитата:
Перечисленные румата в посте #15 ссылки, вероятнее всего, позволят скомпилировать что-то рабочее в течении недели. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Прыгать в интерфейсе между "Заданием исходных данных" и "Результатами расчетов" - тоже еще то удовольствие. Какой гений до этого вообще додумался, интересно. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Тут недавно чудики всплывали - типа давайте вы нас проспонсируете по 200т в течении, минимум, 18 месяцев - а мы будем не спеша писать программу) ----- добавлено через ~3 мин. ----- Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Нормального API как для Autocad - нет.
Цитата:
Например, я передвинул колонну на плане - хочу, чтобы автоматически расчетная схема сама поменялась и результаты сами пересчитались. Сейчас эти действия связаны с переключениями между разными программами и "танцами с бубном" - очень много уходит времени. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Только сколько будет затрачено человеко-часов на отлаживание этой расчетной библиотеки, включая контрольную верификацию по результатам расчетов с существующими сертифицированными программами? |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Думаю, что должен быть один модуль, который можно подключить к различным графическим редакторам (как СПДС от сисофта). |
|||
![]() |
|
||||
Регистрация: 10.04.2009
Сообщений: 134
|
Что вам не нравится в текущей ситуации вроде бы понятно. Но каким вы видите ее исправление - из ваших слов - не ясно. Вот например (выделение жирным мое):
Цитата:
Далее: Цитата:
Если идеализировать ситуацию, то есть единственный верный способ создать расчетное ядро (библиотеку), так все расчетные ядра должны пройти верификационные тесты одинаково. Нет никаких оснований недооценивать способности участников проекта, поэтому полагаем, что этот единственный способ конечно же будет найден и ядро создано. Но нет единственно верного способа проектирования интерфейса пользователя. Взаимодействие человека и машины - самая сложная и важная часть программного обеспечения в силу того, что задача эта почти гуманитарная и не имеет точного решения. Ведь мы о программе для всех, для множества разных людей, а не для одного автора, который точно знает, как ему лучше, и который простит сам себе то, что сделать не удалось. И тут опять всплывают условные сто тысяч долларов. Последний раз редактировалось ГОСТ&ОПОКА, 25.09.2021 в 11:05. Причина: Мой пост понят буквально, а я такого не хотел. Для ясности выделил слово идеализировать добавил пред 100 тыс долларов слово "условные" |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 22.09.2012
Сообщений: 431
|
Создать то Вы создадите, кто проверять/нести ответственность будет за Ваши наработки? Кто-то допилит "открытый код" или нарошно ошибки допустит чтобы комерческий софт конкурента покупали. А обновления интерфейса и т.д. Вы сравните программы 7-8 летней давности.
Нужен исходный открытый код - Libre Office как альтернатива Excel и простой калькулятор - наше все ![]() Без соответствующей конкретно поставленной задачи и финансирования не получится. Сегодня у Вас есть энтузиазм, а через неделю - нет. Следовательно данное решение имеет смысл как ограниченная в возможностях маленькая программа или набор программ-утилит. Может Вам самим создать программу-утилиту в сотрудничестве с Лирой или Скад? Для начала создать что-то наподобии бесплатного NormCad с открытым кодом? Или после создания захотите продать тк Ваше время потраченно? Я бы лично хотел видеть софт на платформе Unix, а конкретно на примере Linux Debian как образец стабильности. Далее код чтобы был не на C#, Visual Basic и прочей глючной темы винды, а C++ (на библиотеках Qt) или подобном с обеспечением кросс-платформенности. Чтобы код работал как на Unix так и на Windows. Это принципиальное решение, которое бы позволило пересадить инженеров с Виндовс на отечественную ОП, насколько мне известно базирующуюся на том же Debian. За основу лучше всего бы было взять уже имеющуюся наработку. Как пример - отличный, функциональный но умирающий проект СКАД (по моему личному мнению), переработать интерфейс, визуальное отображение объектов, добавить удобство работать интуитивно в 1 окне т.е. переписать полностью код визуальной части, добавить возможности экспорта в 3Д чертилку. О самой 3Д чертилке, сейчас создают клоны Ревит - тот же Нанокад, Регна и т.д. По моему мнению выглядит это - убого и неэффективно. Сам Ревит довольно требователен к железу, а эффективность вызывает сомнения и споры. Почему не создать клонн хотябы той же Теклы? Написать его под ту же ОП отечественную + адаптировать к выпуску фалов .nc и .dstv ? Таким образом крупнейшие заводы, где как раз и есть деньги подвязать к отечественным решениям? Лет через 10 и деньги пойдут, т.е. окупаемость этого проекта - лет 10-15, не менее. Как Вы видите - это комплексное решение и без участия Гос-ва тут никак. Бизнесс что - заинтересованн в мин. вложениях и получении выгоде здесь и сейчас, создадут сырой продукт по подписке, а года через 1-2 - пофиксят баги предыдущей версии, выпустят "обновления". Клонн американского системы ведения бизнесса. И зачем им создавать софт под новую безопасную ОП, им же за это не заплатят да и стоить это дороже будет в разы? Одна надежда, что рано или поздно там наверху люди примут соответствующие решение, привлекут ведущие НИИ и создадут решение для отрасли как таковой. |
|||
![]() |
|
|||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
А если Вы юзер - Nanocad сейчас стоит 14 500руб. И к этому Nanocadу Вы можете прикрутить расчетную библиотеку со своими кнопками (панель команд будет дополнительная). Цитата:
Цитата:
Цитата:
|
||||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
FreeCAD падает от 44 тысяч отрезков. Но так ВЫ же работаете с семействами, с плитами или колоннами. А для Freecad-а они как я понимаю будут одним элементом. Так хоть готовое решение будет открытое и свободное, которое продвинет человечество в сторону свободного ПО. А так вон зайдите на github и посмотрите на кучу непонятных библиотек, может там уже есть Ваша, готовая и рабочая, только Вы об этом не знаете. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Цитата:
Собственно сейчас как раз этим и занимаемся (отдельное большое спасибо румата). |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Та же ЛИРА имеет 50+ лет истории развития - а тут резко придут и напишут бесплатную библиотеку, которая окажется быстрее и удобнее многолетнего опыта набивания шишек. |
|||
![]() |
|
||||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
----- добавлено через ~7 мин. ----- Можно подумать, что Скад или Лира берут на себя ответственность за результаты расчета. Крупными буквами в лицензии идет отказ от ответственности. |
|||||
![]() |
|
||||
Регистрация: 22.09.2012
Сообщений: 431
|
Цитата:
Ответственность же этих фирм - ЛИРА, СКАД подразумневает репутационные потери как компании так и конкретных лиц, несравнимые с вариантом ответсвенности описанным Вами, где лежит кусок кода и никто ни за что не отвечает. GitHab - это только файлопомойка в хор. понимании слова, позволяющая записывать версии кода. Предположем что Вы написали и закончили кусок программы, дальше то что? Нужны соответствующие тесты, особенно когда дело касается железобетона. У НИИ есть возможность построить здание, пару перекрытий и разрушить их, замерив датчиками реальные прогибы, перемещения, усилия и т.д., подвести теорию т.е. нужен научно-иследовательский потенциал и ресурс. Это в 2 словах. А у Вас что? Т.е. максимум что возможно в Вашем варианте, написать утилиту и выслать в оффис той же Лиры/Скада/Старка с надеждой, что это кого-то заинтересует своей уникальностью и будут произведены испытания, на основании которых введут изменения в программу. Желаю успехов в Вашем нелегком деле. С Уважением, |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Цитата:
Но может это так раньше делали? Может щаз по-другому? Смотрим LiteCad и видим ту же самую картину. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
к чему слова поддержки то примерно представлять и попробовать реализовать - это две большие разницы. Цитата:
Цитата:
удачи. И пожелание, чтобы эти две недели не переросли в два+ месяца в процессе отладки и корректировки... |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
библиотеку запустить нельзя. Ее можно статически подключить / динамически загрузить в пространство приложения (как, например *.arx / *.dll в пространство акада) и вызывать определенные в ней функции, ресурсы и т.д. Поэтому библиотеки все-таки вторичны, как и интерфейс - это все должно быть загружено и запущено в основном потоке приложения.
|
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Терпеть не могу "птичий" язык. Подключить нельзя. Можно включить в состав программы архив объектников (неслинкованных) данной библиотеки.
Не в "пространство приложения", а в общее адресное пространство. Иначе работать не будет. Наоборот. Приложение не запустится, пока не загружены все библиотеки. Линковщик пошлёт лесом. Потоки то здесь вообще при чём? |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~6 мин. ----- ну куда ж без него. главное не переборщить. на самом деле готовых свободных и открытых библиотек предостаточно. бери и пользуй как тебе нужно. ----- добавлено через ~7 мин. ----- разговоры о верификациях здесь вообще не по теме |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Заметил первую философскую проблему, связанную с хранением данных.
С одной стороны, геометрические объекты, которые описывают контуры конструкций (обычно это отрезки или полилинии) уже хранятся в графическом редакторе. Также после триангуляции образуется достаточно мелкая сетка конечных элементов. Чтобы не дублировать данные, возникает идея описывать конечную модель непосредственно примитивами (AcDbPolyline, AcDbLine), а не вводить собственные объекты (в некоторой своей внешней БД) - чтобы не дублировать хранение информации. Но, если КЭ описывать стандартными примитивами, возникает задача "приаттачить" к полилиниям дополнительные свойства, которые описывали бы характеристики КЭ (толщина, модуль упругости и т.д.). Будем использовать XDATA? Последний раз редактировалось nickname2019, 26.09.2021 в 08:19. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Можно, конечно, сделать собственные proxy-объекты для КЭ, но это, скорее всего, приведет к тому, что памяти будет много уходить + будут тормоза + будут проблемы с совместимостью в других версиях графического редактора (в т.ч. проблемы переноса между nanocad/autocad). Масштаб лучше "приберечь" для оформительских целей. Толщина - не факт, что оптимальный вариант, так как при просмотре в аксонометрии Autocad "вытягивает" объекты в высоту. Это может мешать наглядности, если хотим видеть перекрытие "плоским". Последний раз редактировалось nickname2019, 26.09.2021 в 09:40. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
пробуйте варианты. С чего вы решили, что с первого раза сделаете все удобным и в работе, и визуально? Тем более пишете не отдельную САПР, а надстройку к "черному ящику" с API. Но, имхо, для служебных данных лучше использовать то - до чего у обычного пользователя не дотянуться руки встроенными средствами программы - XData, словари, внешние БД и т.д.
а почему тот же брискад игнорируете? Сделали бы тему-опрос - какие программы используют конструкторы-расчетчики помимо специализированных. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Я никогда не писал под Брискад (т.е. это допзатраты времени). Скорее всего, нужно писать под Autocad, а кому надо - тот сам перекомпилирует.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
усложнять код дополнительными проверками валидности данных (а это ресурсы и быстродействие) ради нескольких человек, которые вместо программирования будут пытаться строить очередные велосипеды? А для остальных - это лишь человеческий фактор, в запарке такие вещи на чертежах вытворяют, что слой/толщину сменить - это вообще детские шалости.
|
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Но ты предлагаешь "вещь в себе"! Как ты подкорректируешь модель в случае необходимости? Геморрой на пустом месте. А ручные корректировки зачастую важнее самой модели.
PS: Простая ситуация: тебе надо изучить поведение одного конкретного элемента без изменения всей остальной модели. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
так надо предусмотреть в надстройке возможность корректного изменения этого одного элемента. Не надо полагаться, что пользователь будет действовать именно в нужной последовательности, контролируя свои действия - он (пользователь) непредсказуем даже во вменяемом достаточно состоянии)
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Поэтому да, в процессе эксплуатации придется дополнять функционал |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
"Давно это было. Так давно, что и как бы не было вовсе. Но коли не было, не стал бы об этом вспоминать".
Люди те же самые. "Защита от дурака" говоришь? Рассмотрим крайние случаи: 1. Опытный пользователь может допустить ляп. Но по результатам расчёта он его заметит и исправит. Поэтому предобработчик отсекает только заведомо некорректные параметры. 2. Все пользователи - дураки. Опытные пользователи - миф. Единственное, что предоставляется "дураку" - это большая красная кнопка "Сделать красиво". |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Потом было потрачено много времени, чтобы результаты из Лиры и Скада можно было выводить в каком-то более удобоваримом виде (чтобы неделю отчеты в pdf вручную не выводить). Сейчас я начинаю подозревать, что трудозатраты на организацию нормального вывода/ввода становятся сравнимы с тем, чтобы написать сам расчетный модуль (в необходимом объеме). |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
![]() ----- добавлено через ~8 мин. ----- Ну так давайте его перепишем под .Net в виде подключаемых к автокаду плагинов. Если, конечно, исходники на паскале еще сохранились. ----- добавлено через ~2 мин. ----- Сейчас результаты из ЛирыСАПР можно выводить даже в демоверсии легко и непринужденно Последний раз редактировалось румата, 26.09.2021 в 12:24. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Оптимизацию нумерации узлов,в частности, я не делал. Матрицы получались с широкой лентой иногда. Можно взять процедуру обращения матрицы. Там была более-менее эффективная с хранением половины матрицы жесткости (с учетом симметрии). Сейчас, говорят, итерационные алгоритмы более эффективны, но если делать нелинейное решение или с большим количеством вариантов нагрузок - думаю, лучше иметь обращенную матрицу жесткости. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
Для этого есть готовые математические библиотеки, располагающие инструментарием разреженных матриц и многопоточного вычисления. если делать нелинейный решатель то все равно прийдется решать СЛАУ(обращать глобальную матрицу) на каждом шаге |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
-стержнень; -прямоугольная пластина; -треугольная пластина. Цитата:
Я не знаю, додумывались ли до этого скадовцы или еще пока нет. Нет. Самое эффективное - обратить начальную матрицу жесткости один раз, потом ее многократно использовать в итерациях. Это самый быстрый способ. Я лично проверял. Касательную матрицу не нужно строить и обращать. Это долго. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Прямоугольная как раз не нужна, значительно чаще будет нужна четырехугольная пластина. а прямоугольная это лишь частный случай четырехугольной
----- добавлено через 51 сек. ----- Это нужно пробовать варианты. Тогда можно будет наверняка сказать какая идея лучше ----- добавлено через ~2 мин. ----- Цитата:
![]() ----- добавлено через ~3 мин. ----- Здесь в библиотеке была книжка Агапова от 2002-го года с готовыми выведенными МЖ для нелинейных стержневых и слоистых оболочечных КЭ |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
проектирование Регистрация: 16.09.2005
KZ
Сообщений: 141
|
На самом деле проще?
Я так думал, что MathCAD считывает сами формулы и знание языков программирования (вроде Python) не требуется. Написал формулу, любой может подправить, доработать, скопипастить, не выискивая цепочку алгоритма в коде. Вместо чистого Python, я бы тогда предложил: Dynamo (в связке с учебным Revit), либо Grasshopher. Есть еще open source Dynamo Sandbox (пока не знаю что он может). Вот еще нашел open source: GRevit Последний раз редактировалось lenivec, 27.09.2021 в 08:05. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Предлагается следующий перечень задач (пока собираем литературу):
1. Процедура формирование локальных матриц жесткостей стержней и оболочек (на один КЭ) 1.1. В линейной постановке 1.2. В физически нелинейной постановке (геометрически нелинейные пока рассматривать не будем, так как для массового проектирования это не так актуально, а прогибы ж.б. перекрытий определять нужно в физ. нелинейной постановке) 2. Написание процедуры по генерации плоских КЭ сеток (вероятнее всего, следует воспользоваться кодом от проекта GMSH) 3. Написание процедуры оптимизации нумерации узлов таким образом, чтобы ширина ленты матрицы была минимальной (для т.н. многофронтального метода) 4. Написание процедуры решения СЛАУ с обращением матрицы жесткости 5. Написание процедуры получения РСУ 6. Визуализация 7. Подбор расчетных параметров сечений по РСУ |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Никак. Загнется он на первой более-менее серьезной расчетной модельке.
----- добавлено через 48 сек. ----- Как вариант. Но получится некоторое снижение производительности по сравнению с нативным си. ----- добавлено через ~2 мин. ----- Цитата:
----- добавлено через ~4 мин. ----- ну это ж не лиспик по изменению цвета слоя. без детального обсуждения стратегии и нюансов такой опенсорс создать не получится ----- добавлено через ~6 мин. ----- Цитата:
----- добавлено через ~7 мин. ----- Здесь все же лучше смотреть в сторону OpenGL, а не автокада |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Сталь обычно все считают в линейной постановке (кроме мачт), но мачты тоже линеаризуются нормально. Но очень мало людей правильно считают прогибы ж.б.к. Хотелось бы этот пробел устранить.
Может быть. Но написание нормального графического движка - задача более сложная, чем расчетного комплекса. Здесь вопрос не в 3д визуализации а в задаче эффективного обсчета 2-д текста и графики в больших объемах. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
В идеале было бы здорово, если группа матерых специалистов, начали делать расчет в Маткаде(Питон, Javascript или просто на бумажке), а nickname2019 начнет готовить библиотеку для автокада. Специалисты по воюют за правильность расчета, а nickname2019 просто переписал формулы из программы в программу, а не изучал математику расчетов |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Для написания расчетных модулей c++ кроме как оформление циклов и объявления переменных типа double и string знать ничего не надо. Предлагается писать программу для visual studio 2012, это позволит запускать приложение на autocad 2015, 2016. Также эту версию желающие смогут перекомпилировать под nanocad. Имхо, при желании портировать с visual studio 2012 на более новые версии провести проще, чем наоборот. Есть возражения? |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
А почему в таком древнем VS?
----- добавлено через ~4 мин. ----- Цитата:
1) он платный 2) он не будет работать с матрицами объемом в гигабайты |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
arx - это нужно для визуализации и отладки, чтобы не писать свой граф. редактор. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
gmsh написан на c++. Скорее всего оттуда можно много чего взять вообще без переделок.
----- добавлено через 31 сек. ----- согласен. Это на крайний случай. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Цитата:
писать в древней версии VS - плохая идея |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
У меня так скрипт экспорта в Старк из Нанокада устроен. Толщина/высота в свойствах объекта зашиты, а остальное, что не влезло - в слои. Мой список слоев в результате выглядит так:И это я еще не все параметры туда затолкал, из тех, что хочется. Бедный нанокад тормозит, просто открывая список этих слоев. А фильтры слоев его иногда вообще роняют. Даже скопировать нагрузки с этажа на этаж - и то проблема в такой каше. Кто хочет себе так же - пусть никогда не создает собственные объекты.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Т.е. Вы можете править код в любой версии студии, но придется выбрать старую версию компилятора (я так думаю, может еще с настройками придется повозиться). Последний раз редактировалось nickname2019, 27.09.2021 в 09:26. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
----- добавлено через ~1 мин. ----- Это может пригодиться для удобства ввода-вывода. Собственно, проект можно делать на нескольких языках. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Их же еще и просматривать/редактировать надо в удобном виде. Скрыть по этажам. Или раскрасить нагрузки по шкале. Или выбрать все элементы с шарнирами в первом узле. Да даже поворот сечения в стержне проконтролировать. И т.д. и т.п. Как это сделать, если работать палочками в автокаде? На эту тему тут сколько срачей было "как удобно пользовательские свойства в автокаде реализовать?" и "как пользователю использовать XData?". Нашли решение? Если нашли - пусть будет XData.
Этого мало. Например, в одном перекрытии есть участки с разными размерами сетки, разными координатами начала сетки, и разными углами поворота сетки (я так чистую сетку вокруг колонн делаю). Одно это превращает единственный тип в два десятка разных. И вместо того, чтобы ткнуть в участок, и посмотреть/исправить его характеристики, я вынужден эту городильню со слоями разводить (они, сволочи, даже в ширину списка не влазят, только на панели свойств, растянутой в пол-экрана, можно посмотреть полное название слоя). А если я вместо списка параметров буду шифровки "Тип 362" и "Тип 566" писать, мне еще придется блокнот заводить. Программа-то может по имени в посторонние файлы заглядывать, а для пользователя это издевательство получается. Последний раз редактировалось Нубий-IV, 27.09.2021 в 09:38. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Цитата:
|
|||
![]() |
|
||||
проектирование Регистрация: 16.09.2005
KZ
Сообщений: 141
|
----- добавлено через ~2 мин. -----
Нет, не то. Это все геометрическоие параметризаторы. Надо вывести текст, например в таблицу? Думаю, в Dynamo это можно реализовать, в Ревите же спецификации есть. Написать чистый код на Python? Точно есть, можно блоки кода вставлять. А уж геометрическая (графическая) модель нужна точно. И хорошо, что параметризуемая. Если еще концепт с openBIM завязать, то вообще круто будет. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Acad|Studio
2021 Visual Studio 2019 v.16.0 2020 Visual Studio 2017 (Platform Toolset: Visual Studio 2017 (v141)) v.15.7 2019 Visual Studio 2017 (Platform Toolset: Visual Studio 2017 (v141)) v.15.3 2018 Visual Studio 2015 2017 Visual Studio 2015 2016 Microsoft Visual Studio 2012 (Update 4) 2015- 2016 Microsoft® Visual Studio® 2012 (Update 4) 2014 2010 SP1 2014 2010 SP1 2012 2008 SP1 2011, 2012 2008 SP1 ----- добавлено через ~1 мин. ----- Цитата:
Autocad - только как графический редактор для ввода и вывода. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Ну так команды в виде ObjectARX расширеня для этого написать. Это верно. Но только не решатель в виде .arx
----- добавлено через ~3 мин. ----- Цитата:
----- добавлено через ~8 мин. ----- Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Вообще очень странно пытатся делать опенсорс обмазовшись со всех сторон проприетарным дорогущим софтом. не получится |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Я игрался в ObjectARX, слепил несколько простейших команд типа суммы объемов, на прошлой работе. Акадов там был зоопарк - от 2008 до 2016. Никаких изменений в исходники для сборки под разные версии вносить не приходилось, только перенастроить проект. Что было создано под 2008 - собралось и под все версии до 2019, и под x32, и под x64.
Были только легкие пляски с бубном при настройке. Например, одна из версий была завязана на библиотеки MFC, а в бесплатной студии их не было - там помогло просто объявить несколько переменных, на которые линкер искал ссылки. Или для сборки версии 2008 в более поздних студиях я подменял в заголовке DLL версию линкера, чтобы автокад разрешил загрузку. Но это все не касалось кода. Просто SDK для определенной версии акада требует определенную версию студии, иначе при компиляции будут сплошные ошибки в заголовках самого SDK, они там постоянно от новых компиляторов новые фишки тянут, видимо. И статические библиотеки в составе SDK соответствующей версией линкера собраны. При этом в справке по SDK в каждой новой версии есть раздел про новое и удаленное старое. Если залезть глубоко, возможно и в коде придется разные версии делать, но на уровне создания простых пользовательских команд я с этим не столкнулся. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
1. Делается опенсурсная расчетная библиотека,которую можно приаттачить к любому проекту. 2. Для визуализации, разработки и отладки используется самый популярный граф. редактор - autocad. Это позволяет вовлечь в отладку и тестирование максимальное количество людей. 3. С учетом сложившейся ситуации, исходный код, написанный даже под Autocad несложно портировать на Nanocad, Bricscad и т.д. 4. Т.е. проект не привязывается с софту, а только его использует. ----- добавлено через ~6 мин. ----- Цитата:
Видимо, по ходу разработки код нужно периодически тестировать на соответствие новым версиям студии. Не хочется писать для новых автокадов, так как привлекаемое сообщество уменьшится. Последний раз редактировалось nickname2019, 27.09.2021 в 10:25. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Расчетный код на c++ будет намного быстрее + его можно скопипастить из gmsh. Математику нужно писать на c++, может быть с применением ассемблера на перспективу.
надо подумать, как это сразу сделать. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Мультифронтальный метод решения надо запускать в нескольких потоках (по количеству физических процессоров).
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~6 мин. ----- Пусть они немного медленне будут работать чем нативный си. но так будет сэкономлена уйма времени на разработку Последний раз редактировалось румата, 27.09.2021 в 11:36. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Надо будет протестировать. Разница во времени может быть огромна. c++ библиотек тоже много.
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Я уже тестировал. Нет там никакой огромной разницы. Все эти библиотеки по сути обертки над давнишними фортрановскими библиотеками. По моим тестам OpenBLAS был самым медленным. .net обертка над IntelMKL, SCiPy/NumPy. Julia примерно одинаково по скорости работают.
----- добавлено через ~10 мин. ----- http://fseps.blogspot.com/2017/02/blog-post.html Последний раз редактировалось румата, 27.09.2021 в 12:25. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
https://gitlab.com/libeigen/eigen
Вроде у них были решения для разреженных матриц (чтобы не оптимизировать нумерацию узлов и не уменьшать размер ленты). Также подозреваю, что они матрицы раскладывают с использованием видеокарты. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~22 мин. ----- Видеокарты, реально ускоряющие решение на числах с плавающей запятой двойной точности стОят непомерно дорого. Не стОит этим обольщаться. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
Цитата:
Цитата:
У Вас уже команда собралась. румата пускай решает одну задачу на С#, а nickname2019 на С++. Потом как румата решит nickname2019 перепишет на С++ или наоборот. Языки очень похожи. И вообще мне кажется основной проблемой и там где реально придется по шевелить серым веществом это будет математика. Считать вес линии, ее цвет и название слоя, нарисовать линию или еще что - это все ерунда. А вот царица наук... |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
только базовым синтаксисом похожи очень) Например, в .Net - массивы постоянные (можно только создать новый массив и туда скопировать из старого), строки постоянные (там вообще прикручен механизм хеширования) и т.д. Ну и отсутствие множественного наследования (хотя в последних версиях языка что-то начали делать в этом направлении, насколько видел)
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
очень даже есть, но .Net управляемый язык и управления ресурсами пытается брать полностью на себя. Т.е. есть, например, базовый класс работы с массивами Array и там есть метод изменения размерности массива Resize. Но на самом деле под "капотом"
Код:
----- добавлено через ~12 мин. ----- Цитата:
Код:
|
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
От того, что аллокатор маскируется, и заворачивается в объект класса, он не перестаёт быть аллокатором. Только паразитные затраты увеличиваете.
__________________
Keep it simple, stupid. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
В любом случае, если нужна именно скорость вычислений - имхо, .Net съест часть ресурсов из-за идеологии управляемого кода. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Ну и пусть себе ест. Зато удобно, безопасно, а главное высокопроизводительно с точки зрения написания кода. Да и для современных ПК это съедание ресурсов уже не кртитично. Обращение матриц все равно будет происходить +-одинаково, а накладные расходы по формированию и управлению массивами данных это плата за удобство программирования.
С++, ассемблер - инструменты всеж для профессиональных программистов, коих в этой теме, думается, нет совсем. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Остается решить как вносить изменения в "проверенный" код на сайте.
Варианты: 1. Каждый вносит имзенения код на GitHub, потом изменения объединяются через функционал GitHub (это не сложно для обычного юзера, который нашел ошибку в расчетном и хочет немного поправить код?). 2. Каждый размечает специальными метками места, где он вносил изменения, специальной программой код будем периодически объединять в "главный" файл. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Вот что что пишет создатель AlgLib по поводу использования сторонней библиотеки для решения задач линейной алгебры https://www.alglib.net/articles/a001_alglibandmkl.php
|
|||
![]() |
|
||||
Регистрация: 22.09.2012
Сообщений: 431
|
Цитата:
Предлагаю тебе как автору задачу разбить на подзадачи и изложить что ребуется, т.е. чтобы участнику оставалось реализовать код зная конкретную задачу. 2. Можно спросить о среде разработки - IDE? Я так понял что пишешь на чистом С++? 3. Хорошо бы было определится с библиотеками которые ещё ужны, как советовали другие и на основании их уже реализовывать задачи. Можешь проанализировать или кого-то подключить кто знает. Или все на cmath писать вручную? Может получиться зоопарк. 4. Я бы мог помочь написать часть кода зная задачу. Если есть возможность делегировать часть кода - пиши в личку. С уважением, |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
По результатам анализа ситуации напрашиваются следующие выводы (предварительно): 1. Вся математика написана до нас (кроме проверки конструкций по нашим СП). Есть несколько законченных проектов, которые имеют открытый исходный код. Улучшать можно, но это отнесем "на потом". 2. Работа сводится к выбору существующего проекта с открытым исходным кодом для его локализации. 3. Мне пока нравиться gmsh (импорт из gmsh поддерживает SCAD, вероятнее всего это оптимальный "донор" для кода). Я пока пытаюсь разобраться как его скомпилировать и зпустить на исполнение в одной из версий Microsoft Visual Studio. (прошу понять меня правильно, мое время ограниченно, и я не могу на 100 процентов себя посвятить этой задаче) Если кто-то разберется как это сделать (какие настройки поставить и т.д.) и поделиться этим с сообществом, было бы прекрасно. Сайт: https://gmsh.info/ P.s. вообще, видимо, нужно с функционалом gmsh ознакомиться. Я раньше с ним не встречался. Последний раз редактировалось nickname2019, 28.09.2021 в 14:08. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Навскидку пара проблем с ним:
Еще из открытого знаю Elmer FEM - аналог Ансисов/Комсолов и т.п. - мультифизика. Есть механика, теплотехника, электростатика и т.п. Есть забавные фишки, типа адаптивных сеток, которые в процессе решения под градиенты уточняются. Есть и линейные решатели, и нелинейные, и API под пользовательские типы КЭ. Были и глюки - в многопоточной версии нарушалась синхронизация записи результатов, и получались битые файлы, с секциями, записанными не по порядку; при слишком большом числе шагов по времени переполнялся счетчик номеров файлов данных и расчет прерывался. Исходники не смотрел, там может оказаться фортран. |
|||
![]() |
|
|||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
Цитата:
Функционал у него незатейливый построенный на основе скриптов на собственном языке. Множество примеров скриптов находится в архиве с исполнительным файлом. Есть библиотечки для работы с ним из питона и пр. ЯПов. ----- добавлено через ~2 мин. ----- Цитата:
Не заметил у себя такого. При правильно созданном скрипте очень быстро работает даже на внушительного объема геометрии. ----- добавлено через ~9 мин. ----- Цитата:
----- добавлено через ~10 мин. ----- Так и никто не может. просто без головного разработчика, который будет координировать разработку между исполнителями ничего не получится |
||||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Просто для него примеры под электрику на сайте лежали, сейчас еще добавили пример с теплотехникой. А вообще там записывается произвольное уравнение МКЭ формулой, и решатель с ним разбирается. Кому нужна механика - можно добавить механику. Входной язык, правда, там наркомановский, и документации негусто.
Формально у него есть родной решатель - GetDP, и возможность подключить свой. Плюс есть постобработка - просмотр результатов и какие-никакие фильтры для обработки результатов. Теоретически можно и его вместо автокада как редактор и визуализатор по первости использовать. Однако, так и есть. Проверил на простейшем тесте - все быстрое. Видимо, это я от каких-то очень старых версий тормоза запомнил. Последний раз редактировалось Нубий-IV, 28.09.2021 в 15:49. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Наверняка также есть уже написанные процедуры генерации локальных матриц жесткостей отдельных КЭ (открытый код). |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Ничего не нужно копипастить. Просто написать дополнение для автокада или нанокада или брикскада или чего еще для генерации файлов .geo на основе контурной геометрии созданной в графических редакторах.
Цитата:
Есть, но они все, преимущественно на фортране (как в книжках по МКЭ), реже на питоне. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
----- добавлено через 41 сек. ----- Цитата:
P.s. Вот ссылка с примером работы с библиотекой Eigen https://habr.com/ru/post/271723/ |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Да хоть как запускать. Можно открыть руками через графический интерфейс GMSH.
Да, ничего сложного в этом нет. Крутого мало. Пока только один метод генерации сетки реализован. Да, спасибо, я это давно видел. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
После некоторого размышления над комментариями, проект, видимо, будем делать на Visual Studio 2019.
Желающим присоединиться к проекту старые версии студий найти может быть трудно. Т.е. результирующий проект будет совместим с Autocad 2021. Результирующий вариант потом перекомпилируем под другие версии. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Похоже, никакие вообще не надо. В свежескачаной VS2019Community (16.11.3):
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Создал тестовый проект:
https://github.com/chaosEagleOwl/source Проект создан пока для тестирования возможности совместной разработки. В проекте прописаны пути из учета, что Visual Studio 2019 установлена на диске C: Чтобы не думать о том, как назвать проект, название принято по умолчанию- ArxProject1. В проекте три каталога: VS2019(c++)ac2021- проект для Visual Studio 2019 и Acad 2021 ArxLib - библиотеки arx. common - это для общих модулей в случае, если будут компилироваться исполняемые arx для других версий графического редактора. Чтобы не возникали проблемы с локальными путями локальный репозиторий думаю лучше хранить как C:\GitHub\ Таким образом, после синхронизации с GitHub, локальный путь к проекту должен быть C:\GitHub\source\VS2019(c++)ac2021\ArxProject1\ArxProject1.sln До начала работы, думаю, следует установит ObjectARXWizard Путь для запуска установки (после синхронизации): C:\GitHub\source\ArxLib\ObjectARX_for_AutoCAD_2021_Win_64bit_dlm\ObjectARXWizard2021.msi После запуска установки в качестве пути для SDK следует указать: C:\GitHub\source\ArxLib\ObjectARX_for_AutoCAD_2021_Win_64bit_dlm\ (если указать другой путь - наверняка не найдет библиотеки при компиляции) Для возможности отладки командой _appload в список автозагрузки Autocad должен быть добавлен файл: C:\GitHub\source\VS2019(c++)ac2021\ArxProject1\x64\Debug\ArxProject1.arx Для тестирования реализована только команда (из командной строки) - MYHELLO которая приветствует мир. Желающим присоединиться к проекту можно пробовать устанавливать GitHub и тестировать возможности запуска и компиляции. Можно также посмотреть настройки проекта, покритиковать, может что-то поправить надо. Последний раз редактировалось nickname2019, 30.09.2021 в 09:56. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
почитай про gitignore - Debug'у в репозитории не место
для примера https://github.com/triroakenshield/R...ter/.gitignore |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Поправлю. Также добавил библиотеки objectarx в полном составе. Это, наверно, не самая удачная идея, но это должно обеспечить совместимость путей + простое обновление в случае, если библиотека поменяется. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
А в проекты на плюсах NuGet пакеты не подтягиваются, что ли?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Я просто не работал с #Net.
Планируется: на objectarx будет писаться только интерфейсная часть (взаимодействие с граф. редактором), а расчетные процедуры могут быть запакованы в *.dll и подключены к #Net. На c++ оказывается проще брать и модифицировать сторонний исходный код (в основном математика написана на c++). Кроме того, отдельные модули можно писать на #Net, если кому-то так удобнее. Если кто-то желает создать интерфейсную часть на #Net, я не против. Код можно писать параллельно. Нужно создать второй каталог и в нем решение на #Net. Потом гитхабом синхронизируем с основным каталогом. На #Net я не смогу эффективно писать. Если кто-то желает создать проект на других языках - также можно создать другой каталог и в нем работать. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
При создании проекта я не включил поддержку #Net и не включил поддержку COM.
Думаете, нужно пересоздать решение и включить поддержку Net и COM? (в настройках проекта наверно будет очень трудно это поменять). Пока, наверное, оставлю как есть. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Может, это просто кривые руки... Я сижу под бесплатным пятым нанокадом, и автокадовская версия мне не интересна. Я проверил возможность собрать это все под нанокад в двух версиях студии. В обоих случаях до моего кода дело не доходит - сотня ошибок набирается прямо в SDK, и компиляция останавливается.
VS 2019 Community не желает собирать даже пустой проект (в котором есть только точка входа в dll и ничего больше) - идет сплошная ругань на SDK-шные заголовки (они предназначены в оригинале для VS 2008). Например, "fabs не найдена в пространстве имен std". Если по советам из гугла сделать "std { #include <stdlib> }", то появляется противоположное требование - "operator new не может быть переопределен в std". И таких сообщений там сотни. VS 2008 Express до сих пор доступна для скачивания с сайта Microsoft. И пустая DLL под автокад, с заголовками из ObjectARX 2011, в ней собирается без проблем. Но для нанокада опять фокусы с заголовками SDK - как минимум в одном из них классы определяются с использованием CStringW; в других есть ссылки на "afxwin.h". Как я понимаю, это значит, что для сборки нужна VS 2008 Professional, с библиотеками ATL и MFC. Можно в opensource-проекте иметь ссылки на коммерческие библиотеки, которые сегодня, похоже, и купить уже нельзя? |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Мы пишем не бесплатное, а максимально открытое рабочее ПО. Или мы напишем полностью открытое и бесплатное, но не рабочее ПО. Nanocad раньше предоставлял бесплатную лицензию на Nanocad для разработчиков ПО (и SDK). Вы уверены, что нет смысла переходить на Nanocad более новой версии? P.S. Может проект перезамутить на Nanocad 10? Последний раз редактировалось nickname2019, 30.09.2021 в 14:33. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Зачем? Все равно его надо собирать под разные версии. В моем наборе команд была папка с исходниками (одна-единственная, неизменная), и несколько файлов VS-2008.sln, VS-2012.sln, VS-2017.sln, VS-2018.sln, VS-2019.sln, в каждом из которых были свои настройки для акадов с 2005 по 2019, в каждом по несколько проектов, для всех поддерживаемых версий. Тут можно сделать так же, только еще и под нанокад настройки добавятся (теоретически они должны те же исходники переваривать, только я это еще не проверил, у меня студии не Pro).
Вот так оно должно выглядеть: "Портирование С++ приложений на платформу nanoCAD, использование страниц свойств проекта" Последний раз редактировалось Нубий-IV, 30.09.2021 в 15:10. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Может версию студии понизить? |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Исходники должны оставаться одними и теми же (по крайней мере, так обещают). А студию каждый может использовать какую хочет. Точнее, какую надо под свою версию акада или нанокада (у меня, видимо, обязана быть 2008pro). Просто можно накидать несколько файлов SLN рядом, каждый под свою версию студии.
В моих командах единственная вещь, которую пришлось сделать в исходниках - поставить в общем заголовке условную компиляцию, подменяющую один-единственный тип данных, который при смене версий в ObjectARX поменялся: Код:
Кстати, по ссылке выше описано использование страниц свойств для быстрой подмены настроек проекта. Если у каждого будет своя локальная страница свойств, можно не привязываться и к конкретным путям и версиям ObjectARX или автокада. А возможность один локальный файл настроек не синхронизировать наверняка есть у гитхаба. Последний раз редактировалось Нубий-IV, 30.09.2021 в 15:37. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Т.е. делаем так, чтобы при редактировании каждым исходного кода каждым из своей версии студии редактировался каждый раз один и тот-же общий для всех студий файл. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Еще тонкость была. Все версии у меня собирались в студиях Express и Community. У них, в отличие от Pro, в комплекте нет библиотеки MFC, а ссылки на нее кое-где из ObjectARX есть (в палитрах, или еще где - не знаю, не добирался туда). И некоторые версии ObjectARX из-за этого не собирались, даже если я не использовал MFC явно. Причем компиляция проходила, а компоновщик останавливался, ссылаясь на пару не найденных символов. Помог трюк - эти переменные я объявил сам в файле StdAfx.cpp, и компоновщик стал использовать их. Компиляция на бесплатных версиях студий пошла. Кто для тех же версий ObjectARX будет собирать - может сделать так же.
Код:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
А диалоги на чем будем делать?
P.S. В древности я диалоги делал на дельфи, закидивал в dll, делал функцию вызова диалога внутри dll и вызвал как эту функцию из c++. Но имхо, это не наш метод. Мы не должны множить сущности, тем более микрософт мфс поддерживать вряд ли прекратит. Последний раз редактировалось nickname2019, 30.09.2021 в 17:29. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Ладно. Будем делать без mfc. А там как пойдет.
P.s. На горизонте замаячили скрипты и командная строка. Может быть, так и лучше. Последний раз редактировалось nickname2019, 30.09.2021 в 18:54. |
|||
![]() |
|
||||
Расчетчик Регистрация: 30.09.2011
Ростов-на-Дону
Сообщений: 1,051
|
Всю тему не читал. Автору советую обратить внимание на Code Aster. Мощный решатель. Где-то даже находил пользовательские плагины для него по подбору армирования по EN.
Там по сути и препроцессор есть Salome. Осталось только нормальное задание жесткостей и материалов и прочее сделать. ----- добавлено через ~5 мин. ----- https://code-aster.org/UPLOAD/DOC/Fo...ementsce-2.pdf |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Еще б кто рассказал по-русски как им пользоваться, куда вводить и что значат такие скрипты
----- добавлено через ~1 мин. ----- Только Qt в винде не хватало |
|||
![]() |
|
||||
Расчетчик Регистрация: 30.09.2011
Ростов-на-Дону
Сообщений: 1,051
|
Цитата:
Тут основной минус, что команды на французском. Нужно привыкнуть. ----- добавлено через ~4 мин. ----- Ещё на видосы от индусов натыкался. Если базовый английский есть, то можно разобраться. Хотя индийский английский - это нечто ![]()
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 22.09.2012
Сообщений: 431
|
Я бы тоже был за использование Qt если бы не:
1. У Qt свои специф. классы, т.е. не все могут писать на нем без освоения документации, хотя странно что кто-то пишет на С++ и не знает Qt. Вся идея то - кроссплатформенность? 2. О какой кроссплатформенности идет речь если пишется по AutoCad? Под Мак что-ли? Т.е. смысла нет писать под программу на винде и думать о кроссплатформенности. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Эх ребята..
Если уж автоматизировать то автоматизировать нужно наверное сперва самые простые задачи. типа расчетов стальных и металлических балок, с формированием расчета сечений и т.е. Причем разбить это на соответствующие этапы. 1. Определение усилий (модуль 1) 2. Расчет сечений(модули ЖБ/КМ) 3. Расчет по 2му предельному состоянию. При этом нужна какая то общая платформа для вывода информации в текстовый вид. По поводу GMSH идея конечно хорошая, но простые здания или многоэтажки, делать сетку проще по старинке в СКАДе, я уже прошел этот путь... Если нацинаешь экспортировать из Автокада в GMSH появляются не связанные грани, балки которые в уровне перекрытий могут быть не связаны с сеткой и т.е. Это все можно решить, но нужно определить в каком уровне стержень находится, определить компланарность и включить его в этот суфрейс и т.е. Для себя я решил GMSH применяю только для формирования сеток сложных поверхностей, где не получается с помощью стандартных методов. Так же его можно применять для визуализации расчетов. Например выгрузить данные из СКАДа сформировать msh файл с результатами армирования и потом создать сразу несколько картинок армирования за раз... Но вот с отображением моментов в КЭ схемах у GMSH беда, он не может отображать в классическом виде эпюры армирования.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
|||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Те, кто захотят поучаствовать смогут разрабатывать отдельные модули независимо с синхронизацией через GitHub. Для разработки расчетных функций проверки сечений глубоких знаний с++ не требуется. Объектно-ориентированное программирование предусматриваться не будет (задачи простые, ооп только все запутает). Т.е. это будет старое доброе функциональное процедурное программирование. Разработка функций проверки элементов может идти параллельно с разработкой функционала решателя. Достаточно разработать функцию с набором входных параметров (РСУ, тип сечения и т.д.), которая проверяет сечение. Эту функцию потом можно приаттачить к основному проекту или использовать отдельно. Чтобы не путаться в коде, названия функций, видимо, нужно делать по номеру СП+ номер пункта СП и номера формулы, которая автоматизируется. Если есть желание автоматизировать на VB или еще на чем-то - можно делать dll, там объявлять функцию как экспортируемую и эту dll подключать к основному проекту. Но это не рекомендуется. Также попробую загрузить каталоги проката, которые у меня есть (площади, размеры сечений, графика в файлах и т.д.). Цитата:
Цитата:
Цитата:
Последний раз редактировалось nickname2019, 01.10.2021 в 11:23. |
||||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я имел ввиду процедурное программирование Частным случаем которого, видимо, является структурное программирование. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Так ты мне обьясни пожалуйста...
1. Ты хочешь заменить СКАД и поиметь свой блэкджек с прочими атрибутами? 2. Ты просто хочешь иметь систему из которой можно спокойно выгружать в СКАД/ЛИРУ/РОБОТ?
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>К понедельнику я планирую создать несколько проектов для разных версий студий (без мфс и прочего) и загружу на гитхаб.
10 страниц до создания файлов проектов? топик обещает быть длиннее предыдущего)) >>Т.е. это будет старое доброе функциональное процедурное программирование. а нахрена с++? стильно модно молодежно? |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Также мы решили отказаться от mfc (пока так пусть будет). Т.е. концепция реально является продуктом коллективного творчества. Надежно, функционально, масштабируемо, по-стариковски. Большинство нормальных программ (в т.ч. с открытым исходным кодом, математические библиотеки, генераторы сеток, автокады, нанокады и т.д.) написаны на с++. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>чем пять минут обсуждения и тысячи страниц кода в мусор
ты фантазер)) прям тысячи страниц в мусор. запал кончится уже тут, на форуме)) >>По ветке можно отследить как менялась концепция есть коммиты, есть коменты к коммитам. отслеживать надо по ним, а не по мусору на форуме >>Также мы решили отказаться от mfc (пока так пусть будет). эти решения ничего не стоят. решать надо реальные проблемы >>Т.е. концепция реально является продуктом коллективного творчества. Современное извращенное понимание как творчества, так и коллективного >>Надежно, функционально, масштабируемо, по-стариковски. Большинство нормальных программ (в т.ч. Делай на том на чем умеешь, а не на в трендах. Так будет лучше, если ты не проф программист |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
О господи!
Господа вы бы хотя бы узнали бы что программа должна иметь сертификаты. Пройти верификационные тесты и т.е.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Реализация очень простая - делается шаблон с именами переменных, который заполняется значениями после расчета. Кроме того, на программу можно получить сертификат. Сертификат получить явно не сложнее, чем написать код. Последний раз редактировалось nickname2019, 01.10.2021 в 14:52. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Сертификаты выдаются только на соответсвие нормам РФ в части конструктивных расчетов. К математике вычисления усилий эти сертификаты никакого отношения не имеют.
Ничего не мешает любой гипотетической открытой библиотеке пройти набор верификационных тестов. Но, повторюсь, ничего общего с сертификатом, которые выдаются на строительное ПО такая верификация не имеет. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
мой вопрос про
был проигнорирован, похоже.. Ребята настолько увлеклись "чтобы было все по взрослому" (под все версии, на каком языке чтобы было круче, ветки, коммиты), что забыли - любая совместная работа начинается с ТЗ в том или ином виде: чтобы было понятно - кто что делает и чего другие участники ожидают увидеть в конечном итоге. И все это должно быть сведено в один документ - а не "размазано" по десяткам постов... |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
Потом на расчеты строительных конструкций. Практически это вряд ли выполнимо, без денежных вливаний и админтстративного ресурса.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Будет считалка - будет верификация. Просто взять любой набор примеров из любого коммерческого ПО и прогнать. А сертификация пусть идет боком. Выполнение конструктивных расчетов просто нужно сделать с открытой трассировкой, т.е. исключить закрытость нормативных расчетных алгоритмов.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Т.е. можно с понедельника потихоньку автоматизировать отдельные расчетные задачи по подбору сечений с составлением отчетов и ими можно уже начинать пользоваться по ходу дела. Потом подтянется КЭ-решатель + сбор РСУ. ТЗ как таковое будет составляться в процессе. Конечно, неплохо бы было иметь какую-то автоматизированную систему, где можно бы было написать задачи, которые стоят перед разработчиками, чтобы желающие могли бы решить те задачи, которые хотят решить. Задач может быть много, начиная от оформления кнопок панелей инструментов или ленты. Фактически может сложиться ситуация, что несколько человек делают одну задачу, что приведет к дублированию работ (и проблемам с объединением в единый проект, ибо непонятно какое решение лучше). Т.е. ТЗ в данном случае может выглядеть как список задач. Отсюда вопрос - в какой программе можно расписать стоящие задачи, чтобы она позволяла брать исполнителю ту задачу, которую он желает? Типа открытого общественного таскменеджера. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~3 мин. ----- https://www.office.com/launch/excel?...U&rs=RU&auth=1 |
|||
![]() |
|
||||
Ты можешь ходить как запущенный сад,
А можешь всё наголо сбрить, И то и другое я видел не раз, Кого ты хотел удивить ? (c) Искренне желаю всем заинтересованным участникам успеха, но я был свидетелем таких начинаний не один раз. Ни в одном из случаев ничего путного, увы, не получилось ... Но поживем - увидим. |
||||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Оно не удивительно, что ничего путного не выходит, удивительно будет, если что-то путное действительно выйдет. Не будьте просто свидетелем - присоединяйтесь в меру своих возможностей. У Вас достаточный багаж знаний и опыта для этого. Творите историю, так сказать
![]() |
|||
![]() |
|
||||
Цитата:
![]() И они не вполне приемлют предлагаемую идеологию ... О как, ни больше, ни меньше ![]() |
||||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Я полностью согласен с zamtmn и Сергей812, параллельно с форумом, надо весть онлайн блокнотик. Так что бы доступ на чтение имели все, а редактирование избранные. Без технического задания тяжело работать. В любом случае, как бы участники не рвали тельняшки, и не рвались в бой, данный поход за славой будет долгий! Краткое техническое задание, разбитое над подпункты просто необходимо, это как ориентир для движения(что бы народ не расползся по своим хотелкам). Там напротив каждого пункта, впишете имя героя кто будет ее решать
|
|||
![]() |
|
||||
Инженер Регистрация: 20.01.2016
Сообщений: 309
|
Господа, я тут с первого сообщения, но у меня так и не сложилось понимания, чего вы в точности хотите.
nickname2019, огромная просьба к вам как ТС, подбивайте, хотя бы в шапку темы, промежуточные итоги и задачи. Цитата:
Как выглядят исходные данные для расчета? Отчет планируется формировать как в #198? С помощью чего он сформирован? Если в дальнейшем планируется прикрутить КЭ-решатель, значит расчет должен выполняться для каждого конечного/конструктивного элемента. Для каждого из них планируется выводить аналитический отчет с формулами? В случае чего, прошу извинить мое невежество. Чукча совсем не программист. ![]()
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004 |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Удалось собрать и заставить работать под бесплатным нанокадом мою старую подборку команд для автокада. Тест на собираемость в целом пройден, хотя и с оговорками.
Если есть еще братья по халяве, краткая инструкция: Visual Studio и SDK:
Последний раз редактировалось Нубий-IV, 01.10.2021 в 17:12. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Тогда при создании проектов я не буду отключать MFC. На размер конечного файла это не повлияет. Мы можем просто им не пользоваться.
|
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Что за дела? Содержимое windows.h не завёрнуто в #ifndef ?
__________________
Keep it simple, stupid. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Т.е. мы пишем программу. Пишем, в основном, на с++. Я бы хотел, чтобы к разработке мог подключиться любой желающий через GitHub. Для этого я к понедельнику постараюсь подготовить исходные коды проекта для разных версий студий и загрузить их на PornHub GitHub ![]() Желающей должен самостоятельно скачать и установить одну из доступных ему версий студий и библиотеки для взаимодействия с граф. редактором. Это будет описано в шапке темы. В шапке будут приведены ссылки на нужные ресурсы. Цитата:
Цитата:
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Я не знаком со стандартом "подглядывать за чужими подключениями, и командовать ими". Когда файл сам выключается, если обнаруживает повтор - знаю. Допускаю, что у авторов MFC были на это причины. А для нас это значит, что в коде под разные кады будут различия. Автокад не подключает этот заголовок сам, а нанокад - наоборот, запрещает подключать. Значит, уже пора давать название библиотеке, кад-проекту в ней, и договариваться о дефайнах, которые будут в настройках проекта.
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
шикарное ТЗ. Наверно, ветку пока ещё читают опытные расчетчики без навыков программирования - и их просто выкидывают за борт: каждый "конструктор-программист" реализует свое виденье расчетов и не более того...
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я сейчас пытаюсь решить проблему с совместимость проекта с Autocad 2015-2021. Для ТЗ нужно придумать типы данных и набросать пример расчета какой-нибудь, чтобы можно было его обсудить и дальше по-аналогии делать. Upd: по состоянию на текущий момент (02.10.2021) проект подготовлен для разработки для следующих версий: ...\source\VS2012(c++)ac2016\ - папка с проектом для Visual Studio 2012 и Acad 2016 ...\GitHub\source\VS2015(c++)ac2018\ - папка с проектом для Visual Studio 2015 и Acad 2018 ...\GitHub\source\VS2017(c++)ac2020\ - папка с проектом для Visual Studio 2017 и Acad 2020 ...\GitHub\source\VS2019(c++)ac2021\ - папка с проектом для Visual Studio 2021 и Acad 2021 У этих сборок общий файл acrxEntryPoint.cpp, т.е. содержательная часть кода будет общая. Также общим я сделал файл resource.h. Можно пробовать подключаться, компилировать и проверять на наличие ошибок компиляции. Обязательно нужно прочитать файл readme.md на GitHb для правильной настройки путей. Последний раз редактировалось nickname2019, 02.10.2021 в 18:04. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Для сборки понадобилось дополнительно подключить "extension.h" из include\nrxgate - это файл из нанокадовского SDK, без него InitAcUiDLL() не опознается. Таки нужен способ способ в исходниках отличать сборку под акад от сборки под нанокад.
Несколько вопросов к тем, про программирует по-большому:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я думаю, что не нужные библиотеки можно попробовать отключить от загрузки. Может попробовать воспользоваться .gitignore, чтобы прописать пути к библиотекам, которые игнорируются? Или воспользоваться импортном части репозитория https://pro-prof.com/forums/topic/git-subtree (кажется, там нужно действовать командами через консольную программу GitHub). Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Формально библиотеки Autodesk нельзя использовать для разработки под NanoCad и т.д., но это согласие подписывается при вступлении в "клуб разработчиков". В этом смысле, на общем репозитории совместно размещать библиотеки от Autodesk и других вендоров, пожалуй, не стоит. Кто хочет что-то свое не под автодеск - тот пусть действует исключительно на свой страх и риск. Последний раз редактировалось nickname2019, 03.10.2021 в 08:25. |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
В суде сможешь это доказать? "Бережёного Бог бережёт"
__________________
Keep it simple, stupid. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
nickname2019, кстати - а собственный скриптовый язык будете интегрировать в проект?
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Управление расчетным ядром можно выполнять с использованием графического интерефейса или скриптами. Я думаю, нужно сначала создать ядро, потом уж думать как им управлять. В конце концов, можно использовать стандартные возможности. ----- добавлено через ~2 ч. ----- Цитата:
Это, видимо, создаст некоторые проблемы, так как придется отдельно скачивать и устанавливать библиотеки, но , наверное, это правильно. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
ТЗ на модуль формирования КЭ-сеток сформировано и помещено на GitHub. (ТЗ рекомендуется читать в Word'е).
На весь комплекс ТЗ формировать долго, видимо, будет чуть позже. Сформирован дашборд для управления проектом, туда добавлены наиболее актуальные задачи. Задачи проекта. Последний раз редактировалось nickname2019, 04.10.2021 в 22:38. |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Цитата:
__________________
Keep it simple, stupid. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
----- добавлено через ~1 мин. ----- Спасибо. Видимо, я плохо прописал пути для игнорирования отдельных папок для синхронизации (нужно исключить все папки _debug). Нужно еще разбираться. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Чтобы избежать этой проблемы создал папку Net (без точки в начале). К сожалению, я не писал под Net, поэтому будет трудно создать рабочий проект с нужными настройками. Поэтому директория пока пустая. Последний раз редактировалось nickname2019, 05.10.2021 в 12:21. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Цитата:
Код:
Потому что если обсуждалась "библиотека" или "модульность" - то структура каталогов сейчас для этого очень странная. Многоязычная библиотека подразумевает папку с библиотекой МКЭ (и в ней подпапки плагинов импорта-экспорта в разные форматы); промежуточную библиотеку описания геометрии в своей папке (потому что начерченное в автокаде, например, не совпадает с тем, что передается в GMSH - нужен анализ и преобразование геометрии), к ней же - api под шарпы, питоны и язык текстового описания геометрии, позволяющий в блокноте в десять строк задать расчет серийного здания; библиотеку форматирования результатов (с плагинами под html, rtf, dxf и т.п.). И отдельно - ARX модуль; вот на него сейчас происходящее и похоже. Но, пока в нем нет вообще никакого реального содержания - непонятно даже, зачем замусоривать репозиторий всеми возможными вариантами пустых проектов (да еще и содержащими копии одних и тех же файлов)? По-моему, надо структуру программы определить, да начать заголовки с функциями накидывать. Будут у нас, например, суперэлементы для перекрытий (или вообще библиотечные суперэлементы с заранее обращенной матрицей для сверхбыстрого расчета панельных зданий)? Или режим заморозки части схемы, позволяющий не пересчитывать не менявшуюся геометрию? Нестандартные КЭ для расчета ребер (а не городильня из несовместимых стержней-с-вставками-под-оболочкой)? Элемент надколонного участка с логарифмическими функциями формы? Узлы с пользовательским набором степеней свободы? Смешивание расчетов на разных сетках? И т.п. От этого зависит API и возможности расширения в будущем. Следом - например, минимально работающую версию, которая отдельно взятую конструкцию сумеет обработать (балку, или плиту), пока с заглушками под еще нереализованные части. И только с этого момента получится что-то на исполнителей раскидать, когда заготовки под работу уже будут. А если придет кто со своей версией акада-R14, брикскада или еще чего - так пусть создает проект да подключает исходники. Сомневаюсь, что даже на уже созданные проекты прям ща слетятся сотни желающих попрограммировать. |
|||
![]() |
|
||||||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
На данном этапе - генератор сеток как прописано в ТЗ + автоматическое задание нагрузок (ТЗ пока не готово). Если полученную сетку экспортировать в SCAD - это само по себе может существенно снизить трудоемкость.
Цитата:
Цитата:
Были созданы несколько проектов для простой компиляции для нескольких версий Autocad. Это намного проще, чем писать для одной версии Autocad, потом заниматься переносом проекта на другую версию. А если выпускать релизы с 2015 по 2021 autocad, то желающих протестировать будет много больше, чем если выпустить тестовый релиз под одну версию. Цитата:
Цитата:
Цитата:
Это бессмысленно для ЖБК. Пластика там все пики выравнивает. Да. Тип, который описывает степени свободы в узле должен содержать не только вектор типа double, но и ссылку на структуру, которая описывает, какую именно степень свободы описывает каждый элемент вектора. Это нужно, чтобы в одной схеме не путать механические КЭ и КЭ, которые, например, считают теплопроводность. Т.е. каждый КЭ должен проверять к тому ли типу узла он присоединен. Цитата:
Цитата:
|
|||||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~8 мин. ----- А как будут осуществляться фиксации(коммиты)? Наверно стоит дать права для этого участникам проекта. Для добавления меня в команду разработчиков найдите на гитхабе пользователя rumata-ap. Последний раз редактировалось румата, 05.10.2021 в 14:54. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Если что-то не работает - скажите, что делать. Я пока не сильно разобрался в GitHube. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Я, конечно, не программист, но... Я это тз воспринимаю как "пользовательское" - по нему заказчику работу сдают. А "программисткое" жду в виде h-файла, где объявления функций или классов приведены. И тогда программисту нужно в соответствующий cpp-файл реализацию сделать.
Цитата:
Цитата:
Вопрос даже не в том, сделаем ли мы их прямо завтра. А в том, сколько узлов бывает у КЭ. То есть это опять вопрос про определение класса КЭ в заголовочном файле. Без него никто не приступит к программированию. Это просто еще один пример элемента с более чем четырьмя узлами. Так же, как и ребро плиты. Или панель в панельном здании. Или свайное поле с учетом взаимовлияния свай. Сейчас их пытаются собирать из каких-то жестких вставок, эксцентриситетов и т.п. - т.е. из более простых вещей, которые уже есть в библиотеке КЭ. В Старке, например, ребра работают только на тестовых задачах с таврововой балкой, и идут вразнос на сложных схемах. Подозреваю, что, имея шестиугольный элемент тавровой плиты с ребром, можно убрать эти глюки с пилой на эпюре моментов и несуразными продольными силами. Например, расчет грубой схемы всего здания и мелкой для одного типового перекрытия. Опять же, не прямо сейчас, и даже не обязательно вообще. Но это опять вопрос к заголовкам и определениям в них. А теплотехника разве предполагается? В механике я про другое: сейчас в расчетных программах есть глобальный тип системы, который определяет набор степеней свободы. Пространственная схема генерирует узлы с 6 степенями свободы, и заставляет пользователя удалять ненужные. Старк, например, реально не будет считать схему со свободными направлениями, все неиспользованное надо закреплять вручную. Если же для узла выбирать степени свободы отдельно (а не как у всей схемы) - проблему можно снять, и добавить сообщения об ошибках, если к узлу присоединен элемент, требующий отключенные степени. Но это опять - не требование, а только пример того, что без h-файла с определением класса узла никто не сможет ничего начать писать. |
|||
![]() |
|
|||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Так как код c++ и .Net похож, наверняка логическую часть будет несложно переносить туда-сюда. Цитата:
Т.е. степень свободы определяется - именем степени свободы (CString); - фактически это будет ссылка на уникальный тип КЭ, а не значение для каждого узла; - значением (double). Цитата:
Цитата:
Т.е. тип "глобального" узла определяется типом узлов конечных элементов, которые к нему примыкают. Каждый КЭ дает вклад в ту степень свободы глобального узла, на которую он действует. Т.е. степени свободы глобальных узлов определяют типы КЭ, которые к нему примыкают. После того, как мы создали КЭ-сетку с определенными типами КЭ, типы глобальных узлов с нужными степенями свободы можно сформировать автоматически. Это значит, что в расчетной схеме можно "путать" как плоские, так и пространственные КЭ, они не будут друг-другу мешать (хотя для исключения "странностей" этого делать не стоит). Т.е. если два плоских КЭ элемента соприкасаются в общем узле - очевидно, что этот узел тоже будет "плоским". Щас думаю, как описать эти типы данных. Последний раз редактировалось nickname2019, 05.10.2021 в 16:19. |
||||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Цитата:
Цитата:
Тот же вопрос - дальше. Если следующий пункт в ТЗ будет "команда читает сетку и возвращает изополя в виде полилиний" - то это работа на одного человека, с одним языком, и все типы данных он придумывыает сам, потому что ни с кем не контактирует. А если еще и третья команда будет - по изополям дать отчет, то получится окончательно лироскад на базе автокада. Где тут автоматизация? Здесь совсем нет мелких библиотечных функций, через которые потом лисперы, шарперы и плюсера смогут "подбирать сечение балки". И соответственно, нет мелкой работы, которую смогли бы выполнить решившие немного поучаствовать - тут только большие объемы на одного. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Че за танцы с бубнами, есть же FreeCAD в который уже встроен GMSH как плагин.
Там правда пайтон как внутренний скриптовый язык, но за то есть огромный плюс, можно библиотеки с помощью танцев с бубнами подцеплять.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
по простому - это когда взял и вызвал с аргументами, а не надо еще оборачивать функцию в код подготовки аргументов к тому виду - который может воспринимать эта функция. Вообще не вижу - что была попытка обсуждения API будущих библиотек, т.е. каждый реализует в меру своих привычек и представлений. Ну тогда можно было просто выкладывать по отдельности в раздел готовые программы, зачем заниматься имитацией коллективной разработки... |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
В Net-папке будут хранится исходный код .Net-плагинов к автокад и, надеюсь, код оберток нативных си-библиотек. Плагины вполне могут различаться по исполнению и форме, но функционально будут индентичными. Ничего плохого в этом не вижу.
----- добавлено через ~5 мин. ----- Цитата:
----- добавлено через ~9 мин. ----- Смысл все равно есть. Актуальная версия исходного кода всегда под рукой. Кроме того, исходный код можно ветвить и создавать различные варианты реализаций в рамках одного проекта. Но все равно некоторые соглашения в базоых алгоритмах, в наименованиях пространств имен, функций и переменных стОит закрепить. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Читаю и офигиваю. Критики полно. Все спецы просто в пятом поколении, все знают, все советают, nickname2019 дай это, nickname2019 сделай то, но сами ничего не делают. А как он Вам сделает если он выступает в роли исследователя, для него все в новинку. Вот Нубий-IV ты столько умных расчетов предложил, по советовал сразу подготовить все названия функций, как вам первопроходец это даст, он сам не знает. nickname2019 - напиши им названия функции bigRedButton('plan.dwg').
Цитата:
Не нравится ТЗ дополните, распишите каждую задачу по пунктам и предложите исправление, по дискутируйте над каждым пунктом и зафиксируйте. Я думаю nickname2019 только рад будет, такой помощи. Цитата:
nickname2019 постарайтесь не обращать внимание на критику, диванные бойцы(сам такой) они это любят. Если бы zamtmn в свое время начал собирать народ и обсуждать с ним все аспекты и нюансы коллективного убийцы автокада, то кода было бы сейчас написано ровно на "hello world". Вы им и так уже все дали (репу и коротенькое ТЗ), и все обсудили с ними. Те кто хотят что то сделать, начнут сами ставить себе задачи, обсуждать их с вами, выбирать направление их решения и решать их. PS. Ни кого не хотел обидеть, если что извините. Это чисто критика критиков. nickname2019 удачи Вам! |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
только зачем тогда ТС в роли дебютирующего тимлида, если сами себе задачу поставили и сами решили на требуемом ЯП под рабочую программную платформу?)
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Хорошая новость - несколько шарп-команд, написанных под нанокад, собрались под автокад без переписывания. Единствственное, что надо было сделать - подключить другие dll в настройках проекта и добавить условную компиляцию:
Код:
Это не расчеты. Это предложения, которые противоречат ТЗ. Например, надколонный элемент возле края плиты и тавровый элемент - оба шестиузловые; как их отличить, если элементы хранятся в виде полилиний? А если даже надколонный элемент выбросить, и убрать неопределенность - как размеры ребра определить по "просто полилинии"? А элемент свайного поля - вообще не требует генерации сетки, он состоит из уже существующих узлов схемы, и такой вообще сейчас задать нельзя. Отсюда и вопрос - работаем по ТЗ и отбрасываем эти идеи сразу, или будут какие-то изменения? Это не критика, это уточнение. Соглашения о входных и выходных данных. Сначала нужно посчитать матрицу жесткости элемента и куда-то ее записать. Где и в каком виде она хранится - в XData, во внешнем файле, во временно выделенной памяти? Это массив; список; что-то еще? Это часть объекта КЭ, или отдельный объект? А решатель должен эту матрицу прочитать и вставить в глобальную матрицу. Или элемент сам должен себя туда записать? А результаты расчета я забираю в элемент, или решатель их туда заносит? Решатель разрабатывает кто-то другой. Как он сможет использовать мой КЭ, если мы с ним об этом не договорились заранее? Ответ один - ждать, пока все, кто пишет свои элементы, не напишут их полностью, и только потом начать что-то делать. То же - с тем, кто оформляет расчет: ему нужен доступ и к элементам, и к результатам; надо опять ждать, пока их не напишут. Это следующий шаг в списке дел после создания пустого проекта. И, пока он не выполнен, не будет массового подлючения участников. API - это контрольные точки, которые делят работу на части. Без них работу будет делать либо один человек, либо несколько - но тогда они просто создадут несколько параллельных несовместимых реализаций, если вообще потянут такой объем. См. файл https://github.com/chaosEagleOwl/sou...EntryPoint.cpp - там именно это и сделано. Задана единственная функция, которая запрашивает ввод, делает расчеты и оформляет результаты. Не могут одну функцию одновременно писать десять человек, даже в системе контроля версий. |
|||
![]() |
|
||||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
Цитата:
Цитата:
Начните с отдельного объекта, закончите сделайте часть объекта. Сделайте то что точно будет нужно в модуле. Цитата:
Цитата:
Нубий-IV Вы все свели к получению исходных данных, наверное это является самой сложной задачей в этом модуле. Теперь я понял почему все существующие расчетные программы такие недоработаные (с Ваших слов), они же все одночеловечные задачи. |
|||||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Матрицы жесткости (локальные суперэлементов и глобальные), видимо, нужно хранить во внешних файлах. Чтобы их заново не обращать, возможно, можно придумать их сопоставление через хэш-коды (т.е. составили матрицу, посчитали ее хэш код и сравнили с шэш-кодами ранее обращенных матриц, если они есть - берем уже обращенную матрицу, не пересчитывая). Матрицы, видимо, нужно хранить для каждого проекта отдельно. Т.е. нужно вводить глобальную переменную - имя текущего проекта и для этого проекта создавать каталог на диске. Я долго пытался найти инструмент для описания структуры программы, но ничего удобнее блок-схемы в dwg не смог найти. Т.е. в ближайшее время я постараюсь выложить блок-схему КЭ-решателя с описанием типов и код на c++. Видимо, создание структуры программы нужно вести параллельно на с++ и с формированием блок-схемы в файле dwg. Цитата:
Нашел пример решателя на .Net https://github.com/BriefFiniteElemen...iteElement.Net. Видимо, можно как-то пользоваться. Есть одно неудобство - фактически для расчета железобетона нам нужен анизотропный КЭ (ортотропный с произвольной ориентацией осей ортотропии), который бы учитывал даже в упругой стадии разность в площадях армирования по разным направлениям. Например, стены подвала работают преимущественно в вертикальном направлении и в этом направлении у них жесткость намного выше, а горизонтальная арматура должна быть меньше. Но в рамках изотропного КЭ жесткость стены везде одинакова, что может существенно не соответствовать реальности. Возникает необходимость вывода матрицы жесткости треугольного и четырехугольного КЭ анизотропной оболочки (через численное интегрирование), так как готовую мы 100% не найдем. Изотропная пластина Кирхгофа-Лява скорее всего есть в https://github.com/BriefFiniteElemen...iteElement.Net. Пример вывода пространственного анизотропного КЭ (массив) у меня где-то был. Последний раз редактировалось nickname2019, 06.10.2021 в 08:59. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>См. файл https://github.com/chaosEagleOwl/sou...EntryPoint.cpp
>>>>acutPrintf(_T("\nÂûáåðèòå îòðåçêè è ïîëèëèíèè, îïèñûâàþùèå êîíòóð ïðîäàâëèâàíèÿ: ")); разберитесь с кодировкой |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
----- добавлено через ~5 мин. ----- Цитата:
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~3 мин. ----- C помошью Notepad++ изменить кодировку на utf8 |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
![]() чтобы написать хороший быстрый вычислительный модуль - имхо, надо иметь в команде математика-программиста. А не нескольких энтузиастов-самоучек. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Исправлено.
----- добавлено через ~9 мин. ----- На хороший и быстрый и компактный вычислительный модуль нет смысла замахиваться. Не хватит знаний. Но рабочий решатель, пусть и не супер быстрый и не супер навороченный вполне можно создать без помощи математика-программиста. А вообще бываю такие хорошие и математики и программисты одновременно? |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
|
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
Уилкинсон, Райнш. Справочник алгоритмов на языке Алгол. Линейная алгебра.
Куча решателей на любой вкус. А "свободный" транслятор с плюсов имеется?
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Offtop: с одним даже вживую общался в свое время, на задачах расчета покрытия связи сидел. Такое своеобразное сочетание душевного человека и педантичного математика-аналитика-программиста. Хотя самим программированием он не занимался в явном виде - для этих целей сидело пяток обычных программистов на плюсах. Скорее программист в том смысле - что умел любую математическую задачу превратить в подробнейшее ТЗ, понятное для обычных программистов - такой технический тимлид)
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
вообще сомневаюсь, что нужен решатель.. скорее интегратор расчетных и чертежных программ, позволяющий свести к минимуму промежуточные подготовительные операции. А то получается: сначала считают в самопальной программе, потом дублируют расчет в сертифицированной для прикрытия пятой точки...
|
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
Это тема докторской. С изотропными сначала разберитесь. Зенкевич в помощь.
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~2 мин. ----- Маловато берешь. Это тема работы не меньше, чем на нобелевскую премию. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
еше мешер https://www.berlios.de/software/tetgen/
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Как я понимаю, суперэлемент - это просто разновидность конечного элемента. У суперэлемента делается сборка матрицы жесткости из составляющих его элементов, суперузлы закрепляются связями, в связях задается набор единичных перемещений, и после решения системы матрица полученных усилий в связях равна матрице жесткости СЭ. То есть у обычного КЭ матрица жесткости вычисляется единственной функцией по готовым формулам, а у СЭ - через вызов решателя, причем решатель вообще не в курсе, что он СЭ обсчитывал. Т.е. любой решатель подойдет, просто он будет вызываться сначала для каждого СЭ, а потом уже для системы в целом.
Цитата:
Цитата:
Похоже, нашлось применение для MFC - диалог для путей к проекту, рабочим файлам и мешерам с решателями. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Замкнутые внутренние полилинии можно, по идее, автоматически считать дырками, а незамкнутые - обязательными контурами, через которые должна проходить сетка. У меня где-то была процедура сортировки подобных вещей, но она на плюсах. Поискать? p.s. имхо, gmsh все равно надо подключить будет. Последний раз редактировалось nickname2019, 07.10.2021 в 21:09. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Пока нет. Нужно дописать объединение наиболее подходящих треугольников в четырехугольники.
Цитата:
Цитата:
Это само собой разумеестся. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Пусть даны несколько полилиний, отсортированных по уровню вложенности и не имеющие пересечений контуров. Первая - самая наружная. Она явно заполняется конечными элементами. Вторая - это дырка в первой. Третья - это заполненная КЭ полилиния (т.е. это другая зона КЭ, не связанная с первой). Четвертая - это дырка в третьей. пятая - заполненная; шестая - дырка в пятой; и т.д. Но тут нужно учитывать уровень вложенности, т.е. у одной полилинии может быть несколько полилиний внутреннего уровня, которые будут являться дырками. Также и у "дырки" могут быть несколько "заполненных" полилиний. У меня была процедура, которая сортировала полилинии, начиная от самой внутренней к самой внешней. Можно пока этот вопрос отложить, т.к. не срочно. Я пока рисую структуру программы и думаю над типами. Последний раз редактировалось nickname2019, 08.10.2021 в 09:57. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
----- добавлено через ~2 мин. ----- Может что-то подобное, но открытое есть смысл сделать? |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Плагин - это маленькое дополнение к большой программе. Большую программу годами пишет команда программистов, а мелочи под нее - пользователи-инженеры. Инженерные расчеты в наших нормах в большинстве случаев состоят из нескольких формул. Если программа предоставляет доступ к чтению и записи результатов, к вызову решателя и т.п. - то написать плагин можно быстро. Что-то вроде "Calc(); foreach (e in Elements) e.C1 = e.Results.q / e.Results.z;" - и готовы коэффициенты постели. А мы-то с голым кадом ходим; мы пока если и можем что пользователю показать, большое и красное - то никак не заветную кнопку. Кад не понимает плиты с отверстиями или стены с проемами, не знает, что конечные элементы связаны в узлах, что палка-балка имеет сечение, что такое изополя и как их интегрировать, как чертить эпюры, как писать формулы и т.п. Ни одну инженерно-расчетную команду нельзя просто так взять и вызвать, потому что таких в каде вообще не водится. Все это надо сделать с нуля; благодаря каду у нас есть только система хранения палочек и их показ; даже опознать палочку как элемент конструкции - и то попотеть надо. По-моему, тут не "по-быстрому плагин сваляем", а на несколько лет работы. Чтобы было быстро - надо присосаться к чужой почти готовой расчетной программе, которая делает все что нужно, только почему-то не по нормам. Есть такая на примете?
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
На самом деле не такое уж и маленькое. Там у каждого плагина свой графический интерфейис и вывод графики внутри плагина через Open GL. Но я имел в виду создание некоторого набора модулей, подобных показанному в видео, только для работы с результптами счета, полученными из произвольной МКЭ программы.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Можем обсудить, какие именно плагины можно бы было разработать? ----- добавлено через ~20 мин. ----- Может быть и стоило бы мигрировать на эту сторону силы. Но очень сложно оценить, в какую сторону податься. Последний раз редактировалось nickname2019, 09.10.2021 в 22:41. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Если на гитхабе обнаружится проект, который использует реверс инжиниринг коммерческих программ - гитхаб такое не банит вместе со всеми участниками?
Я вот работаю в "произвольной МКЭ-программе" - Stark ES. У него нет никаких API вообще. Дотянуться ни до исходных данных, ни до результатов через официальное программирование нельзя. Критерий прочности ЖБ в нелинейном расчете - относительная деформация, а в программе такой вид данных не визуализируется; какой плагин тут возможен? Режим монтаж - полностью ручной (вручную создаются копии всех стадий, вручную запускается расчет для каждой из них, вручную подбирается потом арматура в каждом из файлов; вручную запускается окончательный подбор арматуры, причем одновременный запуск нескольких копий невозможен - нужно сидеть и ждать, когда посчитается предыдущая задача); чем может помочь плагин и как он должен быть устроен? Взаимовлияние осадки свай учитывается только через 3D-модель грунта - круто, но "не совсем по нормам"; как мне извлечь результат расчета, который программа не умеет делать? Единственное, что я смог - экспортировать исходную схему из када в текстовый формат исходных данных (по той же схеме, что тут планируется - через слои с параметрами). И, как активный пользователь своей программы, могу сказать, что это неудобно. Неудобно не видеть заливку плиты, чтобы опознать отверстия. Неудобно иметь десятки и сотни слоев с параметрами. Неудобно не видеть, чем одна нагрузка отличается от другой, пока не ткнешь в нее и не посмотришь свойства. Неудобно экспортировать геометрию отдельно от нагрузок, потому что "палочка с высотой" - это и проем, и нагрузка одновременно. Неудобно не видеть размеры шаблона сетки. И т.д. и т.п. Чтобы было удобно, объекты не должны быть просто палочками - а это требует создания собственных объектов с реальными свойствами на панелях свойств. Когда мне начинает казаться, что лучше переделать скрипт на плюсы с объектами - я прикидываю, сколько времени у меня это займет, выпиваю успокоительное и продолжаю есть кактус использовать скрипт. Плагин - это как у винампа? Положил в папочку "плагины" и в программе появились новые крутые фишки? Главный вопрос тогда - что за программа поддерживает инженерные плагины? Могу я, например, в Лиру, Скад или Старк добавить расчет и показ относительной деформации в промилях для пластин из железобетона? А конечный элемент свайного поля (чтобы взаимоосадку свай считать правильно при любых нагрузках, а не только при тех, для которых жесткость связи посчитана) какая из этих программ позволяет добавить? Выше я давал ссылку на старый FEModels - вот у него такая фишка была: можно добавлять свои элементы с произвольными степенями свободы и результатами. Даже свой GUI для создания пользовательских элементов был, и исходники для тех элементов, что идут в комплекте - стержни, плиты, связи, нагрузки. Демка с ограничением по размеру задач до сих пор доступна. Например, набор типов посмотреть можно - в папках elements и templates. Если "плагины" имеются в виду такие - то можно структуру типов оттуда взять. |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Цитата:
Цитата:
Есть ещё "козырной" вариант: использовать API библиотеки LiteCAD (https://kolbasoft.com/). Но у неё сохранение в DXF через раз.
__________________
Keep it simple, stupid. Последний раз редактировалось zvezdochiot, 10.10.2021 в 09:25. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
После создания и отладки расчетного "ядра", которое будет обрабатывать исходные данные через простейшие объекты (отрезки, полилинии, текст, блоки), можно попробовать сделать обработку исходных данных через объекты. Но это отдельная задача (может быть трудной), так как связана уже с проектированием, а не расчетом. Это уже тянет за собой обмен данными с ifc, revit'ом, Autodesk Architecture и т.д. Цитата:
Цитата:
Баз данных подключаться никаких не планируется. Хранение данных - через стандартные классы 1) vector - для доступа к данным по индексу; 2) map - для быстрого доступа по ключу (например - для доступа к значению системной переменной по строке-имени переменной). Последний раз редактировалось nickname2019, 10.10.2021 в 11:39. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~48 мин. ----- Если имеется в виду бинарная сериализация сишных массивов, то это будет никуда не годное решение. Сериализовать массивы нужно в файлы открытых форматов типа xml, json, sqlite. В крайнем случае txt или csv. Последний раз редактировалось румата, 10.10.2021 в 12:44. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Согласен. В бинарном виде только большие массивы имеет смысл хранить (матрицы жесткости, вектора перемещений и т.д.).
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Цитата:
Пружинка для сваи - это аналог модели Винклера для плиты. Сваи в расчетной схеме получаются фактически не связаны. Можно имитировать связь, посчитав жесткость при всех загруженных сваях. Но тогда правильный ответ будет получаться только при одном загружении - том, при котором определялись жесткости. Пример: три сваи в ряд, под нагрузкой 100т одна свая садится на 20мм, вторую досаживает на 5мм, до третьей не добивает. Тогда, если загружены все три сваи, первая (левая) сядет на 20+5=25мм, вторая (средняя) на 20+5+5=30мм, третья (правая) на 20+5=25мм. Жесткости получаются R1 = 100/25 = 4т/мм, R2 = 100/30 = 3.3 т/мм, R3 = 100/25 = 4 т/мм. А теперь - другое загружение, загружена только средняя свая. Получается осадка первой сваи нулевая (вместо 5мм), средней - 100/3.3 = 30мм (вместо 20мм), третьей - опять ноль (вместо 5мм). Это что-то совсем не "по СП". Можно сделать по-другому. Если осадка первой сваи от загружения первой сваи равна 20мм, от загружения второй сваи - 5мм, и от загружения третьей - 0, то можно найти не жесткости, а податливости: C11 = 20/100 = 0.20мм/т, C12 = 5/100=0.05мм/т, C13 = 0. При произвольном загружении осадка будет равна Z1 = C11*F1 + C12*F2 + C13*F3 = 0.20*F1 + 0.05*F2. А для всех трех свай уравнение получается: То есть в СП осадка свай считается через метод сил. А чтобы получить метод перемещений, надо обратить матрицу податливости, и получится матрица жесткости: Получился трехузловой конечный элемент с матрицей жесткости R. Когда решатель МКЭ обратит эту матрицу, получится исходная C, которая построена "по СП" - через дополнительные осадки. Например, при загружении только крайней, только средней, и сразу двух крайних свай: Должен же быть у нас хоть какой-то повод писать свою программу, вместо использования готовых. Пусть у нас будет что-то, что другие не умеют. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
Или же найти готовый проект с решателем. Вы даже не сравнивали готовые решения с тем что хотите реализовать. Тот же FreeCAD уже умеет делать то что вы хотите из коробки фактически(в части создания сеток про решатель пока не говорю).
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Есть готовые проекты с решателями с открытым кодом (ссылки уже были выше, их много), например : https://github.com/BriefFiniteElemen...iteElement.Net Осталось разобраться и приспособить под себя. Одна из текущих задач - найти в коде функцию формирования матрицы жесткости КЭ оболочки. Не хотите поучаствовать в процессе? ----- добавлено через ~24 мин. ----- Цитата:
При этом "львиная" доля осадки развивается от веса конструкций, т.е. это примерно одно действующее сочетание. Поэтому я грунт бОльшую половину сознательной деятельности считаю в двух вариантах: - на жестком основании; - на упругом основании. И по этим двум вариантам строю огибающую эпюру армирования. При таком раскладе, имхо, определять жесткость основания при различных вариантах сочетаний загружений вряд ли целесообразно. Может быть, было бы правильно запректировать здание на жестком основании и проверить этот вариант в нелинейной стадии при жесткости основания, полученной при максимальных расчетных нагрузках. Возможно, такое решение было бы оптимальным по расходу материалов. При построении огибающих полей армирования, полученных в упругой стадии, наблюдается некоторый перерасход. Опять же, хотелось бы при расчете колонн верхних этажей учесть, что они возводятся при развившейся до некоторой степени осадке нижних этажей и на них влияние осадки фундамента и деформации нижних этажей не столь велико. Короче говоря, хочешь сделать хорошо - сделай сам. ----- добавлено через ~40 мин. ----- И последний вопрос - библиотеку eigen (работа с линейной алгеброй и матрицами) будем включать в репозиторий? Последний раз редактировалось nickname2019, 11.10.2021 в 00:22. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Оч. интересно, как у Вас так лихо получился конечный элемент свай, да еще и трехузловой. Одно не ясно - почему именно трехузловой и как его можно применить в практике если матрица взаимовлияния строится для всего свайгого поля с учетом расстояний между сваями. Аналогия с плитой или оболочкой, конечно, напрашивается, но в плите или оболочке не нужно учитывать расстояния от каждого узла ко всем остальным узлам плиты. А для свайного поля нужно.
----- добавлено через ~3 мин. ----- Цитата:
----- добавлено через ~5 мин. ----- Правильная мысль. Но абсолютно все делать самому не нужно. Пользование готовыми библиотеками значительно сократит затраты на делание хорошего. ----- добавлено через ~8 мин. ----- В автокаде удобно рисовать. Не нужно писать собственную рисовалку или разбираться с чужой бесплатно одаренной. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Потому что в примере три сваи. Будет двадцать свай - будет двадцатиузловой. Это реализация формул 7.38-7.40 СП 24.13330.2011 для куста. Сам СП в расшифровке формул тонко шутит про "удобно использовать метод сил"; осталось написать удобную инженерную программу с методом сил вместо МКЭ - она у нас следующей в списке пойдет. Ну, или можно преобразовать метод сил в метод перемещений - у них матрицы как раз взаимно обратные.
А к свайному полю с СП другие формулы - там уже аналог модуля "ГРУНТ" придется делать, плюс элементы продавливания ячейки грунта по п.7.4.8. Это гораздо дольше, чем отдельно взятый куст одолеть. Без учета расстояния - это модель с одним коэффициентом постели. А если ввести второй коэффициент - уже получается взаимоучет осадок непосредственных соседей. А плита на 3D-грунте - это уже учет влияния каждого элемента на каждый. |
|||
![]() |
|
|||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~9 мин. ----- Цитата:
----- добавлено через ~10 мин. ----- Цитата:
----- добавлено через ~15 мин. ----- Цитата:
А вот аналог ГРУНТа вещь очень необходимая и крайне востребованная. |
||||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
1. Задается жесткость каждой "пружинки" примерно. 2. Делатеся расчет в составе каркаса и определяется усилие в пружинке. 3. Каждая свая заменяется условным фундаментом в уровне низа сваи. 4. Методом послойного суммирования с учетом взаимного влияния определяется осадка каждого условного фундамента, она же принимается равной осадке пружинки . 5. Определяется новая жесткость для каждой пружинки K = сила/осадка. 6. Пересчитываются пружинки в составе каркаса и определяются усилия в пружинках. 7. GOTO п.3. пока не надоест. Формула с логарифмом из СП - имхо, какая-то неправильная, но я не проверял. ----- добавлено через ~2 мин. ----- Она у меня есть в каком-то виде (надо искать где рабочая версия, тестировать, причесывать код). Щас закончим мкэ-решатель и прикрутим модуль "Грунт 2.0" для свай. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~29 мин. ----- хотя в заглавном посте было написано совершенно правильно но здесь в ветке большинство расчетчиков (включая людей с большой практикой) оказались за бортом, так как реализуется сугубо личное мнение непосредственного исполнителя-программиста. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Но я бы не хотел, чтобы было "вот только так, а не иначе". Если в проекте будет несколько разных функций для решения одинаковых задач - я думаю, что это не плохо. На данном этапе, без наработки "скелета" я не могу поставить детальные задачи на разработку "мяса", чтобы привлечь некоторый коллектив желающих принять участие. Пока проект движется анализа вариантов развития, исходя из общественного мнения. Сейчас на GitHabe в репозитории существует проект на .Net (спасибо румата, лично я .Net не занимаюсь). И я думаю, что это хорошо, когда проект разными путями может идти примерно к одной цели. Последний раз редактировалось nickname2019, 11.10.2021 в 12:51. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Так я потому этот пример и привел. Он противоречит как идее реализовать только трех- и четырехугольники, так и идее хранить элементы полилиниями. И от этого зависит система типов, которая сейчас вроде как в состоянии сборки. Сделать два типа КЭ - и не будет ни суперэлементов, ни составных/библиотечных сложных элементов. А сделать как в FEModels - через запрос числа узлов у элемента - то в библиотеку еще и не такие извращения запихать можно будет.
Как я понимаю, это просто осадочная воронка вокруг сосредоточенной нагрузки. Может, это тоже результат интегрирования задачи для полупространства, а может - просто подходящая интерполяция. Цитата:
По этим формулам получается, что сваи с краев жестче - значит, они должны забирать больше усилий, а это как минимум перегружает ростверк. И если есть два загружения - на максимальную силу, и максимальный момент, то распределения жесткости получается разным; в существующих программах это надо учитывать через вариацию моделей, т.е. с лишними действиями. Зачем гонять итерации и вариации там, где можно получить ответ сразу? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
Вброшу свои 5 копеек.
Любая расчётная программа состоит из 3-х частей: 1) препроцессор; 2) процессор; 3) постпроцессор. Процессор решает систему Rx = P, где R - матрица жёсткости, P - вектор узловых нагрузок, x - искомые перемещения. Задача препроцессора сформировать матрицу R и вектора Р. Постпроцессор по найденным перемещениям х определяет внутренние усилия и/или напряжение и деформации, используя данные препроцессора. ----- добавлено через ~2 мин. ----- Я так понимаю, сейчас рассматривается препроцессор.
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я думаю, что ничто не мешает все функции объединить в одном интерфейсе, а функции задания/изменения исходных данных и визуализации результатов рассматривать как команды рисования. Рисуем - исходные данные. Рисуем - поля армирования (нагрузки на основание, напряжения и т.д.). Если для отрисовки полей армирования не хватает данных расчета - запускаем перерасчет по тем данным, которые были изменены (не по всей схеме). |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
По состоянию на 12.10.2021 обновление с описанием основных типов залито на GitHub.
Философски я подумал отказаться по максимуму от объектно-ориентированной модели. Объектом, видимо, будет только класс основного решателя (tFEMSolver). Различные типы конечных элементов, описаний материалов и т.д. пока планируются как массивы типов-записей (struct), у которых некоторые поля будут процедурными переменными, назначаемыми в процессе выполнения. Имхо, это позволит упростить объектную модель, сократить количество модулей и строчек кода. Например, функция формирования матрицы жесткости описывается как процедурная переменная в записи, которая описывает тип конечного элемента. 1. созданы типы данных для описания конечно-элементной модели (Types.h). Файл желательно смотреть, комментарии написаны. Нужна ли доп. информация по документированию кода? 2. подключена библиотека eigen для работы с разряженными и плотными матрицами. В readme.md описаны пути для хранения библиотеки eigen, чтобы настройки проектов не менять. Можно пробовать собирать. проблема у меня: eigen на текущей момент не компилируется с visual studio 2012. Так как в visual studio 2012 проект пока не собрался, Autocad 2016 пока не поддерживается (первый минус от того, что подключили стороннюю библиотеку). P.S. Может быть, работать с eigen через "обертки", на случай, если придется менять математическую библиотеку? Последний раз редактировалось nickname2019, 13.10.2021 в 06:37. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Под VS2008/nanoCAD собирается, но требует более старую версию eigen - 3.1 (в текущей 3.4 не опознает новомодные шаблоны с переменным числом параметров, что, видимо, не лечится). Похоже, VS2008 не опознает UTF-8 без BOM.
Последний раз редактировалось Нубий-IV, 13.10.2021 в 07:54. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
код вызывает функцию-прокладку-> прокладка вызывает функцию eigen. Тогда при смене математического модуля придется переписать только "прокладки", а основной код не трогать. Иначе светит глобальная переработка, например у меня в процедурном типе tLocalStiffnessMatrixProcedure используется входной параметр MatrixXd & localStiffnessMatrix, что привязывает дальнейший код к eigen typedef bool (*tLocalStiffnessMatrixProcedure)(const tFiniteElement & finiteElement, const tPoint3dArray& point3dArray, const tMaterialArray & materialArray, const tSectionArray §ionArray, MatrixXd & localStiffnessMatrix); Возможно, имеет смысл вводить промежуточный класс, который будет внутри себя использовать классы eigen. ----- добавлено через ~2 ч. ----- Вы можете найти простой выход из ситуации или будем назад менять кодировку в основном файле? Хотелось бы, конечно, максимальной совместимости в проекте, чтобы везде собирался без проблем и кракозябр. Последний раз редактировалось nickname2019, 13.10.2021 в 10:55. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Вот сравнение eigen с какой-то boost https://journal.tusur.ru/storage/495...pdf?1472809983 Видимо, надо найти нормальную библиотеку с линейной алгеброй под C#. Под с++, видимо, придется оставить eigen, но чтобы сделать код максимально совместимым с .Net (а также с целью не привязываться к конкретной библиотеке), классы Eigen я уберу из основного кода. В коде будет некоторый (может быть абстрактный) класс типа tLinearAlgebra, который будет вызывать методы из самой математической библиотеки. Последний раз редактировалось nickname2019, 13.10.2021 в 13:14. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Имхо, мы не можем его включать в свободный продукт, так как распространять нельзя. Наш код может предполагать любое, в т.ч. коммерческое использование.
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
А мы его и не будем включать туда. Кому нужно сам его скачает и подключит для ускорения счета "адских" схем.
Просто для коммерческого использования вместе с MKL нужно будет купить лицензию на MKL и все. Не так уж она дорого стоит. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Мне помогло пересохранить как UTF с маркером BOM:Если верить гуглу, разные версии компиляторов этот UTF - и BOMнутый, и неBOMнутый - ухитряются понимать по-разному. Вот VS2008 показывает файл без маркера правильно, а компилирует - неправильно; с маркером - все работает как надо. Другие студии - надо тестировать. (Пример - https://www.codeatcpp.com/2016/03/utf-8.html)
Цитата:
Будут как минимум проблемы при компиляции с eigen. Если для старых студий нужна старая версия, то в файле Types.h указывать полный путь к заголовкам (#include <C:\ArxLib\eigen\Eigen\Dense>) не годится: чтобы пересобраться под другую студию, надо будет каждый раз удалять старую папку с одной версией библиотеки и записывать другую версию. Вообще предлагаю отвязать проекты от конкретных путей через свойства:Фокус в том, что файл настроек окружения - это отдельный файл Environment.vsprops, в котором задана только пара макросов с путями, и каждому нужно поправить их под свое расположение библиотек; остальные настройки задаются по-прежнему в проекте, и их менять не придется. А пути к библиотекам после этого можно указывать просто - как и к другим стандартным "#include <Dense>". Не соображу только, как настроить Git, чтобы он этот файл игнорировал: если включить его в gitignore сразу, то он не попадает в репозиторий, и его никто не скачает, чтобы настроить под себя; а если включить после добавления в репозиторий, то он уже не игнорируется. Как сделать, чтобы от с репозитория клонировался, но обратно после настройки уже не просился? |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Да, я тут еще вспомнил, что Math.NET, кроме собственного встроенного, использует еще и OpenBLAS в качестве нативного ядра линейной алгеьры, как альтернативу IntelMKL. Оно считает медленне MKL, но значительно быстрее встроенного.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Проект, кажется, выходит на финальный этап, когда уже можно начинать писать по-делу.
Нужно обсудить, как в него вносить изменения. Видимо, делать merge через GitHubDesktop (как я все время делал) - не самая удачная идея, так как будет выбивать почву у людей, которые начали писать код на основе предыдущей версии. После того, как румата поменял кодировку arxentrypoint, у меня синхронизация перестала закачиваться на gitHub (наверно, это нормально, так как кодировка файлов другая совершенно). |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Руководство по Git: https://habr.com/ru/post/150673/ - коротенько, на 300 страниц. В пятой главе вроде про совместную работу пишут. Я туда через пару месяцев дочитаю, наверное - тогда тоже смогу поучаствовать.
|
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Товарищи почитайте со стороны что вы пишите!
Румата не обижайся, тебе сказали С++, что ты к ним пристал со своим С#. Делай рядом свой проект, используй какие хочешь библиотеки. Я думаю ребята помогут тебе подключится к своему. Если у тебя будет что то интересное, то подсмотрят. У вас есть лидер, смерись с eigen. Нубий-IV, вот у руматы C#, а у тебя бесплатный нанокад... Я кончено не специалист по гиту, но с ZCAD-ом все просто, перед коммитом делаешь ПУЛЛ, решаешь все конфликты на этом моменте, делаешь коммит(помечаешь те файлы которые отправляешь) и пушешь (отправляешь). Естественно работать надо через тортоисеГИТ Подробнее только подскажет zamtmn |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Наше дело, как говорится, предложить. Ни к кому я не приставал. Я просто предложил готовое рабочее решение СЛАУ. Без танцев с бубнами вокруг сборки eigen.
Не вопрос, пусть будет eigen. Главное что б кто-то дал ему лад. Работать с репозиторием лучше всего прямо из VS. Лучше всего создать свою ветку кода и "ляпать" в ней. Все коммиты должны синхронизироваться независимо от кодировки файлов. А если коммитов не делать, то ничего и не будет синхронизироваться. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Чуток поигрался с этой ЭйГейской библиотекой.
Код:
Второй тест - решение систем. Код:
|
|||
![]() |
|
||||
Регистрация: 05.08.2008
Сообщений: 828
|
я конечно не спец в линейной алгебре, но
Цитата:
что это за фишка такая - расчет с нулем на диагонали? можно где-то посмотреть? |
|||
![]() |
|
||||
маркшейдер Регистрация: 25.09.2021
Москва
Сообщений: 189
|
Да не только по алгебре неспец. Вообще в памяти не хранились, а каждый раз считывались с носителя. Так что мимо!
__________________
Keep it simple, stupid. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Так ясен пень, что быстрее, если памяти хватает.
Простой тест: типовая свечка на двадцать этажей, схема в 120000 узлов - это совсем скромно; старк считает ее две минуты, из них решение системы - около 10сек; остальное время занимают чтение данных и запись результатов.В протоколе указано число ненулевых элементов матрицы - 0.238 млрд. Если считать, что матрица хранится в виде значений double (8 байт) с двумя индексами int (2x4 байта), это требует расхода памяти 0.238*(8+2*4) = 3.8Gb. Примерно столько и лежит у старка в рабочем каталоге; пиковое потребление памяти в процессе счета у него меньше, т.е. матрицу он выгружает на диск. Тот же тест в Eigen. Проверил: при решении через SimplicialLDLT не нужно записывать нижний треугольник, т.е. избыточное хранение есть только в плотных матрицах - у нас такими будут разве что матрицы суперэлементов, если мы их оставим с типом MatrixXd, как сейчас сделано в Types.h. В верхнем треугольнике матрицы размером N, с шириной ленты W, и оставшейся нулевой шириной Z=N-W хранится Код:
Чтобы увеличить расход памяти, удвою ленту: W = 2*333 = 666. Результат:После 80% загрузки памяти начинается использование подкачки. Память, похоже, запрашивается блоками. Каждый раз при запросе (зубцы на графике) на десяток-другой секунд начинаются тормоза типа "мышь повесилась". Однако, расчет выполняется; сборка матрицы втрое дольше, решение - вдвое; это вполне приличный результат. Это не страшно. Через десять лет, появится наконец первая прилично работающая версия, все участники проекта станут спецами: в процессе мы просто обязаны собрать все грабли, предусмотренные этой наукой за прошедший век ![]() |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Нужно в цикле проверять нажатие Esc. В автокаде есть примерно такой код. Код:
В посте #320 матрицу жесткости какого КЭ вычисляли? Этот код можно забрать в проект? P.S. Судя по затратам времени на вычисления, делать класс - прокладку между eigen и основной программой - не самая удачная идея. Прокладка, видимо, будет тормозить расчет, так как количество вызовов процедур сразу в два раза вырастет (выделение/освобождение стека и т.д.). При вычислении локальных матриц жесткостей, видимо, лучше использовать полностью-заполненные матрицы, при этом выделять память под локальную матрицу один раз, а заполнять ее столько раз, сколько есть КЭ данного типа в схеме. Последний раз редактировалось nickname2019, 25.10.2021 в 08:55. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
----- добавлено через ~11 мин. ----- Цитата:
----- добавлено через ~13 мин. ----- Ну это же си++. Неоптимизированная сборка матрицы и оптимизированное решение системы. Последний раз редактировалось румата, 25.10.2021 в 09:11. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Проблема в том, что при заполнении матрицы и при решении системы циклы не наши, и в них никто ничего не проверяет - ни нули, ни эсекейпы. Либо там есть возможность какие-то свои обработчики на эти события ставить, либо программа будет висеть, пока у пользователя терпение не лопнет. Может, у них это через наследование классов сделано, может - через коллбэки, а может, и вообще невозможно. Пока это еще один открытый вопрос, надо искать ответ.
Там могут быть ляпы, я его на правильность не проверял, только на скорость. В первой функции формулы взяты из книги Метод конечных элементов в проектировании транспортных сооружений.А.С. Городецкий, В.И. Зоворицкий, А.И. Лантух-Лященко, А.О. Рассказов. 1981 г.. В остальных функциях формулы получены в Maxima:В моей библиотеке по МКЭ сорок книг, но полного набора готовых формул я там не нашел. Как вводить шарниры или эксцентриситеты? Как сделать переменный модуль упругости по всем узлам? Какой вектор узловых усилий под неравномерной нагрузкой на части площади КЭ? Какая матрица масс или геометрических параметров у анизотропной плиты? А у гибридного элемента? И т.д. и т.п. Все равно эти формулы придется выводить и тестировать. Вот я заготовку для Максимы и делаю, пока только до балки-стенки дошел. Думаю, сейчас вообще можно матрицу условными единицами забивать, пока первую версию, работающую от начала и до конца, не получим. По дороге еще придется десяток-другой раз все переделать, потому что никто заранее не предскажет, как сделать правильно. Я бы пока не тратил время на мелочи типа "правильная матрица", пусть там пока везде заглушки стоят. Цитата:
Eigen при появлении нуля на диагонали просто возвращает в Info код ошибки, а вектор ответа забивает большими числами (кому интересно - файле теста системы размер матрицы уберите в 10, чтобы на экран помещалась, и раскомментируйте строки 36 и 59-62). Ни усилия в схеме посмотреть, ни даже узнать, в каком узле сбой был. Цитата:
В книгах по МКЭ много пишут про численное интегрирование. Родной для GMSH решатель GetDP, например, не матрицы элементов хранит, а запрашивает у пользователя число точек Гаусса и типы производных, а остальную арифметику крутит сам - т.е. у него все на матричных произведениях, а не на формулах. Я, когда тест скорости матриц затевал, думал - будет единственный безоговорочный победитель и явные аутсайдеры. А ответ меня удивил сильно. Теперь я никому не верю и все думаю проверять. Обе операции - библиотечные функции. Вот эта троица работает - push_back(), setFromTriplets() и solve(). Все не мои, и никак от меня не зависят. Максимум могу push_back() в восемь разных потоков разогнать, а остальное на совести авторов библиотеки. Тоже открытый вопрос - можно ли полностью параллельное заполнение организовать. |
|||
![]() |
|
|||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я раньше пользовался книгой Хечумов Р.А., Кепплер Х., Прокопьев В.И. "Применение метода конечных элементов к расчету строительных конструкций". Более современная книжка "обо всем" в МКЭ, но с опечатками. Найти ее в свободном доступе не могу. Покупать пока не будем, может быть и так справимся. насколько я понимаю, шарнир - когда убираются линейные степени свободы для данного узла из глобальной системы (так как они закреплены), а угловые степени свободы остаются. Т.е. учет происходит при формировании глобальной матрицы. Цитата:
Цитата:
Может быть ограничиться оболочечными КЭ (в общем случае анизотропными) и стержневыми? Цитата:
|
||||
![]() |
|
||||
инженер Регистрация: 25.04.2006
Москва
Сообщений: 1,207
|
Цитата:
Если зарезервировать заранее память (хотя бы приблизительно) перед push_back-ами, должно ускориться. Дальше возникает вопрос, как бы вообще от ненужного промежуточного vector-а уйти? ... поэкспериментировал с Вашим кодом, мысли такие. Во-первых, в релизе соотношение таймингов получается другое - ещё хуже для этапа формирования матрицы. Правда, в абсолютных значениях всё куда быстрее debug. Далее, думаю, что заполнение SparseMatrix надо анализировать отдельно от заполнения вектора и предыдущих манипуляций. Там основное время в Вашем коде уходит на арифметику в теле цикла и перевыделение памяти при заполнении вектора. Если это всё убрать (арифметика все равно на практике будет другая), то данный этап ускорится чуть ли не на порядок. Но это просто к слову. Заполнение SparseMatrix тоже не быстрое. Видимо, основное время уходит на сортировку вставляемых данных. Можно, кстати, вставлять данные и поштучно непосредственно в SparseMatrix (без промежуточного вектора) через insert, но, видимо, затраты на пересортировку после каждой вставки могут быть о-очень большие. Так что вариант с передачей сразу всех данных кажется предпочтительным. Хотя, в данной конкретной задаче, если предварительно зарезервировать память в SparseMatrix и выкинуть вектор, затраты времени на эти два этапа у меня сократились на ~40%. Код:
Последний раз редактировалось RomanM, 26.10.2021 в 00:44. |
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
Цитата:
----- добавлено через ~2 мин. ----- Есть Холецкий на Паскале. Если интересно, могу скинуть. Правда только однопроцессорный.
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Цитата:
Даже оболочек - и то целый выводок в любой книге. Такие полиномы - сякие полиномы - а вот кому косинусы. Помнится, в старой Лире наклонные оболочки были геометрически изменяемыми, а в новых версиях - уже нет; явно там в элементах что-то подшаманили (или в автоматических связях, кто их там разберет, закрыто-коммерческих). Даже из Зенкевича полно ссылок на конкретные элементы, в виде научных статей, за которые денег хотят. Мне вот Старковские элементы нравятся - и повышенный порядок, и узловые усилия, и плоскости осреднения. Старк благодаря ним даже с сеткой не заморачивается - все прямоугольным шаблоном делает, и только на стыках типовую разбивку примыкающих элементов применяет. Но формул на них нет в свободном доступе, тут только подбирать полиномы и тестировать. В любом случае полный набор формул "для всего" вряд ли хоть в одной книге найдем; что-то придется выводить. Во вложении - пример матрицы в Максиме, и pdf с описанием процесса. В плюсах многопоточность как часть языка сделали стандартом только в последних редакциях, из VS2008 она недоступна. Но через WinAPI можно это сделать. Вопрос в другом - поддерживает ли сама библиотека многопоточность. Решатели-то вроде все ядра грузят. А вот доступ к матрице на добавление элементов - не факт, что можно в несколько потоков пустить: если про это не подумали разработчки, есть шанс просто запортить внутренние указатели. Не поможет. Пока решено нулевые элементы в глобальную матрицу не записывать, так что случая "до расчета все нули в строке" у нас не предполагается. А если пользователь просто связь забыл - то до расчета на диагонали нуля нет, он всплывет только в процессе решения, когда по всем узлам недозакрепленной части конструкции расчет пройдет - только на последнем из них этот ноль и выскочит. По-хорошему, у решателя должен быть способ установить обработчик такого события. Некая функция, которая вызывается после обнаружения нуля, выполняет нужные действия (ставит связь, пишет протокол), возвращает решателю свой ОК, и тот продолжает счет. Сходу я такого не нагуглил. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
Цитата:
Без этого обойтись не получится. Все эти балки-стенки и исключительно прямоугольные оболочки никому не нужны. Нужны произвольные четырехугольные и треугольные КЭ оболочки. Потом четырехугольные и треугольные КЭ толстой оболочки или плиты. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Может быть, это будет сложнее, а может проще, не могу пока понять. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Цитата:
![]()
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Потом понял, что это бессмысленно (когда решил проверить полученную матрицу численным интегрированием). Быстрее и проще проинтегрировать численно с использованием весовых коэффициентов. Объем вычислений тот же. Если степень полинома известна, то можно так подобрать точки для вычисления интеграла, что результаты интегрирования будут точными. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
1)Вычисляется матрица жесткости элемента Kr в локальной системе координат. 2)Вычисляется матрицы преобразования матрицы жескости элемента из локальной в глобальную систему координат Tr 3)Учитываеются элементные шарниры путем вычисления матрицы L и последующего преобразования матрицы Кr = L^T*Kr*L 4)Вычисляется матрица жесткости элемента в глобальной системе координат К'r = Tr^T*Kr*Tr 5)Формируется общая матрица жесткости системы К из матриц элементов К'r по матрице индексов или иным способом суммирования. 6)Выполняется проверка матрицы К на наличие нулевых элементов на диагонали перед решением СЛАУ или обращением этой матрицы. Где эта проблема, которая есть? |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Так просто нужно перед расчетом, а может даже перед формированием общей матрицы жесткости, проверить массив исключенных из расчета степеней свободы на пустоту или отсутсвие закреплений. Это же атрибут или свойство узла расчетной схемы.
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Эти варианты могут комбинироваться между собой, поэтому может быть трудно формально проанализировать систему. Ноль на диагонали вылезет при решении системы уравнений. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
У меня тут неприятность образовалась в одном месте. Я неожиданно вспомнил, что нанокад - 32-битный. Получается, я сообственную свечку в собственный нанокад не смогу вставить - вот где геморрой-то будет.
Еще вопрос. Если мы собираемся узлы с разным числом переменных делать, то нельзя сразу сказать, какому индексу в матрице системы соответствует данная степень свободы данного КЭ. Надо сначала пройтись по всем КЭ и составить список использованных направлений, а для этого надо все их матрицы жесткости посчитать и в глобальные координаты перевести - только там все нули видны будут. И только после опроса последнего элемента можно записать в общую матрицу первый. И тогда либо все матрицы хранить надо, что приводит как минимум к утроению расхода памяти (и даже больше), потому что они а) не разреженные б) с нижним треугольником в) не записаны друг поверх друга в общих узлах г) висят в памяти параллельно со сборкой общей матрицы. Либо при сборке общей матрицы все элементы придется обсчитывать повторно. Либо надо у узла список направлений указывать заранее (а несовпадение при расчете считать ошибкой) - тогда в схеме надо еще и узлы как-то задавать, а не только элементы. Либо таки Лироскады правы, и в узлах просто 6 неизвестных, которые при расчете автозакрепляются, если надо. Кстати, кто в курсе - в кадовскую базу элементов можно в многопоточном режиме обращаться, или это еще одно узкое место получается? |
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
Мгновенно-изменяемая определяется "на берегу" нулями на диагонали.
Вот вырожденную матрицу (без опорных закреплений) выявить труднее. И, кстати, матрица без опорных закреплений не всегда вырожденная. Они нужны и для определения внутренних усилий/напряжений. Можно хранить только ненулевые элементы.
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Сначала нужно определить тип элемента в зависимости от имен степеней свободы, потом формировать типы узлов в зависимости от примыкаемых элементов (до формирования матрицы). Я думал матрицы жесткости формировать отдельно по каждым уровням (этажам), обращать, а потом как суперэлементы объединять. На многоэтажках с типовыми этажами должен быть серьезный эффект. Думаю, что - нет. Матрицы, видимо, нужно создавать по уровням, обращать и сохранять на диск. Потом зопускать сольвер, который их объединит в одни систему многопоточно и ее решит. |
|||
![]() |
|
||||
? Регистрация: 17.06.2014
Царицын
Сообщений: 12,823
|
МКЭ там и близко не стояло. Обычный метод перемещений.
МКЭ для стержня хорошо описан в Клаф, Пензиен. Динамика сооружений. Ну а матрицы для пластин смотрите в Зенкевиче. https://dwg.ru/dnl/4923 и https://dwg.ru/dnl/1949
__________________
Специалисты - это те, кто ничего не понимают лучше всех |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Еще один тест скорости, более реалистичный, с элементом балки-стенки. Программа читает входной файл in.txt и записывает выходной out.pos. Формат входного файла - аналогичный статье из поста 137. Чтобы не мучиться с ручным вводом - дальше простейший скриптовый генератор. Код генератора сохранить с расширением HTA и запускать как обычную программу. Результаты смотреть в GMSH.
Код:
Код:
Кстати, так он больше похож на ОбПеньСорс. Если у него будет интерфейс для ввода данных и чтения результатов:
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Однако, гугл помогл. Оказывается, у разреженной матрицы есть метод reserve(), в который можно передать профиль матрицы - вектор, у которого для каждого столбца указано, сколько ненулевых элементов в столбце будет. Тогда память выделится только один раз. Я в запас просуммировал количество всех элементов на этапе сборки глобальных матриц элементов, не учитывая наложений. Где без резервирования было 12с - с резервированием стало 0.016с; ускорение в 750 раз.
Код:
Скорее уж, основным должен быть либо двоичный файл, либо програмный интерфейс. А к нему разные утилиты импорта - экспорта: хоть XML, хоть Лировский TXT, хоть HTML - страничка. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Ввод данных через бинарный файл точно не нужно делать. Нужен единый формат входного текстового файла, который будет читать экзешник решателя. И что б этот входной файл можно было генерировать любым программным интерфейсом или языком программирования.
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Это такая традиция у плюсовиков-затейников, прямая работа с памятью. Простой тест: запись форматированного и двоичного файла.
Код:
У меня вообще, как у непрограммиста, проблема в том, что я синтаксис языка немного понимаю, а как его правильно применять - не очень. Даже простейший вопрос "как организовать перебор точек Гаусса" вызывает сложности. Код:
![]() Кстати, есть вопрос. В коде GetDP для численного интегрирования прошиты координаты точек Гаусса до 20-точечных схем включительно. Кто знает, откуда они взяли формулы? В литературе только пятиточечные схемы нахожу. В коде GetDP в последних знаках погрешности видны, в стиле "5.55555555555555552" - получается, как в анекдоте, неаккуратненько ![]() |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
В тесте стандартный кешированный поток C++ на порядок проиграл по скорости системной функции записи в файл. Еще Гугель утверждает, что отображение файлов в память даже промежуточный буфер не использует; а если памяти хватает, то и собственно файл не записывается - только однократное чтение/запись в память происходит: пишет передающая программа, читает принимающая. Как понимаю, это стандартное системное кеширование из коробки, желающие могут взамен написать свое. Опять же, не разбираюсь в тонкостях, все надо тестировать.
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Оказывается, гаусс-то засекречен! В книгах по интегрированию либо теория с примерами для низких степеней, либо числовые коэффициенты с 5-15 знаками, что недотягивает до точности double. Изредка попадаются честные двадцатизначные таблицы или формулы.
Книги:
Код:
Код:
Код:
Код:
Код:
|
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Кем он засекречен? https://ru.wikipedia.org/wiki/%D0%A1...BC%D1%83%D0%BB
----- добавлено через ----- По ссылке весовые к-ты даны в натуральных дробях. Точности хоть отбавляй |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Еще неприятность. 32-битная программа не только систему уравнений в памяти не держит, но и конечные элементы с результатами расчета.
Код:
Только для нескольких степеней. Где там хотя бы 4 степень для треугольника? Найти что-то выше третьей - пятой степени оказалось проблемой. А если у нас будет нелинейность, повышенные степени могут понадобиться. |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
А для чего треугольнику порядок выше третьего, когда функция формы трегольника полином степени не выше третьей? Этого вполне достаточно для решения как геометрически так и физически нелинейных задач с высокой точностью. Но если вам этого мало - пожалуйста вычисляйте нужное вам количество корней из соответсвующей степени полиномов Лежандра.
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Я не писал своих элементов, и не знаю, какие степени будут нужны. Но в исходниках GetDP для треугольника последняя схема - 16-точечная; кому-то оно надо было.
Не лез глубоко в теорию, но первая попавшаяся 6-точечная схема для треугольника оказалась 3степени - такой же, как 4-точечная. А для повышения степени до 4 в литературе какие-то другие методы используют: Это все. Как по этому описанию получить координаты точек? Ссылка [5,a] - диссертация, нет в свободном доступе. Таблица 15.2 - точки и веса точностью в 7знаков. Вопрос-то в том, почему на второй сотне лет численного интегрирования нет полного справочника с формулами и значениями машинной точности. На гитхабе есть всякие библиотеки под численное интегрирование, там в ссылках - сплошные научные статьи за деньги. Видимо, это ваше интегрирование - просто спорт, и никому на самом деле не надо ![]() Кстати, 4-точечная формула из Википедии - единственная возможная, или есть версии без отрицательных коэффициентов? |
|||
![]() |
|
||||
Регистрация: 06.04.2015
Сообщений: 2,754
|
Цитата:
Может такие справочники и есть где-то, но кому нужны эти сложности, когда для треугольного КЭ вполне достаточно интегрирования 3-го порядка. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Вот я все тестирую и тестирую, а мне все хуже и хуже. Если x32 работает примерно с 1.5G памяти, то что будет при вызове из нанокада?
Код:
Четырехугольная оболочка с 6 степенями свободы имеет матрицу жесткости (6*4)*(6*4)*8 = 4.6К = 0.0046M. При доступных 100M в памяти можно разместить только 100/0.0046 = 20 тыс матриц (не считая узлов, самих элементов, матриц преобразований, векторов перемещений и т.п.). Не то что "хранить матрицы" не выйдет; видимо, безопасно только поэлементное чтение/запись. Последний раз редактировалось Нубий-IV, 13.11.2021 в 06:33. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
ДА и там так же было...
Я понял, что нужно полагаться только на себя, и подготавливать готовое решение.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
После примерно трех лет размышлений и обсуждений на разных площадках, мне видится примерно такая схема организации работ по коллективной разработке. Имхо, оптимальная организация труда - колхоз "Светлый путь", внутри которого могут существовать отдельные артели. 1.Вступление в колхоз - дело добровольное и доступное каждому, кто изъявил желание. Каждый может вступить в колхоз и участвовать в коллективной работе, внося вклад в создание и тестирование кода. Вклад каждого определяется количеством строк кода, который человек создал и который включен в официальный релиз (это определяет карму "создателя", также, видимо, нужно считать карму "тестировщика"). Все колхозники имеют доступ к коду, который создан общими усилиями в рамках "колхоза". Вероятнее всего, колхозники могут платить какие-то членские взносы на содержание "колхоза". 2. Колхозники могут создавать свои закрытие артели, в которых могут совместно создавать код для использования внутри артели. Они сами принимают решения о том, делиться или не делиться с сообществом разработанным кодом и на каких условиях. Решения внутри артели принимается голосованием, при этом вес "голоса" определяется количеством строк разработанного человеком кода, который он разработал, работая в артели. Принятие/не принятие человека в артель определяется голосованием членов артели. В идеале, артели должны заманивать тех рядовых колхозников, которые имеют высокую "карму", заработанную ими на общих условиях. Артель имеет свой доход, связанный как с использованием разработанного кода каждым членом артели, так и продажей результатов работы (алгоритмов и программ). Доход артели делится между участниками артели пропорционально их "карме". Колхозу артель перечисляет только членские взносы. Артель может нанимать исполнительных директоров, менеджеров по продажам, маркетологов и т.д. Имхо, такая организация труда может избежать влияния "финансового сектора", "эффективных менеджеров" и ориентировать разработку непосредственно на потребности общества. И у меня вопрос: "Колхоз светлый путь" звучит не слишком кринжово? Последний раз редактировалось nickname2019, 04.06.2024 в 14:46. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
хм, а для чего тогда столько видов лицензий на ПО... |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Имхо, это милый оскал капитализма. Может быть, что самым эффективным способом организации труда были сталинские артели, когда вклад каждого оценивался по его выработке в натуральных показателях, а начальника избирали общим голосованием. Тогда обычный "колхозник"мог купить танк для фронта. Ключевой особенностью той артели было то, что долю в ней нельзя было продать или передать по наследству. Если бы "инстаграмм" (запрещенный в России) был такой артелью - Фейбсук (запрещенный в России) не смог бы его купить никогда. Хрущов эту артельную систему угробил, ввел уравниловку, и начался застой. Сейчас в основе хозяйственной деятельности лежат финансы, которые "распечатываются" в любых количествах, поэтому труд обесценивается, инженерное (и вообще рабочее) сообщество отодвинуты от принятия решений. Решения принимаются неэффективные и вредные для большинства. Сейчас по закону существование "сталинской" артели невозможно, доля каждого оценивается "в деньгах", если человек выходит - общество обязано ему выплатить долю. А "выгодная" работа теперь заключается не в создании продукта, а в манипулировании долями и финансами. Но никто не запрещает выработать свои правила сообщества по аналогии с компьютерной игрой и оперировать условными "строками кода", которые могут быть игровыми деньгами внутри сообщества. "Колхоз светлый путь" - плохое название? Последний раз редактировалось nickname2019, 04.06.2024 в 18:42. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Примерно 20-30 тысяч. Не знаю, можно ли это считать сообществом, если в нем пока один я.
Последний раз редактировалось nickname2019, 04.06.2024 в 19:20. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
1. Для расчетного ПО нужен скриптовый язык. 2. Для скриптового языка нужен компилятор с возможностью отладки. 3. Скриптовый язык должен позволять коллективную разработку. 4. Коллективная разработка должна иметь возможность автоматически отслеживать авторство кода построчно (наличия форков недостаточно). Т.е. если человек изменил строку кода - общество должно знать, кто это сделал и почему. 5. Разработчики должны иметь возможность влиять на развитие продукта, поэтому нужен рейтинг полезности разработчиков при голосованиях через учет "кармы". Карма разработчика учитывается через подсчет строк созданного им кода. Сейчас я нахожусь в начале п.3. Проблематика по п.1...п.5 является исследовательской задачей, т.е. до завершения процесса не будет до конца понятно, будет ли это работать и нужно ли это вообще. Соответственно, привлечение "сообщников" на данном этапе бессмысленно, как и какого-то финансирования. Но, я думаю, что рассуждения в этом направлении полезны, так как кто-то и когда-то может реализовать что-то похожее, что тут обсуждалось. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
для расчетного ПО нужны выверенные и адаптированные под текущую реальность алгоритмы расчета для начала.. Сколько осталось проектировщиков в стране, способных построить математическую модель, и главное - и чем их заинтересовать для участия в бесплатном проекте? А уж языков программирования и средств разработки сейчас - на любой вкус, если не упираться в мифическую построчную отчетность)
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
И этот проект с открытой лицензией. Цитата:
Цитата:
P.S. Мне кажется интересным, что сейчас открывается возможность создания "коммунизма 2.0" на новой технологической платформе, когда решения может принимать не личность (которая может ошибаться и которую могут купить корпорации), а коллектив (который разбирается в теме лучше, чем любой "менеджер", а тем более финансист). Причем этот "коммунизм 2.0" не предполагает уравниловку, как раз наоборот - карма у всех будет разной, как у участие в распределении доходов. Последний раз редактировалось nickname2019, 05.06.2024 в 07:11. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,074
|
Концепция поменялась? Будем писать МКЭ на самодельном скриптовом языке? От этого все, кто говорил в теме "фу, плюсы, я только на питоне буду", разом переучатся и на этот раз все взлетит? Например, нехватку память в nano-x32 язык решает?
колхоз наш раньше назывался путь ленина потом никак теперь лень путина назвали чтоб новых букв не покупать (с)тырьнет |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Скрипт нужен, чтобы управлять графикой, а не для расчетного ядра, но можно обойтись и без него. Но без скрипта это не будет круто. Я так вижу, что сначала нужен скрипт, поэтому я пишу скрипт. Последний раз редактировалось nickname2019, 05.06.2024 в 09:38. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
а другим?) Или под себя код пишите... тогда причем тут колхозы, артели? Offtop: p.s. чего то мне это все больше напоминает другого форумчанина, специалиста по XData... |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Я думаю, что эта тема о каких-то перспективных возможных разработках. Если бы это касалось какого то законченного проекта, это, наверное, следовало бы перенести в раздел "Готовые программы". Публиковать "сырые" разработки я не вижу смысла. Если когда-то появиться программный каркас, на основе которого можно вести коллективную разработку - я его опубликую. Опыт гитхабом у меня вышел негативный, так как синхронизация не работала + гитхаб сейчас в любой момент может вынести бан. Тема со скриптом, возможно, не очень актуальна. Но тут опять не понятно, а может будет актуальна, если закончить и сделать апробацию. Т.е. сейчас у меня готовых решений нет. Количество строк кода - это не показатель, что мой путь верный. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
вы явно не первопроходец в организации совместной работы программистов - трудно представить себе, что придет какая то гениальная организационная мысль, которая не была "найдена" за предыдущие десятилетия. |
|||
![]() |
|
||||
Регистрация: 29.04.2016
летающий цирк Монти Пайтона
Сообщений: 260
|
В принципе на гитхабе есть открытые проекты, которые сейчас пишутся. Например калькулятор сечений НДМ:
https://github.com/RedikultsevEvg/StructureHelper Это не мкэ, но в целом уже готовая программа с нужным функционалом
__________________
I'm trained for nothing |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 29.04.2016
летающий цирк Монти Пайтона
Сообщений: 260
|
По мкэ для жб видел один проект открытый. Там программа скорее как приложение к книге написано, но функционал удивляет. По сути открытая реализация Idea Statica Concrete
https://concrete-fem.com/download/ Дописать мешер, графическую оболочку и в целом готово=)
__________________
I'm trained for nothing |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.11.2021
Сообщений: 27
|
Цитата:
теперь по пп. 1-2: В каком смысле нужен? Для разработки самого ПО или для работы в нем? По всей видимости имеется в виду разработка. Существует множество готовых языков, нет никаких проблем для их использования. Тот же python нынче в трендах. Можно взять Tcl или один из диалектов Lisp вроде Scheme, Guile. Или вы хотите разработать сам язык и сделать интерпретатор под него, что-то вроде APDL для ансиса? Если так, то можно ставить сразу крест на всем проекте. Что то вроде OpenSCAD? Не уверен что это удобно, лучше работу с геометрией организовать кнопками на интерфейсе пользователя, хоткеи, может быть предусмотреть что-то типа шаблонов |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Цитата:
Пока толком не заработает, публиковать не хочу. |
|||
![]() |
|
||||
Регистрация: 29.04.2016
летающий цирк Монти Пайтона
Сообщений: 260
|
OpenScad звучит довольно тяжеловесно. Небольшой 2d/3d редактор проще наверно свой написать.
Последние полгода делаю небольшой pet-проект, графику пишу на opengl, в целом все красиво выводится. Планирую в таком же стиле добавить простые инструменты редактирования, импорт dxf https://github.com/radistMorze-constr/FEMmini
__________________
I'm trained for nothing |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Схему можно импортировать из текстового файла схемы SCAD или Лиры, а сосредоточится на написании расчетного кода. Я может попозже подтянусь, попробую решить задачу генерации сетки в Автокаде и вывод ее в формате SCADа в txt. У меня висят в работе два монолитных домика с кучей стен. Так и так придется что-то кумекать по быстрой генерации сетки. Руками я буду дольше мучиться. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Я электрик-слаботочник. Хочу тоже поделится своим взглядом на проблему множественных расчетов.
В конце прошлого года, я открыл для себя такую связку CAD -> EXCEL -> CAD. В нашем опенсоурсном CADе уже давно была реализована система автоматической укладки кабелей и получение модели(дерева) соединений(типа диспетчер инженерных систем из ревита). Имея полную взаимосвязь всех электрических устройств объекта, я сразу кинулся реализовать все расчеты внутри КАДа, что оказалось ошибкой. Вывод который я сделал, то что подходит для черчения, не значит что подойдет для расчетов. Уныние, грусть, и дальше поиск решения, ну и как результат прозрение. Основываясь на модели(дереве) соединений из CAD, я выполняю генерацию эксельки. Причем спец команд, которые задают правила генерации эксельки не много (есть большая вероятность увеличения их количества). Пока генератор в стадии разработки, но один проект сдал, использовал свой генератор. Во время разработки проекта выявлены недостатки (надо сохранять все коэффициенты между перегенерациями, сейчас этим занимаюсь), концепция теперь меняется CAD<->EXCEL. Я прям доволен данной связкой. Писать расчеты в Экселе большинство умеет, плюс эксель позволяет легко вместить в себя большой структурированный расчет и пересчитывать его на лету. Я понимаю, что Эксель упирается в потолок в определенных местах, но используя язык Pascal, я могу выполнить промежуточную или пост обработку так, как мне надо. Сейчас делаю генератор для электрики, но вижу, что он так же подойдет для слаботочки СКС, ОПС, ЭТ, ЧС и прочее Вывод: Я предлагаю Вам подумать над связкой CAD<->EXCEL, причем именно генерации Эксель(без ручного переноса данных). Я не конструктор, Ваших расчетов я не знаю. Наш опенсоурсный кад по сути это 2д ревит. И конечно, в будущем алгоритмы генерации планирую перетянуть в ревит. Очень хотелось бы тоже найти команду энтузиастов, но за годы поисков понял что главным спонсором разработки буду я сам, тратить свое собственное время. На рисунки результат вывода информации из эксель обратно в КАД |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Расчеты и черчение у нас реализованы в разных программах, работа заключается в затрате большого количества времени в перегонке информации из одной программы в другую. Последний раз редактировалось nickname2019, 06.06.2024 в 23:15. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
Цитата:
Я лишь хотел поделился опытом своих изысканий, в области расчетов. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
А Вы не работали с #Net сборками или objectarx? А с динамическими блоками у Вас в электрике как? Используете их? Последний раз редактировалось nickname2019, 06.06.2024 в 23:15. |
|||
![]() |
|
||||
Проектировщик электрических сетей Регистрация: 17.01.2014
Пенза
Сообщений: 178
|
C# знаю постольку поскольку. Могу обращаться к объектам на чертеже и считывать с них данные, ну и соответственно обрабатывать информацию.
objectarx - С++, не пробовал, напрягла сложность. Да и потом нашел опенсоурсный КАД... Я не умею создавать в автокаде динамические блоки, да и цели не было научится. Но иногда их использую, я еще не дописал расчетку. В зкаде мы используем расширение для объекта, оно позволяет управлять видимостью линий внутри объекта и по идеи в зависимости от параметров внутри объекта, происходит нужная визуализация. Генератор схем находится внутри экселя, это инструкции которые меняются в зависимости от расчетов, он дает координаты и имя нужного объекта для вставки, и соответственно управляет видимостью внутри него. Если бы я делал для автокада, то мне бы нужны были динамические блоки для управления видимостью. Как я понимаю, динамические блоки это удобство, реально ускоряют время, но они не дают нужной автоматизации, они сами по себе ----- добавлено через ~5 мин. ----- Цитата:
Пришлось еще что то нарисовать, я нарисовал, повторил и экселька новая, с новыми цифирьками. Тут главное понимать, что экселька должна генерировать в зависимости от чертежа, и параметров объектов внутри него. Даже не подумайте, что я навязываю свой подход, все это прекрасно можно реализовать внутри автокада. Тем более у С# есть отличные библиотеки для взаимодействия с эксель |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
СП 335.1325800.2017 «Крупнопанельные конструктивные системы. Правила проектирования» (Обсуждение) | Armin | Прочее. Архитектура и строительство | 37 | 07.11.2018 06:55 |
Фирменные решения по пропуску коммуникаций через стены подвала | Regby | Конструкции зданий и сооружений | 2 | 07.04.2010 20:43 |
устройство и возможные конструктивные решения вентфасада из кирпича | Ivansobaka | Каменные и армокаменные конструкции | 1 | 16.12.2009 06:38 |
Конструктивные решения по перемычкам в многослойных кирпичных стенах! | Westroy | Архитектура | 16 | 30.11.2009 13:57 |
Конструктивные решения монтажных соединений многоэтажных зданий на высокопрочных болтах | VoRoNoFF | Конструкции зданий и сооружений | 1 | 04.04.2009 00:41 |