Pull to refresh

Когда вы способны найти пределы LS-DYNA

LS-DYNA является одним из моих самых любимых инструментов численного моделирования. Однако и у нее есть свои пределы.

image

Разработанная доктором Джоном О. Холквистом (John O. Hallquist) в Ливерморской национальной лаборатории имени Лоуренса в 1976 г.[wiki], она изначально предназначалась для моделирования воздействия ядерного взрыва. По прошествии множества лет развития ее эффективный и быстрый код приспособили для решения огромного числа задач механики твердых тел и жидкостей.

LS-DYNA очень сурова: у него вообще нет графического интерфейса, что уж там говорить о приятном пользовательском опыте и простоте работы. Пере-/постпроцессоры для нее редко покрывают полный функционал решателя или отличаются таким же страшным интерфейсом. Данное программное обеспечение не для слабых духом. Однако, для тех, кто смог перешагнуть через все трудности в освоении методик работы открываются поистине неограниченные возможности моделирования физических процессов. Одно только перечисление реализованных методов вызывает уважение:
  • FEM (Finite element method, метод конечных элементов)
  • BEM (Boundary element method, метод граничных элементов)
  • DEM (Discrete element method, метод дискретных элементов)
  • XFEM (Extended FEM, расширенный метод конечных элементов)
  • ALE (Arbitrary Lagrange Eulerian, обобщённый Лагранжево-Эйлеров решатель)
  • CFD (Computational fluid dynamics, вычислительная гидродинамика)
  • EFG (Element Free Galerkin, без сеточный метод Галеркина)
  • SPH (Smoothed Particle Hydrodynamics, гидродинамика сглаженных частиц)
  • EM (Electromagnetism Module, решение задач электромагнетизма)

Несмотря на всю имеющуюся мощь, во время выполнения одного из проектов я столкнулся с любопытной ошибкой: «forrtl: severe (170): Program Exception — stack overflow». Данная ошибка получилась при попытке выполнения расчета модели, содержащей чуть более 50 000 тел, большая часть из которых являлись балочными. Для справки, модели, содержащие более 10 000 тел, встречаются довольно редко. По всей видимости, разработчики не предполагали создания таких масштабных моделей. Использование самых свежих дистрибутивов с сайта разработчика не помогло решить данную проблему. Посему было решено пересобрать решатель с увеличенным размером стека.

Так как в качестве рабочей станции я использую компьютер под управлением операционных систем Windows, то и переборка будет осуществлять для этой же платформы. Первое, что понадобится для выполнения задачи, это подходящий компилятор. Сейчас LSTC говорит об официальной поддержке только Intel Fortran, так что выбор падает Intel Parallel Studio XE 2013 с Intel Compiler XE v13.1.

После установки компилятора пробуем вызвать команду конфигурирования рабочего окружения:
"%ProgramFiles(x86)%\Intel\Composer XE 2013\bin\compilervars_arch.bat" intel64

Получаем следующий ответ:
«ERROR: Visual Studio 2008, 2010, 2012 or 11 is not found in the system».

Система четко дает понять, что ей нужна MS Visual Studio, причем почти любая. В данном примере выбираем Visual Studio 2010 Pro. После установки VS вызываем командную строку конфигурирования окружения компилятора снова:
"%ProgramFiles(x86)%\Intel\Composer XE 2013\bin\compilervars_arch.bat" intel64

На этот раз полученный ответ свидетельствует о том, что окружение готово к работе:
Intel® Parallel Studio XE 2013
Copyright © 1985-2012 Intel Corporation. All rights reserved.
Intel® Composer XE 2013 (package 089)
Setting environment for using Microsoft Visual Studio 2010 x64 tools.

Дополнительным подтверждением служит успешное выполнение команды вызова компилятора Fortran:
ifort

Команда распознается системой, система дает ответ вроде следующего:
Intel® Visual Fortran Intel® 64 Compiler XE for applications running on Intel® 64, Version 13.0.0.089 Build 20120731
Copyright © 1985-2012 Intel Corporation. All rights reserved.

ifort: command line error: no files specified; for help type «ifort /help»

Теперь имеется готовая среда для пересборки LS-DYNA. Конечно, для человека, разбирающегося в программировании, данные действия не новы и не удивительны, но специалист в LS-DYNA не всегда обязан иметь навыки программирования.

Для дальнейшей работы нам потребуется архив «LS-DYNA User-Defined Materials Library», из которого будет собираться новый исполняемый файл. Данный архив может быть скачан с официальных ресурсов разработчика при наличии действующей технической поддержки:

В наших предпочтение всегда отдается решателю с двойной точностью, поэтому будем использовать соответствующий набор: ls-dyna_smp_d_R711_winx64_ifort131_lib.zip

За размер стека LS-DYNA отвечает значение параметра "-F" для LFLAGS указанное в makefile. По умолчанию размер стека установлен равным 180000000. В рассматриваемом случаи стабильной работы решателя удается достичь при десятикратном увеличении размера стека. Редактируем makefile и запускаем сборку при помощи nmake. В стандартном выводе можно будет увидеть много сообщений, которые разработчик рекомендует проигнорировать. Об успехе выполнения операции сборки свидетельствует следующее завершающее сообщение:
-out:lsdyna.exe
-subsystem:console
-stack:1800000000
-force
-nodefaultlib:msvcrt.lib
-nodefaultlib:vcomp.lib
dyn21.obj
dyn21b.obj
couple2other_user.obj
libdyna.lib
libansys.lib
shell32.lib
user32.lib
comctl32.lib
comdlg32.lib
Iphlpapi.lib
gdi32.lib

Таким образом получаем новый исполняемый файл «lsdyna.exe» с увеличенным в 10 раз объемом стека. Теперь LS-DYNA готова решать еще более сложные задачи механики!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.