Рефераты. Алгоритмы параллельных процессов при исследовании устойчивости подкрепленных пологих оболочек

/*

stdio. h (от англ. standard input/output header -

стандартный заголовочный файл ввода/вывода) заголовочный файл

стандартной библиотеки языка Си, содержащий определения макросов,

константы и объявления функций и типов, используемых для различных

операций стандартного ввода и вывода. Функциональность унаследована

от "портативного пакета ввода/вывода" ("portable I/O package"),

написанного Майком Леском из Bell Labs в начале 1970-х.

Функции, объявленные в stdio. h, являются весьма популярными благодаря тому,

что являясь частью Стандартной библиотеки языка Си, они гарантируют работу

на любой платформе, поддерживающей Си. Приложения на отдельных платформах

могут, тем не менее, иметь причины для использования функций ввода/вывода

самой платформы вместо функций stdio. h.

*/

#include <stdlib. h>

/*

stdlib. h - заголовочный файл стандартной библиотеки

общего назначения языка Си, который содержит в себе функции,

занимающиеся выделением памяти, контроль процесса выполнения программы,

преобразования типов и другие.

*/

#include <math. h>

/*

math. h - заголовочный файл стандартной библиотеки языка программирования С,

разработанный для выполнения простых математических операций. Большинство

функций привлекают использование чисел с плавающей точкой. Все эти функции

принимают double, если не определено иначе. Для работы с типами float и

long double используются функции с постфиксами f и l соответственно.

Все функции, принимающие или возвращающие угол, работают с радианами.

*/

#include "matrix. h"

/*

matrix. h - заголовочный файл библиотеки, содержащей определения

класса матрицы matrix, использованного в дальнейшем в программе.

Содержит объявление класса, методы для работы с ним, такие как:

произведение матрицы на матрицу;

сложение матрицы с матрицей;

выделение памяти под матрицу;

выгрузка данных;

загрузка данных;

копирование матрицы;

сравнение полученной единичной матрицы с эталоном единичной матрицы;

обращение матрицы.

*/

// Объявление переменных

double *X1, *X2, *X3, *Y1, *Y2, *Y3; // Коэффициенты аппроксимирующих // функций

double *C1, *C2; // Коэффициенты системы

int N, n, m, E;

double q, h, mu, r, Pi, mu1, Kx, Ky, R1, R2, W;

double a,b;

/*

N - количество членов в приближении по методу Ритца;

n - количество ребер по x;

m - количество ребер по y;

E - модуль упругости материала;

q - поперечная равномерно-распределенная нагрузка;

h - толщина оболочки;

mu - коэффициент Пуассона;

r - ширина ребер;

Pi - число Пи;

R1 - радиус кривизны по x;

R2 - радиус кривизны по y;

a - длина оболочки по x;

b - длина оболочки по y;

*/

// Процедуры вычисления производных функций

double sin_0 (double k, double x)

{

return sin (k * x);

}

double sin_1 (double k, double x) // первая производная

{

return k * cos (k * x);

}

double sin_2 (double k, double x) // вторая производная

{

return - k * k * sin (k * x);

}

double Fx (int k, int i, int j, double arg) // выборка произведений

{ // аппроксимирующих

switch (k) // функций для х

{

case 1:

return sin_1 (X1 [i], arg) * sin_1 (X1 [j], arg);

case 2:

return sin_0 (X1 [i], arg) * sin_0 (X1 [j], arg);

case 3:

return sin_1 (X1 [i], arg) * sin_0 (X2 [j], arg);

case 4:

return sin_0 (X1 [i], arg) * sin_1 (X2 [j], arg);

case 5:

return sin_1 (X1 [i], arg) * sin_0 (X3 [j], arg);

case 6:

return sin_0 (X2 [i], arg) * sin_0 (X2 [j], arg);

case 7:

return sin_1 (X2 [i], arg) * sin_1 (X2 [j], arg);

case 8:

return sin_0 (X2 [i], arg) * sin_0 (X3 [j], arg);

case 9:

return sin_0 (X3 [i], arg) * sin_1 (X1 [j], arg);

case 10:

return sin_0 (X3 [i], arg) * sin_0 (X3 [j], arg);

case 11:

return sin_2 (X3 [i], arg) * sin_2 (X3 [j], arg);

case 12:

return sin_2 (X3 [i], arg) * sin_0 (X3 [j], arg);

case 13:

return sin_1 (X3 [j], arg) * sin_1 (X3 [j], arg);

case 14:

return sin_0 (X3 [j], arg);

default:

return 0;

}

}

double simpsonFx (double a, double b, int k, int i, int j)

