Моделирование напряжённо-деформированного состояния конструкции в пакете ANSYS

Основные численные методы моделирования. Понятие метода конечных элементов. Описание основных типов конечных элементов и построение сетки. Реализация модели конструкции в пакете ANSYS, на языке программирования C#. Реализация интерфейса пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.01.2016
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

if (S[i] == 1)

delta[i] = Delta_c[i];

if (S[i] == 0)

{

delta[i] = delta1[index];

index++;

}

}

for (int i = 0; i < Nodes.Count; i++)

{

Node temp = (Node)Nodes[i];

temp.u = delta[2 * i];

temp.v = delta[2 * i+1];

Nodes[i] = temp;

}

MessageBox.Show("Решение успешно построено!");

groupBox1.Visible = true;

button5.Visible = true;

}

// D -- матрица связи напряжений и деформаций,

public void matrix_D(double E, double v, double[,] D)

{

double temp=E/((1-2*v)*(1+v));

D[0, 0] = (1 - v) * temp;

D[0, 1] = v * temp;

D[1, 0] = v * temp;

D[1, 1] = (1 - v) * temp;

D[2, 2] = (1 - 2 * v) * temp / 2;

}

// B -- матрица производных функций формы (функция влияния узлов)

public void matrix_B(Element element, double[,] _B)

{

//int[,] P = { { 1, 2, 3 }, { 2, 3, 1 }, { 3, 1, 2 } };

Node A = (Node)Nodes[element.A-1];

Node B = (Node)Nodes[element.B-1];

Node C = (Node)Nodes[element.C-1];

double area = area_element(element);

double b1, b2, b3, c1, c2, c3;

b1 = B.y - C.y;

b2 = C.y - A.y;

b3 = A.y - B.y;

c1 = C.x - B.x;

c2 = A.x - C.x;

c3 = B.x - A.x;

_B[0, 0] = b1 / (2 * area);

_B[0, 2] = b2 / (2 * area);

_B[0, 4] = b3 / (2 * area);

_B[1, 1] = c1 / (2 * area);

_B[1, 3] = c2 / (2 * area);

_B[1, 5] = c3 / (2 * area);

_B[2, 0] = c1 / (2 * area);

_B[2, 1] = b1 / (2 * area);

_B[2, 2] = c2 / (2 * area);

_B[2, 3] = b2 / (2 * area);

_B[2, 4] = c3 / (2 * area);

_B[2, 5] = b3 / (2 * area);

}

private void button3_Click(object sender, EventArgs e)

{

mathcad_generic();

System.Diagnostics.Process mathCAd = new System.Diagnostics.Process();

mathCAd.StartInfo.FileName = @"kurs1.mcd";

mathCAd.Start();

}

public void mathcad_generic()

{

StreamWriter file1 = new StreamWriter("EL_1.prn");

StreamWriter file2 = new StreamWriter("KN_1.prn");

for (int i = 0; i < Elements.Count; i++)

{

Element temp = (Element)Elements[i];

string str = String.Format("{0,20} {1,20} {2,20} {3,20} {4,20} {5,20}", temp.A, temp.B, temp.C, temp.elasticity, temp.factor_Puason, temp.density);

str = String.Join(".", str.Split(','));

file1.WriteLine(str);

}

for (int i = 0; i < Nodes.Count; i++)

{

Node temp = (Node)Nodes[i];

string str = String.Format("{0,20} {1,20} {2,20} {3,20} {4,20} {5,20} {6,20} {7,20}", temp.x, temp.y, temp.Fx, temp.Fy, temp.Px, temp.u, temp.v, temp.Py);

str = String.Join(".", str.Split(','));

file2.WriteLine(str);

}

file1.Close();

file2.Close();

}

private void button4_Click(object sender, EventArgs e)

