Перейти к статье

Геометрический блок

Геометрический блок 2D геометрии

В этом блоке задаются геометрические модели всех объектов, участвующих в задаче. Блок описания геометрии следует сразу за блоком начальных данных, начинается с директивы start_geometry и заканчивается директивой end_geometry. Внутри этих директив задается геометрическая конфигурация всех тел объекта взаимодействия и его начальные кинематические параметры. Конфигурация может быть представлена в виде простых геометрических примитивов: окружность, многоугольник, эллипс и т.д. и их комбинации. Необходимо учитывать тот факт, что в случае аксиальной симметрии задается только верхняя половина геометрического объекта. Порядок задания геометрии внутри одного тела имеет значение, так как все операции производятся строго последовательно. В общем случае директивы задания геометрических примитивов имеют следующий синтаксис:

название директивы (переменная1, переменная2, …)

количество переменных и местоположение в директиве должно строго соответствовать описаниям.

После окончания генерации сетки результаты записываются в дальнейшего использования в других задачах, тем самым сокращая время на генерацию сетки в дальнейших расчетах. Для хранения сетки используется файл bodymesh.rbmf который находится в tmp директории расчета (расширение *.rbmf – это внутренний формат пакета для хранения сетки). Так же в этой же директории хранится поэлементный файл материалов mat2mesh.rmmf, привязанный к геометрии. Как правило, этот файл интересен для использования, в дальнейшем, для тел, состоящих из гетерогенных материалов. Тем самым можно зафиксировать гетерогенность для всех последующих однотипных расчетов и сократить время на генерацию гетерогенности. Для хранения используется файл материалов во внутреннем формате *.rmmf. Для уменьшения объема хранимой информации возможно использовать директиву storage.

body_speed – директива, которая декларирует, что геометрическое описание тела окончено. Несмотря на то, что директива непосредственно не относится к геометрии расчетного объекта, она используется как метка окончания построения геометрии тела. К тому же, с помощью этой директивы задаются кинематические начальные данные и материал. Директива использует следующие переменные:

body_speed (U,V,material)

U – скорость движения тела в направлении оси ОХ [км/с];

V – скорость движения тела в направлении оси ОY [км/с];

material – номер материала, из которого изготовлено тело (номер материала можно узнать, запустив исполняемый модуль с опцией “--listmat”).

body_speedfile – директива, которая декларирует, что геометрическое описание тела окончено. Директива полностью соответствует директиве body_speed с одним лишь отличаем, что номера материалов берутся из файла. Директива создана для задания одинаковых гетерогенных материалов при расчете однотипных задач, но, например, при разных скоростях. Директива использует следующие переменные:

body_speedfile (U,V,matfile)

U – скорость движения тела в направлении оси ОХ [км/с];

V – скорость движения тела в направлении оси ОY [км/с];

matfile – путь к файлу материалов с расширением *.rmmf.

body_mat – директива, которая полностью повторяет свойства директивы body_speed, с одним лишь отличаем, что начальная скорость не задается, а копируется из предыдущего тела. Этой директивой удобно пользоваться для сложных сборок тел, у которых начальные скорости одинаковы, а различаются только материалы. Директива использует следующие переменные:

body_mat (nmaterial)

nmaterial – номер материала, из которого изготовлено тело (номер материала можно узнать, запустив исполняемый модуль с опцией “--listmat”).

body_matfile – директива, которая декларирует, что геометрическое описание тела окончено. Директива полностью соответствует директиве body_mat с одним лишь отличаем, что номера материалов берутся из файла. Директива создана для задания одинаковых гетерогенных материалов при расчете однотипных задач, но, например, при разных скоростях. Директива использует следующие переменные:

body_mat (matfile)

matfile – путь к файлу материалов с расширением *.rmmf.

сopygeom – директива, которая предназначена для задания границы тела, имеющей общую совместную границу с другим телом. Эта директива наряду с более простым интерфейсом задания геометрии границы, автоматически заполняет массив “соседних границ”. Все тела и их границы нумеруются. Нумерация тел – последовательная сквозная. Нумерация границ – последовательная сквозная в пределах тела. Директива использует следующие переменные:

copygeom (nb,ng)

nb – номер тела;

ng – номер границы копируемого тела с номером nb.

Если nb = -1, то номер вычисляется автоматически и означает “предыдущее тело”.

Если ng = -1, то номер вычисляется автоматически и означает “последняя граница nb тела”

Пример:

