Главная страница

термодинамический расчет. Пояснительная записка к курсовой работе по дисциплине Топлива и рабочие процессы в АиРД


Скачать 0.63 Mb.
НазваниеПояснительная записка к курсовой работе по дисциплине Топлива и рабочие процессы в АиРД
Анкортермодинамический расчет
Дата28.09.2022
Размер0.63 Mb.
Формат файлаdocx
Имя файлаAlkiev_T-1_O2 (2).docx
ТипПояснительная записка
#702968
страница6 из 7
1   2   3   4   5   6   7

Выводы по разделу четыре


Анализируя полученный диапазон зависимости работоспособности газов от коэффициента избытка окислителя α, можно сделать вывод, что максимальная работоспособность продуктов сгорания достигается при значении коэффициента избытка окислителя:

.

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

СПИСОК ЛИТЕРАТУРЫ

  1. Теория жидкостных ракетных двигателей [Текст]: учебное пособие / Махин В. А. – М.: Изд-во «Наука», 1969. – 586 с.

  2. Топлива химических ракетных двигателей [Текст]: учебное пособие / В.С. Егорычев, В.С. Кондрусев. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2007. – 72 с.

  3. Теория ракетных двигателей [Текст]: учебное пособие / В.Е. Алемасов, А.Ф. Дрегалин. – М.: Изд-во «Машиностроение», 1989. – 547 с.




Приложения

Приложение А
(обязательное)
Текст программы


Основная часть программы:

program main

use dat01

implicit none

integer :: you

! real (8) :: alph, k, k_0 !альфа - коэфф. избытка окислителя, k - фактическое стехиометрическое соотношение, k_0 - теоретическое стехиометрическое соотношение

! real (8) :: p_kam, p_sopl !давление газов

! real (8) :: mu_kam, mu_sopl !молекулярные массы газов

! real (8) :: R_kam, R_sopl !удельная газовая постоянная

! real (8) :: i_kam, i_sopl !энтальпия

! real (8) :: s_kam, s_sopl !энтропия продуктов сгорания

! real (8) :: T_kam, T_sopl !температура газов в камере и в сопле

! real (8) :: rho_kam, rho_sopl !плотность газов

! real (8) :: mu_sredn, w_sopl, gam !

!real (8) :: i_topl, i_gor, i_ok! 'энтальпия топлива, горючего и окислителя

!real (8), dimension (8):: pi_kam, pi_sopl

interface

subroutine kamera !(p_kam, alph, i_topl, s_kam, T_kam, mu_kam, pi_kam, R_kam)

use dat01

implicit none

!real(8), intent(in) :: p_kam, alph, i_topl

!real(8), intent(out) :: s_kam, T_kam, mu_kam, R_kam

!real(8), dimension (8), intent (out) :: pi_kam

end subroutine

subroutine soplo !(p_sopl, alph, i_topl, s_sopl, i_sopl T_sopl, mu_sopl, pi_sopl, R_sopl)

use dat01

implicit none

!real(8) :: Tl, Tr, Trab, s_ras, delt

!real(8), intent(in) :: p_sopl, alph, i_topl, s_sopl

!real(8), intent(out) :: i_sopl, T_sopl, mu_sopl, R_sopl

!real(8), dimension (8), intent (out) :: pi_sopl

end subroutine

end interface

open (3,file="C:\Users\Ada_Lire\Desktop\toplivo\jrd.txt",status='replace')

!ввод данных

print *,"Vvedite i_gor - entalpiya goryuchego [J/kg]"

!read(*,'(G12.3)') i_gor

print *,"Vvedite i_ok - entalpiya okislitelya [J/kg]"

!read(*,'(G12.3)') i_ok

print *,"Vvedite k_0 - teoreticheskoe stehiometricheskoe sootnoshenie"

!read(*,'(G12.3)') k_0

print *,"Vvedite p_kam - davlenie v kamere [bar]"

!read(*,'(G12.3)') p_kam

print *,"Vvedite p_sopl - davlenie na sreze sopla [bar]"

!read(*,'(G12.3)') p_sopl

i_ok = --398.8

i_gor = -1815.781

k_0=3.42

!p_kam=70

!p_sopl=0.6