{

// Расчет цветов для каждого элемента для отображения графика перемещение по OX

if (radioButton2.Checked)

{

double max = 0;

double min = 100;

for (int i = 0; i < Elements.Count; i++)

{

double sum = 0;

Element temp = (Element)Elements[i];

sum = Math.Abs(((Node)Nodes[temp.A - 1]).u + ((Node)Nodes[temp.B - 1]).u + ((Node)Nodes[temp.C - 1]).u);

if (sum > max)

max = sum;

if (sum < min)

min = sum;

}

double colored = (max) / 1020;

color_plot = new Color[Elements.Count];

for (int i = 0; i < Elements.Count; i++)

{

Element temp = (Element)Elements[i];

double sum = Math.Abs(((Node)Nodes[temp.A - 1]).u + ((Node)Nodes[temp.B - 1]).u + ((Node)Nodes[temp.C - 1]).u);

int koler = Convert.ToInt32(sum / colored);

if (koler < 255)

color_plot[i] = Color.FromArgb(0, 0 + koler, 255);

else

if (koler < 510)

{

koler = koler - 255;

color_plot[i] = Color.FromArgb(0, 255, 255 - koler);

}

else

if (koler < 765)

{

koler = koler - 510;

color_plot[i] = Color.FromArgb(0 + koler, 255, 0);

}

else

{

koler = koler - 765;

color_plot[i] = Color.FromArgb(255, 255 - koler, 0);

}

}

}

//************************************************************

// Расчет цветов для каждого элемента для отображения графика перемещение по OY

if (radioButton3.Checked)

{

double max = 0;

double min = 100;

for (int i = 0; i < Elements.Count; i++)

{

double sum = 0;

Element temp = (Element)Elements[i];

sum = Math.Abs(((Node)Nodes[temp.A - 1]).v + ((Node)Nodes[temp.B - 1]).v + ((Node)Nodes[temp.C - 1]).v);

if (sum > max)

max = sum;

if (sum < min)

min = sum;

}

double colored = (max) / 1020;

color_plot = new Color[Elements.Count];

for (int i = 0; i < Elements.Count; i++)

{

Element temp = (Element)Elements[i];

double sum = Math.Abs(((Node)Nodes[temp.A - 1]).v + ((Node)Nodes[temp.B - 1]).v + ((Node)Nodes[temp.C - 1]).v);

int koler = Convert.ToInt32(sum / colored);

if (koler < 255)

color_plot[i] = Color.FromArgb(0, 0 + koler, 255);

else

if (koler < 510)

{

koler = koler - 255;

color_plot[i] = Color.FromArgb(0, 255, 255 - koler);

}

else

if (koler < 765)

{

koler = koler - 510;

color_plot[i] = Color.FromArgb(0 + koler, 255, 0);

}

else

{

koler = koler - 765;

color_plot[i] = Color.FromArgb(255, 255 - koler, 0);

}

}

}

//************************************************************

// Расчет цветов для каждого элемента для отображения графика суммы перемещений по OX и OY

if (radioButton4.Checked)

{

double max = 0;

double min = 100;

for (int i = 0; i < Elements.Count; i++)

{

double sum = 0;

Element temp = (Element)Elements[i];

sum = Math.Abs(((Node)Nodes[temp.A - 1]).v + ((Node)Nodes[temp.B - 1]).v + ((Node)Nodes[temp.C - 1]).v) + Math.Abs(((Node)Nodes[temp.A - 1]).u + ((Node)Nodes[temp.B - 1]).u + ((Node)Nodes[temp.C - 1]).u);

if (sum > max)

max = sum;

if (sum < min)

min = sum;

}

double colored = (max) / 1020;

color_plot = new Color[Elements.Count];

for (int i = 0; i < Elements.Count; i++)

{

Element temp = (Element)Elements[i];

double sum = Math.Abs(((Node)Nodes[temp.A - 1]).v + ((Node)Nodes[temp.B - 1]).v + ((Node)Nodes[temp.C - 1]).v) + Math.Abs(((Node)Nodes[temp.A - 1]).u + ((Node)Nodes[temp.B - 1]).u + ((Node)Nodes[temp.C - 1]).u);

;

int koler = Convert.ToInt32(sum / colored);

if (koler < 255)

color_plot[i] = Color.FromArgb(0, 0 + koler, 255);

else

if (koler < 510)

{

koler = koler - 255;

color_plot[i] = Color.FromArgb(0, 255, 255 - koler);

}

else

if (koler < 765)

{

koler = koler - 510;

color_plot[i] = Color.FromArgb(0 + koler, 255, 0);

}

else

{

koler = koler - 765;

color_plot[i] = Color.FromArgb(255, 255 - koler, 0);

}

}

}

//************************************************************

grafx.Graphics.Clear(Color_background);

plot_result = true;

DrawToBuffer(grafx.Graphics);

this.Refresh();

}

private void button5_Click(object sender, EventArgs e)

{

grafx.Graphics.Clear(Color_background);

plot_result = false;

DrawToBuffer(grafx.Graphics);

this.Refresh();

}

}

// структура для узлов конечных элементов

public class Node

