где
и р - N-мерные векторы; I - единичный N-мерный
вектор-столбец;
- матрица коэффициентов размерности NхN.
Т. о., алгоритм МГЭ состоит из следующих этапов:
Этап 1. Формирование входных данных.
Этап
2. Интегрирование функций
для получения матрицы коэффициентов
.
Этап 3. Составление разрешающей системы алгебраических уравнений.
Этап 4. Решение системы.
Этап 5. Подстановка найденных значений в интегральное уравнение и вычисление значений функций во внутренних точках области.
В
данной работе мы выбрали метод конечных элементов, так как он довольно прост
для программной реализации, и применим для широкого класса задач. Так как метод
позволяет варьировать размеры элементов, сетку можно сделать реже в местах, где
не нужна особая точность.
2. Алгоритмический анализ задачи
.1 Постановка задачи, описание исходных и результирующих данных
Требуется определить количество витков резьбового соединения с трапецеидальной резьбой воспринимающего осевую сжимающую нагрузку.
Исходными данными являются размеры деталей резьбового соединения, материалы деталей резьбового соединения (Деталь с наружной резьбой сталь, деталь с внутренней резьбой латунь), осевая сжимающая нагрузка.
Результирующими данными являются: количество витков, необходимое для восприятия осевой сжимающей нагрузки, а также вектор смещений узлов элементов. [5]
Для решения системы линейных алгебраических уравнений используется метод
Гаусса-Зейделя.
.2 Описание математической модели
Поверхность разбивается на конечные элементы треугольного типа, и
нумерацией узлов по часовой стрелке (Рисунок 1).
Рисунок 3 - Конечный элемент
Данный элемент, имеет три узла, пронумерованных по часовой стрелке.
Каждый узел имеет две компоненты перемещения: по х, по у.
а шесть компонент перемещений элемента образуют вектор
Перемещения внутри элемента должны однозначно определяться этими шестью
величинами.
Рисунок 4 - Перемещения узлов элемента
Простейшим представлением являются линейные полиномы
(30)
Значения шести постоянных ai легко найти из двух систем,
состоящих из трех уравнений, которые получаются в результате подстановки в (30)
узловых координат и приравнивания значения перемещений соответствующим перемещениям
узловых точек. Записав, например,
выражают a1, a2, a3 через величины
узловых перемещений ui, uj, um и окончательно
(32)
остальные коэффициенты получаются циклической перестановкой индексов i,
j, m, а величина
определяется соотношением
Аналогично можно представить перемещение v в вертикальном направлении
Соотношения (31) и (32) в стандартной форме определяют перемещения любой
точки внутри элемента
где I - единичная матрица размерности 2x2,
- координатные функции, которые
называются функциями формы
Для каждого из элементов плоскости существуют матрицы, определяющие его поведение.
Матрица [E] - матрица механических характеристик.
Ее вид:
где G - модуль упругости материала, а µ- коэффициент Пуассона.
Матрица [Q] - матрица дифференциальных операторов.
Ее
вид:
.
Матрица [A] - матрица неизвестных при коэффициентах.
Ее
вид:
где x1, y1 - координаты 1-го узла элемента;
x2, y2 - координаты 2-го узла элемента;
x3, y3 - координаты 3-го узла элемента.
Зная эти матрицы для элемента i, для него составляется матрица жесткости по формуле:
ki=
,
Где dx,dy - стороны треугольника
Далее, зная для каждого элемента локальную матрицу жесткости, находится
глобальная матрица жесткости.
K=
Определяется вектор нагрузки R. Для плоской задачи для i-ого узла нагрузку можно задать в двух
направлениях: по x и по y.
,
Где
- компонента вектора нагрузок для i-ого узла, определяющая давление, прикладываемое к узлу по
оси абсцисс.
- компонента вектора нагрузок для i-ого узла, определяющая давление, прикладываемое к узлу по
оси ординат.
Далее необходимо задать граничные условия.
Для закрепленных узлов в матрице [K] необходимо сбросить значения в строках и столбцах, а на главной диагонали для них приравнять к 1.
Далее необходимо составить глобальный вектор нагрузок, который будет
состоять из компонент нагрузок для каждого узла.
.
Далее необходимо составить систему уравнений.
Или, если переписать в матричной форме
[K]
{u}={R},
Где [К] - глобальная матрица жесткости. В данной системе элементы глобальной матрицы жесткости являются коэффициентами при неизвестных;
{u} - вектор столбец искомых значений.
{R} - Глобальный вектор столбец нагрузок. В данной системе элементы вектора выступают в роли свободных членов уравнения.
Решая данную систему, получают смещения узлов. Вектор {u} будет иметь вид:
{δ}=
,
где ui, vi - смещения узла относительно первоначального положения.
Для решения поставленной задачи вводится условие (33), при
неудовлетворении которого, выводится результат.
(33)
Где k - число витков;
P - шаг резьбы;
L - длина конца болта;
- достаточная точность;
dli -
длина абсолютного смещения i-ого
узла элемента, принадлежащего болту, определяемая по формуле (34).
dli=
,
где ui, vi -смещения узла по оси абсцисс и
ординат, которые берутся из вектора {δ}.[6]
Рисунок 5 - Абсолютное смещение
.3 Графическая схема алгоритма решения задачи
Рисунок 6 - Графическая схема алгоритма решения задачи
3. Программная реализация
.1 Структура программного комплекса
Структура программного комплекса включает 6 пользовательских классов: Rezba, Uzl_Coord,
matrAclass, matrKLOCclass, globindexes, GausMethod. Их элементы описаны в таблицах 3.1.1-3.1.6
Таблица 3.1.1 - Элементы класса Rezba
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
D |
Поле |
double |
Static, Public |
Диаметр шляпки |
|
b |
Поле |
double |
Static, Public |
Ширина шляпки |
|
l |
Поле |
double |
Static, Public |
Длина конца болта |
|
d1 |
Поле |
double |
Static, Public |
Внешний диаметр резьбы |
|
d2 |
Поле |
double |
Static, Public |
Средний диаметр резьбы |
|
d3 |
Поле |
double |
Static, Public |
Внутренний диаметр резьбы |
|
bg |
Поле |
double |
Static, Public |
Ширина гайки |
|
p |
Поле |
double |
Static, Public |
Шаг резьбы |
|
H |
Поле |
double |
Static, Public |
Рабочая высота |
|
Count_v |
Поле |
int |
Static, Public |
Количество витков |
|
eps |
Поле |
double |
Static, Public |
Точность |
Таблица 3.1.2 - Элементы класса Uzl_Coord
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
x1 |
Поле |
double |
Public |
Координата первого узла элемента по х |
|
x2 |
Поле |
double |
Public |
Координата второго узла элемента по х |
|
x3 |
Поле |
double |
Public |
Координата третьего узла элемента по х |
|
y1 |
Поле |
double |
Public |
Координата первого узла элемента по у |
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
y2 |
Поле |
double |
Public |
Координата второго узла элемента по у |
|
y3 |
Поле |
double |
Public |
Координата третьего узла элемента по у |
|
c |
Поле |
Color |
Public |
Цвет (в качестве материала) |
Таблица 3.1.3 - Элементы класса matrAclass
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
A |
Поле |
double |
Public |
Матрица А для элемента |
Таблица 3.1.4 - Элементы класса matrKLOCclass
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
K |
Поле |
double |
Public |
Матрица К локальная матрица жесткости |
Таблица 3.1.5 - Элементы класса matrKLOCclass
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
ind |
Поле |
Public |
Матрица глобальных индексов элемента |
Таблица 3.1.6 - Элементы класса GausMethod
|
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
|
RowCount |
Поле |
int |
Public |
Строк в матрице |
|
ColumnCount |
Поле |
int |
Public |
Столбцов в матрице |
|
Matrix |
Поле |
double |
Public |
Матрица неизвестных при коэффициентах |
|
RightPart |
Поле |
double |
Public |
Вектор свободных членов |
|
Answer |
Поле |
double |
Public |
Вектор неизвестных |
Программа состоит из следующих форм:
Form1 - главная форма программы (рисунок 7);
Form2
- форма для графического изображения элементов (рисунок 8).
Таблица 3.1.3- Таблица управляющих элементов формы Form1
|
Имя элемента |
Тип элемента |
Назначение |
|
Button1 |
Button |
Кнопка вызова расчетов. |
|
Button2 |
Button |
Кнопка открытия Form2 с исходными данными. |
|
Button3 |
Button |
Кнопка открытия Form2 с полученными данными. |
|
TextBox1 |
TextBox |
Поле для ввода толщины головки болта. |
|
TextBox2 |
TextBox |
Поле для ввода диаметра головки болта. |
|
TextBox3 |
TextBox |
Поле для ввода ширины гайки. |
|
TextBox4 |
TextBox |
Поле для ввода длины конца болта. |
|
TextBox5 |
TextBox |
Поле для ввода внешнего диаметра резьбы. |
|
TextBox6 |
TextBox |
Поле для ввода шага резьбы. |
|
TextBox7 |
TextBox |
Поле для ввода точности. |
|
TextBox8 |
TextBox |
Поле для ввода нагрузки. |
|
Label1 |
Label |
Для вывода комментария. |
|
Label2 |
Label |
Для вывода комментария. |
|
Label3 |
Label |
Для вывода комментария. |
|
Label4 |
Label |
Для вывода комментария. |
|
Label5 |
Label |
Для вывода комментария. |
|
Label6 |
Label |
Для вывода комментария. |
|
Label7 |
Label |
Для вывода комментария. |
|
Label8 |
Label |
Для вывода комментария. |
Рисунок 7 - Скриншот главной формы программы
Рисунок 8 - Скриншот форма для графического изображения элементов
Данная программа производит подсчет количества витков для резьбового соединения, с трапецеидальной резьбой, воспринимающего осевую нагрузку с заданными размерами и материалами элеметов резьбового соединения.