на тему: Разработка алгоритма распределения веществ для задач механики сплошных сред
Актуальность
Цель
Счетная область и физические подобласти
Структура вложенных объектов классов для хранения данных
Пункт контекстного меню
Кнопка построения нерегулярных сеток в физических подобластях
Граф-схема алгоритма минимального интервала ребра
Граф-схема алгоритма построения нерегулярной сетки в физических подобластях
Визуализация нерегулярных сеток в физических подобластях
Кнопка распределить вещества
Граф-схема алгоритма распределения веществ
Граф-схема алгоритма распределения веществ
Визуализация распределения веществ
Пример работы программы
Вывод
1.14M
Category: mechanicsmechanics

Разработка алгоритма распределения веществ для задач механики сплошных сред

1. на тему: Разработка алгоритма распределения веществ для задач механики сплошных сред

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«Национальный исследовательский ядерный университет «МИФИ»
Снежинский физико-технический институт филиал федерального государственного автономного образовательного учреждения высшего
образования «Национальный исследовательский ядерный университет «МИФИ»
(СФТИ НИЯУ МИФИ)
Дипломный проект
на тему: Разработка алгоритма
распределения веществ для задач
механики сплошных сред
Студент гр. ПАС-51Д:
Руководитель:
Осипов Владислав Станиславович
Приб Евгения Андреевна
Снежинск
2016 г.

2. Актуальность

В настоящее время в РФЯЦ-ВНИИТФ комплексам математического
моделирования требуются новые эффективные методы подготовки
начальных данных для расчетов двумерных задач механики сплошных
сред. Для численного начала расчета задача сначала аппроксимируется
регулярной или нерегулярной сеткой. Затем следует этап задания и
распределения физических характеристик по ячейкам расчетных сеток.
Этот этап является одним из важнейших, поэтому для выполнения
дипломного проекта в рамках сервисной системы GeomGrid2, которая
обеспечивает необходимую функциональность процесса подготовки
начальных данных для расчетов, было решено разработать алгоритм
распределения веществ по ячейкам регулярной сетки.
2/18

3. Цель

Разработать и программно реализовать новый метод распределения
веществ по ячейкам регулярной сетки, основанный на поиске
пересечений ячеек регулярной сетки счетной области с ячейками
нерегулярных сеток физических подобластей, с заданием физических
характеристик с помощью диалоговой формы.
3/18

4.

Задачи
Для реализации данного метода необходимо создать новые классы
для хранения данных:
о физических подобластях счетной области;
о нерегулярных сетках.
Затем дополнить пользовательский интерфейс сервисной системы
GeomGrid 2, связанный с объектами вышеупомянутых классов, в целях:
создания в счетной области физических подобластей;
назначения замкнутых контуров физическим подобластям;
задания физическим подобластям необходимых параметров;
построения нерегулярных сеток в физических подобластях;
распределения веществ по ячейкам регулярной сетки.
4/18

5. Счетная область и физические подобласти

5/18

6. Структура вложенных объектов классов для хранения данных

6/18

7. Пункт контекстного меню

Диалоговая форма
7/18

8. Кнопка построения нерегулярных сеток в физических подобластях

8/18

9. Граф-схема алгоритма минимального интервала ребра

1
Вход
2
GridRegion region;
3
int NI=region.Iset.NI, NK=region.Iset.NK;
double minInterval=Double.MaxValue;
4
Нет
int i=0; i<NI; i++
Да
5
Нет
int k=0; k<NK; k++
Да
6
double x1,x2,y1,y2,r1;
7
x1=region.ArrayXReg[i,k];
x2=region.ArrayXReg[i+1,k];
y1=region.ArrayYReg[i,k];
y2=region.ArrayYReg[i+1,k];
r1=Math.Sqrt(Math.Pow(x2-x1,2.0)+ Math.Pow(y2-y1,2.0));
Нет
8
r1<minInterval
Да
9
minInterval=r1;
10
double x3,x4,y3,y4,r2;
11
x3=region.ArrayXReg[i,k];
x4=region.ArrayXReg[i,k+1];
y3=region.ArrayYReg[i,k];
y4=region.ArrayYReg[i,k+1];
r2=Math.Sqrt(Math.Pow(x4-x3,2.0)+ Math.Pow(y4-y3,2.0));
Нет
12
r2<minInterval
Да
13
minInterval=r2;
14
Выход
9/18

10. Граф-схема алгоритма построения нерегулярной сетки в физических подобластях

