рефераты рефераты
Домой
Домой
рефераты
Поиск
рефераты
Войти
рефераты
Контакты
рефераты Добавить в избранное
рефераты Сделать стартовой
рефераты рефераты рефераты рефераты
рефераты
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА
рефераты
 
МЕНЮ
рефераты Дослідження зміни швидкості та витікання ідеального газу із ємкості під тиском рефераты

БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Дослідження зміни швидкості та витікання ідеального газу із ємкості під тиском

Дослідження зміни швидкості та витікання ідеального газу із ємкості під тиском

15

Курсова робота

на тему: «Дослідження зміни швидкості та витікання ідеального газу із ємкості під тиском»

Постановка задачі

Описати масив структур з трьох елементів. Кожна структура об'єднує дані для одного варіанта розрахунків. Необхідно для кожного варіанта на відрізку часу від 0 до Т з кроком dt (? t) побудувати графік зміни швидкості та витікання ідеального газу із ємкості під тиском.

Де R - універсальна газова стала, M - молекулярна маса газу, Tc - температура в ємкості, Po - тиск у ємкості.

де - відношення теплоємностей.

Температура Ро та То змінюється в часі:

Тут Рn, A, To, B - задані константи. Вхідні дані зчитувати з файлу, результати розрахунків записувати в інший файл. Передбачити окремі функції для обчислення Ро та То.

Нижче представлені 3 варіанти вхідних даних:

1) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 3.2, A = 1.2, M = 28.96, K = 1.402, P = 1.2 атм.

2) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 4, A = 1.5, M = 28.96, K = 1.402, P = 1.5 атм.

3) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 5, A = 2, M = 28.96, K = 1.402, P = 2 атм.

Таблиця символічних імен

Змінна

Фізичний зміст

Одиниця вимірювання

R

універсальна газова стала

Дж/грам*моль (Дж - Джоуль)

T

час за який газ витікає із ємкості

с (секунди)

dt

крок що береться для оцінки зміни стану газу у часі

_

B

задана константа

_

M

молекулярна маса газу

Тс

температура в ємкості

°К (градусів за Кельвіном)

Ро

тиск у ємкості

Па (Паскаль)

Pn

задана константа

_

A

задана константа

_

To

задана константа

_

p

тиск що діє на газ у ємкості

атм.

t

час

с (секунди)

Kg

Kg = (k_1)/k

_

k

відношення теплоємкостей

_

Блок - схема

15

Текст програми мовою С

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

#include <graphics.h>

#define №3

#define FN 21

#define R_ 8.31696

#define T_ 1200

#define dt_ 60

#define B_ 50

#define M_ 28.96

#define K_ 1.402

#define T0_ 400

struct data

{

float Pn;

float A;

float p;

}

x[N];

float Tc (float T0, float B, float t, float T);

float P0 (float Pn, float A, float t, float T);

float Kg (float K);

void graf_output (int c, float xu[], float yv[], int N_, char*title);

 // -

void main()

{

float tx[N] [FN];

float wx[N] [FN];

float w, t, Tc_, P0_, Kg_;

int i, j;

char str[40];

FILE *data;

FILE *out;

clrscr();

data = fopen («input.txt», «r»);

if (! data)

{

printf («The file input.txt hasn't been found. Please create it or change the directory. \n»);

getch();

exit(1);

}

out = fopen («output.txt», «w»);

for (i=0; i<N; i++)

{

fscanf (data, «%f % f % f»,&x[i].Pn,&x[i].A,&x[i].p);

}

printf («Please type in any decimal number:»);

scanf («%f»,&Kg_);

fclose(data);

clrscr();

for (i=0; i<N; i++)

{

for (t=0, j=0; t<=T_; t=t+dt_, j++)

{

Tc_ = Tc (T0_, B_, t, T_);

P0_ = P0 (x[i].Pn, x[i].A, t, T_);

Kg_ = Kg (K_);

w = 2*R_*Tc_/(Kg_ * M_);

w *= 1 - pow (x[i].p/P0_, Kg_);

w = sqrt(w);

fprintf (out, «%.0f\t%.5f\n», t, w);

tx[i] [j]=t;

wx[i] [j]=w;

}

fprintf (out, "\n\n\n\n»);

}

fclose(out);

printf («All the function values (values of graph points' coordinates) will be put into \nthe output.txt file.\n»);

printf («You are able to change the values of Pn, A and p. Change those\nvalues in the input.txt file.\n»);

printf («The correct order of typing the values is showed under the graphs\n\n\n\n»);

printf («Press Enter to continue»);

getch();

for (i=0; i<N; i++)

{

sprintf (str, «Ph =%.3f, A =%.3f, P =%.3 f.», x[i].Pn, x[i].A, x[i].p);

graf_output (i, tx[i], wx[i], FN, str);

fflush(stdin);

getch();

}

}

 // -

void graf_output (int c, float xu[], float yv[], int N_, char*title)

{

int gdriver = DETECT, gmode, errorcode;

int xmax, ymax; // the maximum coordiantes x(width) y(hight)

int xmin, ymin; // spaces between the graph and screen adges

int x, y; // current coordinates

int x_, y_; // previous coordinates

int i;

char st[20];

double miny, maxy; // extreem values of y

initgraph (&gdriver, &gmode, «e:\\turbocpp\\bgi»);

xmin = 90;

ymin = 100;

xmax = getmaxx() - 20;

ymax = getmaxy() - 40;

maxy = miny = yv[0];

for (i=0; i<N_; i++)

{

miny = (yv[i]<miny)? yv[i]:miny;

maxy = (yv[i]>maxy)? yv[i]:maxy;

}

rectangle (0,0, getmaxx(), getmaxy());

setbkcolor(7);

sprintf (st, «Input variant number % d», c+1);

outtextxy (10,3, st);

outtextxy (10,30, title);

 // first 2 lines-the axises x and y. next we got the pointers building (y>, x>)

line (xmin, ymin, xmin, ymax);

line (xmin, ymax, xmax, ymax);

line (xmin, ymin, xmin+3, ymin+5);

line (xmin, ymin, xmin_3, ymin+5);

line (xmax, ymax, xmax_5, ymax_3);

line (xmax, ymax, xmax_5, ymax+3);

setcolor(1);

outtextxy (xmin+6, ymin, «w»);

outtextxy (xmax, ymax+15, «t»);

for (y=ymax_20; y>ymin+10; y-= 20)