АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Форма 2. using System.Collections.Generic;

Читайте также:
  1. bending strain (майысу деформациясы)
  2. Bending strain (майысу деформациясы)
  3. CASE-технология создания информационных систем
  4. I. ВВЕДЕНИЕ В ИНФОРМАТИКУ
  5. I. Определите, какое из этих высказываний несет психологическую информацию.
  6. I. Основная форма: помешательство.
  7. I. При каких условиях эта психологическая информация может стать психодиагностической?
  8. II. ОСНОВНОЕ ПОНЯТИЕ ИНФОРМАТИКИ – ИНФОРМАЦИЯ
  9. II. Соціальні відносини як форма прояву соціальних взаємодій.
  10. II. Тип организации верховной власти в государстве (форма государственного правления).
  11. III. ИЗМЕРЕНИЕ ИНФОРМАЦИИ
  12. III. Опорная информация

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace Потенциальный_поток

{

public partial class Form2: Form

{

Form1 f1;

public Double[,] MatrCoor, MatrTop, MatrGran;

public double[,] K, Ke, K1;

public double[] P, P1, u;

public Form2(Form1 f1)

{

InitializeComponent();

this.f1 = f1;

this.MatrCoor = f1.MatrCoor;

this.MatrTop = f1.MatrTop;

this.MatrGran = f1.MatrGran;

Demo();

}

void Demo()

{

int[,] IM;

IM = new int[f1.m, 3];

for (int i = 0; i < f1.n - 1; i++)

{ // Добавление колонки

DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn();

titleColumn1.HeaderText = "Titlt" + (i + 2).ToString();

//Выравнивание ширины колонки в соответствии с заданным стилем - AllCells

titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView1.Columns.Add(titleColumn1);

dataGridView1.Rows.Add();

dataGridView2.Rows.Add();

}

//Формирование матрицы индексов

for (int i = 0; i < f1.m; i++)

{

for (int j = 0; j < 3; j++)

{

IM[i, j] = Convert.ToInt32(MatrTop[i, j + 1] - 1);

//dataGridView1.Rows[i].Cells[j].Value = IM[i, j];

}

}

K = new double[f1.n, f1.n];

//Формирование матрицы коэффициентов влияния

for (int i = 0; i < f1.m; i++)

{

int n1 = IM[i, 0];

int n2 = IM[i, 1];

int n3 = IM[i, 2];

Double x1 = MatrCoor[n1, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n1, 2] * Math.Sin(MatrTop[i, 4]);

Double y1 = MatrCoor[n1, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n1, 1] * Math.Sin(MatrTop[i, 4]);

Double x2 = MatrCoor[n2, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n2, 2] * Math.Sin(MatrTop[i, 4]);

Double y2 = MatrCoor[n2, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n2, 1] * Math.Sin(MatrTop[i, 4]);

Double x3 = MatrCoor[n3, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n3, 2] * Math.Sin(MatrTop[i, 4]);

Double y3 = MatrCoor[n3, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n3, 1] * Math.Sin(MatrTop[i, 4]);

Double a1 = x3 - x2;

Double a2 = x1 - x3;

Double a3 = x2 - x1;

Double b1 = y2 - y3;

Double b3 = y1 - y2;

Double b2 = y3 - y1;

Double F2 = b1 * a2 - b2 * a1;

Double sx = MatrTop[i, 5];

Double sy = MatrTop[i, 6];

Double[,] fk = new Double[3, 3];

fk[0, 0] = (sx * b1 * b1 + sy * a1 * a1) / (2* F2);

fk[1, 1] = (sx * b2 * b2 + sy * a2 * a2) / (2*F2);

fk[2, 2] = (sx * b3 * b3 + sy * a3 * a3) / (2* F2);

fk[0, 1] = (sx * b1 * b2 + sy * a1 * a2) / (2* F2);

fk[0, 2] = (sx * b1 * b3 + sy * a1 * a3) / (2* F2);

fk[1, 2] = (sx * b3 * b2 + sy * a3 * a2) / (2* F2);

fk[1, 0] = fk[0, 1];

fk[2, 0] = fk[0, 2];

fk[2, 1] = fk[1, 2];

for (int l = 0; l < 3; l++)

{

int ll = IM[i, l];

for (int z = 0; z < 3; z++)

{

int zz = IM[i, z];

K[ll, zz] = K[ll, zz] + fk[l, z];

}

}

}

P = new double[f1.n];

for (int i = 0; i < MatrGran.Length / 4; i++)

{

int ll = Convert.ToInt32(MatrGran[i, 1]) - 1;

int zz = Convert.ToInt32(MatrGran[i, 2]) - 1;

double L = Math.Sqrt(Math.Pow((MatrCoor[ll, 1] - MatrCoor[zz, 1]), 2) + Math.Pow((MatrCoor[ll, 2] - MatrCoor[zz, 2]), 2));

P[ll] = P[ll] + MatrGran[i, 3] /2*L;

P[zz] = P[zz] + MatrGran[i, 3] /2*L;

}

//Копирование матриц

K1 = new double[f1.n, f1.n];

P1 = new double[f1.n];

for (int i = 0; i < f1.n; i++)

{

P1[i] = P[i];

//dataGridView1.Rows[i].Cells[0].Value = P[i];

for (int j = 0; j < f1.n; j++)

{

K1[i, j] = K[i, j];

 

//dataGridView1.Rows[i].Cells[j].Value = K[i, j];

}

}

//Главные граничные условия

for (int i = 0; i < f1.n; i++)

{

if (MatrCoor[i, 3]!= 0)

{

 

for (int j = 0; j < f1.n; j++)

{

if (i!= j)

{

K1[i, j] = 0;

 

}

}

K1[i, i] = K[i, i];

P1[i] = MatrCoor[i, 3] * K[i, i];

// dataGridView1.Rows[i].Cells[0].Value = P1[i];

}

}

u = new double[f1.n];

 

for (int i = 0; i < f1.n; i++)

{

u[i] = P1[i];

}

int KS = 0;

ClassSIMQ S = new ClassSIMQ();

S.SIMQ(K1, ref u, f1.n, ref KS);

label1.Text = "Код ошибки равен " + KS.ToString();

for (int i = 0; i < f1.n; i++)

{

 

dataGridView2.Rows[i].Cells[0].Value = u[i];

for (int j = 0; j < f1.n; j++)

{

dataGridView1.Rows[i].Cells[j].Value = K1[i, j];

}

}

//Расчет скоростей

double[] vx = new double[f1.m];

double[] vx1 = new double[f1.m];

double[] vy = new double[f1.m];

double[] vy1 = new double[f1.m];

double[] v = new double[f1.m];

for (int i = 0; i < f1.m; i++)

{

int n1 = IM[i, 0];

int n2 = IM[i, 1];

int n3 = IM[i, 2];

Double x1 = MatrCoor[n1, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n1, 2] * Math.Sin(MatrTop[i, 4]);

Double y1 = MatrCoor[n1, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n1, 1] * Math.Sin(MatrTop[i, 4]);

Double x2 = MatrCoor[n2, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n2, 2] * Math.Sin(MatrTop[i, 4]);

Double y2 = MatrCoor[n2, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n2, 1] * Math.Sin(MatrTop[i, 4]);

Double x3 = MatrCoor[n3, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n3, 2] * Math.Sin(MatrTop[i, 4]);

Double y3 = MatrCoor[n3, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n3, 1] * Math.Sin(MatrTop[i, 4]);

Double a1 = x3 - x2;

Double a2 = x1 - x3;

Double a3 = x2 - x1;

Double b1 = y2 - y3;

Double b3 = y1 - y2;

Double b2 = y3 - y1;

Double F2 = b1 * a2 - b2 * a1;

Double sx = MatrTop[i, 5];

Double sy = MatrTop[i, 6];

Double u1 = u[n1];

Double u2 = u[n2];

Double u3 = u[n3];

vx[i] = 1.0/F2* sx * (b1 * u1 + b2 * u2 + b3 * u3);

vy[i] = 1.0/F2* sy * (a1 * u1 + a2 * u2 + a3 * u3);

vx1[i] = vx[i] * Math.Cos(MatrTop[i, 4]) - vy[i] * Math.Sin(MatrTop[i, 4]);

vy1[i] = vx[i] * Math.Sin(MatrTop[i, 4]) + vy[i] * Math.Cos(MatrTop[i, 4]);

dataGridView3.Rows.Add();

dataGridView3.Rows[i].Cells[0].Value = i + 1;

dataGridView3.Rows[i].Cells[1].Value = vx1[i];

dataGridView3.Rows[i].Cells[2].Value = vy1[i];

f1.qx[i] = vx1[i];

f1.qy[i] = vy1[i];

v[i] = Math.Sqrt(vx1[i] * vx1[i] + vy1[i] * vy1[i]);

dataGridView3.Rows[i].Cells[3].Value = v[i];

}

}

 

private void button1_Click(object sender, EventArgs e)

{

//Построение

 

f1.графикToolStripMenuItem_Click(sender, e);

f1.Activate();

}

}

}

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.)