1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Помогите решить задачу, Написал программу для расчета температурной зависимости угольной части
Здравствуйте прошу помочь изменить код программы. Постановка задачи такова: Частица угля (шар) начинает прогреваться на границе действует лучистый и конвективный теплообмен. Решается методом сеток. По мере нагревания с температуры 400 градусов происходит реакция разложения. Проблема в том что программа вводит значения температуры от радиуса и степень разложения в конечный момент времени. А нужно что бы в каждый момент времени при выполнении условия 400 градусов считалась степень разложения и выводилась в файл( тоесть надо получить график изменение степени разложения от температуры) при этом на каждом промежутке степень разложения суммировалась. Вот код:
while time<t_end do begin time:=time+tau; for i:=1 to N do if T[i]<=373 then v[i]:=0 else v[i]:=(exp(-k0*exp(-E/(R*T[i]))*tau)); { for i:=1 to N do
writeln(v[i]); }
begin for i:=1 to N do alfa[1]:=1.0; beta[1]:=0.0; for i:= 2 to N-1 do begin ai:=(lamda/(h*h))+(lamda/((i-1)*h*h)); ci:=(lamda/(h*h))-lamda/((i-1)*h*h); bi:=ai+ci+ro*c/tau; fi:=(-ro*c*T[i]/tau)-qxim*v[i]; alfa[i]:=ai/(bi-ci*alfa[i-1]); beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]); end; repeat d:=T[N]; T[N]:=(lamda*beta[N-1]+h*kapa*Te+eps1*sigma*h*((sqr(sqr(Te)))-(sqr(sqr(d)))))/(h*kapa+lamda*(1-alfa[N-1])); until abs(d-T[N])<=eps; for i:= N-1 downto 1 do T[i]:=alfa[i]*T[i+1]+beta[i]; end; end;
Assign(f,'res.txt'); Rewrite(f); Writeln(f,' R1 = ',R1:6:4); Writeln(f,' N = ',N); Writeln(f,' lamda = ',lamda:6:4); Writeln(f,' ro = ',ro:6:4); Writeln(f,' c = ',c:6:4); Writeln(f,' T0 = ',T0:6:4); Writeln(f,' kapa = ',kapa:6:4); Writeln(f,' Te = ',Te:6:4); Writeln(f,' eps = ',eps:6:4); Writeln(f,' xh = ',h:6:4); Writeln(f,' tau = ',tau:6:4); Writeln(f,' t = ',t_end:6:4); close(f); Assign(g,'tempr.txt'); Rewrite(g); for i:=1 to N do writeln(g,' ',h*(i-1)8,' ',T[i]:8:5, ' ', v[i]:10:10); close(g); end.
Здесь какая-то пугающая меня мат.модель физического явления.
Но раз в одном из циклов всё и так расчитывается, то 1) инициализацию файла вынеси в начало программы 2) в нужное место цикла добавь проверку на температуру и при выполнении условия выводи в файл
Пожалуй, больше ничего не могу посоветовать, иначе прийдется самому вникать в физику происходящего, разбираться с хитросплетением 20 переменных.
Здесь какая-то пугающая меня мат.модель физического явления.
Но раз в одном из циклов всё и так расчитывается, то 1) инициализацию файла вынеси в начало программы 2) в нужное место цикла добавь проверку на температуру и при выполнении условия выводи в файл
Пожалуй, больше ничего не могу посоветовать, иначе прийдется самому вникать в физику происходящего, разбираться с хитросплетением 20 переменных.
Программу писал сам методом проб и ошибок а паскалем пользуюсь от силы неделю. Вот я и не могу свои мысли в код записать. Здесь дело в том программа считает все что нужно. необходимо вывести время процесса с шагом по времени в файл. и при каждом промежутке времени считать v[i] при условии которое уже записано. на следующем временном промежутке так же посчитать v[i] но в результат выводить сумму значений ряда в каждой точке. то есть физически выглядит так в каждой точке происходит реакция разложения при одной температуре разложится столько при другой в этой же точке разложится еще больше но они должны сложится. что бы процесс завершился