!перевод в паскали

p_kam=7000000.0!p_kam*100000

p_sopl=60000.0!p_sopl*100000

print *,"Iskhodnye dannye"

print *, "entalpiya goryuchego"

print *, "i_gor=", i_gor

write (3,*) "entalpiya goryuchego"

write (3,*) "i_gor=", i_gor

print *, "entalpiya okislotelya"

print *, "i_ok=", i_ok

write (3,*) "entalpiya okislotelya"

write (3,*) "i_ok=", i_ok

print *, "teoreticheskoe stehiometricheskoe sootnoshenie"

print *, "k_0=", k_0

write (3,*) "teoreticheskoe stehiometricheskoe sootnoshenie"

write (3,*) "k_0=", k_0

print *, "davlenie v kamere"

print *, "p_kam=", p_kam

write (3,*) "davlenie v kamere"

write (3,*) "p_kam=", p_kam

print *, "davlenie na sreze sopla [Pa]"

print *, "p_sopl=", p_sopl

write (3,*) "davlenie na sreze sopla [Pa]"

write (3,*) "p_sopl=", p_sopl

print *,"_____Module_____"

write(3,*)"_____Module_____"

call mol_r

call vicisli_g_gor

call vicisli_abc

print *,"_____End module_____"

write(3,*)"_____End module_____"

print *,"Osnovnoy tsykl"

write (3,*)"Osnovnoy tsykl"

print *," -----------------------------"

print *," ----------------------------------- "

print *,"-----------------------------------------"

write (3,*)" -----------------------------"

write (3,*)" ----------------------------------- "

write (3,*)"-----------------------------------------"

!основной цикл

do you = speak, english

alph=0.55+0.05*you

print *, "\\||//"

print *, "alpha= ",alph

write(3,*) "\\||//"

write(3,*) "alpha= ",alph

k = k_0 * alph

i_topl=(i_gor+k*i_ok)/(1+k)

print *, "k= ",k

write(3,*) "k= ",k

print *, "i_topl= ",i_topl

write(3,*) "i_topl= ",i_topl

print *, "KAMERA"

write(3,*) "KAMERA"

call kamera !(p_kam, alph, i_topl, s_kam, T_kam, mu_kam, pi_kam, R_kam)

!write (*,*) T_kam, s_kam

!write (*,*) mu_kam, R_kam

!write (*,*) part

s_sopl=s_kam

call soplo !(p_sopl, alph, i_topl, s_sopl, i_sopl, T_sopl, mu_sopl, pi_sopl, R_sopl)

!mu_sopl=sum(part*mui)/p_sopl

!R_sopl=R0/mu_sopl

rho_kam=P_kam/(R_kam*T_kam)

rho_sopl=P_sopl/(R_sopl*T_sopl)

gam=log(P_kam/P_sopl)/log(rho_kam/rho_sopl)*k_0

w_sopl=sqrt(2*gam/(gam-1)*R_kam*T_kam*(1-(P_sopl/P_kam)**((gam-1)/gam)))

print *,"T sopla=", T_sopl

print *,"Mu sopla=", mu_sopl

print *,"R sopla=", R_sopl

!print *, part

print *, w_sopl

print *, "=============================="

end do

print *,"Konec"

write (3,*)"Konec"

print *,"-----------------------------------------"

print *," ----------------------------------- "

print *," -----------------------------"

write (3,*)"-----------------------------------------"

write (3,*)" ----------------------------------- "

write (3,*)" -----------------------------"

close (3,status='keep')

end program

Структура подпрограмм для расчета камеры и сопла фактически идентичны, за исключением основных используемых формул.

subroutine kamera !(p_kam, alph, i_topl, s_kam, T_kam, mu_kam, pi_kam, R_kam)

use dat01

use kis_mod

implicit none

real(8) :: Tl, Tr, Trab, i_ras, delt

!real(8), intent(in) :: p_kam, alph, i_topl

!real(8), intent(out) :: s_kam, T_kam, mu_kam, R_kam

!real(8), dimension (8), intent (out) :: pi_kam

print *, "KAMERA"

write(3,*) "KAMERA"

Tl=2000

Tr=5000

delt=0.01

