Уже полгода пользуюсь замечательной программой SolidWorks и периодически мне выдает в сборках ошибку ‘В этой детали есть элементы, которые определены в контексте другой сборки’.
Я пытался делать деталь независимой, сохранять в файл, учить буддизм для смирения. Но уже полгода периодически я нервничаю. Как кто решает эту проблему?
Последний раз такое было, когда я сохранил деталь сборки с отдельный файл, потом создал новый проект и добавил всем детали ‘суфиксы’ для уникальности, но этой детали все равно что-то не нравится (
Ответы на вопросы
У меня есть итеративная программа cuda, которая повторяет новые значения по мере необходимости. Это конфиденциальный код, поэтому я не могу поделиться им, но хочу обсудить проблему.
Итеративная программа правильно работает на моем ПК, когда я работаю с меньшим объемом данных. У меня есть правильные коды распределения и освобождения.
Независимо от того, сколько раз я запускаю программу, она работает правильно с меньшим объемом данных.
Запрос «Баг» перенаправляется сюда; см. также другие значения.
Программная ошибка (жарг. баг) — означает ошибку в программе или в системе, из-за которой программа выдает неожиданное поведение и, как следствие, результат. Большинство программных ошибок возникают из-за ошибок, допущенных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые ошибки возникают из-за некорректной работы инструментов разработчика, например из-за компилятора, вырабатывающего некорректный код.
Термин «программная ошибка» обычно употребляется для обозначения ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. Отчет, содержащий информацию об ошибке также называют отчетом о проблеме (англ. bug report). Отчет о критической проблеме (англ. crash), вызывающей аварийное завершение программы, называют крэш-репортом (англ. crash report).
Программные ошибки локализуются и устраняются в процессе тестирования и отладки программы.
В новой версии SOLIDWORKS Simulation 2021 улучшена производительность решающей программы, что позволило сократить время решения некоторых типов исследований. Усовершенствования затронули исследования с большим количеством контактирующих элементов с использованием контакта поверхности с поверхностью.
По умолчанию в SOLIDWORKS Simulation доступно три решателя: FFEPlus, Intel Direct Sparse и Direct Sparse, а также автоматический выбор решающей программы (рис.
В автоматическом режиме алгоритм выбирает между решателями FFEPlus и Intel Direct Sparse. Критериями выбора будут являться: количество уравнений, тип нагрузки, тип сетки, геометрические особенности модели, контакты и соединители, а также объем доступной системе памяти.
Ниже приведено несколько тестов сравнения SOLIDWORKS Simulation 2020 и 2021 в ходе исследования двух контактирующих деталей с условием контакта поверхности с поверхностью. Тестовая модель показана на рис.
Рис. Тестовая модель для решения контактной задачи в SOLIDWORKS Simulation
Для решения набора уравнений доступны две прямые решающие программы и одна итеративная.
Программа предлагает следующие возможности:
Выбор решающей программы
Следующие факторы могут помочь с выбором соответствующей решающей программы:
В зависимости от типа исследования применяются следующие рекомендации.
Статус решающей программы
- Данные об исследовании, такие как степени свободы, число узлов, число элементов
- Данные о решающей программе, например, тип решающей программы
- Максимальное допустимое число итераций (P1)
- Порог остановки (P2)
- Один из элементов сопряжения погашен, недействителен, или больше не существует.
- Плоские грани параллельны, но неправильно выровнены.
- Грани не параллельны друг другу. Угол состовляет градусов.
- Неправильное расстояние между плоскими гранями. Расстояние равно , желаемое расстояние — .
- Невозможно решить сопряжение. Подумайте об:
- Удалении этого сопряжения. bsp;
Перемещении сборки ближе к желаемой позиции путем перетаскивания. bsp;
Добавлении сопряжений для более точного определения сборки. bsp; - Удалении этого сопряжения. bsp;
- Перемещении сборки ближе к желаемой позиции путем перетаскивания. bsp;
- Добавлении сопряжений для более точного определения сборки. bsp;
- Данная ошибка и значки предупреждения в дереве конструирования FeatureManager указывают на ошибку сопряжения.
Этимология термина «баг»Править
«Так было со всеми моими изобретениями. Первый шаг — интуиция, которая приходит как вспышка, затем возникают трудности — устройство отказывается работать, и именно тогда проявляются «жучки» — как называют эти мелкие ошибки и трудности — и требуются месяцы пристального наблюдения, исследований и усилий, прежде чем дело дойдёт до коммерческого успеха или неудачи».
Во время Второй мировой войны словом bugs именовали проблемы с радарной электроникой.
Значение и классификация ошибок программного обеспеченияПравить
В зависимости от этапа разработки ПО, на котором выявляется ошибка, выделяют:
- Критические (иногда ) — лишающие программу всей полезности;
- Серьёзные;
- Незначительные;
- Косметические.
По времени появления:
- Постоянно, при каждом запуске;
- Иногда («плавающий» тип);
- Только на машине у клиента (зависит от локальных настроек у клиента).
По месту и направлению:
- Ошибки пользовательского интерфейса;
- Системы обработки ошибок;
- Ошибки, связанные с граничными условиями (например, некорректная обработка пустой строки или максимального числового значения);
- Ошибки вычислений;
- Ошибки управления потоками;
- Ошибки обработки или интерпретации данных;
- При состоянии гонки;
- Повышение нагрузки;
- Ошибки контроля версии и идентификаторов;
- Ошибки тестирования.
В зависимости от характера ошибки, программы и среды исполнения, ошибка может проявляться сразу или наоборот — долгое время оставаться незамеченной (например Проблема 2038 года).
Также ошибка может проявляться в виде уязвимости, делающей возможным несанкционированный доступ к системе или DoS-атаку.
РазновидностиПравить
Для отладки программы (англ. debugging) разработчиками ПО используются специальные программы-отладчики (англ. debugger). Например, в операционной системе Windows можно использовать программу WinDbg из пакета Microsoft Debugging Tools for Windows. Для GNU/Linux и ряда других UNIX-подобных операционных систем существует отладчик GDB (GNU Debugger).
Отчёты об ошибкахПравить
Основная масса ошибок обычно отлаживается на этапе компиляции и тестирования программы. Однако некоторая часть ошибок всё же попадает в публикуемую версию и проявляется на компьютерах конечных пользователей в процессе эксплуатации ПО. Для повышения качества программного обеспечения пользуются специальными программами, цель которых — отловить ошибку в целевом приложении, собрать необходимую информацию об её симптомах и отправить отчёт по интернету к разработчикам данного ПО.
ПоследствияПравить
- Log Book With Computer Bug (англ.). National Museum of American History. Дата обращения: 26 июля 2019. Архивировано 1 июня 2019 года.
- Danis, Sharron Ann: «Rear Admiral Grace Murray Hopper». ei.cs.vt.edu (16, 1997-02-16). Дата обращения: 20 января 2015. Архивировано 15 июня 2010 года.
- Breakpad. Google. Дата обращения: 11 августа 2009. Архивировано 3 февраля 2012 года.
- CrashRpt. Архивировано 3 февраля 2012 года.
- Popper, Nathaniel. Knight Capital Says Trading Glitch Cost It $440 Million (англ.), New York Times (2 August 2012). Архивировано 5 октября 2017 года. Дата обращения 13 ноября 2017.
СсылкиПравить
Время решения для решателя FFEPlus снижается за счет параллельной многоядерной обработки. Сокращение времени решения более выражено в исследованиях, которые имеют не менее 10% контактных элементов от общего числа элементов сетки.
Новый метод имеет ограничения: он не применяется в исследованиях, содержащих соединители, а также при использовании контакта узла с поверхностью, виртуальной стенки, циклической симметрии и дистанционных нагрузок.
Для наглядности в этом тестовом примере настроена точная сетка с большим количеством элементов для увеличения времени, затрачиваемого на решение. Чтобы решить эту задачу с помощью решателя FFEPlus, SOLIDWORKS 2020 потребовалось 7 мин 48 с (рис. Решение задачи с точно такими же настройками в SOLIDWORKS 2021 заняло 6 мин 5 с (рис.
Рис. Результат SOLIDWORKS Simulation 2020 с решателем FFEPlus
Рис. Результат SOLIDWORKS Simulation 2021 с решателем FFEPlus
Решающая программа Intel Direct Sparse
При проведении исследований с большим количеством контактирующих элементов, как правило, более стабильные и точные результаты обеспечивают решатели Direct Sparse.
Улучшения решателей Intel Direct Sparse направлены на работу с масштабными исследованиями. Использование предыдущих версий решателей Direct Sparse для анализа задач с несколькими миллионами степеней свободы приводило к сбою и предложению воспользоваться решателем Large Problem Direct Sparse, который требует меньше оперативной памяти, но в то же время работает медленнее вследствие применения виртуальной памяти.
При запуске тестового исследования с использованием решателя Intel Direct Sparse в SOLIDWORKS Simulation 2020 происходит сбой (рис.
Рис. В SOLIDWORKS Simulation 2020 произошел сбой решателя Intel Direct Sparse
В SOLIDWORKS Simulation 2021 решающая программа Intel Direct Sparse может воспользоваться всей доступной памятью. Если превышен объем доступной памяти, то для завершения анализа применяется дисковое пространство. Такой подход займет больше времени, так как дисковое хранилище работает гораздо медленнее, чем оперативная память. Тем не менее теперь решатель сможет выполнять линейные статические и нелинейные исследования больше чем с 4 миллионами элементов.
В SOLIDWORKS Simulation 2021 это исследование решается с помощью Intel Direct Sparse. В этом тесте большое количество степеней свободы требовало 46 920 дополнительных мегабайт оперативной памяти для решения, поэтому использовалось дисковое пространство, которое заняло больше времени. Однако в некоторых случаях, когда решатель FFEPlus не справляется, решить проблему можно с помощью решателя Intel Direct Sparse (рис.
Рис. В SOLIDWORKS Simulation 2021 решение достигнуто с помощью Intel Direct Sparse Solver
Лицензии SOLIDWORKS Simulation
В полной мере воспользоваться улучшениями производительности можно с помощью лицензий SOLIDWORKS Simulation Professional и SOLIDWORKS Simulation Premium. Эти лицензии не имеют ограничений на количество применяемых физических ядер.
Лицензии SOLIDWORKS Premium и SOLIDWORKS Simulation Standard смогут использовать новые возможности повышения производительности, но будут ограничены максимум восемью физическими ядрами.
Предобуславливание
В линейной алгебре и вычислительной математике предобуславливатель для матрицы если у матрицы число обусловленности меньше, чем у. Также чаще говорят, что это предобуславливатель, чем просто , так как точное значение обычно требует больших затрат на вычисление. Поэтому под предобуславливанием часто понимают вычисление , точнее произведение вектора-столбца или матрицу векторов-столбцов на , что обычно выполняется сложными программными пакетами с использованием итерационных методов, где в конечном итоге не вычисляются точные значения ни для , ни для.
Предобуславливание используется в итерационных методах при решении систем линейных алгебраических уравнений вида , так как скорость сходимости для большинства итерационных линейных решателей увеличивается с уменьшением числа обусловленности в результате предобуславливания. Решатели с предобуславливанием обычно эффективнее, чем использование простых решателей, например, таких как метод Гаусса в случае больших и особенно в случае разреженных матриц. Итерационные решатели с предобуславливанием могут использовать безматричные методы, в которых матрица коэффициентов не хранится отдельно, а доступ к её элементам происходит через произведения матриц-векторов.
ОпределениеПравить
Вместо решения исходной системы линейных алгебраических уравнений можно решать предобусловленную систему , которую можно решить через форму , где удовлетворяет условию , или решить предобусловленную слева систему:.
В результате получается то же решение, что и в исходной системе, до тех пор пока матрица-предобуславливатель невырождена. Наиболее распространенным является предобуславливание слева. Целью предобуславливания является уменьшение числа обусловленности левой или правой предобусловленной системы — или соответственно. Предобусловленная матрица или почти никогда не формируется отдельно. В место этого операция предобуславливания выполняется только над уже готовыми векторами, которые получаются в результате расчета итерационными методами.
Использование это всегда компромисс. Так как оператор применяется на каждом шаге итерационного линейного решателя, операция должна быть легко вычисляемой (по времени вычисления). Наиболее быстрым предобуславливателем в этом случае будет , так как. Очевидно, что в результате работы такого предобуславливателя получается исходная система. Другая крайность — выбор , что даст , при этом будет получено оптимальное число обусловленности 1, требующее одной итерации для того, чтобы решение сошлось. Тем не менее в этом случае и сложность вычисления предобуславливателя сравнима со сложностью решения исходной системы. Поэтому необходимо выбирать где-то между двумя этими крайними случаями, пытаясь получить минимальное число итераций сохраняя легкость вычисления. Некоторые примеры основных подходов предобуславливания описаны ниже.
Итерационные методы с предобуславливаниемПравить
Итерационные методы с предобуславливанием для в большинстве случаев математически эквивалентны стандартным итерационным методам, выполняемым над предобусловленной системой. Например стандартный метод итераций Ричардсона для решения будет выглядеть как
В случае предобусловленной системы , предобусловленный метод будет выглядеть как
Примерами наиболее популярных итерационных методов с предобуславливанием для линейных систем являются метод сопряженных градиентов с предобуславливанием, метод бисопряженных градиентов и метод обобщенных минимальных невязок. В итерационных методах, которые вычисляют итерационные параметры через скалярные произведения, требуются соответствующие изменения в скалярном произведении вместе с заменой на
Геометрическая интерпретацияПравить
Для симметричной положительно определенной матрицы предобуславливатель обычно выбирается также симметричный и положительно определенный. После этого оператор предобуславливания также симметричный и положительно определенный. В этом случае желаемый эффект в применении предобуславливателя это придать квадратную форму оператору предобуславливания и при этом сохранить сферическую форму скалярного произведения с.