Для создания новой границы, можно воспользоваться одной из подпрограмм, описанных ниже, а можно, если существует общая граница между телами, просто скопировать данные геометрии вызовом функции copygeom. Директива при копировании меняет тип границы на противоположный и заполняет массив “контактных границ”, что позволяет снизить ошибки при задании большого количества границ и облегчить задачу заполнения начальных условий соседних границ.

Вызов copygeom (2,1) создает новую границу и скопирует данные, созданные подпрограммами krug, kvadrat, polygon и т.д. из 1 границы 2-го тела.

core – директива, которая позволяют построить двумерную геометрию сердечника снаряда/ударника.

correct_step – директива, которая предназначена для изменения шага по пространству в пределах одного тела. В начальном блоке конфигурационного файла задается шаг (который для всех геометрических примитивов изначально одинаковый). Использование единого шага в переделах тела является обоснованным с точки зрения единой матрицы жесткости сетки, однако использование одинакового шага для всех тел расчетной геометрии не оправдано с точки зрения расчетных затрат. С помощью директивы correct_step задается множитель к основному шагу, и этот множитель действует в пределах одного тела или до следующей директивы correct_step.

Например, директива correct_step(2.0) увеличивает размер ребра треугольной сетки в 2 раза, по сравнению с первоначально заданным единым шагом.

file – директива, с помощью которой программный комплекс импортирует сетку из файла. Модулем HSDF программного комплекса CAE Fidesys поддерживаются следующие графические форматы *.rbmf, *.mesh, *.vtk, *.vol, *.ply, а также CAD файлы *.step, *.igs и т.д. Булевы операции над файлами не производятся, поэтому существует ограничение: одно тело – один файл. Файл в формате *.rbmf – это внутренний формат сетки, который создается всегда в процессе выполнения задачи, для каждого тела и хранится в tmp директории расчета. Для уменьшения объема хранимой информации необходимо использовать директиву storage. В качестве переменных используются следующие параметры:

file (geomfile, dx,dy,dz);

file (geomfile);

geomfile – путь к файлу с уже рассчитанной геометрией и сеткой;

dx,dy,dz – после импорта из файла сдвинуть координаты геометрии на (dx, dy, dz).

hardwall_coord(x,y,nx,ny) – директива, которая определяет место установки “жесткой стенки”. Директива использует следующие переменные:

x, y – координата установки;

nx, ny – нормаль, которая определяет действие жесткой стенки.

hardwall_glue_knots(nHW,type) – директива, которая определяет способ движения узлов, расположенных на жесткой стенке. Директива использует следующие переменные:

nHW - порядковый номер жесткой стенки ("-1" – последняя стенка);

type - тип узлов, который может быть:

slide – скользить узлами вдоль жесткой стенки;

glue – приклеить узлы к жесткой стенке.

Внимание!! Для использования директивы необходимо первоначально определить положение жесткой стенки с помощью директивы hardwall_coord.

Геометрический блок 3D геометрии

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

Для перехода в режим работы трехмерной геометрии необходимо в начальном блоке конфигурационного файла указать директиву calc3d. Также для работы необходимо в системном файле или в файле конфигурации прописать директиву geom3d, которая явно укажет программному комплексу, с каким построителем трехмерной геометрии работать.

body_speed – директива, которая декларирует, что геометрическое описание тела окончено. Несмотря на то, что директива непосредственно не относится к геометрии расчетного объекта, она используется как метка окончания построения геометрии тела, т.е. именно эта директива определяет, что закончилось описание тела. С помощью этой директивы задаются кинематические начальные данные. Директива использует следующие переменные:

body_speed (U, V, W, nmaterial)

U – скорость движения тела в направлении оси ОХ [км/с];

V – скорость движения тела в направлении оси ОY [км/с];

W – скорость движения тела в направлении оси ОZ [км/с];

nmaterial – номер материала, из которого изготовлено тело (номер материала можно узнать, запустив исполняемый модуль с опцией “--listmat” см. раздел 2).

body_speedfile – директива, которая декларирует, что геометрическое описание тела окончено. Директива полностью соответствует директиве body_speed с одним лишь отличаем, что номера материалов берутся из файла. Директива создана для задания одинаковых гетерогенных материалов при расчете однотипных задач, но, например, при разных скоростях. Директива использует следующие переменные:

body_speedfile (U,V,W,matfile)

U – скорость движения тела в направлении оси ОХ [км/с];

V – скорость движения тела в направлении оси ОY [км/с];