pp=p_kam !замена для пард

do

Trab=(Tl+Tr)/2

print *, "Trab=", Trab

write(3,*) "Trab=", Trab

pause

call kis (Trab) !вызываем подсчет коэфф диссоциации, энтальпии, энтропии

call PARD (alph)

Ii=1000*Ii/(mui*0.001)

pi_kam=pi

mu_kam=sum(pi_kam*mui)/p_kam

R_kam=R0/mu_kam

i_ras=sum(Ii*pi_kam)/(mu_kam*p_kam)

print *, "pogreshnost i_rast-i_topl=", abs((i_ras-i_topl)/i_topl)

write(3,*) "pogreshnost i_rast-i_topl=", abs((i_ras-i_topl)/i_topl)

print *, "pogreshnost i_ras=", i_ras

write(3,*) "pogreshnost i_ras=", i_ras

print *, "pogreshnost i_topl=", i_topl

write(3,*) "pogreshnost i_topl=", i_topl

!pause

if ((abs((i_ras-i_topl)/i_topl))>delt) then

if (i_ras
Tr=Trab

else

Tl=Trab

end if

else

exit

end if

end do

pause

T_kam=Trab

s_kam=sum((Si-R0*log(pi_kam))*pi_kam)/sum(mui*pi_kam)

print *, "END KAMERA"

write(3,*) "END KAMERA"

end subroutine kamera

Подпрограмма для расчета среза сопла:

subroutine soplo !(p_sopl, alph, i_topl, s_sopl, i_sopl, T_sopl, mu_sopl, pi_sopl, R_sopl)

use dat01

use kis_mod

implicit none

real(8) :: Tl, Tr, Trab, s_ras, delt

!real(8), intent(in) :: p_sopl, alph, i_topl, s_sopl

!real(8), intent(out) :: i_sopl, T_sopl, mu_sopl, R_sopl

!real(8), dimension (8), intent (out) :: pi_sopl

Tl=2000

Tr=5000

delt=0.01

pp=p_sopl !замена для пард

do

Trab=(Tl+Tr)/2

call kis (Trab) !вызываем подсчет коэфф диссоциации, энтальпии, энтропии

call PARD (alph)

pi_sopl=pi

mu_sopl=sum(pi_sopl*mui)/p_sopl

R_sopl=R0/mu_sopl

s_ras=sum((Si-R0*log(pi_sopl))*pi_sopl)/sum(mui*pi_sopl)

if ((abs((s_ras-s_sopl)/s_sopl))>delt) then

if (s_ras
Tl=Trab

else

Tr=Trab

end if

else

exit

end if

end do

T_sopl=Trab

i_sopl=sum(Ii*mui*pi_sopl)/sum(mui*pi_sopl)

end subroutine soplo

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

module dat01

real(8) :: Aconst, Bconst, Cconst

integer :: bruh

enum, bind(C)

enumerator :: H2=1, H, O2, O, OH, H2O, CO2, CO

enumerator :: MU_H=1, MU_C, MU_O

enumerator :: speak=1, english=10

enumerator :: low=1, hi

enumerator :: CO2__CO_O2=1, H2O__H2_O2, H2O__OH_H2, H2__H, O2__O!, F2__F, HF__H_F, N2__N, N2O2__NO

end enum

real (8), parameter, dimension(3) :: mu = (/1, 12, 16/)!молярные массы

real (8), parameter :: R0=8314.5!универсальная газовая постоянная

!real (8), dimension(8) :: part !глобальная переменная

real (8), dimension(8):: mui !массив с молярными массами

real (8), dimension(8):: Ri !массив с газовыми постоянными

real (8) :: g_gor!условная масса молекулы горючего

real (8), dimension (3):: gi_gor!массовые доли эоементов горючего

real (8), dimension (5) :: Ki !массив с постоянными диссоциации для реакций

real (8), dimension (8):: pi !массив с парциальными давлениями для пард

real (8) :: pp !костыль давления для парда

real (8) :: alph, k, k_0 !альфа - коэфф. избытка окислителя, k - фактическое стехиометрическое соотношение, k_0 - теоретическое стехиометрическое соотношение

real (8) :: p_kam, p_sopl !давление газов

real (8) :: mu_kam, mu_sopl !молекулярные массы газов

real (8) :: R_kam, R_sopl !удельная газовая постоянная

real (8) :: i_kam, i_sopl !энтальпия

real (8) :: s_kam, s_sopl !энтропия продуктов сгорания

real (8) :: T_kam, T_sopl !температура газов в камере и в сопле

real (8) :: rho_kam, rho_sopl !плотность газов

real (8) :: mu_sredn, w_sopl, gam !

real (8) :: i_topl, i_gor, i_ok! 'энтальпия топлива, горючего и окислителя

real (8), dimension (8):: pi_kam, pi_sopl!массивы с парциальными давлениями газов в камере и сопле

contains

subroutine mol_r

mui(H)=mu(mu_H)

mui(H2)=2*mu(mu_H)

mui(O)=mu(mu_O)

mui(O2)=2*mu(mu_O)

mui(OH)=mu(mu_H)+mu(mu_O)

mui(H2O)=2*mu(mu_H)+mu(mu_O)

mui(CO)=mu(mu_C)+mu(mu_O)

mui(CO2)=mu(mu_C)+2*mu(mu_O)

do bruh=1,8

Ri(bruh)=R0/mui(bruh)

end do

print *, "subroutine mol_r"

write (3,*) "subroutine mol_r"

print *,"mui(H)=", mui(H)

print *,"mui(H2)=", mui(H2)

print *,"mui(O)=", mui(O)

print *,"mui(O2)=", mui(O2)

print *,"mui(OH)=", mui(OH)

print *,"mui(H2O)=", mui(H2O)

print *,"mui(CO)=", mui(CO)

print *,"mui(CO2)=", mui(CO2)

write (3,*)"mui(H)=", mui(H)

write (3,*)"mui(H2)=", mui(H2)

write (3,*)"mui(O)=", mui(O)

write (3,*)"mui(O2)=", mui(O2)

write (3,*)"mui(OH)=", mui(OH)

write (3,*)"mui(H2O)=", mui(H2O)

write (3,*)"mui(CO)=", mui(CO)

write (3,*)"mui(CO2)=", mui(CO2)

print *,"Ri(H)=", Ri(H)

print *,"Ri(H2)=", Ri(H2)

print *,"Ri(O)=", Ri(O)

print *,"Ri(O2)=", Ri(O2)

print *,"Ri(OH)=", Ri(OH)

print *,"Ri(H2O)=", Ri(H2O)

print *,"Ri(CO)=", Ri(CO)

print *,"Ri(CO2)=", Ri(CO2)

write (3,*)"Ri(H)=", Ri(H)

write (3,*)"Ri(H2)=", Ri(H2)

write (3,*)"Ri(O)=", Ri(O)

write (3,*)"Ri(O2)=", Ri(O2)

write (3,*)"Ri(OH)=", Ri(OH)

write (3,*)"Ri(H2O)=", Ri(H2O)

write (3,*)"Ri(CO)=", Ri(CO)

write (3,*)"Ri(CO2)=", Ri(CO2)

print *, "end subroutine mol_r"

write (3,*) "end subroutine mol_r"

!allocate (Ri(size(mui)))

! do you = 1, size(mui)

! Ri(you)=R0/mui(you)

! end do

endsubroutine mol_r

subroutine vicisli_g_gor

g_gor=1

gi_gor(mu_H)=0.141

gi_gor(mu_O)=0.0

gi_gor(mu_C)=0.859

print *, "subroutine vicisli_g_gor"

write (3,*) "subroutine vicisli_g_gor"

print *, "g_gor=", g_gor

print *, "gi_gor(H)=", gi_gor(mu_H)

print *, "gi_gor(O)=", gi_gor(mu_O)

print *, "gi_gor(C)=", gi_gor(mu_C)

write (3,*) "g_gor=", g_gor

write (3,*) "gi_gor(H)=", gi_gor(mu_H)

write (3,*) "gi_gor(O)=", gi_gor(mu_O)

write (3,*) "gi_gor(C)=", gi_gor(mu_C)

print *, "end subroutine vicisli_g_gor"

write (3,*) "end subroutine vicisli_g_gor"

end subroutine vicisli_g_gor

subroutine vicisli_abc

Aconst=(mu(MU_H)*gi_gor(MU_O))/(mu(MU_O)*gi_gor(MU_H))

Bconst=(gi_gor(MU_H)*mu(MU_O))/(k_0*mu(MU_H))

Cconst=(mu(MU_H)*gi_gor(MU_C))/(mu(MU_C)*gi_gor(MU_H))

print *, "vicisli_abc"

write (3,*) "vicisli_abc"

print *, "A=",Aconst

print *, "B=",Bconst

print *, "C=",Cconst

write (3,*) "A=",Aconst

write (3,*) "B=",Bconst

write (3,*) "C=",Cconst

print *, "end vicisli_abc"

write (3,*) "end vicisli_abc"

end subroutine vicisli_abc

end module dat01

Подсчет коэфф диссоциации, энтальпии, энтропии:

module kis_mod

integer :: i, j

real(8) :: T

real (8), dimension (8) :: hrt! H/RT

real (8), dimension (8) :: sr! S/R

real (8), dimension (8) :: grt! G/RT

real (8), dimension (8) :: Si! энтропия в-ва

real (8), dimension (8) :: Ii! энтальпия в-ва

real (8), dimension (7,2,8) :: poly != reshape (//) () !7 - полином 2- low/hi 2 - в-во

real (8), dimension (5) :: deltagrt

!real (16), dimension (5) :: Ki

contains

subroutine kis (Trab)

use dat01

implicit none

real(8), intent(in) :: Trab

!a(1,low,N) = 0.24159429E+01

!a(2,low,N) = 0.17489065E-03

!a(3,low,N) = -0.11902369E-06

!a(4,low,N) = 0.30226244E-10

!a(5,low,N) = -0.20360983E-14

!a(6,low,N) = 0.56133775E+05

!a(7,low,N) = 0.46496095E+01

!a(1,hi,N) = 0.25000000E+01

!a(2,hi,N) = 0.00000000E+00

!a(3,hi,N) = 0.00000000E+00

!a(4,hi,N) = 0.00000000E+00

!a(5,hi,N) = 0.00000000E+00

!a(6,hi,N) = 0.56104638E+05

!a(7,hi,N) = 0.41939088E+01

!a(1,low,N2) =2.95257637E+00

!a(2,low,N2) =1.39690040E-03

!a(3,low,N2) =-4.92631603E-07

!a(4,low,N2) =7.86010195E-11

!a(5,low,N2) =-4.60755204E-15

!a(6,low,N2) =-9.23948688E+02

!a(7,low,N2) =5.87188762E+00

!a(1,hi,N2) = 3.53100528E+00

!a(2,hi,N2) =-1.23660988E-04

!a(3,hi,N2) =-5.02999433E-07

!a(4,hi,N2) =2.43530612E-09

!a(5,hi,N2) =-1.40881235E-12

!a(6,hi,N2) =-1.04697628E+03

!a(7,hi,N2) =2.96747038E+00

poly(1,low,H2) = 2.93286575E+00

poly(2,low,H2) = 8.26608026E-04

poly(3,low,H2) = -1.46402364E-07

poly(4,low,H2) = 1.54100414E-11

poly(5,low,H2) = -6.88804800E-16

poly(6,low,H2) = -8.13065581E+02

poly(7,low,H2) = -1.02432865E+00

poly(1,hi,H2) = 2.34433112E+00

poly(2,hi,H2) = 7.98052075E-03

poly(3,hi,H2) = -1.94781510E-05

poly(4,hi,H2) = 2.01572094E-08

poly(5,hi,H2) = -7.37611761E-12

poly(6,hi,H2) = -9.17935173E+02

poly(7,hi,H2) = 6.83010238E-01

poly(1,low,H) = 0.25000000E+01

poly(2,low,H) = 0.00000000E+00

poly(3,low,H) = 0.00000000E+00

poly(4,low,H) = 0.00000000E+00

poly(5,low,H) = 0.00000000E+00

poly(6,low,H) = 0.25473660E+05

poly(7,low,H) = -0.44668285E+00
1   2   3   4   5   6   7


написать администратору сайта