All streams
Search
Write a publication
Pull to refresh
41
0
Тимофеев Константин @timofeevka

Программист

Send message

Ну площадь считать это понятно, но не очень правильно так говорить, т.к. существуют разные способы аппроксимации интегрируемой функции. Я так понял, что вы применяете метод трапеций ?

Как это сортировка не нужна ? Ну если вы считаете что каждый блок должен рассчитываться изолированно в своём потоке то может и не нужна, только это тогда уже не считается структурной схемой собственно, а как-то совсем по другому должно именоваться. Я же говорю, что вы пытаетесь в данном случае используя некоторую свою нестандартную парадигму понимания структурных схем решать задачи для решения которых должна применяться несколько другая парадигма. И в SimInTech и Simulink и вообще везде по сути структурная схема представляет собой направленный граф, описывающий связь переменных между элементарными моделями блоков. Классическое понимание этого графа подразумевает его сортировку таким образом, чтобы при последовательном исполнении отсортированного списка блоков на входе каждого блока не возникало неопределённости. Если как вы говорите сортировки у вас нет, это значит что эта неопределённость присутствует и заложена в архитектуре вашего расчётного ядра. Вывод из этого, что для решения описанного в статье класса задач такая архитектура непригодна. Это не значит что она для другого будет непригодна, ну к примеру для описания передачи данных между контроллерами по сети, но и там по идее сортировка модели должна присутствовать. Но для вот этой конкретной модели - точно нет, описывать её без наличия сортировки блоков нельзя.

По поводу ПЛК: я в курсе чем их программируют и я делал свой генератор кода для ПЛК и свою исполняемую среду, которая работает на АЭС успешно. Вообще на данный момент язык LD не очень как-то любят использовать, в основном FBD и ST. Для крупных нетиповых алгоритмов - Си. Так вот в языке FBD сортировка блоков ЕСТЬ ! Т.к. его стандарт предусматривает, что исполнение блоков делается в порядке их соединения и никакой параллельщины там нет на уровне диаграмм, описывающих элементарные алгоритмы.

Поэтому я могу дать совет по поводу вашего вычислительного ядра: 1 - введите сортировку на уровне структурных схем. 2 - явным образом сделайте указание на схеме параллельно исполняемых ветвей кода.

Да он ответил выше - площадь считает. Т.е. видимо метод трапеций.

Почитав некоторые статьи автора по поводу автоматного программирования я хочу заметить, что:

  1. Сводимость конечных автоматов к классическим структурным схемам (а приведена именно такая) ограничена. Для разрешения этой проблемы для структурных схем требуется введение операции условного исполнения части схемы по флагу и учёт этой операции при сортировке блоков. Ну или как минимум блока с запоминанием состояния (задержка на шаг интегрирования).

  2. Большинство логических схем с логической обратной связью прекрасно моделируется описанием модели структурной схемой с введением блока задержки на шаг в обратной связи. При этом по выходу задержек не будет на шаге интегрирования относительно входа. При этом в SimInTech можно всё это и как карту состояний нарисовать если что. Про то, что некоторые вещи так не смоделировать я тоже в курсе, но их реальная встречаемость в практически используемых моделях невелика.

  1. Недурно бы было если бы автор обосновал как он интегратор у себя в программе моделирует и как схема при этом сортируется. Потому что в данном случае конкретном случае неповторяемость результатов - это ошибка.

Точное численное решение - это масло масляное :) Для данных задач точного аналитического решения нет. Есть только численное.

  1. Для решения нелинейных задач по типу аттрактора необходимо в настройках указать методы интегрирования с переменным шагом (лучше адаптивный 1, Адаптивный 3).

  2. По умолчанию для графиков фазовых траекторий выставлено ограничение выводимого к-ва точек которое неплохо бы в данном случае указать явно. Правой кнопкой по графику, галочку прореживания убрать, количество точек выставить каким нибудь большим.

  3. А при чем вы вообще тут пишете про параллелизм если эта задача решается методом интегрирования строго последовательно и на одном ядре? Вы же вроде не считаете в пакете несколько систем в разных проектах? Если чти в настройках SimInTech есть опции для пакетного расчёта определяющие момент записи сигналов. Но этой конкретной задачи это не касается вообще. В данном конкретном случае слова автора о том что в пакете ВКПа результаты от запуска к запуску различаются говорит о том, что в рамках архитектуры данного программного пакета понятием воспроизводимости вычислительного эксперимента пожертвовали в пользу распараллеливания, причём делать такое в рамках приведённой задачи некорректно. В ПК SimInTech при помощи инструмента пакет можно разбить систему на параллельно исполняемые системы и глянуть как они влияют друг на друга.

  4. shadow mode of variables используется при параллельном расчёте в режиме пакета в SimInTech. Настройка использовать запись сигналов на шагах синхронизации.

  5. Сравнивать результаты численного интегрирования желательно на идентичных методах интегрирования. Задачи с этими аттракторами относятся к классу жёстких, результат их сильно зависит от используемого метода. Если что - в демо-примерах ПК SimInTech все эти задачки есть готовые.

  6. А о чем была статья то? Вы взяли для примера классическую задачу интегрирования жёсткой системы диф уравнений, получили в ВКПа в одном из режимов невоспроизводимость результатов расчётов и делаете выводы что считать жёсткие системы диф уравнений надо сделав каждый интегратор в своём потоке? Ну ок можно это сделать, но вообще это не очень правильно в данном случае. Просто видимо принципиальная парадигма решения подобных задач в ВКПа совсем иная чем в simulink, simintech, modelica и т.д. и по всей видимости эта парадигма для чего-то иного предназначена?

Да! А на нашем софте считали динамику ядерной энергоустановки проекта 22220 !

CAD, CAE, спец софт всякий, PDM ы, офисные пакеты и т.п.

Не обязательно. Можно использовать и структуры обычные. Можно интерфейсы без всякого COM. Для стыковки с сишными частями я делал интерфейсную структуру, как оказалось был прав в отношении переносимости.

Может в качестве примера лучше привести обучение более менее полноценной одномерной теплогидравлической модели на базе данных CFD расчёта? Там не так много подгоночных параметров.

Ты тоже решил писателем стать? ) Я тут одну статью написал, даже было много отзывов положительных.

Я советую сейчас на матлаб не ориентироваться в серьёзных проектах.

Ну хз у кого на чем, а у меня для windows - Delphi VCL и с того же кода для Linux - FPC+Lazarus для GTK2. Альтернатив не сильно много: QT, Java FX, Flutter больше для мобилок, Delphi/Lazarus как ни странно. А вообще выскажу такую мысль, что возможно в нынешнее время в качестве десктопного GUI имело бы смысл затачивать игровые движки, ну типа Unity.

А экспорт электрический схемы в программы для моделирования электроцепей есть интересно?

Да, есть такое. Самая популярная нынче система версионирования.

Ну мы у себя в simintech тоже давно встроили меню вызова git клиента, но так что бы не сказал что это супервостребованная фича, но некоторые пользуются. Чаще git используют отдельно от рабочего софта. Но так дело полезное.

Это отлично если сделаете статью. Актуально будет для многих.

На чем нативное то делать будете? Вообще интересно было бы услышать про проблемы написания кроссплатформенного нативного софта на C++.

Information

Rating
Does not participate
Location
Раменское, Москва и Московская обл., Россия
Date of birth
Registered
Activity