W – скорость движения тела в направлении оси ОZ [км/с];

matfile – путь к файлу материалов с расширением *.rmmf.

body_mat – директива аналогична 2D случаю;

body_matfile – директива аналогична 2D случаю.

3.4.1 cadfile – директива, которая позволяет импортировать трехмерные модели, построенные в CAD редакторах. В качестве переменных используются следующие параметры:

cadfile(geomfile);

cadfile(geomfile, i_clock);

cadfile(vertex(dx, dy, dz), geomfile,);

cadfile(vertex(dx, dy, dz), geomfile, i_clock);

cadfile(vertex(dx, dy, dz), vector(x, y, z), α, geomfile);

cadfile(vertex(dx, dy, dz), vector(x, y, z), α, geomfile, i_clock).

geomfile – путь к файлу с геометрией;

vertex(dx, dy, dz) – точка отсчёта локальной системы координат (если локальная система не задана, то локальная система координат совпадает с глобальной декартовой системой координат (0,0,0));

vector(x, y, z) – вектор, относительно которого происходит вращение (если вектор не задан, то используется значение (1,0,0));

α – угол вращения;

i_clock – тип границы ([1]- внешняя| [-1] -внутренняя) (если тип границы не задан, то используется значение – внешняя граница).

В случаях если геометрия не может быть описана встроенными геометрическими примитивами или их комбинациями, вы можете воспользоваться любой другой программой предназначенной для построения трехмерных моделей более сложных конструкций и импортировать их в формате “.igs” или “.step” для дальнейшего расчета, как представлено на рисунке 1. Программным комплексом CAE Fidesys с модулем HSDF поддерживается графические форматы CAD файлы *.step, *.igs и т.д.

Рисунок 1 – Результат построения, импортированной из SolidWorks геометрии

hardwall_coord(x,y,z,nx,ny,nz) – директива, которая определяет координаты установки жесткой стенки. Директива использует следующие переменные:

x,y,z – координата установки;

nx, ny, nz – нормаль, которая определяет действие жесткой стенки.

hardwall_glue_knots(nHW,type) – директива, которая определяет способ движения узлов, расположенных на жесткой стенке. Директива использует следующие переменные:

nHW - порядковый номер жесткой стенки ("-1" – последняя стенка);

type - тип узлов, который может быть:

slide – скользить узлами вдоль жесткой стенки;

glue – приклеить узлы к жесткой стенке.

Внимание!! Для использования директивы необходимо первоначально определить положение жесткой стенки с помощью директивы hardwall_coord.

Литература

1. Sutherland I.E., Hodgman G.W. Reentrant polygon clipping // Commun. ACM. 1974. Vol. 17, № 1. P. 32–42.

2. Kraus E.I., Shabalin I.I., Shabalin T.I. Automatic tetrahedral mesh generation for impact computations // AIP Conference Proceedings. 2017. Vol. 1893. P. 030129.

3. Андреев А.Н., Краус Е.И., Шабалин И.И. и др. Механика - от дискретного к сплошному.-Новосибирск: Изд - во СО РАН, 2008. -344 с. Новосибирск: Изд - во СО РАН, 2008. 344 p.

4. Краус Е.И., Фомин В.М., Шабалин И.И. Моделирование процесса соударения сложных двумерных тел о деформируемую преграду // Вычислительные технологии. 2006. Vol. 11. P. 104–107.

5. Kraus E.I., Kraus A.E., Shabalin I.I. The Influence of the Contact Boundary in a Metal Matrix Composite on Dynamic Loading // Springer Proceedings in Physics. 2024. Vol. 1067 SPPHY, № November. P. 134–142.

6. Краус Е.И., Фомин В.М., Шабалин И.И. Динамический метод построения треугольных сеток в многосвязных областях // Вычислительные технологии. 2009. Vol. 14, № 5. P. 40–48.

7. Shimada K., Gossard D.C. Bubble mesh // Proceedings of the third ACM symposium on Solid modeling and applications - SMA ’95. New York, USA: ACM Press, 1995. P. 409–419.

8. Conway J.H., Torquato S. Packing, tiling, and covering with tetrahedra // Proc. Natl. Acad. Sci. 2006. Vol. 103, № 28. P. 10612–10617.

9. Joe B. Geompack — a software package for the generation of meshes using geometric algorithms // Adv. Eng. Softw. Work. Elsevier, 1991. Vol. 13, № 5–6. P. 325–331.