{ // метод Симпсона для х

int n = 1000;

double locI, h, xi, s1 = 0.0, s2 = 0.0, y [10000] ;

int f;

h = (b - a) / n;

xi = a;

for (f = 0; f <= 2 * n; f++)

{

y [f] = Fx (k, i,j,xi);

xi = xi + h/2;

}

locI = y [0] + y [2*n] ;

for (f = 2; f < 2*n; f = f + 2)

s1 = s1 + y [f] ;

for (f = 1; f < 2*n; f = f + 2)

s2 = s2 + y [f] ;

locI = (locI + 2.0 * s1 + 4.0 * s2) * (h / 6);

return (locI);

}

double Fy (int k, int i, int j, double arg) // выборка произведений

{ // аппроксимирующих

switch (k) // функций для y

{

case 1:

return sin_0 (Y1 [i], arg) * sin_0 (Y1 [j], arg);

case 2:

return sin_1 (Y1 [i], arg) * sin_1 (Y1 [j], arg);

case 3:

return sin_0 (Y1 [i], arg) * sin_1 (Y2 [j], arg);

case 4:

return sin_1 (Y1 [i], arg) * sin_0 (Y2 [j], arg);

case 5:

return sin_0 (Y1 [i], arg) * sin_0 (Y3 [j], arg);

case 6:

return sin_1 (Y2 [i], arg) * sin_1 (Y2 [j], arg);

case 7:

return sin_0 (Y2 [i], arg) * sin_0 (Y2 [j], arg);

case 8:

return sin_1 (Y2 [i], arg) * sin_0 (Y3 [j], arg);

case 9:

return sin_0 (Y3 [i], arg) * sin_0 (Y1 [j], arg);

case 10:

return sin_0 (Y3 [i], arg) * sin_0 (Y3 [j], arg);

case 11:

return sin_2 (Y3 [i], arg) * sin_2 (Y3 [j], arg);

case 12:

return sin_2 (Y3 [i], arg) * sin_0 (Y3 [j], arg);

case 13:

return sin_1 (Y3 [i], arg) * sin_1 (Y3 [j], arg);

case 14:

return sin_0 (Y3 [j], arg);

default:

return 0;

}

}

double simpsonFy (double a, double b, int k, int i, int j)

{ // метод Симпсона для y

int n = 1000;

double locI, h, xi, s1 = 0.0, s2 = 0.0, y [10000] ;

int f;

h = (b - a) / n;

xi = a;

for (f = 0; f <= 2 * n; f++)

{

y [f] = Fy (k, i,j,xi);

xi = xi + h/2;

}

locI = y [0] + y [2*n] ;

for (f = 2; f < 2*n; f = f + 2)

s1 = s1 + y [f] ;

for (f = 1; f < 2*n; f = f + 2)

s2 = s2 + y [f] ;

locI = (locI + 2.0 * s1 + 4.0 * s2) * (h / 6);

return (locI);

}

double C (int k, int i, int j) // коэффициэнты в ФПЭД

{

switch (k)

{

case 1:

return 2*h*simpsonFx (0.0,a,1, i,j) *simpsonFy (0.0,a,1, i,j) +2*mu1*h*simpsonFx (0.0,a,2, i,j) *simpsonFy (0.0,a,2, i,j);

case 2:

return 2*h*mu*simpsonFx (0.0,a,3, i,j) *simpsonFy (0.0,a,3, i,j) +2*mu1*h*simpsonFx (0.0,a,4, i,j) *simpsonFy (0.0,a,4, i,j);

case 3:

return - 2*h* (Kx+mu*Ky) *simpsonFx (0.0,a,5, i,j) *simpsonFy (0.0,a,5, i,j);

case 4:

return 2*h*mu*simpsonFx (0.0,a,3, i,j) *simpsonFy (0.0,a,3, i,j) +2*mu1*h*simpsonFx (0.0,a,4, i,j) *simpsonFy (0.0,a,4, i,j);

case 5:

return 2*h*simpsonFx (0.0,a,6, i,j) *simpsonFy (0.0,a,6, i,j) +2*mu1*h*simpsonFx (0.0,a,7, i,j) *simpsonFy (0.0,a,7, i,j);

case 6:

return - 2*h* (mu*Kx+Ky) *simpsonFx (0.0,a,8, i,j) *simpsonFy (0.0,a,8, i,j);

case 7:

return - 2*h* (Kx+mu*Ky) *simpsonFx (0.0,a,9, i,j) *simpsonFy (0.0,a,9, i,j);

case 8:

return - 2*h* (mu*Kx+Ky) *simpsonFx (0.0,a,8, i,j) *simpsonFy (0.0,a,8, i,j);

case 9:

return 2*h* (Kx*Kx+2*mu*Kx*Ky+Ky*Ky) *simpsonFx (0.0,a,10, i,j) *simpsonFy (0.0,a,10, i,j) +pow (h,3) /12

* (2*simpsonFx (0.0,a,11, i,j) *simpsonFy (0.0,a,10, i,j) +2*mu*simpsonFx (0.0,a,12, i,j)

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.