{

double _x;

double _y;

double _Fx;

double _Fy;

double _Px;

double _Py;

double _u;

double _v;

public Node(double x, double y, double Fx, double Fy, double Px, double Py, double u, double v)

{

_x = x;

_y = y;

_Fx = Fx;

_Fy = Fy;

_Px = Px;

_Py = Py;

_u = u;

_v = v;

}

public double x

{

get { return _x; }

}

public double y

{

get { return _y; }

}

public double Fx

{

get { return _Fx; }

set { _Fx = value; }

}

public double Fy

{

get { return _Fy; }

set { _Fy = value; }

}

public double Px

{

get { return _Px; }

set { _Px = value; }

}

public double Py

{

get { return _Py; }

set { _Py = value; }

}

public double u

{

get { return _u; }

set { _u = value; }

}

public double v

{

get { return _v; }

set { _v = value; }

}

}

public class Element

{

int _A;

int _B;

int _C;

double _density;

double _elasticity;

double _factor_Puason;

public Element(int A, int B, int C, double density, double elasticity, double factor_Puason)

{

_A = A; _B = B; _C = C; _density = density; _elasticity = elasticity; _factor_Puason = factor_Puason;

}

public int A

{

get { return _A; }

set { _A = value; }

}

public int B

{

get { return _B; }

set { _B = value; }

}

public int C

{

get { return _C; }

set { _C = value; }

}

public double density

{

get { return _density; }

}

public double elasticity

{

get { return _elasticity; }

}

public double factor_Puason

{

get { return _factor_Puason; }

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Основные уравнения газовой динамики, численные методы решения дифференциальных уравнений и его структура. Сущность метода контрольного объема центрированного по узлу и ячейке в программном пакете ANSYS CFX. Основы моделирования нестационарного обтекания.

    дипломная работа [1,8 M], добавлен 01.06.2010

  • Решение дифференциальных уравнений с частными производными. Метод конечных элементов, история развития, преимущества и недостатки. История разработки программной системы. Задачи, решаемые с помощью программного комплекса, области применения ANSYS.

    презентация [1,7 M], добавлен 07.03.2013

  • Ручной расчет трехстержневой фермы в ansys 14.5. Расчет пластины при одноосном растяжении, термическом расширении. Нахождение параметров профильного диска при вращении с постоянной угловой скоростью. Определение перемещений, напряжений в круглой пластине.

    курсовая работа [2,5 M], добавлен 09.12.2013

  • Схема и основные параметры элементов цепи. Вывод системы дифференциальных уравнений. Реализация алгоритма на языке программирования высокого уровня Pascal. Решение дифференциальных уравнений в пакете MathCAD. Решение интерполяции в пакете Excel.

    курсовая работа [375,4 K], добавлен 06.01.2011

  • О методе конечных элементов. Методика анализа формоизменяющих операций листовой штамповки с использованием программного комплекса ANSYS\LS-DYNA. Анализ операции осесимметричной вытяжки тонколистовой заготовки. Отображение значений напряжений и деформаций.

    дипломная работа [4,3 M], добавлен 10.09.2013

  • Оптимизационные модели на производстве. Компьютерное моделирование и программные средства. Трехмерное моделирование в T-Flex. Инженерный анализ в ANSYS. Интерфейс табличного процессора MS Excel. Построение математической модели задачи, ее реализация.

    курсовая работа [5,2 M], добавлен 13.04.2014

  • Основные положения метода конечных элементов для решения электромагнитных задач. Общая характеристика, назначение и сравнение основных функциональных возможностей двух устройств с постоянными магнитами NdFeB: магнитной пружины и магнитного держателя.

    дипломная работа [3,1 M], добавлен 30.08.2010

  • Постановка задачи для машинного моделирования, определение параметров и переменных. Алгоритмизация модели и её машинная реализация. Реализация алгоритма моделирования на общесистемном языке программирования. Описание диалога с пользователем, интерфейс.

    курсовая работа [703,1 K], добавлен 14.01.2013

  • Методы прогнозирования, их классификация. Использование рекламы в социологии. Пооперационная разработка, реализация и конфигурирование модели в пакете Anylogic. Создание анимации. Описание имитационных вычислительных экспериментов, анализ результатов.

    курсовая работа [1,7 M], добавлен 03.06.2012

  • Расчет аэродинамических характеристик плоского профиля методами физического и численного экспериментов. Описание программных комплексов ANSYS ICEM и ANSYS CFX. Потенциально-опасные и вредные производственные факторы при работе на ПЭВМ, планирование НИР.

    дипломная работа [4,1 M], добавлен 01.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.