10. Barber C.B., Dobkin D.P., Huhdanpaa H. The quickhull algorithm for convex hulls // ACM Trans. Math. Softw. 1996. Vol. 22, № 4. P. 469–483.

11. Si H. TetGen, a Delaunay-Based Quality Tetrahedral Mesh Generator // ACM Trans. Math. Softw. 2015. Vol. 41, № 2. P. 1–36.

12. Shewchuk J.R. Triangle: Engineering a 2D quality mesh generator and Delaunay triangulator. 1996. P. 203–222.

13. Johnson G.R., Beissel S.R., Gerlach C.A. A 3D combined particle-element method for intense impulsive loading computations involving severe distortions // Int. J. Impact Eng. Pergamon, 2015. Vol. 84. P. 171–180.

14. Kraus E.I., Shabalin I.I. Reactor2D: A tool for simulation of shock deformation // AIP Conf. Proc. 2016. Vol. 1770. P. 030092.

15. Петров И.Б. et al. О комбинированном методе для численного решения динамических пространственных упругопластических задач // Доклады Академии наук. 2015. Vol. 460, № 4. P. 389–391.

16. Уилкинс М.Л. Расчет упругопластических течений // Вычислительные методы в гидродинамике / ed. Олдера Б., Фернбаха С., Ротенберга М. Москва: Мир, 1967. P. 212–263.

17. Официальный сайт библиотеки bzip2.

18. Kraus A. et al. Numerical Modelling of High-Speed Loading of Periodic Interpenetrating Heterogeneous Media with Adapted Mesostructure // Appl. Sci. 2023. Vol. 13, № 12. P. 7187.

19. Таблицы физических величин. Справочник. / ed. Кикоина акад. И.К. Москва: Атомиздат, 1976. 1008 p.

20. Краус Е.И., Фомин В.М., Шабалин И.И. Модельные уравнения термодинамических функций состояния веществ. 2. Жидкость и описание плавления // Физическая мезомеханика. 2004. Vol. 7. P. 289–292.

21. Fomin V.M., Kraus E.I., Shabalin I.I. A few-parameter equation of state of the condensed matter and its application to the impact problems // EPJ Web Conf. 2010. Vol. 10. P. 00027.

22. Fomin V.M., Kraus E.I., Shabalin I.I. An equation of state for condensed matter behind intense shockwaves // Mater. Phys. Mech. 2004. Vol. 7, № 1. P. 23–28.

23. Краус Е.И. Малопараметрическое уравнение состояния твердого вещества при высоких плотностях энергии // Вестник НГУ. 2007. Vol. 2, № 2. P. 65–73.

24. Kraus E.I., Shabalin I.I. A few-parameter equation of state of the condensed matter // J. Phys. Conf. Ser. 2016. Vol. 774. P. 012009.

25. Kraus E.I., Shabalin I.I. Calculation of elastic modules behind strong shock wave // J. Phys. Conf. Ser. 2015. Vol. 653. P. 012085.

26. Kraus E.I., Shabalin I.I. A new model to determine the shear modulus and Poisson’s ratio of shock-compressed metals up to the melting point // High Press. Res. 2021. Vol. 41, № 4. P. 353–365.

27. Marsh S.P. LASL Shock Hugoniot Data // Los Alamos Series on Dynamic Material Properties. Univ of California Press, 1980. 150 p.

28. Трунин Р.Ф. et al. Экспериментальные данные по ударно-волновому сжатию и адиабатическому расширению конденсированных веществ / ed. Трунина Р.Ф. Саров: РФЯЦ-ВНИИЭФ, 2006. 531 p.

29. Кинслоу Р., Ред. Высокоскоростные ударные явления / ed. Николаевского В.Н. Москва: Мир, 1973. 533 p.

30. Краус Е.И., Фомин В.М., Шабалин И.И. Учет электронных составляющих в уравнении состояния при расчете ударных волн в смеси металлов // Вестник Пермского национального исследовательского политехнического университета. Механика. 2001. № 9. P. 78–84.

31. Kraus E.I., Shabalin I.I., Shabalin T.I. Numerical analysis of wave propagation in a cermet composite // AIP Conference Proceedings. 2017. Vol. 1893. P. 030130.

32. Fomin V.M. et al. Accounting for Functions of Distribution of Mechanical Properties of Metals in Dynamic Processes of Deformation and Destruction of Barriers // J. Eng. Phys. Thermophys. Springer, 2022. Vol. 95, № 7. P. 1–9.