- •Содержание
- •Список сокращений.
- •Раздел 1. Алгоритмы моделирования элементов ла.
- •Тема 1.1.
- •Структуры данных конечно–элементных моделей и методы их описания с помощью объектно–ориентированных средств. Лекция 1. Особенности программирования в объектно–ориентированной системе "space".
- •Лекция 2. Описание структуры данных конечно–элементной модели.
- •Лекция 3. Методы создания структуры базы данных для анализа прочности конструкции самолета.
- •Лекция 4. Специальные алгоритмы формирования структур конечно–элементных моделей.
- •Тема 1.2. Алгоритмы формирования топологий конечно–элементных моделей элементов поперечного набора планера. Лекция 5. Особенности взаимодействия с сервером геометрии.
- •Лекции 6, 7. Формирование конечно–элементных моделей нервюр.
- •Тема 1.3. Алгоритмы формирования топологий конечно–элементных моделей элементов продольного набора планера самолета. Лекция 8. Особенности формирования локального массива координат.
- •Лекция 9. Формирование конечно–элементных моделей обшивок.
- •Литература.
- •Учебнометодические материалы
- •1. Основная литература
- •2. Дополнительная литература
Тема 1.3. Алгоритмы формирования топологий конечно–элементных моделей элементов продольного набора планера самолета. Лекция 8. Особенности формирования локального массива координат.
Массив координат узлов локальной КЭМ элемента продольного набора кессона крыла формируется путем копирования значений из массива координат узлов КЭМ отсека кессона, передаваемого в качестве исходных данных. Выбор данных производится по номерам узлов, содержащимся в таблице распределения номеров узлов. Одновременно формируется таблица соответствия номеров узлов, в которую подряд записываются номера копируемых узлов из таблицы распределения (рис.50).
Поскольку таблица соответствия номеров заполняется одновременно с локальным массивом координат, порядковые номера ее ячеек соответствуют номерам узлов локальной КЭМ. Это дает возможность установить соответствие между номерами узлов временной копии КЭМ и номерами узлов локальной КЭМ.
Рис. 50. Формирование таблицы соответствия
номеров узлов.
Координаты узлов отсека и таблицы распределения узлов по сечениям КЭМ отсека кессона передаются через виртуальную структуру следующего формата:
short NodeCount; //––> К–во узлов в КЭМ отсека кессона
double NodeCoord[…][3]; //––> Координаты узлов КЭМ отсека кессона
short PCount; //––> К–во сечений в КЭМ отсека кессона
short PVNodeCount; //––> К–во узлов в строке таблицы распределения
short PVNodeNumber[…][2][…]; //--> Таблица распределения
// номеров узлов в сечениях
Для реализации метода формирования таблицы соответствия используются циклические алгоритмы следующего вида:
virtual _SkinBox Connect_1; //––> Виртуальная структура для обмена
// данными с отсеком кессона
k = 0;
PCount = Connect_1.PCount;
PVNodeCount = Connect_1.PVNodeCount;
for ( i = 0; i < PCount; i++ )
{ // Перебор сечений
for ( j = 0; j < PVNodeCount; j++ )
{
PVNodeNumber[i][j] = Connect_1.PVNodeNumber[i][0][j];
if ( k == 0 )
{
n0 = PVNodeNumber[i][j];
i1 = PVNodeNumber[i][j] - 1;
NodeCoord[k][0] = Connect_1.NodeCoord[i1][0];
NodeCoord[k][1] = Connect_1.NodeCoord[i1][1];
NodeCoord[k][2] = Connect_1.NodeCoord[i1][2];
PairNodeNumber[k] = PVNodeNumber[i][j]; //–> Запол–
// нение таблицы соответствия узлов
k++;
}
else
if ( PVNodeNumber[i][j] != n0 )
{
n0 = PVNodeNumber[i][j];
i1 = PVNodeNumber[i][j] - 1;
NodeCoord[k][0] = Connect_1.NodeCoord[i1][0];
NodeCoord[k][1] = Connect_1.NodeCoord[i1][1];
NodeCoord[k][2] = Connect_1.NodeCoord[i1][2];
PairNodeNumber[k] = PVNodeNumber[i][j]; //–> Запол–
// нение таблицы соответствия узлов
k++;
}
else
continue;
}
}
NodeCount = k;
Локальная КЭМ элемента продольного набора формируется путем копирования временной копии КЭМ. При этом номера узлов, считанные из копии КЭМ, заменяются локальными номерами узлов (рис.51):
Рис. 51. Синтез топологии локальной
модели обшивки.
Метод корректировки номеров узлов в конечных элементах, в процессе синтеза локальной КЭМ элемента продольного набора также базируется на циклических алгоритмах:
for ( i = 0; i < ElCount; i++ )
{
for ( j = 2; j < 6; j++ )
{
if ( Element[i][j] == 0 )
continue;
else
for ( i1 = 0; i1 < NodeCount; i1++ )
{// Поиск совпадающего номера узла в таблице соответствия
if ( Element[i][j] == PairNodeNumber[i1] )
{
Element[i][j] = i1 + 1;
break;
}
}
}
}
