2. |
• Средства разработки:
– Intel Parallel Studio XE 2013 с Intel Compiler XE v13.1
– Visual Studio 2008, 2010, 2012 или 11
• Дистрибутивы LS-DYNA:
– http://www.lstc.com/download/ls-dyna_(win)
– http://ftp.lstc.com/user/pc-dyna/
• Компоненты LS-DYNA для сборки:
– ls-dyna_smp_d_R711_winx64_ifort131_lib.zip – двойная точность
– ls-dyna_smp_s_R711_winx64_ifort131_lib.zip – одинарная точность
Установка необходимых компонентов для разработки
2
3. |
• Intel предоставляет бесплатные лицензии на свои средства разработки для
студентов, научно-исследовательских групп, преподавателей и разработчиков
ПО с открытым исходным кодом
• https://software.intel.com/en-us/qualify-for-free-software
Не коммерческая среда разработки для LS-DYNA
3
4. |
• Билиотеки
– *.a
• Объекты
– *.o
• Подключаемый код
– *.inc
• Исходные тексты на Fortran
– *.f
• Инструкции по сборке
– makefile
Состав ls-dyna_smp_d_R711_winx64_ifort131_lib
4
5. |
• Подготовка окружения для работы с командной строкой компилятора:
– STDIN:
◦ "%ProgramFiles(x86)%IntelComposer XE 2013bincompilervars_arch.bat" intel64
– STDOUT:
◦ Intel(R) Parallel Studio XE 2013
◦ Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
◦ Intel(R) Composer XE 2013 (package 089)
◦ Setting environment for using Microsoft Visual Studio 2010 x64 tools.
• Проверка версии компилятора Fortran:
– STDIN:
◦ ifort
– STDOUT:
◦ Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version
13.0.0.089 Build 20120731
◦ Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
◦ ifort: command line error: no files specified; for help type "ifort /help"
Проверка работоспособности окружения
5
9. |
• mid
– Material identification
– Идентификатор материала в .k
• ro
– Mass density
– Плотность
• mt
– Material type
– Номер пользовательской процедуры
• lmc
– Length of material constant
– Длина массива констант материала
• nhv
– Number of history variables to be stored
– Количество сохраняемых переменных истории
• iortho
– Включатель ортотропии/точечной сварки
• ibulk
– Позиция модуля объемного сжатия в наборе констант
материала
• ig
– Позиция модуля сдвига в наборе констант материала
• ivect
– Vectorization flag
• ifail
– Failure flag
• itherm
– Temperature flag
• ihyper
– Deformation gradient flag
• ieos
– Equation of state
*MAT_USER_DEFINED_MATERIAL_MODELS
9
10. |
• Все пользовательские материалы должны быть включены в файл
.ls-dyna_smp_d_R711_winx64_ifort131_libdyna21.F
• Шаблоны типовых материалов уже содержаться в этом файле
• LS-DYNA скомпилирована уже с типовыми шаблонами
Создаем свой материал
10
11. |
Схема работы интерфейса пользовательского материала
11
LS-DYNA вызывает процедуры для элементов из libdyna.a
•call usermat()
Вызов про процедур usermat() для элемента из dyna21.f
•solids: call usermathn()
•shells: call usermats()
•beams: call usermatb()
Вызов под процедуры umatxx() для материала из dyna21.f
•call umat41()
Вычисления внутри umatxx()
•call umat41()
12. |
7 позиция 73 позиция
| |
+--------------------------------------------------------+
| |
subroutine umat41 (cm,eps,sig,epsp,hsv,dt1,capa,etype,tt,
1 temper,failel,crv,cma,qmat,elsiz,idele)
| |
+---------------------------------------------------------+
| |
6 позиция 73 позиция
Базовый синтаксис Fortran
12
13. |
• cm(i) – константы материала
• eps(i) – деформации
• sig(i) – напряжения
• hsv(i) – переменные истории
• dt1 – шаг по времени
• сapa – reduction factor for transverse shear
• etype:
– eq."solid" for solid elements
– eq."sld2d" for shell forms 13, 14, and 15 (2D
solids)
– eq."shl_t" for shell forms 25, 26, and 27 (shells
with thickness stretch)
– eq."shell" for all other shell elements plus thick
shell forms 1 and 2
– eq."tshel" for thick shell forms 3 and 5
– eq."hbeam" for beam element forms 1 and 11
– eq."tbeam" for beam element form 3 (truss)
– eq."dbeam" for beam element form 6 (discrete)
– eq."beam " for all other beam elements
• tt – текущее время
• temper – текущая температура
• failel – flag for failure, set to .true. to fail an
integration point,
– if .true. on input the integration point has failed
earlier
• crv – array representation of curves in
keyword deck
• cma – additional memory for material data
defined by LMCA at 6th field of 2nd crad of
*DATA_USER_DEFINED
• elsiz – characteristic element size
• idele – element id
Зарезервированные переменные
13*LS-DYNA® KEYWORD USER'S MANUAL VOLUME I, APPENDIX A: User Defined Materials
16. |
• Эрозия материала включается при присвоении failel значения .true. или
соответствующим элементам массива failels значения .true. для
векторизованной формы
Эрозия материала
16
17. |
c *=== Hello, LS-DYNA Users! ===*
c23456+--------------------------------------------------------+
if (ncycle.eq.1) then
if (cm(16).ne.1234567) then
call usermsg('mat41')
write(*,*)
write(*,*)'+----------------------------------------+'
write(*,*)'| This is output test by Yury Novozhilov |'
write(*,*)'+----------------------------------------+'
write(*,*)' E = ', cm(1)
write(*,*)' nu = ', cm(2)
write(*,*)
endif
endif
c23456+--------------------------------------------------------+
Работы с STDOUT в LS-DYNA
17
20. |
c +--------------------------------------------------------+
c | Von Mises Stress failure |
c +--------------------------------------------------------+
sig_eqv=sqrt((
1 (sig(1)-sig(2))**2+
2 (sig(2)-sig(3))**2+
3 (sig(3)-sig(1))**2+
4 6*(sig(4)**2+sig(5)**2+sig(6)**2)
5 )/2)
if (sig_eqv.gt.cm(5)) failel=.true.
c +--------------------------------------------------------+
Реализация на уровне кода
20
22. |
• Вырезаем полный текст под процедуры из dyn21.F в отдельный *.F файл,
например umat41.F
• Система сборки отслеживает изменения только в файле dyn21.F
• Подключаем внешний файл из dyn21.F:
c +--------------------------------------------------------+
include 'umat41.F'
c +--------------------------------------------------------+
Выделение под процедуры в отдельный файл
22