1
Вход
2
GridRegion region;
3
Нет
int n=0; n<region.PhysRegions.Count; n++
Да
4
PhysRegion phRegion=region.PhysRegions[n];
5
int countObj=phRegion.Contour.GeomObjectCollection.ObjGeomObject.Count;
6
Нет
p=0; p<countObj; p++
Да
7
GeomObject gm=phRegion.Contour.GeomObjectCollection.ObjGeomObject[p];
Нет
8
Да
p<countObj
9
RegularFragmentation
Нет
10
Да
p=countObj
11
UnRegularMeshGeneration
12
AddGrid
13
Выход
10/18

11. Визуализация нерегулярных сеток в физических подобластях

11/18

12. Кнопка распределить вещества

12/18

13. Граф-схема алгоритма распределения веществ

1
Вход
1
6
8
2
GridRegion region;
12
PointD[ ] AllFourPoints = new PointD[4];
AllFourPoints[0] = new PointD(x1, y1);
AllFourPoints[1] = new PointD(x2, y2);
AllFourPoints[2] = new PointD(x3, y3);
AllFourPoints[3] = new PointD(x4, y4);
3
double x1,x2,x3,x4,y1,y2,y3,y4=0;
int NumMix=-1, NI=region.Iset.NI,
NK=region.Iset.NK;
double[,] NM = new double[NI, NK];
4
13
Нет
int b=0; b<region.PhysRegions.Count; b++
5
Нет
int d=0; d<region.PhysRegions.Count; d++
Да
5
Да
14
PhysRegion phRegion=region.PhysRegions[b];
PhysRegion phRegion=region.PhysRegions[d];
Нет
6
15
int CountCells = phRegion.UnRegMeshInfo.CountCells;
int numNode, num1, num2, num3, x5, x6, x7, y5, y6, y7 = 0;
Да
phRegion.NumSubs>NumMix
7
16
NumMix=phRegion.NumSubs;
Нет
int ii=0; ii<CountCells; ii++
5
Да
17
num1 = phRegion.UnRegMeshInfo.CellNode[numNode];
num2 = phRegion.UnRegMeshInfo.CellNode[numNode + 1];
num3 = phRegion.UnRegMeshInfo.CellNode[numNode + 2];
8
NumMix++;
9
7
Нет
Нет
int i=0; i<NI; i++
Да
18
num1 != 0
Да
10
int k=0; k<NK; k++
19
Нет
x5 =
phRegion.UnRegMeshInfo.Mesh
ArrayXUnReg[num1 - 1];
y5 =
phRegion.UnRegMeshInfo.Mesh
ArrayYUnReg[num1 - 1];
7
Да
x1 = region.ArrayXReg[i, k];
y1 = region.ArrayYReg[i, k];
x2 = region.ArrayXReg[i + 1, k];
y2 = region.ArrayYReg[i + 1, k];
x3 = region.ArrayXReg[i + 1, k + 1];
y3 = region.ArrayYReg[i + 1, k + 1];
x4 = region.ArrayXReg[i, k + 1];
y4 = region.ArrayYReg[i, k + 1];
11
6
1
20
PointD point5 = new PointD(x5, y5);
8
4
2
8
13/18

14. Граф-схема алгоритма распределения веществ

4
2
Нет
8
21
4
3
29
double leftArea, rightArea, leftVolume, rightVolume = -1;
int result = -1;
Да
num2 != 0
8
30
22
result =
opencascad.FindAreaAndVolumeOfIntersection(AllFourPoints,
4, AllThreeCurve, 3, 0.000001, out leftArea, out rightArea, out
leftVolume, out rightVolume);
x6 =
phRegion.UnRegMeshInfo.Mesh
ArrayXUnReg[num2 - 1];
y6 =
phRegion.UnRegMeshInfo.Mesh
ArrayYUnReg[num2 - 1];
Нет
31
result == 0 &&
leftArea != 0
Да
23
PointD point6 = new PointD(x6, y6);
Нет
24
Нет 32
Да
num3 != 0
Да
NM[i, k] == 0
33
Нет
25
x7 =
phRegion.UnRegMeshInfo.Mesh
ArrayXUnReg[num3 - 1];
y7 =
phRegion.UnRegMeshInfo.Mesh
ArrayYUnReg[num3 - 1];
34
NM[i, k] !=
phRegion.NumSubs
Да
NM[i, k] =
phRegion.NumSubs;
35
NM[i, k] =
NumMix;
26
PointD point7 = new PointD(x7, y7);
27
Curve[ ] AllThreeCurve = new Curve[3];
AllThreeCurve[0] = new Curve(6, point5, point6);
AllThreeCurve[1] = new Curve(6, point6, point7);
AllThreeCurve[2] = new Curve(6, point7, point5);
36
Выход
28
OpenCASCAD opencascad = new OpenCASCAD();
4
3
8
14/18

15. Визуализация распределения веществ

15/18

16. Пример работы программы

16/18

17. Вывод

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

18.

Спасибо за внимание!
18/18
English     Русский Rules